提交 de57f1fb 编写于 作者: K Kiran Gunda 提交者: Zheng Zengkai

backlight: qcom-wled: Fix FSC update issue for WLED5

stable inclusion
from stable-5.10.36
commit 61c1ddd29f87f83a1b010f4dc3ba506946977123
bugzilla: 51867
CVE: NA

--------------------------------

[ Upstream commit 4d6e9cdf ]

Currently, for WLED5, the FSC (Full scale current) setting is not
updated properly due to driver toggling the wrong register after
an FSC update.

On WLED5 we should only toggle the MOD_SYNC bit after a brightness
update. For an FSC update we need to toggle the SYNC bits instead.

Fix it by adopting the common wled3_sync_toggle() for WLED5 and
introducing new code to the brightness update path to compensate.
Signed-off-by: NKiran Gunda <kgunda@codeaurora.org>
Reviewed-by: NDaniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: NLee Jones <lee.jones@linaro.org>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 e20bc93a
...@@ -348,7 +348,7 @@ static int wled3_sync_toggle(struct wled *wled) ...@@ -348,7 +348,7 @@ static int wled3_sync_toggle(struct wled *wled)
return rc; return rc;
} }
static int wled5_sync_toggle(struct wled *wled) static int wled5_mod_sync_toggle(struct wled *wled)
{ {
int rc; int rc;
u8 val; u8 val;
...@@ -445,10 +445,23 @@ static int wled_update_status(struct backlight_device *bl) ...@@ -445,10 +445,23 @@ static int wled_update_status(struct backlight_device *bl)
goto unlock_mutex; goto unlock_mutex;
} }
rc = wled->wled_sync_toggle(wled); if (wled->version < 5) {
if (rc < 0) { rc = wled->wled_sync_toggle(wled);
dev_err(wled->dev, "wled sync failed rc:%d\n", rc); if (rc < 0) {
goto unlock_mutex; dev_err(wled->dev, "wled sync failed rc:%d\n", rc);
goto unlock_mutex;
}
} else {
/*
* For WLED5 toggling the MOD_SYNC_BIT updates the
* brightness
*/
rc = wled5_mod_sync_toggle(wled);
if (rc < 0) {
dev_err(wled->dev, "wled mod sync failed rc:%d\n",
rc);
goto unlock_mutex;
}
} }
} }
...@@ -1459,7 +1472,7 @@ static int wled_configure(struct wled *wled) ...@@ -1459,7 +1472,7 @@ static int wled_configure(struct wled *wled)
size = ARRAY_SIZE(wled5_opts); size = ARRAY_SIZE(wled5_opts);
*cfg = wled5_config_defaults; *cfg = wled5_config_defaults;
wled->wled_set_brightness = wled5_set_brightness; wled->wled_set_brightness = wled5_set_brightness;
wled->wled_sync_toggle = wled5_sync_toggle; wled->wled_sync_toggle = wled3_sync_toggle;
wled->wled_cabc_config = wled5_cabc_config; wled->wled_cabc_config = wled5_cabc_config;
wled->wled_ovp_delay = wled5_ovp_delay; wled->wled_ovp_delay = wled5_ovp_delay;
wled->wled_auto_detection_required = wled->wled_auto_detection_required =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册