* [PATCH 0/2] backlight: add support for Silergy SY7758
@ 2026-05-10 17:08 Alexandre Hamamdjian via B4 Relay
2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Alexandre Hamamdjian via B4 Relay @ 2026-05-10 17:08 UTC (permalink / raw)
To: Philippe Simons, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller
Cc: dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
Alexandre Hamamdjian
The Silergy SY7758 is an I2C-controlled multi-channel LED backlight
driver used to drive the edge-lit LED strings of LCD panels. It is
present on the Ayaneo Pocket DS handheld, where it drives the panel
backlight, and is required before the panel can be lit.
This series adds the device tree binding for the new "silergy,sy7758"
compatible and the matching driver. The driver registers a backlight
class device with a 12-bit linear brightness range and programs the
chip's mode and current configuration registers on the first non-zero
brightness update.
The Ayaneo Pocket DS device tree, posted as a separate series, depends
on the binding introduced here to describe its panel backlight.
Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com>
---
Alexandre Hamamdjian (2):
dt-bindings: leds: backlight: add Silergy SY7758
backlight: sy7758: add Silergy SY7758 backlight driver
.../bindings/leds/backlight/silergy,sy7758.yaml | 47 ++++++
MAINTAINERS | 7 +
drivers/video/backlight/Kconfig | 14 ++
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/sy7758.c | 169 +++++++++++++++++++++
5 files changed, 238 insertions(+)
---
base-commit: e98d21c170b01ddef366f023bbfcf6b31509fa83
change-id: 20260510-sy7758-e46d85fd0876
Best regards,
--
Alexandre Hamamdjian <azkali.limited@gmail.com>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] dt-bindings: leds: backlight: add Silergy SY7758 2026-05-10 17:08 [PATCH 0/2] backlight: add support for Silergy SY7758 Alexandre Hamamdjian via B4 Relay @ 2026-05-10 17:08 ` Alexandre Hamamdjian via B4 Relay 2026-05-15 7:37 ` Krzysztof Kozlowski 2026-05-16 6:17 ` Claude review: " Claude Code Review Bot 2026-05-10 17:08 ` [PATCH 2/2] backlight: sy7758: add Silergy SY7758 backlight driver Alexandre Hamamdjian via B4 Relay 2026-05-16 6:17 ` Claude review: backlight: add support for Silergy SY7758 Claude Code Review Bot 2 siblings, 2 replies; 7+ messages in thread From: Alexandre Hamamdjian via B4 Relay @ 2026-05-10 17:08 UTC (permalink / raw) To: Philippe Simons, Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Helge Deller Cc: dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev, Alexandre Hamamdjian From: Alexandre Hamamdjian <azkali.limited@gmail.com> The Silergy SY7758 is an I2C-controlled multi-channel LED backlight driver typically used to drive the edge-lit LED strings of LCD panels in handheld and embedded devices. Brightness is programmed as a 12-bit linear value through two 8-bit registers. Document the binding for the new compatible "silergy,sy7758" so it can be referenced by board device trees and the matching driver, and add a MAINTAINERS entry covering both the binding and the upcoming driver. Co-developed-by: Philippe Simons <simons.philippe@gmail.com> Signed-off-by: Philippe Simons <simons.philippe@gmail.com> Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com> --- .../bindings/leds/backlight/silergy,sy7758.yaml | 47 ++++++++++++++++++++++ MAINTAINERS | 7 ++++ 2 files changed, 54 insertions(+) diff --git a/Documentation/devicetree/bindings/leds/backlight/silergy,sy7758.yaml b/Documentation/devicetree/bindings/leds/backlight/silergy,sy7758.yaml new file mode 100644 index 000000000000..408029e19e2e --- /dev/null +++ b/Documentation/devicetree/bindings/leds/backlight/silergy,sy7758.yaml @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/backlight/silergy,sy7758.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Silergy SY7758 I2C LED backlight controller + +maintainers: + - Alexandre Hamamdjian <azkali.limited@gmail.com> + - Philippe Simons <simons.philippe@gmail.com> + +description: + The Silergy SY7758 is an I2C-controlled multi-channel LED backlight + driver typically used to drive the edge-lit LED strings of LCD panels + in handheld and embedded devices. Brightness is programmed as a 12-bit + linear value through two 8-bit registers. + +allOf: + - $ref: common.yaml# + +properties: + compatible: + const: silergy,sy7758 + + reg: + maxItems: 1 + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + backlight@36 { + compatible = "silergy,sy7758"; + reg = <0x36>; + max-brightness = <4080>; + default-brightness = <1500>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index f877e5aaf2c7..9c132394ca41 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -24561,6 +24561,13 @@ S: Maintained F: drivers/input/touchscreen/silead.c F: drivers/platform/x86/touchscreen_dmi.c +SILERGY SY7758 BACKLIGHT DRIVER +M: Alexandre Hamamdjian <azkali.limited@gmail.com> +M: Philippe Simons <simons.philippe@gmail.com> +S: Maintained +F: Documentation/devicetree/bindings/leds/backlight/silergy,sy7758.yaml +F: drivers/video/backlight/sy7758.c + SILICON LABS WIRELESS DRIVERS (for WFxxx series) M: Jérôme Pouiller <jerome.pouiller@silabs.com> L: linux-wireless@vger.kernel.org -- 2.54.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Silergy SY7758 2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay @ 2026-05-15 7:37 ` Krzysztof Kozlowski 2026-05-16 6:17 ` Claude review: " Claude Code Review Bot 1 sibling, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2026-05-15 7:37 UTC (permalink / raw) To: Alexandre Hamamdjian Cc: Philippe Simons, Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev On Mon, May 11, 2026 at 12:08:02AM +0700, Alexandre Hamamdjian wrote: > The Silergy SY7758 is an I2C-controlled multi-channel LED backlight > driver typically used to drive the edge-lit LED strings of LCD panels > in handheld and embedded devices. Brightness is programmed as a 12-bit > linear value through two 8-bit registers. > > Document the binding for the new compatible "silergy,sy7758" so it can > be referenced by board device trees and the matching driver, and add a > MAINTAINERS entry covering both the binding and the upcoming driver. > > Co-developed-by: Philippe Simons <simons.philippe@gmail.com> > Signed-off-by: Philippe Simons <simons.philippe@gmail.com> > Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com> > --- > .../bindings/leds/backlight/silergy,sy7758.yaml | 47 ++++++++++++++++++++++ This was already sent two weeks ago: <20260430-topic-sm8650-ayaneo-pocket-s2-sy7758-v2-1-308140640de9@linaro.org> and that posting looks closer to complete. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Claude review: dt-bindings: leds: backlight: add Silergy SY7758 2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay 2026-05-15 7:37 ` Krzysztof Kozlowski @ 2026-05-16 6:17 ` Claude Code Review Bot 1 sibling, 0 replies; 7+ messages in thread From: Claude Code Review Bot @ 2026-05-16 6:17 UTC (permalink / raw) To: dri-devel-reviews Patch Review The binding YAML and MAINTAINERS entry are clean and well-structured. **Minor issue — example advertises properties the driver ignores:** The DT example includes `max-brightness` and `default-brightness` (inherited from `common.yaml`): ```yaml backlight@36 { compatible = "silergy,sy7758"; reg = <0x36>; max-brightness = <4080>; default-brightness = <1500>; }; ``` These properties are defined in the common schema so they're valid from a binding perspective, but the driver (patch 2) hardcodes `MAX_BRIGHTNESS` and `DEFAULT_BRIGHTNESS` as `#define` constants and never reads them from DT. Either the driver should consume these properties, or the example should not include them (to avoid misleading DT authors into thinking they're functional). **Nit:** The binding looks good otherwise — `allOf: - $ref: common.yaml#`, `unevaluatedProperties: false`, required properties, and the MAINTAINERS entry are all correct. --- --- Generated by Claude Code Patch Reviewer ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] backlight: sy7758: add Silergy SY7758 backlight driver 2026-05-10 17:08 [PATCH 0/2] backlight: add support for Silergy SY7758 Alexandre Hamamdjian via B4 Relay 2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay @ 2026-05-10 17:08 ` Alexandre Hamamdjian via B4 Relay 2026-05-16 6:17 ` Claude review: " Claude Code Review Bot 2026-05-16 6:17 ` Claude review: backlight: add support for Silergy SY7758 Claude Code Review Bot 2 siblings, 1 reply; 7+ messages in thread From: Alexandre Hamamdjian via B4 Relay @ 2026-05-10 17:08 UTC (permalink / raw) To: Philippe Simons, Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Helge Deller Cc: dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev, Alexandre Hamamdjian From: Alexandre Hamamdjian <azkali.limited@gmail.com> Add a driver for the Silergy SY7758 I2C-controlled multi-channel LED backlight controller. The chip drives the edge-lit LED strings of LCD panels in handheld and embedded devices, and is for example present on the Ayaneo Pocket DS handheld where it drives the panel backlight. The driver registers a backlight class device with a 12-bit linear brightness range. On the first non-zero update, the chip's mode and current configuration registers are programmed; subsequent brightness updates only rewrite the two brightness registers. A mutex serialises concurrent updates against the deferred init path. Co-developed-by: Philippe Simons <simons.philippe@gmail.com> Signed-off-by: Philippe Simons <simons.philippe@gmail.com> Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com> --- drivers/video/backlight/Kconfig | 14 ++++ drivers/video/backlight/Makefile | 1 + drivers/video/backlight/sy7758.c | 169 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 184 insertions(+) diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig index a7a3fbaf7c29..c529d2861525 100644 --- a/drivers/video/backlight/Kconfig +++ b/drivers/video/backlight/Kconfig @@ -461,6 +461,20 @@ config BACKLIGHT_SKY81452 To compile this driver as a module, choose M here: the module will be called sky81452-backlight +config BACKLIGHT_SY7758 + tristate "Backlight Driver for Silergy SY7758" + depends on I2C + select REGMAP_I2C + help + This enables support for the Silergy SY7758 I2C-controlled + multi-channel LED backlight driver, commonly used to drive the + edge-lit LED strings of LCD panels in handheld and embedded + devices. The driver exposes a 12-bit linear brightness control + through the standard backlight class. + + To compile this driver as a module, choose M here: the module + will be called sy7758. + config BACKLIGHT_TPS65217 tristate "TPS65217 Backlight" depends on MFD_TPS65217 diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile index 794820a98ed4..00d3e379b297 100644 --- a/drivers/video/backlight/Makefile +++ b/drivers/video/backlight/Makefile @@ -57,6 +57,7 @@ obj-$(CONFIG_BACKLIGHT_QCOM_WLED) += qcom-wled.o obj-$(CONFIG_BACKLIGHT_RT4831) += rt4831-backlight.o obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o obj-$(CONFIG_BACKLIGHT_SKY81452) += sky81452-backlight.o +obj-$(CONFIG_BACKLIGHT_SY7758) += sy7758.o obj-$(CONFIG_BACKLIGHT_TPS65217) += tps65217_bl.o obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o obj-$(CONFIG_BACKLIGHT_ARCXCNN) += arcxcnn_bl.o diff --git a/drivers/video/backlight/sy7758.c b/drivers/video/backlight/sy7758.c new file mode 100644 index 000000000000..6a318bd62030 --- /dev/null +++ b/drivers/video/backlight/sy7758.c @@ -0,0 +1,169 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Backlight driver for the Silergy sy7758 + * + * Copyright (C) 2025 Kancy Joe <kancy2333@outlook.com> + */ + +#include <linux/backlight.h> +#include <linux/err.h> +#include <linux/gpio/consumer.h> +#include <linux/i2c.h> +#include <linux/module.h> +#include <linux/of.h> +#include <linux/regmap.h> + +#define DEFAULT_BRIGHTNESS 1500 +#define MAX_BRIGHTNESS 4080 +#define REG_MAX 0xa9 + +#define BL_BRT_L 0x10 +#define BL_BRT_H 0x11 + +static DEFINE_MUTEX(sy7758_update_backlight_mutex); + +struct sy7758 { + struct i2c_client *client; + struct regmap *regmap; + bool led_on; +}; + +static void sy7758_init(struct sy7758 *sydev); + +static const struct regmap_config sy7758_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + .max_register = REG_MAX, +}; + +static int sy7758_write(struct sy7758 *sydev, unsigned int reg, + unsigned int val) +{ + return regmap_write(sydev->regmap, reg, val); +} + +static int sy7758_backlight_update_status(struct backlight_device *backlight_dev) +{ + struct sy7758 *sydev = bl_get_data(backlight_dev); + unsigned int brightness = backlight_get_brightness(backlight_dev); + + mutex_lock(&sy7758_update_backlight_mutex); + + if (!sydev->led_on && brightness > 0) { + sy7758_init(sydev); + sydev->led_on = true; + } else if (brightness == 0) { + sydev->led_on = false; + } + + sy7758_write(sydev, BL_BRT_L, brightness & 0xf0); + + sy7758_write(sydev, BL_BRT_H, (brightness >> 8) & 0xf); + + mutex_unlock(&sy7758_update_backlight_mutex); + return 0; +} + +static const struct backlight_ops sy7758_backlight_ops = { + .options = BL_CORE_SUSPENDRESUME, + .update_status = sy7758_backlight_update_status, +}; + +static void sy7758_init(struct sy7758 *sydev) +{ + sy7758_write(sydev, 0x01, 0x85); + sy7758_write(sydev, 0x10, 0x00); + sy7758_write(sydev, 0x11, 0x00); + sy7758_write(sydev, 0xa5, 0x64); + sy7758_write(sydev, 0xa0, 0x55); + sy7758_write(sydev, 0xa1, 0x9a); + sy7758_write(sydev, 0xa9, 0x80); + sy7758_write(sydev, 0xa2, 0x28); + + usleep_range(10000, 11000); + + sy7758_write(sydev, 0x10, 0x40); + sy7758_write(sydev, 0x11, 0x01); + // Max brightness + // 0x10: 0xf0 Low + // 0x11: 0x0f High + + // Min brightness + // 0x10: 0x10 Low + // 0x11: 0x00 High + sydev->led_on = true; +} + +static int sy7758_probe(struct i2c_client *client) +{ + struct backlight_device *backlight_dev; + struct backlight_properties props; + struct sy7758 *sydev; + + sydev = devm_kzalloc(&client->dev, sizeof(*sydev), GFP_KERNEL); + if (!sydev) + return -ENOMEM; + + sydev->client = client; + sydev->regmap = devm_regmap_init_i2c(client, &sy7758_regmap_config); + if (IS_ERR(sydev->regmap)) + return dev_err_probe(&client->dev, PTR_ERR(sydev->regmap), + "failed to init regmap\n"); + + memset(&props, 0, sizeof(props)); + props.type = BACKLIGHT_RAW; + props.max_brightness = MAX_BRIGHTNESS; + props.brightness = DEFAULT_BRIGHTNESS; + props.scale = BACKLIGHT_SCALE_LINEAR; + + backlight_dev = devm_backlight_device_register(&client->dev, "sy7758-backlight", + &client->dev, sydev, &sy7758_backlight_ops, &props); + if (IS_ERR(backlight_dev)) + return dev_err_probe(&client->dev, PTR_ERR(backlight_dev), + "failed to register backlight device\n"); + + sy7758_init(sydev); + + i2c_set_clientdata(client, backlight_dev); + backlight_update_status(backlight_dev); + + return 0; +} + +static void sy7758_remove(struct i2c_client *client) +{ + struct backlight_device *backlight_dev = i2c_get_clientdata(client); + + backlight_dev->props.brightness = 0; + backlight_update_status(backlight_dev); +} + +static const struct i2c_device_id sy7758_ids[] = { + { "sy7758" }, + {} +}; +MODULE_DEVICE_TABLE(i2c, sy7758_ids); + +static const struct of_device_id sy7758_match_table[] = { + { + .compatible = "silergy,sy7758", + }, + {}, +}; +MODULE_DEVICE_TABLE(of, sy7758_match_table); + +static struct i2c_driver sy7758_driver = { + .driver = { + .name = "sy7758", + .of_match_table = sy7758_match_table, + }, + .probe = sy7758_probe, + .remove = sy7758_remove, + .id_table = sy7758_ids, +}; + +module_i2c_driver(sy7758_driver); + +MODULE_DESCRIPTION("Silergy sy7758 Backlight Driver"); +MODULE_AUTHOR("Kancy Joe <kancy2333@outlook.com>"); +MODULE_LICENSE("GPL"); -- 2.54.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Claude review: backlight: sy7758: add Silergy SY7758 backlight driver 2026-05-10 17:08 ` [PATCH 2/2] backlight: sy7758: add Silergy SY7758 backlight driver Alexandre Hamamdjian via B4 Relay @ 2026-05-16 6:17 ` Claude Code Review Bot 0 siblings, 0 replies; 7+ messages in thread From: Claude Code Review Bot @ 2026-05-16 6:17 UTC (permalink / raw) To: dri-devel-reviews Patch Review **Bug — global static mutex instead of per-device:** ```c static DEFINE_MUTEX(sy7758_update_backlight_mutex); ``` This is a single mutex shared by *all* instances of the driver. If two SY7758 chips exist on different I2C buses, their brightness updates serialize against each other needlessly. The mutex should be a member of `struct sy7758` and initialized with `mutex_init()` in probe (or use `DEFINE_MUTEX` equivalent per-allocation). The only other backlight driver using a static mutex (`kb3886_bl.c`) is an ancient single-instance driver accessing global port I/O — not a pattern to follow. **Bug — brightness values 1-15 silently produce zero:** ```c sy7758_write(sydev, BL_BRT_L, brightness & 0xf0); sy7758_write(sydev, BL_BRT_H, (brightness >> 8) & 0xf); ``` The mask `brightness & 0xf0` discards the low 4 bits. For userspace brightness values 1 through 15, both register writes produce 0x00, making the backlight fully off — yet `sydev->led_on` remains `true` (it was set in `sy7758_init()` or by the `if` branch above). This means a subsequent write of brightness=0 won't trigger re-initialization, it'll just clear `led_on`. Then a later non-zero brightness will correctly re-init. The practical effect is that values 1-15 behave identically to 0 but without proper shutdown/re-init semantics. Given MAX_BRIGHTNESS=4080 (0xFF0) and the 4-bit discard, there are only ~256 distinct hardware levels out of the 4081 userspace values. Consider either (a) making `max_brightness = 255` and shifting internally, or (b) documenting that the effective step size is 16. **Major concern — no error checking on register writes:** ```c static void sy7758_init(struct sy7758 *sydev) { sy7758_write(sydev, 0x01, 0x85); sy7758_write(sydev, 0x10, 0x00); ... ``` `sy7758_write()` returns `int` (propagating `regmap_write()`'s error), but every caller discards the return value. If any write fails during `sy7758_init()`, the chip could be left in a partially-configured state with no indication to userspace. `sy7758_init()` should return `int` and propagate errors, and `update_status()` should propagate write errors instead of unconditionally returning 0. **Magic register values with no documentation:** ```c sy7758_write(sydev, 0x01, 0x85); sy7758_write(sydev, 0xa5, 0x64); sy7758_write(sydev, 0xa0, 0x55); sy7758_write(sydev, 0xa1, 0x9a); sy7758_write(sydev, 0xa9, 0x80); sy7758_write(sydev, 0xa2, 0x28); ``` All register addresses and values are bare hex literals. There's no way for a reviewer to verify correctness without a datasheet reference. Each register should have a `#define` with a meaningful name (e.g., `SY7758_REG_MODE`, `SY7758_REG_LED_CURRENT`, etc.), and the values should be explained (even briefly — e.g., "enable 4-channel mode" or "set LED current to 20mA"). **Redundant double-init in probe:** ```c sy7758_init(sydev); i2c_set_clientdata(client, backlight_dev); backlight_update_status(backlight_dev); ``` `sy7758_init()` programs the chip including writing brightness registers (0x10=0x40, 0x11=0x01 → brightness=0x140=320). Then `backlight_update_status()` is called, which sees `led_on == true` (set by `sy7758_init`) and writes the `DEFAULT_BRIGHTNESS` (1500) to the brightness registers. The init brightness write is immediately overwritten. Either remove the brightness register writes from `sy7758_init()`, or don't call `sy7758_init()` directly from probe (let the first `update_status` trigger it via the `!led_on` path). **Unused forward declaration:** ```c static void sy7758_init(struct sy7758 *sydev); ``` This can be eliminated by moving `sy7758_init()` above `sy7758_backlight_update_status()`. **Unused includes:** ```c #include <linux/gpio/consumer.h> #include <linux/of.h> ``` The driver does not use any GPIO consumer API. `linux/of.h` is not strictly needed — `struct of_device_id` comes from `linux/mod_devicetable.h` which is pulled in transitively. **Unused struct member:** ```c struct sy7758 { struct i2c_client *client; struct regmap *regmap; bool led_on; }; ``` `sydev->client` is assigned in probe but never referenced again. Everything goes through `regmap`. Remove it unless future use is planned. **`memset` instead of zero-initialization:** ```c memset(&props, 0, sizeof(props)); ``` Preferred style for stack variables in modern kernel code is `struct backlight_properties props = { };`. **Trivial wrapper adds no value:** ```c static int sy7758_write(struct sy7758 *sydev, unsigned int reg, unsigned int val) { return regmap_write(sydev->regmap, reg, val); } ``` This is a 1:1 forwarding wrapper. Either add value (e.g., error logging, tracing) or call `regmap_write()` directly. **Copyright/authorship discrepancy:** The driver header says `Copyright (C) 2025 Kancy Joe <kancy2333@outlook.com>`, but Kancy Joe doesn't appear in the commit's Signed-off-by chain or MAINTAINERS. The commit is signed by Alexandre Hamamdjian and co-developed by Philippe Simons. If the code originated from Kancy Joe's work, the attribution chain should be clear (e.g., Co-developed-by or Original-author tag). **Comments that belong in the commit, not the code:** ```c // Max brightness // 0x10: 0xf0 Low // 0x11: 0x0f High // Min brightness // 0x10: 0x10 Low // 0x11: 0x00 High ``` These read like developer notes, not code documentation. If they explain the register encoding for maintainability, they should be at the register `#define` sites. As-is they sit after two writes of hardcoded values and are misleading (they describe values different from what was just written). --- Generated by Claude Code Patch Reviewer ^ permalink raw reply [flat|nested] 7+ messages in thread
* Claude review: backlight: add support for Silergy SY7758 2026-05-10 17:08 [PATCH 0/2] backlight: add support for Silergy SY7758 Alexandre Hamamdjian via B4 Relay 2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay 2026-05-10 17:08 ` [PATCH 2/2] backlight: sy7758: add Silergy SY7758 backlight driver Alexandre Hamamdjian via B4 Relay @ 2026-05-16 6:17 ` Claude Code Review Bot 2 siblings, 0 replies; 7+ messages in thread From: Claude Code Review Bot @ 2026-05-16 6:17 UTC (permalink / raw) To: dri-devel-reviews Overall Series Review Subject: backlight: add support for Silergy SY7758 Author: Alexandre Hamamdjian via B4 Relay <devnull+azkali.limited.gmail.com@kernel.org> Patches: 4 Reviewed: 2026-05-16T16:17:41.648861 --- This is a 2-patch series adding a DT binding and driver for the Silergy SY7758 I2C LED backlight controller, used on the Ayaneo Pocket DS handheld. The binding is reasonable and uses the common backlight schema. The driver is functional in concept but has several issues ranging from correctness bugs to code quality problems that should be addressed before merge. The most significant issues are: (1) a global static mutex that breaks multi-instance correctness, (2) no error checking on any I2C register writes, (3) a brightness encoding that silently maps userspace values 1-15 to hardware-zero, (4) magic register values throughout `sy7758_init()` with no symbolic names, and (5) DT properties `default-brightness` and `max-brightness` advertised in the binding example but never read by the driver. --- --- Generated by Claude Code Patch Reviewer ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-16 6:17 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-10 17:08 [PATCH 0/2] backlight: add support for Silergy SY7758 Alexandre Hamamdjian via B4 Relay 2026-05-10 17:08 ` [PATCH 1/2] dt-bindings: leds: backlight: add " Alexandre Hamamdjian via B4 Relay 2026-05-15 7:37 ` Krzysztof Kozlowski 2026-05-16 6:17 ` Claude review: " Claude Code Review Bot 2026-05-10 17:08 ` [PATCH 2/2] backlight: sy7758: add Silergy SY7758 backlight driver Alexandre Hamamdjian via B4 Relay 2026-05-16 6:17 ` Claude review: " Claude Code Review Bot 2026-05-16 6:17 ` Claude review: backlight: add support for Silergy SY7758 Claude Code Review Bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox