* [PATCH v2 0/3] backlight: aw99706: DT parsing and blank state fixes
@ 2026-08-03 14:13 Junjie Cao
2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Junjie Cao @ 2026-08-03 14:13 UTC (permalink / raw)
To: Lee Jones, Daniel Thompson, Jingoo Han
Cc: dri-devel, linux-leds, linux-kernel, stable, Pengyu Luo
The driver reads its tuning properties under names the binding does not
define (patch 1), the NULL-table lookup path accepts any value without
range checking (patch 2), and update_status() ignores the blank state,
leaving bl_power inoperative (patch 3).
v2:
- add patch 3
- add stable tag to patch 1
v1: https://lore.kernel.org/all/20260701133918.33487-1-junjie.cao@linux.dev/
Junjie Cao (3):
backlight: aw99706: Fix DT property names to match binding
backlight: aw99706: Validate all DT property values consistently
backlight: aw99706: Honor the core blank state in update_status()
drivers/video/backlight/aw99706.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding 2026-08-03 14:13 [PATCH v2 0/3] backlight: aw99706: DT parsing and blank state fixes Junjie Cao @ 2026-08-03 14:13 ` Junjie Cao 2026-08-04 3:07 ` Junjie Cao 2026-08-04 4:23 ` sashiko-bot 2026-08-03 14:13 ` [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently Junjie Cao 2026-08-03 14:13 ` [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() Junjie Cao 2 siblings, 2 replies; 8+ messages in thread From: Junjie Cao @ 2026-08-03 14:13 UTC (permalink / raw) To: Lee Jones, Daniel Thompson, Jingoo Han Cc: dri-devel, linux-leds, linux-kernel, stable, Pengyu Luo The driver reads four tuning properties without the unit suffixes that the binding mandates: "awinic,sw-freq" instead of "awinic,sw-freq-hz", "awinic,sw-ilmt" instead of "awinic,sw-ilmt-microamp", "awinic,iled-max" instead of "awinic,iled-max-microamp", and "awinic,uvlo-thres" instead of "awinic,uvlo-thres-microvolt". As a result, device_property_read_u32() never finds these properties in a binding-conformant device tree and silently falls back to the compiled-in defaults for switching frequency, switching current limit, max LED current, and UVLO threshold. Fix by aligning the property name strings in aw99706_dt_props[] with the binding. No value/range changes are needed since both sides already use the same units and enumerations. Fixes: 147b38a5ad06 ("backlight: aw99706: Add support for Awinic AW99706 backlight") Cc: stable@vger.kernel.org Signed-off-by: Junjie Cao <junjie.cao@linux.dev> --- drivers/video/backlight/aw99706.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c index 18299faf06ad..e130f164303a 100644 --- a/drivers/video/backlight/aw99706.c +++ b/drivers/video/backlight/aw99706.c @@ -130,23 +130,23 @@ static const struct aw99706_dt_prop aw99706_dt_props[] = { AW99706_CFG0_REG, AW99706_DIM_MODE_MASK, 1, }, { - "awinic,sw-freq", aw99706_dt_property_lookup, + "awinic,sw-freq-hz", aw99706_dt_property_lookup, aw99706_sw_freq_tbl, ARRAY_SIZE(aw99706_sw_freq_tbl), AW99706_CFG1_REG, AW99706_SW_FREQ_MASK, 750000, }, { - "awinic,sw-ilmt", aw99706_dt_property_lookup, + "awinic,sw-ilmt-microamp", aw99706_dt_property_lookup, aw99706_sw_ilmt_tbl, ARRAY_SIZE(aw99706_sw_ilmt_tbl), AW99706_CFG1_REG, AW99706_SW_ILMT_MASK, 3000000, }, { - "awinic,iled-max", aw99706_dt_property_iled_max_convert, + "awinic,iled-max-microamp", aw99706_dt_property_iled_max_convert, NULL, 0, AW99706_CFG2_REG, AW99706_ILED_MAX_MASK, 20000, }, { - "awinic,uvlo-thres", aw99706_dt_property_lookup, + "awinic,uvlo-thres-microvolt", aw99706_dt_property_lookup, aw99706_ulvo_thres_tbl, ARRAY_SIZE(aw99706_ulvo_thres_tbl), AW99706_CFG2_REG, AW99706_UVLOSEL_MASK, 2200000, }, -- 2.43.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding 2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao @ 2026-08-04 3:07 ` Junjie Cao 2026-08-04 4:23 ` sashiko-bot 1 sibling, 0 replies; 8+ messages in thread From: Junjie Cao @ 2026-08-04 3:07 UTC (permalink / raw) To: Lee Jones, Daniel Thompson, Jingoo Han Cc: dri-devel, linux-leds, linux-kernel, stable, Pengyu Luo The rest of this series was lost to a mail delivery failure; please ignore this one and see v3 instead. Sorry for the noise. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding 2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao 2026-08-04 3:07 ` Junjie Cao @ 2026-08-04 4:23 ` sashiko-bot 1 sibling, 0 replies; 8+ messages in thread From: sashiko-bot @ 2026-08-04 4:23 UTC (permalink / raw) To: Junjie Cao; +Cc: lee, dri-devel, linux-leds Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: Pre-existing issues: - [High] The driver attempts to read the chip ID via I2C before the hardware enable GPIO is acquired and asserted. - [High] Negative error codes from `aw99706_chip_id_read` are masked and improperly formatted, breaking probe deferral. -- --- Patch [1]: [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding --- commit 9d2f2e8b6d2445c40c8f872abafa26c81384bf67 Author: Junjie Cao <junjie.cao@linux.dev> backlight: aw99706: Fix DT property names to match binding The driver reads four tuning properties without the unit suffixes that the binding mandates. This commit fixes the issue by aligning the property name strings in aw99706_dt_props[] with the binding. > diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c > index 18299faf06ad4..e130f164303a2 100644 > --- a/drivers/video/backlight/aw99706.c > +++ b/drivers/video/backlight/aw99706.c > @@ -130,23 +130,23 @@ static const struct aw99706_dt_prop aw99706_dt_props[] = { > AW99706_CFG0_REG, AW99706_DIM_MODE_MASK, 1, > }, > { > - "awinic,sw-freq", aw99706_dt_property_lookup, > + "awinic,sw-freq-hz", aw99706_dt_property_lookup, > aw99706_sw_freq_tbl, ARRAY_SIZE(aw99706_sw_freq_tbl), > AW99706_CFG1_REG, AW99706_SW_FREQ_MASK, 750000, > }, > { > - "awinic,sw-ilmt", aw99706_dt_property_lookup, > + "awinic,sw-ilmt-microamp", aw99706_dt_property_lookup, > aw99706_sw_ilmt_tbl, ARRAY_SIZE(aw99706_sw_ilmt_tbl), > AW99706_CFG1_REG, AW99706_SW_ILMT_MASK, 3000000, > }, > { > - "awinic,iled-max", aw99706_dt_property_iled_max_convert, > + "awinic,iled-max-microamp", aw99706_dt_property_iled_max_convert, > NULL, 0, > AW99706_CFG2_REG, AW99706_ILED_MAX_MASK, 20000, > > }, > { > - "awinic,uvlo-thres", aw99706_dt_property_lookup, > + "awinic,uvlo-thres-microvolt", aw99706_dt_property_lookup, > aw99706_ulvo_thres_tbl, ARRAY_SIZE(aw99706_ulvo_thres_tbl), > AW99706_CFG2_REG, AW99706_UVLOSEL_MASK, 2200000, > }, [Severity: High] This isn't a bug introduced by this patch, but does the probe function attempt to read the chip ID via I2C before the hardware enable GPIO is acquired and asserted? Looking at aw99706_probe() in drivers/video/backlight/aw99706.c: ret = aw99706_chip_id_read(aw); if (ret != AW99706_ID) return dev_err_probe(dev, -ENODEV, "Unknown chip id 0x%02x\n", ret); aw99706_dt_parse(aw, &props); aw->hwen_gpio = devm_gpiod_get(aw->dev, "enable", GPIOD_OUT_LOW); Since the hardware enable GPIO is only requested and asserted later in the probe sequence, if the bootloader hasn't pre-enabled the hardware, the chip will remain powered off or in reset during the earlier I2C read. This would cause the probe function to fail to read the chip ID and abort. [Severity: High] This is a pre-existing issue, but does this sequence mask negative error codes from aw99706_chip_id_read()? Looking at the chip ID verification in aw99706_probe(): ret = aw99706_chip_id_read(aw); if (ret != AW99706_ID) return dev_err_probe(dev, -ENODEV, "Unknown chip id 0x%02x\n", ret); If the I2C controller or bus is not yet ready, it could return -EPROBE_DEFER, which is then replaced with -ENODEV. This would break the kernel's probe deferral mechanism and cause a permanent probe failure. It also prints the negative integer using %02x, which emits a two's complement hexadecimal value instead of a clear error. -- Sashiko AI review · https://sashiko.dev/#/patchset/20260803141310.1379194-1-junjie.cao@linux.dev?part=1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently 2026-08-03 14:13 [PATCH v2 0/3] backlight: aw99706: DT parsing and blank state fixes Junjie Cao 2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao @ 2026-08-03 14:13 ` Junjie Cao 2026-08-04 4:26 ` sashiko-bot 2026-08-03 14:13 ` [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() Junjie Cao 2 siblings, 1 reply; 8+ messages in thread From: Junjie Cao @ 2026-08-03 14:13 UTC (permalink / raw) To: Lee Jones, Daniel Thompson, Jingoo Han Cc: dri-devel, linux-leds, linux-kernel, stable, Pengyu Luo The lookup helpers for dim-mode and ramp-ctl take a shortcut when lookup_tbl is NULL: they accept any u32 value without range-checking and return success unconditionally. Out-of-range values get silently truncated by regmap_update_bits instead of triggering the dev_warn + default-fallback path that the other properties use. Add a field-width check for the NULL-table case so that values exceeding the register field maximum are rejected the same way a table-lookup miss is. While here, also switch the error returns to -EINVAL for consistency. Signed-off-by: Junjie Cao <junjie.cao@linux.dev> --- drivers/video/backlight/aw99706.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c index e130f164303a..dfb4b38b5b4c 100644 --- a/drivers/video/backlight/aw99706.c +++ b/drivers/video/backlight/aw99706.c @@ -94,6 +94,8 @@ static int aw99706_dt_property_lookup(const struct aw99706_dt_prop *prop, int i; if (!prop->lookup_tbl) { + if (dt_val > (prop->mask >> __ffs(prop->mask))) + return -EINVAL; *val = dt_val; return 0; } @@ -104,7 +106,7 @@ static int aw99706_dt_property_lookup(const struct aw99706_dt_prop *prop, *val = i; - return i == prop->tbl_size ? -1 : 0; + return i == prop->tbl_size ? -EINVAL : 0; } #define MIN_ILED_MAX 5000 @@ -116,11 +118,14 @@ aw99706_dt_property_iled_max_convert(const struct aw99706_dt_prop *prop, u32 dt_val, u8 *val) { if (dt_val > MAX_ILED_MAX || dt_val < MIN_ILED_MAX) - return -1; + return -EINVAL; + + if ((dt_val - MIN_ILED_MAX) % STEP_ILED_MAX) + return -EINVAL; *val = (dt_val - MIN_ILED_MAX) / STEP_ILED_MAX; - return (dt_val - MIN_ILED_MAX) % STEP_ILED_MAX; + return 0; } static const struct aw99706_dt_prop aw99706_dt_props[] = { -- 2.43.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently 2026-08-03 14:13 ` [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently Junjie Cao @ 2026-08-04 4:26 ` sashiko-bot 0 siblings, 0 replies; 8+ messages in thread From: sashiko-bot @ 2026-08-04 4:26 UTC (permalink / raw) To: Junjie Cao; +Cc: dri-devel, linux-leds, lee Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: Pre-existing issues: - [High] The driver attempts to communicate with the hardware via I2C before obtaining and asserting the hardware enable GPIO, which will cause probe to fail if the device is not powered on by default. - [High] The driver never applies the initial brightness state to the hardware during probe, leaving the backlight hardware off or in an undefined state until userspace explicitly updates it. -- --- Patch [2]: [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently --- commit 7ade0b3839909ff086334534c2c53128a09d10da Author: Junjie Cao <junjie.cao@linux.dev> backlight: aw99706: Validate all DT property values consistently The lookup helpers for dim-mode and ramp-ctl accept any u32 value without range-checking when lookup_tbl is NULL. This adds a field-width check for the NULL-table case to reject out-of-range values. It also switches the error returns to -EINVAL for consistency. > diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c > index e130f164303a2..dfb4b38b5b4c7 100644 > --- a/drivers/video/backlight/aw99706.c > +++ b/drivers/video/backlight/aw99706.c [ ... ] [Severity: High] This is a pre-existing issue, but I noticed that probe might fail if the hardware is not already powered on. drivers/video/backlight/aw99706.c:aw99706_probe() { ... ret = aw99706_chip_id_read(aw); if (ret != AW99706_ID) return dev_err_probe(dev, -ENODEV, "Unknown chip id 0x%02x\n", ret); aw99706_dt_parse(aw, &props); aw->hwen_gpio = devm_gpiod_get(aw->dev, "enable", GPIOD_OUT_LOW); ... } Will the chip ID read fail here if the bootloader left the hardware enable GPIO deactivated? Since the enable GPIO isn't requested and asserted until after the I2C read, the I2C communication could timeout or fail. [Severity: High] This is a pre-existing issue, but it looks like the initial brightness state is never pushed to the hardware during probe. drivers/video/backlight/aw99706.c:aw99706_probe() { ... bl_dev = devm_backlight_device_register(dev, "aw99706-backlight", dev, aw, &aw99706_bl_ops, &props); if (IS_ERR(bl_dev)) return dev_err_probe(dev, PTR_ERR(bl_dev), "Failed to register backlight!\n"); aw->bl_dev = bl_dev; return 0; } Since devm_gpiod_get(..., GPIOD_OUT_LOW) actively toggles the hardware enable pin (resetting the hardware) and backlight_update_status() is never called after devm_backlight_device_register(), will this leave the backlight off until userspace explicitly updates it? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260803141310.1379194-1-junjie.cao@linux.dev?part=2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() 2026-08-03 14:13 [PATCH v2 0/3] backlight: aw99706: DT parsing and blank state fixes Junjie Cao 2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao 2026-08-03 14:13 ` [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently Junjie Cao @ 2026-08-03 14:13 ` Junjie Cao 2026-08-04 4:23 ` sashiko-bot 2 siblings, 1 reply; 8+ messages in thread From: Junjie Cao @ 2026-08-03 14:13 UTC (permalink / raw) To: Lee Jones, Daniel Thompson, Jingoo Han Cc: dri-devel, linux-leds, linux-kernel, stable, Pengyu Luo update_status() passes props.brightness straight to the hardware and ignores the power/blank state tracked by the core. Writing 4 to the bl_power sysfs attribute or blanking the framebuffer therefore leaves the backlight lit. Use backlight_get_brightness(), which returns 0 while the device is blanked. Fixes: 147b38a5ad06 ("backlight: aw99706: Add support for Awinic AW99706 backlight") Signed-off-by: Junjie Cao <junjie.cao@linux.dev> --- drivers/video/backlight/aw99706.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c index dfb4b38b5b4c..d035ff5af52c 100644 --- a/drivers/video/backlight/aw99706.c +++ b/drivers/video/backlight/aw99706.c @@ -340,7 +340,7 @@ static int aw99706_bl_update_status(struct backlight_device *bl) { struct aw99706_device *aw = bl_get_data(bl); - return aw99706_update_brightness(aw, bl->props.brightness); + return aw99706_update_brightness(aw, backlight_get_brightness(bl)); } static const struct backlight_ops aw99706_bl_ops = { -- 2.43.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() 2026-08-03 14:13 ` [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() Junjie Cao @ 2026-08-04 4:23 ` sashiko-bot 0 siblings, 0 replies; 8+ messages in thread From: sashiko-bot @ 2026-08-04 4:23 UTC (permalink / raw) To: Junjie Cao; +Cc: lee, dri-devel, linux-leds Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider: Pre-existing issues: - [High] I2C chip ID read is performed before the hardware enable GPIO is requested and asserted. - [High] Hardware is manually disabled in `remove()` while the backlight device remains registered via `devm_`, leading to a use-after-disable race. - [Medium] Missing delay after asserting the enable GPIO before issuing I2C commands. - [Medium] Incomplete suspend/resume logic leaves hardware enable GPIO asserted. -- --- Patch [3]: [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() --- commit 0ee82864b515a444eccb8c16ea1fd1e52d9895f0 Author: Junjie Cao <junjie.cao@linux.dev> Date: Mon Aug 3 14:13:10 2026 +0000 backlight: aw99706: Honor the core blank state in update_status() update_status() passes props.brightness straight to the hardware and ignores the power/blank state tracked by the core. Writing 4 to the bl_power sysfs attribute or blanking the framebuffer therefore leaves the backlight lit. Use backlight_get_brightness(), which returns 0 while the device is blanked. Fixes: 147b38a5ad06 ("backlight: aw99706: Add support for Awinic AW99706 backlight") Signed-off-by: Junjie Cao <junjie.cao@linux.dev> > diff --git a/drivers/video/backlight/aw99706.c b/drivers/video/backlight/aw99706.c > index dfb4b38b5b4c7..d035ff5af52c6 100644 > --- a/drivers/video/backlight/aw99706.c > +++ b/drivers/video/backlight/aw99706.c > @@ -340,7 +340,7 @@ static int aw99706_bl_update_status(struct backlight_device *bl) > { > struct aw99706_device *aw = bl_get_data(bl); > > - return aw99706_update_brightness(aw, bl->props.brightness); > + return aw99706_update_brightness(aw, backlight_get_brightness(bl)); > } While reviewing this patch, I noticed a few pre-existing issues in the driver: drivers/video/backlight/aw99706.c:aw99706_probe() { ... ret = aw99706_chip_id_read(aw); if (ret != AW99706_ID) return dev_err_probe(dev, -ENODEV, "Unknown chip id 0x%02x\n", ret); aw99706_dt_parse(aw, &props); aw->hwen_gpio = devm_gpiod_get(aw->dev, "enable", GPIOD_OUT_LOW); if (IS_ERR(aw->hwen_gpio)) return dev_err_probe(dev, PTR_ERR(aw->hwen_gpio), "Failed to get enable gpio\n"); ... } [Severity: High] This is a pre-existing issue, but doesn't aw99706_chip_id_read() perform an I2C read before the hardware enable GPIO is requested and asserted? If the hardware is disabled by default or left in reset by the bootloader, won't this I2C read fail and make the driver completely non-functional? drivers/video/backlight/aw99706.c:aw99706_remove() { struct aw99706_device *aw = i2c_get_clientdata(client); aw99706_update_brightness(aw, 0); msleep(50); gpiod_set_value_cansleep(aw->hwen_gpio, 0); } [Severity: High] This is a pre-existing issue, but does disabling the hardware here create a use-after-disable race? The backlight device is registered with devm_backlight_device_register(), so devres will unregister it after aw99706_remove() returns. If a userspace process accesses the sysfs backlight attributes in this window, could aw99706_bl_update_status() issue I2C writes to a powered-down chip? drivers/video/backlight/aw99706.c:aw99706_hw_init() { int ret, i; gpiod_set_value_cansleep(aw->hwen_gpio, 1); for (i = 0; i < ARRAY_SIZE(aw->init_tbl); i++) { ret = aw99706_i2c_update_bits(aw, aw->init_tbl[i].reg, ... } [Severity: Medium] This is a pre-existing issue, but does this sequence need a stabilization delay between asserting hwen_gpio and issuing I2C commands? Could the initialization commands be dropped or NACKed if the controller requires a few milliseconds to wake up before accepting I2C traffic? drivers/video/backlight/aw99706.c:aw99706_suspend() { struct aw99706_device *aw = dev_get_drvdata(dev); return aw99706_update_brightness(aw, 0); } static int aw99706_resume(struct device *dev) { struct aw99706_device *aw = dev_get_drvdata(dev); return aw99706_hw_init(aw); } [Severity: Medium] This is a pre-existing issue, but do these suspend and resume operations handle the hardware enable GPIO correctly? aw99706_suspend() zeros out the brightness but leaves hwen_gpio asserted, and aw99706_resume() blindly re-initializes all hardware registers without the power ever being removed. Should aw99706_suspend() pull hwen_gpio low to actually save power, or are these operations redundant given BL_CORE_SUSPENDRESUME already handles setting brightness to 0? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260803141310.1379194-1-junjie.cao@linux.dev?part=3 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-08-04 4:26 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-03 14:13 [PATCH v2 0/3] backlight: aw99706: DT parsing and blank state fixes Junjie Cao 2026-08-03 14:13 ` [PATCH v2 1/3] backlight: aw99706: Fix DT property names to match binding Junjie Cao 2026-08-04 3:07 ` Junjie Cao 2026-08-04 4:23 ` sashiko-bot 2026-08-03 14:13 ` [PATCH v2 2/3] backlight: aw99706: Validate all DT property values consistently Junjie Cao 2026-08-04 4:26 ` sashiko-bot 2026-08-03 14:13 ` [PATCH v2 3/3] backlight: aw99706: Honor the core blank state in update_status() Junjie Cao 2026-08-04 4:23 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox