* [PATCH 0/2] backlight: add ktd3137 support
@ 2026-11-02 19:58 Roman Vivchar via B4 Relay
2026-11-02 19:58 ` [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137 Roman Vivchar via B4 Relay
2026-11-02 19:58 ` [PATCH 2/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
0 siblings, 2 replies; 11+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 19:58 UTC (permalink / raw)
To: 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,
Roman Vivchar
This patch series adds support for Kinetic KTD3137 backlight IC. It
supports linear brightness range from 0 to 2047.
While the chip supports PWM and MSB modes, they weren't included, since
MSB mode supports only 8-bit brightness range, and PWM is not enabled on
this board. I have checked other Xiaomi vendor kernels, and their
configuration appear to be the same as on my board. I'm not aware if any
device uses PWM mode with this chip.
This series was developed and tested on the Xiaomi Redmi Note 9 board.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
Roman Vivchar (2):
dt-bindings: leds: backlight: add Kinetic KTD3137
backlight: add ktd3137 support
.../bindings/leds/backlight/kinetic,ktd3137.yaml | 64 +++++
MAINTAINERS | 6 +
drivers/video/backlight/Kconfig | 11 +
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/ktd3137.c | 262 +++++++++++++++++++++
5 files changed, 344 insertions(+)
---
base-commit: 5e6de6a2b522f659defacb1551d0465ba6ce13cf
change-id: 20261102-6768-ktd3137-4ec95068fb6a
Best regards,
--
Roman Vivchar <rva333@protonmail.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-02 19:58 [PATCH 0/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
@ 2026-11-02 19:58 ` Roman Vivchar via B4 Relay
2026-11-03 14:05 ` Daniel Thompson
2026-11-02 19:58 ` [PATCH 2/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
1 sibling, 1 reply; 11+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 19:58 UTC (permalink / raw)
To: 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,
Roman Vivchar
From: Roman Vivchar <rva333@protonmail.com>
Kinetic KTD3137 is an LED IC, used in various mobile devices for the
display backlight. Add devicetree bindings documentation for this chip.
Datasheet: https://www.kinet-ic.com/uploads/KTD3137-04a.pdf
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
.../bindings/leds/backlight/kinetic,ktd3137.yaml | 64 ++++++++++++++++++++++
MAINTAINERS | 5 ++
2 files changed, 69 insertions(+)
diff --git a/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
new file mode 100644
index 000000000000..140615640a9a
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd3137.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Kinetic Technologies KTD3137 LED Backlight
+
+maintainers:
+ - Roman Vivchar <rva333@protonmail.com>
+
+description:
+ The Kinetic Technologies KTD3137 is an I2C LED backlight driver for medium
+ to large size LCD panels.
+
+allOf:
+ - $ref: common.yaml#
+
+properties:
+ compatible:
+ const: kinetic,ktd3137
+
+ reg:
+ maxItems: 1
+
+ default-brightness:
+ maximum: 2047
+ default: 2047
+
+ enable-gpios:
+ maxItems: 1
+ description: GPIO connected to the HWEN pin.
+
+ led-max-microamp:
+ minimum: 5000
+ maximum: 29800
+ default: 20200
+
+ vin-supply: true
+
+required:
+ - compatible
+ - reg
+ - vin-supply
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ backlight@36 {
+ compatible = "kinetic,ktd3137";
+ reg = <0x36>;
+ enable-gpios = <&pio 160 GPIO_ACTIVE_HIGH>;
+ led-max-microamp = <20200>;
+ default-brightness = <2047>;
+ vin-supply = <&vsys>;
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 15c7dc516f7c..24dd5b43f167 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14618,6 +14618,11 @@ S: Maintained
F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
F: drivers/video/backlight/ktd2801-backlight.c
+KTD3137 BACKLIGHT DRIVER
+M: Roman Vivchar <rva333@protonmail.com>
+S: Maintained
+F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
+
KTEST
M: Steven Rostedt <rostedt@goodmis.org>
M: John Hawley <warthog9@eaglescrag.net>
--
2.56.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/2] backlight: add ktd3137 support
2026-11-02 19:58 [PATCH 0/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
2026-11-02 19:58 ` [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137 Roman Vivchar via B4 Relay
@ 2026-11-02 19:58 ` Roman Vivchar via B4 Relay
2026-11-03 14:15 ` Daniel Thompson
1 sibling, 1 reply; 11+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 19:58 UTC (permalink / raw)
To: 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,
Roman Vivchar
From: Roman Vivchar <rva333@protonmail.com>
Add support for the KTD3137 display backlight IC. It's used in various
Xiaomi phones, such as Xiaomi Redmi Note 9.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
MAINTAINERS | 1 +
drivers/video/backlight/Kconfig | 11 ++
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/ktd3137.c | 262 ++++++++++++++++++++++++++++++++++++++
4 files changed, 275 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 24dd5b43f167..23114fd09445 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14622,6 +14622,7 @@ KTD3137 BACKLIGHT DRIVER
M: Roman Vivchar <rva333@protonmail.com>
S: Maintained
F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
+F: drivers/video/backlight/ktd3137.c
KTEST
M: Steven Rostedt <rostedt@goodmis.org>
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 7c66b8840d88..0196b8597367 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -199,6 +199,17 @@ config BACKLIGHT_KTD2801
Say Y to enable the backlight driver for the Kinetic KTD2801 1-wire
GPIO-controlled backlight found in Samsung Galaxy Core Prime VE LTE.
+config BACKLIGHT_KTD3137
+ tristate "Backlight Driver for Kinetic KTD3137"
+ depends on I2C
+ select REGMAP_I2C
+ help
+ Say Y to enable the backlight driver for the Kinetic KTD3137
+ found in various Xiaomi smartphones.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ktd3137.
+
config BACKLIGHT_KTZ8866
tristate "Backlight Driver for Kinetic KTZ8866"
depends on I2C
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index 34469711c6cd..b2d3b69e9e32 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -38,6 +38,7 @@ obj-$(CONFIG_BACKLIGHT_HP700) += jornada720_bl.o
obj-$(CONFIG_BACKLIGHT_IPAQ_MICRO) += ipaq_micro_bl.o
obj-$(CONFIG_BACKLIGHT_KTD253) += ktd253-backlight.o
obj-$(CONFIG_BACKLIGHT_KTD2801) += ktd2801-backlight.o
+obj-$(CONFIG_BACKLIGHT_KTD3137) += ktd3137.o
obj-$(CONFIG_BACKLIGHT_KTZ8866) += ktz8866.o
obj-$(CONFIG_BACKLIGHT_LM3509) += lm3509_bl.o
obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o
diff --git a/drivers/video/backlight/ktd3137.c b/drivers/video/backlight/ktd3137.c
new file mode 100644
index 000000000000..a3ff334b8d46
--- /dev/null
+++ b/drivers/video/backlight/ktd3137.c
@@ -0,0 +1,262 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2025-2026 Roman Vivchar <rva333@protonmail.com>
+ *
+ * Backlight driver for the Kinetic KTD3137
+ */
+
+#include <linux/backlight.h>
+#include <linux/bitfield.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/gpio/consumer.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+
+#define KTD3137_REG_DEV_ID 0x00
+#define KTD3137_REG_SW_RESET 0x01
+#define KTD3137_REG_MODE 0x02
+#define KTD3137_REG_CONTROL 0x03
+#define KTD3137_REG_RATIO_LSB 0x04
+#define KTD3137_REG_RATIO_MSB 0x05
+#define KTD3137_REG_PWM 0x06
+#define KTD3137_REG_RAMP_ON 0x07
+#define KTD3137_REG_TRANS_RAMP 0x08
+#define KTD3137_REG_FLASH_SETTING 0x09
+#define KTD3137_REG_STATUS 0x0a
+#define KTD3137_REG_MAX 0x0a
+
+/* KTD3137_REG_DEV_ID */
+#define KTD3137_DEV_ID_A 0x12
+#define KTD3137_DEV_ID_B 0x18
+
+/* KTD3137_REG_MODE */
+#define KTD3137_MODE_BL_EN BIT(0)
+#define KTD3137_MODE_CURRENT_MASK GENMASK(7, 3)
+
+/* KTD3137_REG_CONTROL */
+#define KTD3137_CONTROL_LINEAR (BIT(1) | BIT(2))
+#define KTD3137_CONTROL_IND_2P6A BIT(3)
+#define KTD3137_CONTROL_OVP_32V BIT(5)
+#define KTD3137_CONTROL_FREQ_1000KHZ BIT(6)
+#define KTD3137_CONTROL_DEFAULT (KTD3137_CONTROL_IND_2P6A | \
+ KTD3137_CONTROL_OVP_32V | \
+ KTD3137_CONTROL_FREQ_1000KHZ)
+
+/* KTD3137_REG_RATIO_LSB */
+#define KTD3137_RATIO_LSB_MASK GENMASK(2, 0)
+
+/* KTD3137_REG_PWM */
+#define KTD3137_PWM_CH1_EN BIT(0)
+#define KTD3137_PWM_CH2_EN BIT(1)
+#define KTD3137_PWM_FILTER_6LSB (BIT(3) | BIT(4))
+#define KTD3137_PWM_DISABLE BIT(7)
+#define KTD3137_PWM_DEFAULT (KTD3137_PWM_CH1_EN | \
+ KTD3137_PWM_CH2_EN | \
+ KTD3137_PWM_FILTER_6LSB | \
+ KTD3137_PWM_DISABLE)
+
+/* KTD3137_REG_RAMP_ON */
+#define KTD3137_RAMP_ON_MASK GENMASK(7, 4)
+#define KTD3137_RAMP_OFF_MASK GENMASK(3, 0)
+/* Ramp ON: 2ms, OFF: 8ms */
+#define KTD3137_RAMP_DEFAULT (FIELD_PREP(KTD3137_RAMP_ON_MASK, 4) | \
+ FIELD_PREP(KTD3137_RAMP_OFF_MASK, 4))
+
+#define KTD3137_DEFAULT_BRIGHTNESS 2047
+#define KTD3137_MAX_BRIGHTNESS 2047
+
+#define KTD3137_I_MIN_UA 5000
+#define KTD3137_I_MAX_UA 29800
+#define KTD3137_I_STEP_UA 800
+#define KTD3137_I_DEFAULT_UA 20200
+
+struct ktd3137 {
+ struct device *dev;
+ struct regmap *regmap;
+ struct gpio_desc *enable_gpio;
+ u32 led_current;
+};
+
+static const struct regmap_config ktd3137_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = KTD3137_REG_MAX,
+};
+
+static int ktd3137_init(struct ktd3137 *ktd)
+{
+ u32 val = KTD3137_CONTROL_DEFAULT | KTD3137_CONTROL_LINEAR;
+ int ret;
+
+ ret = regmap_write(ktd->regmap, KTD3137_REG_CONTROL, val);
+ if (ret)
+ return ret;
+
+ ret = regmap_write(ktd->regmap, KTD3137_REG_PWM, KTD3137_PWM_DEFAULT);
+ if (ret)
+ return ret;
+
+ ret = regmap_write(ktd->regmap, KTD3137_REG_RAMP_ON, KTD3137_RAMP_DEFAULT);
+ if (ret)
+ return ret;
+
+ ret = regmap_write(ktd->regmap, KTD3137_REG_TRANS_RAMP, 0x00);
+ if (ret)
+ return ret;
+
+ return regmap_update_bits(ktd->regmap, KTD3137_REG_MODE,
+ KTD3137_MODE_CURRENT_MASK, ktd->led_current);
+}
+
+static int ktd3137_backlight_update_status(struct backlight_device *backlight_dev)
+{
+ struct ktd3137 *ktd = bl_get_data(backlight_dev);
+ unsigned int brightness = backlight_get_brightness(backlight_dev);
+ int ret;
+
+ if (brightness > 0) {
+ ret = regmap_write(ktd->regmap, KTD3137_REG_RATIO_LSB,
+ brightness & KTD3137_RATIO_LSB_MASK);
+ if (ret)
+ return ret;
+
+ ret = regmap_write(ktd->regmap, KTD3137_REG_RATIO_MSB,
+ brightness >> 3);
+ if (ret)
+ return ret;
+ }
+
+ return regmap_update_bits(ktd->regmap, KTD3137_REG_MODE,
+ KTD3137_MODE_BL_EN,
+ brightness ? KTD3137_MODE_BL_EN : 0);
+}
+
+static const struct backlight_ops ktd3137_backlight_ops = {
+ .options = BL_CORE_SUSPENDRESUME,
+ .update_status = ktd3137_backlight_update_status,
+};
+
+static int ktd3137_parse_dt(struct ktd3137 *ktd)
+{
+ u32 max_ua = KTD3137_I_DEFAULT_UA;
+ u32 val;
+
+ device_property_read_u32(ktd->dev, "led-max-microamp", &max_ua);
+
+ if (max_ua < KTD3137_I_MIN_UA || max_ua > KTD3137_I_MAX_UA)
+ return dev_err_probe(ktd->dev, -EINVAL,
+ "led-max-microamp (%u) out of range\n", max_ua);
+
+ val = (max_ua - KTD3137_I_MIN_UA) / KTD3137_I_STEP_UA;
+ ktd->led_current = FIELD_PREP(KTD3137_MODE_CURRENT_MASK, val);
+
+ return 0;
+}
+
+static int ktd3137_probe(struct i2c_client *client)
+{
+ struct backlight_device *backlight_dev;
+ struct backlight_properties props = { };
+ struct ktd3137 *ktd;
+ u32 val;
+ int ret;
+
+ ktd = devm_kzalloc(&client->dev, sizeof(*ktd), GFP_KERNEL);
+ if (!ktd)
+ return -ENOMEM;
+
+ ktd->dev = &client->dev;
+
+ ret = devm_regulator_get_enable(ktd->dev, "vin");
+ if (ret)
+ return dev_err_probe(ktd->dev, ret, "failed to power up\n");
+
+ ktd->enable_gpio = devm_gpiod_get_optional(ktd->dev, "enable",
+ GPIOD_OUT_HIGH);
+ if (IS_ERR(ktd->enable_gpio))
+ return dev_err_probe(ktd->dev, PTR_ERR(ktd->enable_gpio),
+ "failed to get enable gpio\n");
+
+ /* HWEN should stay HIGH for at least 150us before I2C can be used */
+ fsleep(150);
+
+ ktd->regmap = devm_regmap_init_i2c(client, &ktd3137_regmap_config);
+ if (IS_ERR(ktd->regmap))
+ return dev_err_probe(ktd->dev, PTR_ERR(ktd->regmap),
+ "failed to init regmap\n");
+
+ ret = regmap_read(ktd->regmap, KTD3137_REG_DEV_ID, &val);
+ if (ret)
+ return dev_err_probe(ktd->dev, ret, "failed to read chip id\n");
+
+ if (val != KTD3137_DEV_ID_A && val != KTD3137_DEV_ID_B)
+ return dev_err_probe(ktd->dev, -ENODEV,
+ "unsupported chip id: 0x%02x\n", val);
+
+ ret = ktd3137_parse_dt(ktd);
+ if (ret)
+ return ret;
+
+ ret = ktd3137_init(ktd);
+ if (ret)
+ return dev_err_probe(ktd->dev, ret, "failed to init chip\n");
+
+ props.type = BACKLIGHT_RAW;
+ props.max_brightness = KTD3137_MAX_BRIGHTNESS;
+ props.brightness = KTD3137_DEFAULT_BRIGHTNESS;
+ props.scale = BACKLIGHT_SCALE_LINEAR;
+ device_property_read_u32(ktd->dev, "default-brightness", &props.brightness);
+
+ backlight_dev = devm_backlight_device_register(ktd->dev,
+ "ktd3137-backlight",
+ ktd->dev, ktd,
+ &ktd3137_backlight_ops,
+ &props);
+ if (IS_ERR(backlight_dev))
+ return dev_err_probe(ktd->dev, PTR_ERR(backlight_dev),
+ "failed to register backlight device\n");
+
+ i2c_set_clientdata(client, backlight_dev);
+ return backlight_update_status(backlight_dev);
+}
+
+static void ktd3137_remove(struct i2c_client *client)
+{
+ struct backlight_device *backlight_dev = i2c_get_clientdata(client);
+ struct ktd3137 *ktd = bl_get_data(backlight_dev);
+
+ backlight_dev->props.brightness = 0;
+ backlight_update_status(backlight_dev);
+
+ gpiod_set_value_cansleep(ktd->enable_gpio, 0);
+}
+
+static const struct i2c_device_id ktd3137_ids[] = {
+ { "ktd3137" },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, ktd3137_ids);
+
+static const struct of_device_id ktd3137_match_table[] = {
+ { .compatible = "kinetic,ktd3137" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, ktd3137_match_table);
+
+static struct i2c_driver ktd3137_driver = {
+ .driver = {
+ .name = "ktd3137",
+ .of_match_table = ktd3137_match_table,
+ },
+ .probe = ktd3137_probe,
+ .remove = ktd3137_remove,
+ .id_table = ktd3137_ids,
+};
+module_i2c_driver(ktd3137_driver);
+
+MODULE_DESCRIPTION("Kinetic KTD3137 Backlight Driver");
+MODULE_LICENSE("GPL");
--
2.56.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-02 19:58 ` [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137 Roman Vivchar via B4 Relay
@ 2026-11-03 14:05 ` Daniel Thompson
2026-11-03 14:34 ` Roman Vivchar
0 siblings, 1 reply; 11+ messages in thread
From: Daniel Thompson @ 2026-11-03 14:05 UTC (permalink / raw)
To: rva333
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Mon, Nov 02, 2026 at 09:58:48PM +0200, Roman Vivchar via B4 Relay wrote:
> From: Roman Vivchar <rva333@protonmail.com>
>
> Kinetic KTD3137 is an LED IC, used in various mobile devices for the
> display backlight. Add devicetree bindings documentation for this chip.
>
> Datasheet: https://www.kinet-ic.com/uploads/KTD3137-04a.pdf
>
> Signed-off-by: Roman Vivchar <rva333@protonmail.com>
> ---
> .../bindings/leds/backlight/kinetic,ktd3137.yaml | 64 ++++++++++++++++++++++
> MAINTAINERS | 5 ++
> 2 files changed, 69 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
> new file mode 100644
> index 000000000000..140615640a9a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
> @@ -0,0 +1,64 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd3137.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Kinetic Technologies KTD3137 LED Backlight
> +
> +maintainers:
> + - Roman Vivchar <rva333@protonmail.com>
> +
> +description:
> + The Kinetic Technologies KTD3137 is an I2C LED backlight driver for medium
> + to large size LCD panels.
> <snip>
> + led-max-microamp:
> + minimum: 5000
> + maximum: 29800
> + default: 20200
> +
> + vin-supply: true
> +
> +required:
> + - compatible
> + - reg
> + - vin-supply
Why is vin-supply required?
Daniel.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] backlight: add ktd3137 support
2026-11-02 19:58 ` [PATCH 2/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
@ 2026-11-03 14:15 ` Daniel Thompson
2026-11-03 14:45 ` Roman Vivchar
0 siblings, 1 reply; 11+ messages in thread
From: Daniel Thompson @ 2026-11-03 14:15 UTC (permalink / raw)
To: rva333
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Mon, Nov 02, 2026 at 09:58:49PM +0200, Roman Vivchar via B4 Relay wrote:
> From: Roman Vivchar <rva333@protonmail.com>
>
> Add support for the KTD3137 display backlight IC. It's used in various
> Xiaomi phones, such as Xiaomi Redmi Note 9.
>
> Signed-off-by: Roman Vivchar <rva333@protonmail.com>
> ---
> MAINTAINERS | 1 +
> drivers/video/backlight/Kconfig | 11 ++
> drivers/video/backlight/Makefile | 1 +
> drivers/video/backlight/ktd3137.c | 262 ++++++++++++++++++++++++++++++++++++++
> 4 files changed, 275 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 24dd5b43f167..23114fd09445 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -14622,6 +14622,7 @@ KTD3137 BACKLIGHT DRIVER
> M: Roman Vivchar <rva333@protonmail.com>
> S: Maintained
> F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
> +F: drivers/video/backlight/ktd3137.c
>
> KTEST
> M: Steven Rostedt <rostedt@goodmis.org>
> diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
> index 7c66b8840d88..0196b8597367 100644
> --- a/drivers/video/backlight/Kconfig
> +++ b/drivers/video/backlight/Kconfig
> @@ -199,6 +199,17 @@ config BACKLIGHT_KTD2801
> Say Y to enable the backlight driver for the Kinetic KTD2801 1-wire
> GPIO-controlled backlight found in Samsung Galaxy Core Prime VE LTE.
>
> +config BACKLIGHT_KTD3137
> + tristate "Backlight Driver for Kinetic KTD3137"
> + depends on I2C
> + select REGMAP_I2C
> + help
> + Say Y to enable the backlight driver for the Kinetic KTD3137
> + found in various Xiaomi smartphones.
> +
> + To compile this driver as a module, choose M here: the module
> + will be called ktd3137.
> +
> config BACKLIGHT_KTZ8866
> tristate "Backlight Driver for Kinetic KTZ8866"
> depends on I2C
> diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
> index 34469711c6cd..b2d3b69e9e32 100644
> --- a/drivers/video/backlight/Makefile
> +++ b/drivers/video/backlight/Makefile
> @@ -38,6 +38,7 @@ obj-$(CONFIG_BACKLIGHT_HP700) += jornada720_bl.o
> obj-$(CONFIG_BACKLIGHT_IPAQ_MICRO) += ipaq_micro_bl.o
> obj-$(CONFIG_BACKLIGHT_KTD253) += ktd253-backlight.o
> obj-$(CONFIG_BACKLIGHT_KTD2801) += ktd2801-backlight.o
> +obj-$(CONFIG_BACKLIGHT_KTD3137) += ktd3137.o
> obj-$(CONFIG_BACKLIGHT_KTZ8866) += ktz8866.o
> obj-$(CONFIG_BACKLIGHT_LM3509) += lm3509_bl.o
> obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o
> diff --git a/drivers/video/backlight/ktd3137.c b/drivers/video/backlight/ktd3137.c
> new file mode 100644
> index 000000000000..a3ff334b8d46
> --- /dev/null
> +++ b/drivers/video/backlight/ktd3137.c
> @@ -0,0 +1,262 @@
> <snip>
> +static int ktd3137_init(struct ktd3137 *ktd)
> +{
> + u32 val = KTD3137_CONTROL_DEFAULT | KTD3137_CONTROL_LINEAR;
> + int ret;
> +
> + ret = regmap_write(ktd->regmap, KTD3137_REG_CONTROL, val);
Nitpicking but val seems a bit pointless here.
> + if (ret)
> + return ret;
> +
> + ret = regmap_write(ktd->regmap, KTD3137_REG_PWM, KTD3137_PWM_DEFAULT);
> + if (ret)
> + return ret;
> +
> + ret = regmap_write(ktd->regmap, KTD3137_REG_RAMP_ON, KTD3137_RAMP_DEFAULT);
> + if (ret)
> + return ret;
> +
> + ret = regmap_write(ktd->regmap, KTD3137_REG_TRANS_RAMP, 0x00);
> + if (ret)
> + return ret;
> +
> + return regmap_update_bits(ktd->regmap, KTD3137_REG_MODE,
> + KTD3137_MODE_CURRENT_MASK, ktd->led_current);
> +}
> <snip>
> +static int ktd3137_probe(struct i2c_client *client)
> +{
> + struct backlight_device *backlight_dev;
> + struct backlight_properties props = { };
> + struct ktd3137 *ktd;
> + u32 val;
> + int ret;
> +
> + ktd = devm_kzalloc(&client->dev, sizeof(*ktd), GFP_KERNEL);
> + if (!ktd)
> + return -ENOMEM;
> +
> + ktd->dev = &client->dev;
> +
> + ret = devm_regulator_get_enable(ktd->dev, "vin");
> + if (ret)
> + return dev_err_probe(ktd->dev, ret, "failed to power up\n");
> +
> + ktd->enable_gpio = devm_gpiod_get_optional(ktd->dev, "enable",
> + GPIOD_OUT_HIGH);
> + if (IS_ERR(ktd->enable_gpio))
> + return dev_err_probe(ktd->dev, PTR_ERR(ktd->enable_gpio),
> + "failed to get enable gpio\n");
> +
> + /* HWEN should stay HIGH for at least 150us before I2C can be used */
> + fsleep(150);
> +
> + ktd->regmap = devm_regmap_init_i2c(client, &ktd3137_regmap_config);
> + if (IS_ERR(ktd->regmap))
> + return dev_err_probe(ktd->dev, PTR_ERR(ktd->regmap),
> + "failed to init regmap\n");
> +
> + ret = regmap_read(ktd->regmap, KTD3137_REG_DEV_ID, &val);
> + if (ret)
> + return dev_err_probe(ktd->dev, ret, "failed to read chip id\n");
> +
> + if (val != KTD3137_DEV_ID_A && val != KTD3137_DEV_ID_B)
> + return dev_err_probe(ktd->dev, -ENODEV,
> + "unsupported chip id: 0x%02x\n", val);
> +
> + ret = ktd3137_parse_dt(ktd);
> + if (ret)
> + return ret;
> +
> + ret = ktd3137_init(ktd);
> + if (ret)
> + return dev_err_probe(ktd->dev, ret, "failed to init chip\n");
> +
> + props.type = BACKLIGHT_RAW;
> + props.max_brightness = KTD3137_MAX_BRIGHTNESS;
> + props.brightness = KTD3137_DEFAULT_BRIGHTNESS;
No need for KTD3137_DEFAULT_BRIGHTNESS. Just use KTD3137_MAX_BRIGHTNESS.
> + props.scale = BACKLIGHT_SCALE_LINEAR;
> + device_property_read_u32(ktd->dev, "default-brightness", &props.brightness);
> +
> + backlight_dev = devm_backlight_device_register(ktd->dev,
> + "ktd3137-backlight",
> + ktd->dev, ktd,
> + &ktd3137_backlight_ops,
> + &props);
> + if (IS_ERR(backlight_dev))
> + return dev_err_probe(ktd->dev, PTR_ERR(backlight_dev),
> + "failed to register backlight device\n");
dev_err_cast_probe()
> +
> + i2c_set_clientdata(client, backlight_dev);
> + return backlight_update_status(backlight_dev);
> +}
> +
> +static void ktd3137_remove(struct i2c_client *client)
> +{
> + struct backlight_device *backlight_dev = i2c_get_clientdata(client);
> + struct ktd3137 *ktd = bl_get_data(backlight_dev);
> +
> + backlight_dev->props.brightness = 0;
> + backlight_update_status(backlight_dev);
> +
> + gpiod_set_value_cansleep(ktd->enable_gpio, 0);
Is this needed?
> +}
Daniel.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-03 14:05 ` Daniel Thompson
@ 2026-11-03 14:34 ` Roman Vivchar
2026-11-03 14:42 ` Daniel Thompson
0 siblings, 1 reply; 11+ messages in thread
From: Roman Vivchar @ 2026-11-03 14:34 UTC (permalink / raw)
To: Daniel Thompson
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
Hi Daniel,
On Tuesday, November 3rd, 2026 at 4:05 PM, Daniel Thompson <danielt@kernel.org> wrote:
> On Mon, Nov 02, 2026 at 09:58:48PM +0200, Roman Vivchar via B4 Relay wrote:
> > From: Roman Vivchar <rva333@protonmail.com>
> >
> > Kinetic KTD3137 is an LED IC, used in various mobile devices for the
> > display backlight. Add devicetree bindings documentation for this chip.
> >
> > Datasheet: https://www.kinet-ic.com/uploads/KTD3137-04a.pdf
> >
> > Signed-off-by: Roman Vivchar <rva333@protonmail.com>
> > ---
> > .../bindings/leds/backlight/kinetic,ktd3137.yaml | 64 ++++++++++++++++++++++
> > MAINTAINERS | 5 ++
> > 2 files changed, 69 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
> > new file mode 100644
> > index 000000000000..140615640a9a
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd3137.yaml
> > @@ -0,0 +1,64 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd3137.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Kinetic Technologies KTD3137 LED Backlight
> > +
> > +maintainers:
> > + - Roman Vivchar <rva333@protonmail.com>
> > +
> > +description:
> > + The Kinetic Technologies KTD3137 is an I2C LED backlight driver for medium
> > + to large size LCD panels.
> > <snip>
> > + led-max-microamp:
> > + minimum: 5000
> > + maximum: 29800
> > + default: 20200
> > +
> > + vin-supply: true
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - vin-supply
>
> Why is vin-supply required?
>
The chip cannot function without VIN power supply. Even if it's on the
always-on power rail on certain board, there's always a chance it might be
accidentally left disabled on the other. It's better to document supply in
the bindings as far as I understand.
Best regards,
Roman
>
> Daniel.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-03 14:34 ` Roman Vivchar
@ 2026-11-03 14:42 ` Daniel Thompson
2026-11-03 15:21 ` Roman Vivchar
0 siblings, 1 reply; 11+ messages in thread
From: Daniel Thompson @ 2026-11-03 14:42 UTC (permalink / raw)
To: Roman Vivchar
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Tue, Nov 03, 2026 at 02:34:02PM +0000, Roman Vivchar wrote:
> Hi Daniel,
>
> On Tuesday, November 3rd, 2026 at 4:05 PM, Daniel Thompson <danielt@kernel.org> wrote:
> > On Mon, Nov 02, 2026 at 09:58:48PM +0200, Roman Vivchar via B4 Relay wrote:
> > > + led-max-microamp:
> > > + minimum: 5000
> > > + maximum: 29800
> > > + default: 20200
> > > +
> > > + vin-supply: true
> > > +
> > > +required:
> > > + - compatible
> > > + - reg
> > > + - vin-supply
> >
> > Why is vin-supply required?
> >
>
> The chip cannot function without VIN power supply. Even if it's on the
> always-on power rail on certain board, there's always a chance it might be
> accidentally left disabled on the other. It's better to document supply in
> the bindings as far as I understand.
You haven't just documented the binding, you have also made the property
mandatory by adding it to required.
So what I am asking is why is this property listed as required. You
didn't implement the driver in a way that makes the supply mandatory.
Daniel.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] backlight: add ktd3137 support
2026-11-03 14:15 ` Daniel Thompson
@ 2026-11-03 14:45 ` Roman Vivchar
2026-11-03 14:58 ` Daniel Thompson
0 siblings, 1 reply; 11+ messages in thread
From: Roman Vivchar @ 2026-11-03 14:45 UTC (permalink / raw)
To: Daniel Thompson
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Tuesday, November 3rd, 2026 at 4:15 PM, Daniel Thompson <danielt@kernel.org> wrote:
> On Mon, Nov 02, 2026 at 09:58:49PM +0200, Roman Vivchar via B4 Relay wrote:
> > From: Roman Vivchar <rva333@protonmail.com>
> >
> > Add support for the KTD3137 display backlight IC. It's used in various
> > Xiaomi phones, such as Xiaomi Redmi Note 9.
...
> > +static int ktd3137_init(struct ktd3137 *ktd)
> > +{
> > + u32 val = KTD3137_CONTROL_DEFAULT | KTD3137_CONTROL_LINEAR;
> > + int ret;
> > +
> > + ret = regmap_write(ktd->regmap, KTD3137_REG_CONTROL, val);
>
> Nitpicking but val seems a bit pointless here.
Agreed.
>
>
> > + if (ret)
> > + return ret;
> > +
> > + ret = regmap_write(ktd->regmap, KTD3137_REG_PWM, KTD3137_PWM_DEFAULT);
> > + if (ret)
> > + return ret;
...
> > +
> > + props.type = BACKLIGHT_RAW;
> > + props.max_brightness = KTD3137_MAX_BRIGHTNESS;
> > + props.brightness = KTD3137_DEFAULT_BRIGHTNESS;
>
> No need for KTD3137_DEFAULT_BRIGHTNESS. Just use KTD3137_MAX_BRIGHTNESS.
Ack.
>
>
> > + props.scale = BACKLIGHT_SCALE_LINEAR;
> > + device_property_read_u32(ktd->dev, "default-brightness", &props.brightness);
> > +
> > + backlight_dev = devm_backlight_device_register(ktd->dev,
> > + "ktd3137-backlight",
> > + ktd->dev, ktd,
> > + &ktd3137_backlight_ops,
> > + &props);
> > + if (IS_ERR(backlight_dev))
> > + return dev_err_probe(ktd->dev, PTR_ERR(backlight_dev),
> > + "failed to register backlight device\n");
>
> dev_err_cast_probe()
Didn't know about this one, thanks.
>
>
> > +
> > + i2c_set_clientdata(client, backlight_dev);
> > + return backlight_update_status(backlight_dev);
> > +}
> > +
> > +static void ktd3137_remove(struct i2c_client *client)
> > +{
> > + struct backlight_device *backlight_dev = i2c_get_clientdata(client);
> > + struct ktd3137 *ktd = bl_get_data(backlight_dev);
> > +
> > + backlight_dev->props.brightness = 0;
> > + backlight_update_status(backlight_dev);
> > +
> > + gpiod_set_value_cansleep(ktd->enable_gpio, 0);
>
> Is this needed?
The datasheet says "When HWEN is set high, ... if SCL/SDA’s pull up voltage
is much less than VIN voltage, it can cause a small leakage current ...,
there will be around 7uA additional leakage current from VIN in this standby
mode."
It's better to put chip into shutdown mode, which won't cause power leakage
according to the datasheet, and ensures that I2C registers will be reset in
case chip needs to be cleanly re-initialized.
All other comments will be addressed in v2.
Best regards,
Roman
>
> > +}
>
>
> Daniel.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] backlight: add ktd3137 support
2026-11-03 14:45 ` Roman Vivchar
@ 2026-11-03 14:58 ` Daniel Thompson
0 siblings, 0 replies; 11+ messages in thread
From: Daniel Thompson @ 2026-11-03 14:58 UTC (permalink / raw)
To: Roman Vivchar
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Tue, Nov 03, 2026 at 02:45:52PM +0000, Roman Vivchar wrote:
> On Tuesday, November 3rd, 2026 at 4:15 PM, Daniel Thompson <danielt@kernel.org> wrote:
> > On Mon, Nov 02, 2026 at 09:58:49PM +0200, Roman Vivchar via B4 Relay wrote:
> > > +static void ktd3137_remove(struct i2c_client *client)
> > > +{
> > > + struct backlight_device *backlight_dev = i2c_get_clientdata(client);
> > > + struct ktd3137 *ktd = bl_get_data(backlight_dev);
> > > +
> > > + backlight_dev->props.brightness = 0;
> > > + backlight_update_status(backlight_dev);
> > > +
> > > + gpiod_set_value_cansleep(ktd->enable_gpio, 0);
> >
> > Is this needed?
>
> The datasheet says "When HWEN is set high, ... if SCL/SDA’s pull up voltage
> is much less than VIN voltage, it can cause a small leakage current ...,
> there will be around 7uA additional leakage current from VIN in this standby
> mode."
>
> It's better to put chip into shutdown mode, which won't cause power leakage
> according to the datasheet, and ensures that I2C registers will be reset in
> case chip needs to be cleanly re-initialized.
Right but this is the remove path which as about to free the gpiod anyway
(allowing the GPIO driver to do whatever it likes and which will often
be HiZ rather than pull-down).
Daniel.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-03 14:42 ` Daniel Thompson
@ 2026-11-03 15:21 ` Roman Vivchar
2026-11-03 17:10 ` Daniel Thompson
0 siblings, 1 reply; 11+ messages in thread
From: Roman Vivchar @ 2026-11-03 15:21 UTC (permalink / raw)
To: Daniel Thompson
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Tuesday, November 3rd, 2026 at 4:42 PM, Daniel Thompson <danielt@kernel.org> wrote:
> On Tue, Nov 03, 2026 at 02:34:02PM +0000, Roman Vivchar wrote:
> > Hi Daniel,
> >
> > On Tuesday, November 3rd, 2026 at 4:05 PM, Daniel Thompson <danielt@kernel.org> wrote:
> > > On Mon, Nov 02, 2026 at 09:58:48PM +0200, Roman Vivchar via B4 Relay wrote:
> > > > + led-max-microamp:
> > > > + minimum: 5000
> > > > + maximum: 29800
> > > > + default: 20200
> > > > +
> > > > + vin-supply: true
> > > > +
> > > > +required:
> > > > + - compatible
> > > > + - reg
> > > > + - vin-supply
> > >
> > > Why is vin-supply required?
> > >
> >
> > The chip cannot function without VIN power supply. Even if it's on the
> > always-on power rail on certain board, there's always a chance it might be
> > accidentally left disabled on the other. It's better to document supply in
> > the bindings as far as I understand.
>
> You haven't just documented the binding, you have also made the property
> mandatory by adding it to required.
>
> So what I am asking is why is this property listed as required. You
> didn't implement the driver in a way that makes the supply mandatory.
Not sure I follow.
In the driver I've used devm_regulator_get_enable(), rather than _optional(),
since my understanding is that the non-optional helper is a standard kernel
API for required supplies (with regulator core warning and fallback to dummy
regulator in case DT omits it).
Do you suggest dropping vin-supply from required: ? On my board it's connected
to an always-on supply, though I can't tell about others. I can proceed with
this if the DT maintainers are okay with that.
>
> Daniel.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137
2026-11-03 15:21 ` Roman Vivchar
@ 2026-11-03 17:10 ` Daniel Thompson
0 siblings, 0 replies; 11+ messages in thread
From: Daniel Thompson @ 2026-11-03 17:10 UTC (permalink / raw)
To: Roman Vivchar
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev
On Tue, Nov 03, 2026 at 03:21:45PM +0000, Roman Vivchar wrote:
> On Tuesday, November 3rd, 2026 at 4:42 PM, Daniel Thompson <danielt@kernel.org> wrote:
>
> > On Tue, Nov 03, 2026 at 02:34:02PM +0000, Roman Vivchar wrote:
> > > Hi Daniel,
> > >
> > > On Tuesday, November 3rd, 2026 at 4:05 PM, Daniel Thompson <danielt@kernel.org> wrote:
> > > > On Mon, Nov 02, 2026 at 09:58:48PM +0200, Roman Vivchar via B4 Relay wrote:
> > > > > + led-max-microamp:
> > > > > + minimum: 5000
> > > > > + maximum: 29800
> > > > > + default: 20200
> > > > > +
> > > > > + vin-supply: true
> > > > > +
> > > > > +required:
> > > > > + - compatible
> > > > > + - reg
> > > > > + - vin-supply
> > > >
> > > > Why is vin-supply required?
> > > >
> > >
> > > The chip cannot function without VIN power supply. Even if it's on the
> > > always-on power rail on certain board, there's always a chance it might be
> > > accidentally left disabled on the other. It's better to document supply in
> > > the bindings as far as I understand.
> >
> > You haven't just documented the binding, you have also made the property
> > mandatory by adding it to required.
> >
> > So what I am asking is why is this property listed as required. You
> > didn't implement the driver in a way that makes the supply mandatory.
>
> Not sure I follow.
>
> In the driver I've used devm_regulator_get_enable(), rather than _optional(),
> since my understanding is that the non-optional helper is a standard kernel
> API for required supplies (with regulator core warning and fallback to dummy
> regulator in case DT omits it).
That dummy fallback essentially makes it optional. On a board with an
always-on supply then there is no need to include vin-supply in the
DTB. The driver will work just fine without it.
> Do you suggest dropping vin-supply from required: ? On my board it's connected
> to an always-on supply, though I can't tell about others. I can proceed with
> this if the DT maintainers are okay with that.
Given your answers then, yes, vin-supply should not be in the required:
list (e.g. we don't want DT validation to fail for a DT that does not
include a vin-supply).
Daniel.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-11-03 17:10 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 19:58 [PATCH 0/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
2026-11-02 19:58 ` [PATCH 1/2] dt-bindings: leds: backlight: add Kinetic KTD3137 Roman Vivchar via B4 Relay
2026-11-03 14:05 ` Daniel Thompson
2026-11-03 14:34 ` Roman Vivchar
2026-11-03 14:42 ` Daniel Thompson
2026-11-03 15:21 ` Roman Vivchar
2026-11-03 17:10 ` Daniel Thompson
2026-11-02 19:58 ` [PATCH 2/2] backlight: add ktd3137 support Roman Vivchar via B4 Relay
2026-11-03 14:15 ` Daniel Thompson
2026-11-03 14:45 ` Roman Vivchar
2026-11-03 14:58 ` Daniel Thompson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox