Loading drivers/gpu/msm/adreno_a6xx_gmu.c +14 −19 Original line number Diff line number Diff line Loading @@ -1098,36 +1098,31 @@ static int a6xx_gmu_load_firmware(struct kgsl_device *device) return ret; } #define A6XX_STATE_OF_CHILD (BIT(4) | BIT(5)) #define A6XX_IDLE_FULL_LLM BIT(0) #define A6XX_WAKEUP_ACK BIT(1) #define A6XX_IDLE_FULL_ACK BIT(0) #define A6XX_VBIF_XIN_HALT_CTRL1_ACKS (BIT(0) | BIT(1) | BIT(2) | BIT(3)) static int a6xx_llm_glm_handshake(struct kgsl_device *device) static void a6xx_llm_glm_handshake(struct kgsl_device *device) { unsigned int val; const struct adreno_device *adreno_dev = ADRENO_DEVICE(device); struct adreno_device *adreno_dev = ADRENO_DEVICE(device); struct gmu_device *gmu = KGSL_GMU_DEVICE(device); if (!ADRENO_FEATURE(adreno_dev, ADRENO_LM) || !test_bit(ADRENO_LM_CTRL, &adreno_dev->pwrctrl_flag)) return 0; return; if (adreno_is_a640(adreno_dev)) return; gmu_core_regread(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, &val); if (!(val & A6XX_STATE_OF_CHILD)) { if (val & (BIT(4) | BIT(5))) return; gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, BIT(4)); gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, A6XX_IDLE_FULL_LLM); gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, BIT(0)); if (timed_poll_check(device, A6XX_GMU_LLM_GLM_SLEEP_STATUS, A6XX_IDLE_FULL_ACK, GPU_RESET_TIMEOUT, A6XX_IDLE_FULL_ACK)) { BIT(0), GPU_RESET_TIMEOUT, BIT(0))) dev_err(&gmu->pdev->dev, "LLM-GLM handshake failed\n"); return -EINVAL; } } return 0; } static void a6xx_isense_disable(struct kgsl_device *device) Loading Loading
drivers/gpu/msm/adreno_a6xx_gmu.c +14 −19 Original line number Diff line number Diff line Loading @@ -1098,36 +1098,31 @@ static int a6xx_gmu_load_firmware(struct kgsl_device *device) return ret; } #define A6XX_STATE_OF_CHILD (BIT(4) | BIT(5)) #define A6XX_IDLE_FULL_LLM BIT(0) #define A6XX_WAKEUP_ACK BIT(1) #define A6XX_IDLE_FULL_ACK BIT(0) #define A6XX_VBIF_XIN_HALT_CTRL1_ACKS (BIT(0) | BIT(1) | BIT(2) | BIT(3)) static int a6xx_llm_glm_handshake(struct kgsl_device *device) static void a6xx_llm_glm_handshake(struct kgsl_device *device) { unsigned int val; const struct adreno_device *adreno_dev = ADRENO_DEVICE(device); struct adreno_device *adreno_dev = ADRENO_DEVICE(device); struct gmu_device *gmu = KGSL_GMU_DEVICE(device); if (!ADRENO_FEATURE(adreno_dev, ADRENO_LM) || !test_bit(ADRENO_LM_CTRL, &adreno_dev->pwrctrl_flag)) return 0; return; if (adreno_is_a640(adreno_dev)) return; gmu_core_regread(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, &val); if (!(val & A6XX_STATE_OF_CHILD)) { if (val & (BIT(4) | BIT(5))) return; gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, BIT(4)); gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, A6XX_IDLE_FULL_LLM); gmu_core_regrmw(device, A6XX_GMU_LLM_GLM_SLEEP_CTRL, 0, BIT(0)); if (timed_poll_check(device, A6XX_GMU_LLM_GLM_SLEEP_STATUS, A6XX_IDLE_FULL_ACK, GPU_RESET_TIMEOUT, A6XX_IDLE_FULL_ACK)) { BIT(0), GPU_RESET_TIMEOUT, BIT(0))) dev_err(&gmu->pdev->dev, "LLM-GLM handshake failed\n"); return -EINVAL; } } return 0; } static void a6xx_isense_disable(struct kgsl_device *device) Loading