* [PATCH 0/2] Kinetic KTD2801 backlight driver
@ 2023-10-05 18:49 Duje Mihanović
2023-10-05 18:49 ` [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding Duje Mihanović
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
0 siblings, 2 replies; 13+ messages in thread
From: Duje Mihanović @ 2023-10-05 18:49 UTC (permalink / raw)
To: Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming, Duje Mihanović
Hello,
This small series adds a driver for the Kinetic KTD2801 backlight IC.
The driver has been tested on the samsung,coreprimevelte for which
support is still out-of-tree.
Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
Duje Mihanović (2):
dt-bindings: backlight: add Kinetic KTD2801 binding
backlight: Add Kinetic KTD2801 driver
.../bindings/leds/backlight/kinetic,ktd2801.yaml | 46 +++++++
MAINTAINERS | 6 +
drivers/video/backlight/Kconfig | 7 +
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/ktd2801-backlight.c | 151 +++++++++++++++++++++
5 files changed, 211 insertions(+)
---
base-commit: 8a749fd1a8720d4619c91c8b6e7528c0a355c0aa
change-id: 20231004-ktd2801-0f3883cb59d0
Best regards,
--
Duje Mihanović <duje.mihanovic@skole.hr>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding
2023-10-05 18:49 [PATCH 0/2] Kinetic KTD2801 backlight driver Duje Mihanović
@ 2023-10-05 18:49 ` Duje Mihanović
2023-10-05 20:37 ` Krzysztof Kozlowski
2023-10-06 12:30 ` Daniel Thompson
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
1 sibling, 2 replies; 13+ messages in thread
From: Duje Mihanović @ 2023-10-05 18:49 UTC (permalink / raw)
To: Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming, Duje Mihanović
Add the dt binding for the Kinetic KTD2801 backlight driver.
Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
.../bindings/leds/backlight/kinetic,ktd2801.yaml | 46 ++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
new file mode 100644
index 000000000000..970d54bac18e
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd2801.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Kinetic Technologies KTD2801 one-wire backlight
+
+maintainers:
+ - Duje Mihanović <duje.mihanovic@skole.hr>
+
+description: |
+ The Kinetic Technologies KTD2801 is a LED backlight driver controlled
+ by a single GPIO line. The driver can be controlled with a PWM signal
+ or by pulsing the GPIO line to set the backlight level. This is called
+ "ExpressWire".
+
+allOf:
+ - $ref: common.yaml#
+
+properties:
+ compatible:
+ const: kinetic,ktd2801
+
+ enable-gpios:
+ maxItems: 1
+
+ default-brightness: true
+ max-brightness: true
+
+required:
+ - compatible
+ - enable-gpios
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ backlight {
+ compatible = "kinetic,ktd2801";
+ enable-gpios = <&gpio 97 GPIO_ACTIVE_LOW>;
+ max-brightness = <210>;
+ default-brightness = <100>;
+ };
--
2.42.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 18:49 [PATCH 0/2] Kinetic KTD2801 backlight driver Duje Mihanović
2023-10-05 18:49 ` [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding Duje Mihanović
@ 2023-10-05 18:49 ` Duje Mihanović
2023-10-05 20:40 ` Krzysztof Kozlowski
` (3 more replies)
1 sibling, 4 replies; 13+ messages in thread
From: Duje Mihanović @ 2023-10-05 18:49 UTC (permalink / raw)
To: Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming, Duje Mihanović
Add driver for the Kinetic KTD2801 backlight driver.
Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
MAINTAINERS | 6 ++
drivers/video/backlight/Kconfig | 7 ++
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/ktd2801-backlight.c | 151 ++++++++++++++++++++++++++++
4 files changed, 165 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 35977b269d5e..7da78f06a65d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11777,6 +11777,12 @@ S: Maintained
F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
F: drivers/video/backlight/ktd253-backlight.c
+KTD2801 BACKLIGHT DRIVER
+M: Duje Mihanović <duje.mihanovic@skole.hr>
+S: Maintained
+F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
+F: drivers/video/backlight/ktd2801-backlight.c
+
KTEST
M: Steven Rostedt <rostedt@goodmis.org>
M: John Hawley <warthog9@eaglescrag.net>
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 51387b1ef012..a2b268293345 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -183,6 +183,13 @@ config BACKLIGHT_KTD253
which is a 1-wire GPIO-controlled backlight found in some mobile
phones.
+config BACKLIGHT_KTD2801
+ tristate "Backlight Driver for Kinetic KTD2801"
+ depends on GPIOLIB || COMPILE_TEST
+ help
+ 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_KTZ8866
tristate "Backlight Driver for Kinetic KTZ8866"
depends on I2C
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index f72e1c3c59e9..b33b647f31ca 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -35,6 +35,7 @@ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
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_KTZ8866) += ktz8866.o
obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o
obj-$(CONFIG_BACKLIGHT_LM3630A) += lm3630a_bl.o
diff --git a/drivers/video/backlight/ktd2801-backlight.c b/drivers/video/backlight/ktd2801-backlight.c
new file mode 100644
index 000000000000..24a5f9e5d606
--- /dev/null
+++ b/drivers/video/backlight/ktd2801-backlight.c
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+
+#define EW_DELAY 150
+#define EW_DET 270
+#define LOW_BIT_HIGH 5
+#define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
+#define HIGH_BIT_LOW 5
+#define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
+#define DS 5
+#define EOD_L 10
+#define EOD_H 350
+#define PWR_DOWN_DELAY 2600
+
+#define KTD2801_DEFAULT_BRIGHTNESS 100
+#define KTD2801_MAX_BRIGHTNESS 255
+
+struct ktd2801_backlight {
+ struct device *dev;
+ struct backlight_device *bd;
+ struct gpio_desc *desc;
+ bool was_on;
+};
+
+static int ktd2801_update_status(struct backlight_device *bd)
+{
+ struct ktd2801_backlight *ktd2801 = bl_get_data(bd);
+ u8 brightness = (u8) backlight_get_brightness(bd);
+
+ if (backlight_is_blank(bd)) {
+ gpiod_set_value(ktd2801->desc, 1);
+ udelay(PWR_DOWN_DELAY);
+ ktd2801->was_on = false;
+ return 0;
+ }
+
+ if (!ktd2801->was_on) {
+ gpiod_set_value(ktd2801->desc, 0);
+ udelay(EW_DELAY);
+ gpiod_set_value(ktd2801->desc, 1);
+ udelay(EW_DET);
+ gpiod_set_value(ktd2801->desc, 0);
+ ktd2801->was_on = true;
+ }
+
+ gpiod_set_value(ktd2801->desc, 0);
+ udelay(DS);
+
+ for (int i = 0; i < 8; i++) {
+ u8 next_bit = (brightness & 0x80) >> 7;
+
+ if (!next_bit) {
+ gpiod_set_value(ktd2801->desc, 1);
+ udelay(LOW_BIT_LOW);
+ gpiod_set_value(ktd2801->desc, 0);
+ udelay(LOW_BIT_HIGH);
+ } else {
+ gpiod_set_value(ktd2801->desc, 1);
+ udelay(HIGH_BIT_LOW);
+ gpiod_set_value(ktd2801->desc, 0);
+ udelay(HIGH_BIT_HIGH);
+ }
+ brightness <<= 1;
+ }
+ gpiod_set_value(ktd2801->desc, 1);
+ udelay(EOD_L);
+ gpiod_set_value(ktd2801->desc, 0);
+ udelay(EOD_H);
+ return 0;
+}
+
+static const struct backlight_ops ktd2801_backlight_ops = {
+ .update_status = ktd2801_update_status,
+};
+
+static int ktd2801_backlight_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct backlight_device *bd;
+ struct ktd2801_backlight *ktd2801;
+ u32 brightness, max_brightness;
+ int ret;
+
+ ktd2801 = devm_kzalloc(dev, sizeof(*ktd2801), GFP_KERNEL);
+ if (!ktd2801)
+ return -ENOMEM;
+ ktd2801->dev = dev;
+ ktd2801->was_on = true;
+
+ ret = device_property_read_u32(dev, "max-brightness", &max_brightness);
+ if (ret)
+ max_brightness = KTD2801_MAX_BRIGHTNESS;
+ if (max_brightness > KTD2801_MAX_BRIGHTNESS) {
+ dev_err(dev, "illegal max brightness specified\n");
+ max_brightness = KTD2801_MAX_BRIGHTNESS;
+ }
+
+ ret = device_property_read_u32(dev, "default-brightness", &brightness);
+ if (ret)
+ brightness = KTD2801_DEFAULT_BRIGHTNESS;
+ if (brightness > max_brightness) {
+ dev_err(dev, "default brightness exceeds max\n");
+ brightness = max_brightness;
+ }
+
+ ktd2801->desc = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
+ if (IS_ERR(ktd2801->desc))
+ return dev_err_probe(dev, PTR_ERR(ktd2801->desc),
+ "failed to get backlight GPIO");
+ gpiod_set_consumer_name(ktd2801->desc, dev_name(dev));
+
+ bd = devm_backlight_device_register(dev, dev_name(dev), dev, ktd2801,
+ &ktd2801_backlight_ops, NULL);
+ if (IS_ERR(bd))
+ return dev_err_probe(dev, PTR_ERR(bd),
+ "failed to register backlight");
+
+ bd->props.max_brightness = max_brightness;
+ bd->props.brightness = brightness;
+
+ ktd2801->bd = bd;
+ platform_set_drvdata(pdev, bd);
+ backlight_update_status(bd);
+
+ return 0;
+}
+
+static const struct of_device_id ktd2801_of_match[] = {
+ { .compatible = "kinetic,ktd2801" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, ktd2801_of_match);
+
+static struct platform_driver ktd2801_backlight_driver = {
+ .driver = {
+ .name = "ktd2801-backlight",
+ .of_match_table = ktd2801_of_match,
+ },
+ .probe = ktd2801_backlight_probe,
+};
+module_platform_driver(ktd2801_backlight_driver);
+
+MODULE_AUTHOR("Duje Mihanović <duje.mihanovic@skole.hr>");
+MODULE_DESCRIPTION("Kinetic KTD2801 Backlight Driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:ktd2801-backlight");
--
2.42.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding
2023-10-05 18:49 ` [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding Duje Mihanović
@ 2023-10-05 20:37 ` Krzysztof Kozlowski
2023-10-06 12:30 ` Daniel Thompson
1 sibling, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-10-05 20:37 UTC (permalink / raw)
To: Duje Mihanović, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming
On 05/10/2023 20:49, Duje Mihanović wrote:
> Add the dt binding for the Kinetic KTD2801 backlight driver.
>
> Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
> ---
> .../bindings/leds/backlight/kinetic,ktd2801.yaml | 46 ++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
@ 2023-10-05 20:40 ` Krzysztof Kozlowski
2023-10-06 13:11 ` Duje Mihanović
2023-10-09 9:21 ` Daniel Thompson
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-10-05 20:40 UTC (permalink / raw)
To: Duje Mihanović, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming
On 05/10/2023 20:49, Duje Mihanović wrote:
> Add driver for the Kinetic KTD2801 backlight driver.
>
> Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
> ---
> MAINTAINERS | 6 ++
> drivers/video/backlight/Kconfig | 7 ++
> drivers/video/backlight/Makefile | 1 +
> drivers/video/backlight/ktd2801-backlight.c | 151 ++++++++++++++++++++++++++++
> 4 files changed, 165 insertions(+)
...
> +
> +#define EW_DELAY 150
> +#define EW_DET 270
> +#define LOW_BIT_HIGH 5
> +#define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
> +#define HIGH_BIT_LOW 5
> +#define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
> +#define DS 5
> +#define EOD_L 10
> +#define EOD_H 350
> +#define PWR_DOWN_DELAY 2600
> +
> +#define KTD2801_DEFAULT_BRIGHTNESS 100
> +#define KTD2801_MAX_BRIGHTNESS 255
> +
> +struct ktd2801_backlight {
> + struct device *dev;
> + struct backlight_device *bd;
> + struct gpio_desc *desc;
s/desc/enable_gpio/ or something similar. desc is totally not related.
> + bool was_on;
> +};
> +
> +static int ktd2801_update_status(struct backlight_device *bd)
> +{
> + struct ktd2801_backlight *ktd2801 = bl_get_data(bd);
> + u8 brightness = (u8) backlight_get_brightness(bd);
> +
> + if (backlight_is_blank(bd)) {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(PWR_DOWN_DELAY);
> + ktd2801->was_on = false;
> + return 0;
> + }
> +
> + if (!ktd2801->was_on) {
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(EW_DELAY);
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(EW_DET);
> + gpiod_set_value(ktd2801->desc, 0);
> + ktd2801->was_on = true;
> + }
> +
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(DS);
> +
> + for (int i = 0; i < 8; i++) {
> + u8 next_bit = (brightness & 0x80) >> 7;
> +
> + if (!next_bit) {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(LOW_BIT_LOW);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(LOW_BIT_HIGH);
> + } else {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(HIGH_BIT_LOW);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(HIGH_BIT_HIGH);
> + }
> + brightness <<= 1;
> + }
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(EOD_L);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(EOD_H);
Hm, why device is kept off after this? Setting 0 means enable GPIO is
logical 0.
> + return 0;
> +}
> +
> +static const struct backlight_ops ktd2801_backlight_ops = {
> + .update_status = ktd2801_update_status,
> +};
> +
> +static int ktd2801_backlight_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct backlight_device *bd;
> + struct ktd2801_backlight *ktd2801;
> + u32 brightness, max_brightness;
> + int ret;
> +
> + ktd2801 = devm_kzalloc(dev, sizeof(*ktd2801), GFP_KERNEL);
> + if (!ktd2801)
> + return -ENOMEM;
> + ktd2801->dev = dev;
> + ktd2801->was_on = true;
> +
> + ret = device_property_read_u32(dev, "max-brightness", &max_brightness);
> + if (ret)
> + max_brightness = KTD2801_MAX_BRIGHTNESS;
> + if (max_brightness > KTD2801_MAX_BRIGHTNESS) {
> + dev_err(dev, "illegal max brightness specified\n");
> + max_brightness = KTD2801_MAX_BRIGHTNESS;
> + }
> +
> + ret = device_property_read_u32(dev, "default-brightness", &brightness);
> + if (ret)
> + brightness = KTD2801_DEFAULT_BRIGHTNESS;
> + if (brightness > max_brightness) {
> + dev_err(dev, "default brightness exceeds max\n");
> + brightness = max_brightness;
> + }
> +
> + ktd2801->desc = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
OUT_LOW is keep it disabled, so is this intentional?
> + if (IS_ERR(ktd2801->desc))
> + return dev_err_probe(dev, PTR_ERR(ktd2801->desc),
> + "failed to get backlight GPIO");
> + gpiod_set_consumer_name(ktd2801->desc, dev_name(dev));
> +
> + bd = devm_backlight_device_register(dev, dev_name(dev), dev, ktd2801,
> + &ktd2801_backlight_ops, NULL);
> + if (IS_ERR(bd))
> + return dev_err_probe(dev, PTR_ERR(bd),
> + "failed to register backlight");
> +
> + bd->props.max_brightness = max_brightness;
> + bd->props.brightness = brightness;
> +
> + ktd2801->bd = bd;
> + platform_set_drvdata(pdev, bd);
> + backlight_update_status(bd);
> +
> + return 0;
> +}
> +
> +static const struct of_device_id ktd2801_of_match[] = {
> + { .compatible = "kinetic,ktd2801" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, ktd2801_of_match);
> +
> +static struct platform_driver ktd2801_backlight_driver = {
> + .driver = {
> + .name = "ktd2801-backlight",
> + .of_match_table = ktd2801_of_match,
> + },
> + .probe = ktd2801_backlight_probe,
> +};
> +module_platform_driver(ktd2801_backlight_driver);
> +
> +MODULE_AUTHOR("Duje Mihanović <duje.mihanovic@skole.hr>");
> +MODULE_DESCRIPTION("Kinetic KTD2801 Backlight Driver");
> +MODULE_LICENSE("GPL");
> +MODULE_ALIAS("platform:ktd2801-backlight");
You should not need MODULE_ALIAS() in normal cases. If you need it,
usually it means your device ID table is wrong.
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding
2023-10-05 18:49 ` [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding Duje Mihanović
2023-10-05 20:37 ` Krzysztof Kozlowski
@ 2023-10-06 12:30 ` Daniel Thompson
2023-10-06 13:08 ` Duje Mihanović
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Thompson @ 2023-10-06 12:30 UTC (permalink / raw)
To: Duje Mihanović
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, Karel Balej,
dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
~postmarketos/upstreaming
On Thu, Oct 05, 2023 at 08:49:08PM +0200, Duje Mihanović wrote:
> Add the dt binding for the Kinetic KTD2801 backlight driver.
>
> Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
> ---
> .../bindings/leds/backlight/kinetic,ktd2801.yaml | 46 ++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
> new file mode 100644
> index 000000000000..970d54bac18e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
> @@ -0,0 +1,46 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd2801.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Kinetic Technologies KTD2801 one-wire backlight
> +
> +maintainers:
> + - Duje Mihanović <duje.mihanovic@skole.hr>
> +
> +description: |
> + The Kinetic Technologies KTD2801 is a LED backlight driver controlled
> + by a single GPIO line. The driver can be controlled with a PWM signal
> + or by pulsing the GPIO line to set the backlight level. This is called
> + "ExpressWire".
> +
> +allOf:
> + - $ref: common.yaml#
> +
> +properties:
> + compatible:
> + const: kinetic,ktd2801
> +
> + enable-gpios:
> + maxItems: 1
Why "enable"? This is the line we are going to us to bitbang the
ExpressWire protocol. Doesn't that make it a control or data pin?
Daniel.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding
2023-10-06 12:30 ` Daniel Thompson
@ 2023-10-06 13:08 ` Duje Mihanović
2023-10-09 9:29 ` Daniel Thompson
0 siblings, 1 reply; 13+ messages in thread
From: Duje Mihanović @ 2023-10-06 13:08 UTC (permalink / raw)
To: Daniel Thompson
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, Karel Balej,
dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
~postmarketos/upstreaming
On Friday, October 6, 2023 2:30:14 PM CEST Daniel Thompson wrote:
> On Thu, Oct 05, 2023 at 08:49:08PM +0200, Duje Mihanović wrote:
> > + enable-gpios:
> > + maxItems: 1
>
> Why "enable"? This is the line we are going to us to bitbang the
> ExpressWire protocol. Doesn't that make it a control or data pin?
I named it "enable" because the KTD253 driver does so too, but also because
that pin is also used to power down the IC. If "enable" isn't right
regardless, is just "gpios" fine for this?
Regards,
Duje
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 20:40 ` Krzysztof Kozlowski
@ 2023-10-06 13:11 ` Duje Mihanović
0 siblings, 0 replies; 13+ messages in thread
From: Duje Mihanović @ 2023-10-06 13:11 UTC (permalink / raw)
To: Lee Jones, Daniel Thompson, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller,
Krzysztof Kozlowski
Cc: Karel Balej, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev, ~postmarketos/upstreaming
On Thursday, October 5, 2023 10:40:41 PM CEST Krzysztof Kozlowski wrote:
> On 05/10/2023 20:49, Duje Mihanović wrote:
> > + gpiod_set_value(ktd2801->desc, 0);
> > + udelay(EOD_H);
>
> Hm, why device is kept off after this? Setting 0 means enable GPIO is
> logical 0.
...
> > + ktd2801->desc = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
>
> OUT_LOW is keep it disabled, so is this intentional?
I initially wrote the driver to expect GPIO_ACTIVE_LOW, a decision which in
retrospect indeed makes no sense. If you have no objections, I'll change it to
expect GPIO_ACTIVE_HIGH.
Regards,
Duje
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
2023-10-05 20:40 ` Krzysztof Kozlowski
@ 2023-10-09 9:21 ` Daniel Thompson
2023-10-09 15:08 ` Duje Mihanović
2023-10-10 17:20 ` kernel test robot
2023-10-19 1:14 ` kernel test robot
3 siblings, 1 reply; 13+ messages in thread
From: Daniel Thompson @ 2023-10-09 9:21 UTC (permalink / raw)
To: Duje Mihanović
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, Karel Balej,
dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
~postmarketos/upstreaming
On Thu, Oct 05, 2023 at 08:49:09PM +0200, Duje Mihanović wrote:
> Add driver for the Kinetic KTD2801 backlight driver.
>
> Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
> ---
> MAINTAINERS | 6 ++
> drivers/video/backlight/Kconfig | 7 ++
> drivers/video/backlight/Makefile | 1 +
> drivers/video/backlight/ktd2801-backlight.c | 151 ++++++++++++++++++++++++++++
> 4 files changed, 165 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 35977b269d5e..7da78f06a65d 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -11777,6 +11777,12 @@ S: Maintained
> F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
> F: drivers/video/backlight/ktd253-backlight.c
>
> +KTD2801 BACKLIGHT DRIVER
> +M: Duje Mihanović <duje.mihanovic@skole.hr>
> +S: Maintained
> +F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
> +F: drivers/video/backlight/ktd2801-backlight.c
> +
> KTEST
> M: Steven Rostedt <rostedt@goodmis.org>
> M: John Hawley <warthog9@eaglescrag.net>
> diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
> index 51387b1ef012..a2b268293345 100644
> --- a/drivers/video/backlight/Kconfig
> +++ b/drivers/video/backlight/Kconfig
> @@ -183,6 +183,13 @@ config BACKLIGHT_KTD253
> which is a 1-wire GPIO-controlled backlight found in some mobile
> phones.
>
> +config BACKLIGHT_KTD2801
> + tristate "Backlight Driver for Kinetic KTD2801"
> + depends on GPIOLIB || COMPILE_TEST
> + help
> + 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_KTZ8866
> tristate "Backlight Driver for Kinetic KTZ8866"
> depends on I2C
> diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
> index f72e1c3c59e9..b33b647f31ca 100644
> --- a/drivers/video/backlight/Makefile
> +++ b/drivers/video/backlight/Makefile
> @@ -35,6 +35,7 @@ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
> 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_KTZ8866) += ktz8866.o
> obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o
> obj-$(CONFIG_BACKLIGHT_LM3630A) += lm3630a_bl.o
> diff --git a/drivers/video/backlight/ktd2801-backlight.c b/drivers/video/backlight/ktd2801-backlight.c
> new file mode 100644
> index 000000000000..24a5f9e5d606
> --- /dev/null
> +++ b/drivers/video/backlight/ktd2801-backlight.c
> @@ -0,0 +1,151 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +#include <linux/backlight.h>
> +#include <linux/delay.h>
> +#include <linux/gpio/consumer.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/property.h>
> +
> +#define EW_DELAY 150
> +#define EW_DET 270
> +#define LOW_BIT_HIGH 5
> +#define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
> +#define HIGH_BIT_LOW 5
> +#define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
These names are pretty cryptic (they don't even mention that they
are time values and that the unit is microseconds). They also look
like they were derived by tuning so comments would be nice explaining
where they come from (or, failing that, why they are correct).
> +#define DS 5
> +#define EOD_L 10
> +#define EOD_H 350
> +#define PWR_DOWN_DELAY 2600
> +
> +#define KTD2801_DEFAULT_BRIGHTNESS 100
> +#define KTD2801_MAX_BRIGHTNESS 255
> +
> +struct ktd2801_backlight {
> + struct device *dev;
> + struct backlight_device *bd;
> + struct gpio_desc *desc;
> + bool was_on;
> +};
> +
> +static int ktd2801_update_status(struct backlight_device *bd)
> +{
> + struct ktd2801_backlight *ktd2801 = bl_get_data(bd);
> + u8 brightness = (u8) backlight_get_brightness(bd);
> +
> + if (backlight_is_blank(bd)) {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(PWR_DOWN_DELAY);
> + ktd2801->was_on = false;
> + return 0;
> + }
> +
> + if (!ktd2801->was_on) {
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(EW_DELAY);
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(EW_DET);
> + gpiod_set_value(ktd2801->desc, 0);
> + ktd2801->was_on = true;
> + }
Isn't this implementing the same single GPIO line protocol used by
drivers/leds/flash/leds-ktd2692.c?
If so, it would be good to pull the expresswire handling into a library
so it can be shared between drivers. leds-ktd2692.c does a pretty
good job of decomposing the expresswire management into functions (e.g.
separating data framing from setting of control values). Expresswire is
a data framing protocol rather than a bus so I think just implementing
it as library code is probably sufficient.
Also, can the expresswire code have protocol-violation watchdogs that
trigger a re-transmit of the message if we get pre-empted in the middle
of sending a message to the backlight (see calls to ktime_get_ns() in
ktd253-backlight.c ).
> +
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(DS);
> +
> + for (int i = 0; i < 8; i++) {
> + u8 next_bit = (brightness & 0x80) >> 7;
> +
> + if (!next_bit) {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(LOW_BIT_LOW);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(LOW_BIT_HIGH);
> + } else {
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(HIGH_BIT_LOW);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(HIGH_BIT_HIGH);
> + }
> + brightness <<= 1;
> + }
> + gpiod_set_value(ktd2801->desc, 1);
> + udelay(EOD_L);
> + gpiod_set_value(ktd2801->desc, 0);
> + udelay(EOD_H);
> + return 0;
> +}
> +
> +static const struct backlight_ops ktd2801_backlight_ops = {
> + .update_status = ktd2801_update_status,
> +};
> +
> +static int ktd2801_backlight_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct backlight_device *bd;
> + struct ktd2801_backlight *ktd2801;
> + u32 brightness, max_brightness;
> + int ret;
> +
> + ktd2801 = devm_kzalloc(dev, sizeof(*ktd2801), GFP_KERNEL);
> + if (!ktd2801)
> + return -ENOMEM;
> + ktd2801->dev = dev;
This appears to be a write-only variable.
Overall the driver looks good but it would be nice to figure out how to
share expresswire framing between drivers (don't worry about ktd253, it
uses a different protocol).
Daniel.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding
2023-10-06 13:08 ` Duje Mihanović
@ 2023-10-09 9:29 ` Daniel Thompson
0 siblings, 0 replies; 13+ messages in thread
From: Daniel Thompson @ 2023-10-09 9:29 UTC (permalink / raw)
To: Duje Mihanović
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, Karel Balej,
dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
~postmarketos/upstreaming
On Fri, Oct 06, 2023 at 03:08:42PM +0200, Duje Mihanović wrote:
> On Friday, October 6, 2023 2:30:14 PM CEST Daniel Thompson wrote:
> > On Thu, Oct 05, 2023 at 08:49:08PM +0200, Duje Mihanović wrote:
> > > + enable-gpios:
> > > + maxItems: 1
> >
> > Why "enable"? This is the line we are going to us to bitbang the
> > ExpressWire protocol. Doesn't that make it a control or data pin?
>
> I named it "enable" because the KTD253 driver does so too, but also because
> that pin is also used to power down the IC. If "enable" isn't right
> regardless, is just "gpios" fine for this?
KTD2692 implements ExpressWire and calls this signal ctrl-gpios. I'd
suggest copying that prior art for now.
Daniel.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-09 9:21 ` Daniel Thompson
@ 2023-10-09 15:08 ` Duje Mihanović
0 siblings, 0 replies; 13+ messages in thread
From: Duje Mihanović @ 2023-10-09 15:08 UTC (permalink / raw)
To: Daniel Thompson
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, Karel Balej,
dri-devel, linux-leds, devicetree, linux-kernel, linux-fbdev,
~postmarketos/upstreaming
On Monday, October 9, 2023 11:21:03 AM CEST Daniel Thompson wrote:
> On Thu, Oct 05, 2023 at 08:49:09PM +0200, Duje Mihanović wrote:
> > +#define EW_DELAY 150
> > +#define EW_DET 270
> > +#define LOW_BIT_HIGH 5
> > +#define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
> > +#define HIGH_BIT_LOW 5
> > +#define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
>
> These names are pretty cryptic (they don't even mention that they
> are time values and that the unit is microseconds). They also look
> like they were derived by tuning so comments would be nice explaining
> where they come from (or, failing that, why they are correct).
These values are taken from Samsung's driver, which themselves are datasheet
values with a couple of us added for I presume safety. The datasheet is
publicly available [1] and I can add a link to it to the binding patch in v2.
> > + if (!ktd2801->was_on) {
> > + gpiod_set_value(ktd2801->desc, 0);
> > + udelay(EW_DELAY);
> > + gpiod_set_value(ktd2801->desc, 1);
> > + udelay(EW_DET);
> > + gpiod_set_value(ktd2801->desc, 0);
> > + ktd2801->was_on = true;
> > + }
>
> Isn't this implementing the same single GPIO line protocol used by
> drivers/leds/flash/leds-ktd2692.c?
>
> If so, it would be good to pull the expresswire handling into a library
> so it can be shared between drivers. leds-ktd2692.c does a pretty
> good job of decomposing the expresswire management into functions (e.g.
> separating data framing from setting of control values). Expresswire is
> a data framing protocol rather than a bus so I think just implementing
> it as library code is probably sufficient.
KTD2801 and 2692 indeed seem to share the protocol and I can write a library
just for this. I believe such a library could go in drivers/leds/leds-
expresswire.c and include/linux/leds-expresswire.h (or perhaps even just in a
header), do you have any better ideas?
> Also, can the expresswire code have protocol-violation watchdogs that
> trigger a re-transmit of the message if we get pre-empted in the middle
> of sending a message to the backlight (see calls to ktime_get_ns() in
> ktd253-backlight.c ).
The Samsung driver does not have such watchdogs, but if you think they are
needed I can add them.
[1] https://www.mouser.com/datasheet/2/936/KTD2801-04b-1391831.pdf
Regards,
Duje
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
2023-10-05 20:40 ` Krzysztof Kozlowski
2023-10-09 9:21 ` Daniel Thompson
@ 2023-10-10 17:20 ` kernel test robot
2023-10-19 1:14 ` kernel test robot
3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-10-10 17:20 UTC (permalink / raw)
To: Duje Mihanović, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller
Cc: oe-kbuild-all, Karel Balej, dri-devel, linux-leds, devicetree,
linux-kernel, linux-fbdev, ~postmarketos/upstreaming,
Duje Mihanović
Hi Duje,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 8a749fd1a8720d4619c91c8b6e7528c0a355c0aa]
url: https://github.com/intel-lab-lkp/linux/commits/Duje-Mihanovi/dt-bindings-backlight-add-Kinetic-KTD2801-binding/20231006-025106
base: 8a749fd1a8720d4619c91c8b6e7528c0a355c0aa
patch link: https://lore.kernel.org/r/20231005-ktd2801-v1-2-43cd85b0629a%40skole.hr
patch subject: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20231011/202310110122.Syu9oJQI-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231011/202310110122.Syu9oJQI-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310110122.Syu9oJQI-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/video/backlight/ktd2801-backlight.c:15: warning: "DS" redefined
15 | #define DS 5
|
In file included from arch/x86/include/uapi/asm/ptrace.h:6,
from arch/x86/include/asm/ptrace.h:7,
from arch/x86/include/asm/math_emu.h:5,
from arch/x86/include/asm/processor.h:13,
from arch/x86/include/asm/cpufeature.h:5,
from arch/x86/include/asm/thread_info.h:53,
from include/linux/thread_info.h:60,
from arch/x86/include/asm/preempt.h:9,
from include/linux/preempt.h:79,
from include/linux/rcupdate.h:27,
from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/ratelimit.h:6,
from include/linux/dev_printk.h:16,
from include/linux/device.h:15,
from include/linux/backlight.h:12,
from drivers/video/backlight/ktd2801-backlight.c:2:
arch/x86/include/uapi/asm/ptrace-abi.h:14: note: this is the location of the previous definition
14 | #define DS 7
|
vim +/DS +15 drivers/video/backlight/ktd2801-backlight.c
8
9 #define EW_DELAY 150
10 #define EW_DET 270
11 #define LOW_BIT_HIGH 5
12 #define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
13 #define HIGH_BIT_LOW 5
14 #define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
> 15 #define DS 5
16 #define EOD_L 10
17 #define EOD_H 350
18 #define PWR_DOWN_DELAY 2600
19
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
` (2 preceding siblings ...)
2023-10-10 17:20 ` kernel test robot
@ 2023-10-19 1:14 ` kernel test robot
3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-10-19 1:14 UTC (permalink / raw)
To: Duje Mihanović, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller
Cc: llvm, oe-kbuild-all, Karel Balej, dri-devel, linux-leds,
devicetree, linux-kernel, linux-fbdev, ~postmarketos/upstreaming,
Duje Mihanović
Hi Duje,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 8a749fd1a8720d4619c91c8b6e7528c0a355c0aa]
url: https://github.com/intel-lab-lkp/linux/commits/Duje-Mihanovi/dt-bindings-backlight-add-Kinetic-KTD2801-binding/20231006-025106
base: 8a749fd1a8720d4619c91c8b6e7528c0a355c0aa
patch link: https://lore.kernel.org/r/20231005-ktd2801-v1-2-43cd85b0629a%40skole.hr
patch subject: [PATCH 2/2] backlight: Add Kinetic KTD2801 driver
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20231019/202310190928.NGF81Cxq-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231019/202310190928.NGF81Cxq-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310190928.NGF81Cxq-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/video/backlight/ktd2801-backlight.c:15:9: warning: 'DS' macro redefined [-Wmacro-redefined]
#define DS 5
^
arch/x86/include/uapi/asm/ptrace-abi.h:14:9: note: previous definition is here
#define DS 7
^
1 warning generated.
vim +/DS +15 drivers/video/backlight/ktd2801-backlight.c
8
9 #define EW_DELAY 150
10 #define EW_DET 270
11 #define LOW_BIT_HIGH 5
12 #define LOW_BIT_LOW (4 * HIGH_BIT_LOW)
13 #define HIGH_BIT_LOW 5
14 #define HIGH_BIT_HIGH (4 * HIGH_BIT_LOW)
> 15 #define DS 5
16 #define EOD_L 10
17 #define EOD_H 350
18 #define PWR_DOWN_DELAY 2600
19
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-10-19 1:14 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-05 18:49 [PATCH 0/2] Kinetic KTD2801 backlight driver Duje Mihanović
2023-10-05 18:49 ` [PATCH 1/2] dt-bindings: backlight: add Kinetic KTD2801 binding Duje Mihanović
2023-10-05 20:37 ` Krzysztof Kozlowski
2023-10-06 12:30 ` Daniel Thompson
2023-10-06 13:08 ` Duje Mihanović
2023-10-09 9:29 ` Daniel Thompson
2023-10-05 18:49 ` [PATCH 2/2] backlight: Add Kinetic KTD2801 driver Duje Mihanović
2023-10-05 20:40 ` Krzysztof Kozlowski
2023-10-06 13:11 ` Duje Mihanović
2023-10-09 9:21 ` Daniel Thompson
2023-10-09 15:08 ` Duje Mihanović
2023-10-10 17:20 ` kernel test robot
2023-10-19 1:14 ` kernel test robot
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).