• Jordan Crouse's avatar
    drm/msm/gpu: Attach to the GPU GX power domain · 9325d426
    Jordan Crouse authored
    99.999% of the time during normal operation the GMU is responsible
    for power and clock control on the GX domain and the CPU remains
    blissfully unaware. However, there is one situation where the CPU
    needs to get involved:
    
    The power sequencing rules dictate that the GX needs to be turned
    off before the CX so that the CX can be turned on before the GX
    during power up. During normal operation when the CPU is taking
    down the CX domain a stop command is sent to the GMU which turns
    off the GX domain and then the CPU handles the CX domain.
    
    But if the GMU happened to be unresponsive while the GX domain was
    left then the CPU will need to step in and turn off the GX domain
    before resetting the CX and rebooting the GMU. This unfortunately
    means that the CPU needs to be marginally aware of the GX domain
    even though it is expected to usually keep its hands off.
    
    To support this we create a semi-disabled GX power domain that
    does nothing to the hardware on power up but tries to shut it
    down normally on power down. In this method the reference counting
    is correct and we can step in with the pm_runtime_put() at the right
    time during the failure path.
    
    This patch sets up the connection to the GX power domain and does
    the magic to "enable" and disable it at the right points.
    Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
    9325d426
a6xx_gmu.c 33 KB