• Konrad Dybcio's avatar
    drm/msm/a6xx: Introduce GMU wrapper support · 5a903a44
    Konrad Dybcio authored
    Some (particularly SMD_RPM, a.k.a non-RPMh) SoCs implement A6XX GPUs
    but don't implement the associated GMUs. This is due to the fact that
    the GMU directly pokes at RPMh. Sadly, this means we have to take care
    of enabling & scaling power rails, clocks and bandwidth ourselves.
    
    Reuse existing Adreno-common code and modify the deeply-GMU-infused
    A6XX code to facilitate these GPUs. This involves if-ing out lots
    of GMU callbacks and introducing a new type of GMU - GMU wrapper (it's
    the actual name that Qualcomm uses in their downstream kernels).
    
    This is essentially a register region which is convenient to model
    as a device. We'll use it for managing the GDSCs. The register
    layout matches the actual GMU_CX/GX regions on the "real GMU" devices
    and lets us reuse quite a bit of gmu_read/write/rmw calls.
    Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/542766/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
    5a903a44
a6xx_gmu.c 43.6 KB