Currently, for WLED5, after FSC register update MOD_SYNC_BIT
is toggled instead of SYNC_BIT. MOD_SYNC_BIT has to be toggled
after the brightness update and SYNC_BIT has to be toggled after
FSC update for WLED5. Fix it.

Signed-off-by: Kiran Gunda <kgu...@codeaurora.org>
---
 drivers/video/backlight/qcom-wled.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/video/backlight/qcom-wled.c 
b/drivers/video/backlight/qcom-wled.c
index 3bc7800..aef52b9 100644
--- a/drivers/video/backlight/qcom-wled.c
+++ b/drivers/video/backlight/qcom-wled.c
@@ -348,7 +348,7 @@ static int wled3_sync_toggle(struct wled *wled)
        return rc;
 }
 
-static int wled5_sync_toggle(struct wled *wled)
+static int wled5_mod_sync_toggle(struct wled *wled)
 {
        int rc;
        u8 val;
@@ -445,10 +445,23 @@ static int wled_update_status(struct backlight_device *bl)
                        goto unlock_mutex;
                }
 
-               rc = wled->wled_sync_toggle(wled);
-               if (rc < 0) {
-                       dev_err(wled->dev, "wled sync failed rc:%d\n", rc);
-                       goto unlock_mutex;
+               if (wled->version < 5) {
+                       rc = wled->wled_sync_toggle(wled);
+                       if (rc < 0) {
+                               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)
                size = ARRAY_SIZE(wled5_opts);
                *cfg = wled5_config_defaults;
                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_ovp_delay = wled5_ovp_delay;
                wled->wled_auto_detection_required =
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
 a Linux Foundation Collaborative Project

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to