From 44bfe6de8e67ae69c71f18857644d76c59b9fadf Mon Sep 17 00:00:00 2001 From: Mohammed Mirza Mandayappurath Manzoor Date: Mon, 3 Aug 2020 09:36:00 -0700 Subject: [PATCH] msm: kgsl: Make ACD QMP message sending failure non fatal If ACD fails to send its state through the QMP mailbox, we do not get the power saving as expected. An error message will do and need not fail probe. Change-Id: I821d0d3c774cc45726a8c7b281d226ff5da83fa5 Signed-off-by: Mohammed Mirza Mandayappurath Manzoor --- drivers/gpu/msm/adreno_a6xx_gmu.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index 9f4674ad476b..21f0521b245d 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -2059,22 +2059,27 @@ void a6xx_gmu_snapshot(struct adreno_device *adreno_dev, } -static int a6xx_gmu_aop_send_acd_state(struct mbox_chan *channel, bool flag) +static void a6xx_gmu_aop_send_acd_state(struct a6xx_gmu_device *gmu, bool flag) { char msg_buf[33]; + int ret; struct { u32 len; void *msg; } msg; - if (IS_ERR_OR_NULL(channel)) - return 0; + if (IS_ERR_OR_NULL(gmu->mailbox.channel)) + return; msg.len = scnprintf(msg_buf, sizeof(msg_buf), "{class: gpu, res: acd, value: %d}", flag); msg.msg = msg_buf; - return mbox_send_message(channel, &msg); + ret = mbox_send_message(gmu->mailbox.channel, &msg); + + if (ret < 0) + dev_err(&gmu->pdev->dev, + "AOP mbox send message failed: %d\n", ret); } static int a6xx_gmu_enable_gdsc(struct adreno_device *adreno_dev) @@ -2140,13 +2145,7 @@ static int a6xx_gmu_first_boot(struct adreno_device *adreno_dev) trace_kgsl_pwr_request_state(device, KGSL_STATE_AWARE); - ret = a6xx_gmu_aop_send_acd_state(gmu->mailbox.channel, - adreno_dev->acd_enabled); - if (ret) { - dev_err(&gmu->pdev->dev, - "AOP mbox send message failed: %d\n", ret); - return ret; - } + a6xx_gmu_aop_send_acd_state(gmu, adreno_dev->acd_enabled); ret = a6xx_gmu_enable_gdsc(adreno_dev); if (ret) @@ -2314,15 +2313,9 @@ gdsc_off: static void set_acd(struct adreno_device *adreno_dev, void *priv) { struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev); - int ret; adreno_dev->acd_enabled = *((bool *)priv); - - ret = a6xx_gmu_aop_send_acd_state(gmu->mailbox.channel, - adreno_dev->acd_enabled); - if (ret) - dev_err(&gmu->pdev->dev, - "AOP mbox send message failed: %d\n", ret); + a6xx_gmu_aop_send_acd_state(gmu, adreno_dev->acd_enabled); } static int a6xx_gmu_acd_set(struct kgsl_device *device, bool val)