* [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 [not found] <1614138648-2963-1-git-send-email-kgunda@codeaurora.org> @ 2021-02-24 3:50 ` Kiran Gunda 2021-02-24 11:15 ` Daniel Thompson 2021-02-24 3:50 ` [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence Kiran Gunda 1 sibling, 1 reply; 7+ messages in thread From: Kiran Gunda @ 2021-02-24 3:50 UTC (permalink / raw) To: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, daniel.thompson, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev Cc: phone-devel, Kiran Gunda 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 <kgunda@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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 2021-02-24 3:50 ` [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 Kiran Gunda @ 2021-02-24 11:15 ` Daniel Thompson 2021-02-26 6:31 ` kgunda 0 siblings, 1 reply; 7+ messages in thread From: Daniel Thompson @ 2021-02-24 11:15 UTC (permalink / raw) To: Kiran Gunda Cc: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev, phone-devel On Wed, Feb 24, 2021 at 09:20:47AM +0530, Kiran Gunda wrote: > 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. Code looks fine but the description is a difficult to read (which makes mining the history difficult). Basically the descriptions here are very hard to read without the context in PATCH 0/2. Since PATCH 0/2 won't enter the version history that means these descriptions need to integrate some of the text from what is currently PATCH 0/2. I would expect this to be more like. It is basically joining together text from PATCH 0 and PATCH 1 (I also switched to plural form for SYNC bits... the code in the driver has mask generation based on the number of strings, is that right?): ~~~ 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. ~~~ Daniel. > > Signed-off-by: Kiran Gunda <kgunda@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 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 2021-02-24 11:15 ` Daniel Thompson @ 2021-02-26 6:31 ` kgunda 0 siblings, 0 replies; 7+ messages in thread From: kgunda @ 2021-02-26 6:31 UTC (permalink / raw) To: Daniel Thompson Cc: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev, phone-devel On 2021-02-24 16:45, Daniel Thompson wrote: > On Wed, Feb 24, 2021 at 09:20:47AM +0530, Kiran Gunda wrote: >> 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. > > Code looks fine but the description is a difficult to read (which makes > mining the history difficult). > > Basically the descriptions here are very hard to read without the > context in PATCH 0/2. Since PATCH 0/2 won't enter the version history > that means these descriptions need to integrate some of the text from > what is currently PATCH 0/2. > > I would expect this to be more like. It is basically joining together > text from PATCH 0 and PATCH 1 (I also switched to plural form for SYNC > bits... the code in the driver has mask generation based on the number > of strings, is that right?): Sorry for the trouble. Yes, you are correct. The mask generation is based on the number of strings defined in the device tree and only those strings are enabled. However, there is no issue if the SYNC bits of all the strings are cleared/set. The SYNC takes place only for enabled strings. > ~~~ > 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. > ~~~ > I will update the Documentation/patch description clearly as suggested. > > Daniel. > > > >> >> Signed-off-by: Kiran Gunda <kgunda@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 >> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence [not found] <1614138648-2963-1-git-send-email-kgunda@codeaurora.org> 2021-02-24 3:50 ` [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 Kiran Gunda @ 2021-02-24 3:50 ` Kiran Gunda 2021-02-24 11:26 ` Daniel Thompson 1 sibling, 1 reply; 7+ messages in thread From: Kiran Gunda @ 2021-02-24 3:50 UTC (permalink / raw) To: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, daniel.thompson, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev Cc: phone-devel, Kiran Gunda Currently the FSC SYNC_BIT and MOD_SYNC_BIT are toggled from 1 to 0 to update the FSC and brightenss settings. Change this sequence form 0 to 1 as per the hardware team recommendation to update the FSC and brightness correctly. Signed-off-by: Kiran Gunda <kgunda@codeaurora.org> --- drivers/video/backlight/qcom-wled.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c index aef52b9..19f83ac 100644 --- a/drivers/video/backlight/qcom-wled.c +++ b/drivers/video/backlight/qcom-wled.c @@ -337,13 +337,13 @@ static int wled3_sync_toggle(struct wled *wled) rc = regmap_update_bits(wled->regmap, wled->ctrl_addr + WLED3_SINK_REG_SYNC, - mask, mask); + mask, WLED3_SINK_REG_SYNC_CLEAR); if (rc < 0) return rc; rc = regmap_update_bits(wled->regmap, wled->ctrl_addr + WLED3_SINK_REG_SYNC, - mask, WLED3_SINK_REG_SYNC_CLEAR); + mask, mask); return rc; } @@ -353,17 +353,17 @@ static int wled5_mod_sync_toggle(struct wled *wled) int rc; u8 val; - val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : - WLED5_SINK_REG_SYNC_MOD_B_BIT; rc = regmap_update_bits(wled->regmap, wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, - WLED5_SINK_REG_SYNC_MASK, val); + WLED5_SINK_REG_SYNC_MASK, 0); if (rc < 0) return rc; + val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : + WLED5_SINK_REG_SYNC_MOD_B_BIT; return regmap_update_bits(wled->regmap, wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, - WLED5_SINK_REG_SYNC_MASK, 0); + WLED5_SINK_REG_SYNC_MASK, val); } static int wled_ovp_fault_status(struct wled *wled, bool *fault_set) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence 2021-02-24 3:50 ` [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence Kiran Gunda @ 2021-02-24 11:26 ` Daniel Thompson 2021-02-26 6:40 ` kgunda 0 siblings, 1 reply; 7+ messages in thread From: Daniel Thompson @ 2021-02-24 11:26 UTC (permalink / raw) To: Kiran Gunda Cc: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev, phone-devel On Wed, Feb 24, 2021 at 09:20:48AM +0530, Kiran Gunda wrote: > Currently the FSC SYNC_BIT and MOD_SYNC_BIT are toggled > from 1 to 0 to update the FSC and brightenss settings. > Change this sequence form 0 to 1 as per the hardware team > recommendation to update the FSC and brightness correctly. Again... this patch description feels somewhat rushed. A patch description is there to support code reviewer and to go on the version history to assist with future maintainance. They matter! Anyhow I don't recognise the "from 1 to 0" in the code since both before an after the change it goes "from 0 to 1" and "from 1 to 0" but in a different order. Doesn't the code actually currently implement "set then clear"? If so then, likewise the new code is adopting "clear then set". As with patch 1, the sync bits modified by wled3_sync_toggle singular or plural? Finally a description that is more sympathetic to the reviewer would be welcome. For example the following (if my guess is right and it is true) makes things much easier for the reviewer: "The sync takes place during a 0 to 1 transition of the sync bits so the hardware team recommends a clear-then-set approach in order to guarantee such a transition regardless of the previous register state". Daniel. > > Signed-off-by: Kiran Gunda <kgunda@codeaurora.org> > --- > drivers/video/backlight/qcom-wled.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c > index aef52b9..19f83ac 100644 > --- a/drivers/video/backlight/qcom-wled.c > +++ b/drivers/video/backlight/qcom-wled.c > @@ -337,13 +337,13 @@ static int wled3_sync_toggle(struct wled *wled) > > rc = regmap_update_bits(wled->regmap, > wled->ctrl_addr + WLED3_SINK_REG_SYNC, > - mask, mask); > + mask, WLED3_SINK_REG_SYNC_CLEAR); > if (rc < 0) > return rc; > > rc = regmap_update_bits(wled->regmap, > wled->ctrl_addr + WLED3_SINK_REG_SYNC, > - mask, WLED3_SINK_REG_SYNC_CLEAR); > + mask, mask); > > return rc; > } > @@ -353,17 +353,17 @@ static int wled5_mod_sync_toggle(struct wled *wled) > int rc; > u8 val; > > - val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : > - WLED5_SINK_REG_SYNC_MOD_B_BIT; > rc = regmap_update_bits(wled->regmap, > wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, > - WLED5_SINK_REG_SYNC_MASK, val); > + WLED5_SINK_REG_SYNC_MASK, 0); > if (rc < 0) > return rc; > > + val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : > + WLED5_SINK_REG_SYNC_MOD_B_BIT; > return regmap_update_bits(wled->regmap, > wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, > - WLED5_SINK_REG_SYNC_MASK, 0); > + WLED5_SINK_REG_SYNC_MASK, val); > } > > static int wled_ovp_fault_status(struct wled *wled, bool *fault_set) > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence 2021-02-24 11:26 ` Daniel Thompson @ 2021-02-26 6:40 ` kgunda 0 siblings, 0 replies; 7+ messages in thread From: kgunda @ 2021-02-26 6:40 UTC (permalink / raw) To: Daniel Thompson Cc: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev, phone-devel On 2021-02-24 16:56, Daniel Thompson wrote: > On Wed, Feb 24, 2021 at 09:20:48AM +0530, Kiran Gunda wrote: >> Currently the FSC SYNC_BIT and MOD_SYNC_BIT are toggled >> from 1 to 0 to update the FSC and brightenss settings. >> Change this sequence form 0 to 1 as per the hardware team >> recommendation to update the FSC and brightness correctly. > > Again... this patch description feels somewhat rushed. A patch > description is there to support code reviewer and to go on the version > history to assist with future maintainance. They matter! > > Anyhow I don't recognise the "from 1 to 0" in the code since both > before > an after the change it goes "from 0 to 1" and "from 1 to 0" but in a > different order. Doesn't the code actually currently implement "set > then > clear"? If so then, likewise the new code is adopting "clear then set". > I would have used "set" and "clear" instead of "0" and "1". Yes. The current code implementation is "set" all SYN bits and then "clear" all SYNC bits. The new code is modified to change the sequence from "clear" first and then "set" to ensure both FSC and brightness are updated. > As with patch 1, the sync bits modified by wled3_sync_toggle singular > or plural? It is plural. We have to "clear" and "set" all sync bits. > > Finally a description that is more sympathetic to the reviewer would be > welcome. For example the following (if my guess is right and it is > true) makes things much easier for the reviewer: > Sure. I will update the documentation and patch description clearly. > "The sync takes place during a 0 to 1 transition of the sync > bits so the hardware team recommends a clear-then-set approach in > order to guarantee such a transition regardless of the previous > register state". > > > Daniel. > > >> >> Signed-off-by: Kiran Gunda <kgunda@codeaurora.org> >> --- >> drivers/video/backlight/qcom-wled.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/video/backlight/qcom-wled.c >> b/drivers/video/backlight/qcom-wled.c >> index aef52b9..19f83ac 100644 >> --- a/drivers/video/backlight/qcom-wled.c >> +++ b/drivers/video/backlight/qcom-wled.c >> @@ -337,13 +337,13 @@ static int wled3_sync_toggle(struct wled *wled) >> >> rc = regmap_update_bits(wled->regmap, >> wled->ctrl_addr + WLED3_SINK_REG_SYNC, >> - mask, mask); >> + mask, WLED3_SINK_REG_SYNC_CLEAR); >> if (rc < 0) >> return rc; >> >> rc = regmap_update_bits(wled->regmap, >> wled->ctrl_addr + WLED3_SINK_REG_SYNC, >> - mask, WLED3_SINK_REG_SYNC_CLEAR); >> + mask, mask); >> >> return rc; >> } >> @@ -353,17 +353,17 @@ static int wled5_mod_sync_toggle(struct wled >> *wled) >> int rc; >> u8 val; >> >> - val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : >> - WLED5_SINK_REG_SYNC_MOD_B_BIT; >> rc = regmap_update_bits(wled->regmap, >> wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, >> - WLED5_SINK_REG_SYNC_MASK, val); >> + WLED5_SINK_REG_SYNC_MASK, 0); >> if (rc < 0) >> return rc; >> >> + val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT : >> + WLED5_SINK_REG_SYNC_MOD_B_BIT; >> return regmap_update_bits(wled->regmap, >> wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT, >> - WLED5_SINK_REG_SYNC_MASK, 0); >> + WLED5_SINK_REG_SYNC_MASK, val); >> } >> >> static int wled_ovp_fault_status(struct wled *wled, bool *fault_set) >> -- >> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora >> Forum, >> a Linux Foundation Collaborative Project >> ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <1613743659-4726-1-git-send-email-kgunda@codeaurora.org>]
* [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 [not found] <1613743659-4726-1-git-send-email-kgunda@codeaurora.org> @ 2021-02-19 14:07 ` Kiran Gunda 0 siblings, 0 replies; 7+ messages in thread From: Kiran Gunda @ 2021-02-19 14:07 UTC (permalink / raw) To: bjorn.andersson, jingoohan1, lee.jones, b.zolnierkie, dri-devel, daniel.thompson, jacek.anaszewski, pavel, robh+dt, mark.rutland, linux-leds, devicetree, linux-kernel, Andy Gross, linux-arm-msm, linux-fbdev Cc: Kiran Gunda 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 <kgunda@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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-26 6:42 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1614138648-2963-1-git-send-email-kgunda@codeaurora.org> 2021-02-24 3:50 ` [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 Kiran Gunda 2021-02-24 11:15 ` Daniel Thompson 2021-02-26 6:31 ` kgunda 2021-02-24 3:50 ` [PATCH V1 2/2] backlight: qcom-wled: Correct the sync_toggle sequence Kiran Gunda 2021-02-24 11:26 ` Daniel Thompson 2021-02-26 6:40 ` kgunda [not found] <1613743659-4726-1-git-send-email-kgunda@codeaurora.org> 2021-02-19 14:07 ` [PATCH V1 1/2] backlight: qcom-wled: Fix FSC update issue for WLED5 Kiran Gunda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).