From: Enric Balletbo i Serra <hidden> Date: 2017-07-21 10:48:32
Before this patch the enable signal was set before the PWM signal and
vice-versa on power off. This sequence is wrong, at least, it is on
the different panels datasheets that I checked, so I inverted the sequence
to follow the specs.
For reference the following panels have the mentioned sequence:
- N133HSE-EA1 (Innolux)
- N116BGE (Innolux)
- N156BGE-L21 (Innolux)
- B101EAN0 (Auo)
- B101AW03 (Auo)
- LTN101NT05 (Samsung)
- CLAA101WA01A (Chunghwa)
Signed-off-by: Enric Balletbo i Serra <redacted>
---
Changes since v3:
- List the part numbers for the panel checked (Daniel Thompson)
Changes since v2:
- Add this as a separate patch (Thierry Reding)
Changes since v1:
- None
drivers/video/backlight/pwm_bl.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
@@ -54,10 +54,11 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness)if(err<0)dev_err(pb->dev,"failed to enable power supply\n");+pwm_enable(pb->pwm);+if(pb->enable_gpio)gpiod_set_value_cansleep(pb->enable_gpio,1);-pwm_enable(pb->pwm);pb->enabled=true;}
From: Enric Balletbo i Serra <hidden> Date: 2017-07-21 10:48:35
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
---
Changes since v3:
- Use two named members instead of pwm_delay[] (Daniel and Pavel)
- Use msleep instead of usleep_range. (Pavel)
Changes since v2:
- Move the pwm/enable sequence to another patch (Thierry Reding)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
- Move the check of dt property to the parse dt function.
drivers/video/backlight/pwm_bl.c | 19 +++++++++++++++++++
include/linux/pwm_backlight.h | 2 ++
2 files changed, 21 insertions(+)
@@ -13,6 +13,8 @@ struct platform_pwm_backlight_data {unsignedintlth_brightness;unsignedintpwm_period_ns;unsignedint*levels;+unsignedintpost_pwm_on_delay;+unsignedintpwm_off_delay;/* TODO remove once all users are switched to gpiod_* API */intenable_gpio;int(*init)(structdevice*dev);
From: Enric Balletbo i Serra <hidden> Date: 2017-07-21 10:48:39
The minnie devices comes with an AUO B101EAN01 panel which is different
from default veyron devices, thus the power on/off timing sequence is
slightly different. The datasheet specifies a pwm delay of 200 ms, so
update the PMW delay proprieties accordingly.
Signed-off-by: Enric Balletbo i Serra <redacted>
---
Heiko,
I'm not able to test this patch in a minnie device because I don't have
one, so could you do a quick try, please?
Changes since v3:
- Use new -ms names for proprieties.
- Fix the delay, should be 200ms instead of 20ms (Pavel)
Changes since v2:
- Use new names for proprieties.
Changes since v1:
- Add this new patch as minnie has differents timings
arch/arm/boot/dts/rk3288-veyron-minnie.dts | 2 ++
1 file changed, 2 insertions(+)
From: Enric Balletbo i Serra <hidden> Date: 2017-07-21 10:49:01
For veyron the binding should provide both PWM timings, the delay between
you enable the PWM and set the enable signal, and the delay between you
disable the PWM signal and clear the enable signal. Update the binding
accordingly, in this case the panels connected to the veyron boards have
a symmetric power sequence, hence the same value is used.
Signed-off-by: Enric Balletbo i Serra <redacted>
---
Changes since v3:
- Use new -ms names for proprieties.
Changes since v2:
- Use new names for proprieties.
Changes since v1:
- Add this new patch to fix current binding on veyron.
arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
From: Enric Balletbo i Serra <hidden> Date: 2017-07-21 10:49:25
Hardware needs a delay between setting an initial (non-zero) PWM and
enabling the backlight using GPIO. The post-pwm-on-delay-ms specifies
this delay in milli seconds. Hardware also needs a delay between disabing
the backlight using GPIO and setting PWM value to 0. The pwm-off-delay-ms
is this delay in milli seconds.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Pavel Machek <redacted>
---
Based on the original Huang Lin [off-list ref] work.
Changes since v3:
- Replace us for ms.
- Add Acked-by: Pavel Machek [off-list ref]
Changes since v2:
- Use separate properties (Rob Herring)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt | 6 ++++++
1 file changed, 6 insertions(+)
@@ -17,6 +17,10 @@ Optional properties: "pwms" property (see PWM binding[0]) - enable-gpios: contains a single GPIO specifier for the GPIO which enables and disables the backlight (see GPIO binding[1])+ - post-pwm-on-delay-ms: Delay in ms between setting an initial (non-zero) PWM+ and enabling the backlight using GPIO.+ - pwm-off-delay-ms: Delay in ms between disabling the backlight using GPIO+ and setting PWM value to 0. [0]: Documentation/devicetree/bindings/pwm/pwm.txt [1]: Documentation/devicetree/bindings/gpio/gpio.txt
From: Pavel Machek <hidden> Date: 2017-07-21 11:21:38
On Fri 2017-07-21 12:48:11, Enric Balletbo i Serra wrote:
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
From: Daniel Thompson <hidden> Date: 2017-07-24 15:14:04
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
Before this patch the enable signal was set before the PWM signal and
vice-versa on power off. This sequence is wrong, at least, it is on
the different panels datasheets that I checked, so I inverted the sequence
to follow the specs.
For reference the following panels have the mentioned sequence:
- N133HSE-EA1 (Innolux)
- N116BGE (Innolux)
- N156BGE-L21 (Innolux)
- B101EAN0 (Auo)
- B101AW03 (Auo)
- LTN101NT05 (Samsung)
- CLAA101WA01A (Chunghwa)
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
quoted hunk
---
Changes since v3:
- List the part numbers for the panel checked (Daniel Thompson)
Changes since v2:
- Add this as a separate patch (Thierry Reding)
Changes since v1:
- None
drivers/video/backlight/pwm_bl.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
@@ -54,10 +54,11 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness)if(err<0)dev_err(pb->dev,"failed to enable power supply\n");+pwm_enable(pb->pwm);+if(pb->enable_gpio)gpiod_set_value_cansleep(pb->enable_gpio,1);-pwm_enable(pb->pwm);pb->enabled=true;}
From: Daniel Thompson <hidden> Date: 2017-07-24 15:22:33
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
quoted hunk
---
Changes since v3:
- Use two named members instead of pwm_delay[] (Daniel and Pavel)
- Use msleep instead of usleep_range. (Pavel)
Changes since v2:
- Move the pwm/enable sequence to another patch (Thierry Reding)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
- Move the check of dt property to the parse dt function.
drivers/video/backlight/pwm_bl.c | 19 +++++++++++++++++++
include/linux/pwm_backlight.h | 2 ++
2 files changed, 21 insertions(+)
@@ -13,6 +13,8 @@ struct platform_pwm_backlight_data {unsignedintlth_brightness;unsignedintpwm_period_ns;unsignedint*levels;+unsignedintpost_pwm_on_delay;+unsignedintpwm_off_delay;/* TODO remove once all users are switched to gpiod_* API */intenable_gpio;int(*init)(structdevice*dev);
From: Daniel Thompson <hidden> Date: 2017-07-24 15:22:50
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted hunk
Hardware needs a delay between setting an initial (non-zero) PWM and
enabling the backlight using GPIO. The post-pwm-on-delay-ms specifies
this delay in milli seconds. Hardware also needs a delay between disabing
the backlight using GPIO and setting PWM value to 0. The pwm-off-delay-ms
is this delay in milli seconds.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Pavel Machek <redacted>
---
Based on the original Huang Lin [off-list ref] work.
Changes since v3:
- Replace us for ms.
- Add Acked-by: Pavel Machek [off-list ref]
Changes since v2:
- Use separate properties (Rob Herring)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt | 6 ++++++
1 file changed, 6 insertions(+)
@@ -17,6 +17,10 @@ Optional properties: "pwms" property (see PWM binding[0]) - enable-gpios: contains a single GPIO specifier for the GPIO which enables and disables the backlight (see GPIO binding[1])+ - post-pwm-on-delay-ms: Delay in ms between setting an initial (non-zero) PWM+ and enabling the backlight using GPIO.+ - pwm-off-delay-ms: Delay in ms between disabling the backlight using GPIO+ and setting PWM value to 0.
Whilst it is strictly true that the delay you added to the driver is
currently between disabling the backlight and setting PWM value to 0 I
don't think the action should be described at this level of detail in
the DT bindings.
The semantic action that is being performed is "stopping the PWM". This
is currently implemented by setting the duty cycle to 0 and then calling
disable but that could change (especially so since the current behavior
looks asymmetric versus the enable sequence).
Daniel.
From: Pavel Machek <hidden> Date: 2017-07-24 19:20:05
On Mon 2017-07-24 16:21:44, Daniel Thompson wrote:
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Hardware needs a delay between setting an initial (non-zero) PWM and
enabling the backlight using GPIO. The post-pwm-on-delay-ms specifies
this delay in milli seconds. Hardware also needs a delay between disabing
the backlight using GPIO and setting PWM value to 0. The pwm-off-delay-ms
is this delay in milli seconds.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Pavel Machek <redacted>
---
Based on the original Huang Lin [off-list ref] work.
Changes since v3:
- Replace us for ms.
- Add Acked-by: Pavel Machek [off-list ref]
Changes since v2:
- Use separate properties (Rob Herring)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt | 6 ++++++
1 file changed, 6 insertions(+)
@@ -17,6 +17,10 @@ Optional properties: "pwms" property (see PWM binding[0]) - enable-gpios: contains a single GPIO specifier for the GPIO which enables and disables the backlight (see GPIO binding[1])+ - post-pwm-on-delay-ms: Delay in ms between setting an initial (non-zero) PWM+ and enabling the backlight using GPIO.+ - pwm-off-delay-ms: Delay in ms between disabling the backlight using GPIO+ and setting PWM value to 0.
Whilst it is strictly true that the delay you added to the driver is
currently between disabling the backlight and setting PWM value to 0 I don't
think the action should be described at this level of detail in the DT
bindings.
The semantic action that is being performed is "stopping the PWM". This is
currently implemented by setting the duty cycle to 0 and then calling
disable but that could change (especially so since the current behavior
looks asymmetric versus the enable sequence).
On Monday, July 24, 2017 11:14 AM, Daniel Thompson wrote:
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Before this patch the enable signal was set before the PWM signal and
vice-versa on power off. This sequence is wrong, at least, it is on
the different panels datasheets that I checked, so I inverted the
sequence
quoted
to follow the specs.
For reference the following panels have the mentioned sequence:
- N133HSE-EA1 (Innolux)
- N116BGE (Innolux)
- N156BGE-L21 (Innolux)
- B101EAN0 (Auo)
- B101AW03 (Auo)
- LTN101NT05 (Samsung)
- CLAA101WA01A (Chunghwa)
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Best regards,
Jingoo Han
quoted
---
Changes since v3:
- List the part numbers for the panel checked (Daniel Thompson)
Changes since v2:
- Add this as a separate patch (Thierry Reding)
Changes since v1:
- None
drivers/video/backlight/pwm_bl.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
On Monday, July 24, 2017 11:22 AM, Daniel Thompson wrote:
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Best regards,
Jingoo Han
quoted
---
Changes since v3:
- Use two named members instead of pwm_delay[] (Daniel and Pavel)
- Use msleep instead of usleep_range. (Pavel)
Changes since v2:
- Move the pwm/enable sequence to another patch (Thierry Reding)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
- Move the check of dt property to the parse dt function.
drivers/video/backlight/pwm_bl.c | 19 +++++++++++++++++++
include/linux/pwm_backlight.h | 2 ++
2 files changed, 21 insertions(+)
if (pb->enable_gpio)
gpiod_set_value_cansleep(pb->enable_gpio, 0);
+ if (pb->pwm_off_delay)
+ msleep(pb->pwm_off_delay);
+
pwm_config(pb->pwm, 0, pb->period);
pwm_disable(pb->pwm);
@@ -175,6 +184,14 @@ static int pwm_backlight_parse_dt(struct device
*dev,
quoted
data->max_brightness--;
}
+ /*
+ * These values are optional and set as 0 by default, the out
values
quoted
+ * are modified only if a valid u32 value can be decoded.
+ */
+ of_property_read_u32(node, "post-pwm-on-delay-ms",
+ &data->post_pwm_on_delay);
+ of_property_read_u32(node, "pwm-off-delay-ms", &data-
pwm_off_delay);
+
data->enable_gpio = -EINVAL;
return 0;
}
@@ -273,6 +290,8 @@ static int pwm_backlight_probe(struct
@@ -13,6 +13,8 @@ struct platform_pwm_backlight_data {unsignedintlth_brightness;unsignedintpwm_period_ns;unsignedint*levels;+unsignedintpost_pwm_on_delay;+unsignedintpwm_off_delay;/* TODO remove once all users are switched to gpiod_* API */intenable_gpio;int(*init)(structdevice*dev);
Hi,
2017-07-26 19:01 GMT+02:00 Jingoo Han [off-list ref]:
On Monday, July 24, 2017 11:22 AM, Daniel Thompson wrote:
quoted
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
A lot of time has passed since these patches received the acks but I'm
still without seeing the patches in linux-next. There is some action I
need to do ? (rebase?). I'd really like to see those to land in next
merge window if all is ok.
Thanks,
Enric
Best regards,
Jingoo Han
quoted
quoted
---
Changes since v3:
- Use two named members instead of pwm_delay[] (Daniel and Pavel)
- Use msleep instead of usleep_range. (Pavel)
Changes since v2:
- Move the pwm/enable sequence to another patch (Thierry Reding)
Changes since v1:
- As suggested by Daniel Thompson
- Do not assume power-on delay and power-off delay will be the same
- Move the check of dt property to the parse dt function.
drivers/video/backlight/pwm_bl.c | 19 +++++++++++++++++++
include/linux/pwm_backlight.h | 2 ++
2 files changed, 21 insertions(+)
if (pb->enable_gpio)
gpiod_set_value_cansleep(pb->enable_gpio, 0);
+ if (pb->pwm_off_delay)
+ msleep(pb->pwm_off_delay);
+
pwm_config(pb->pwm, 0, pb->period);
pwm_disable(pb->pwm);
@@ -175,6 +184,14 @@ static int pwm_backlight_parse_dt(struct device
*dev,
quoted
data->max_brightness--;
}
+ /*
+ * These values are optional and set as 0 by default, the out
values
quoted
+ * are modified only if a valid u32 value can be decoded.
+ */
+ of_property_read_u32(node, "post-pwm-on-delay-ms",
+ &data->post_pwm_on_delay);
+ of_property_read_u32(node, "pwm-off-delay-ms", &data-
pwm_off_delay);
+
data->enable_gpio = -EINVAL;
return 0;
}
@@ -273,6 +290,8 @@ static int pwm_backlight_probe(struct
@@ -13,6 +13,8 @@ struct platform_pwm_backlight_data {unsignedintlth_brightness;unsignedintpwm_period_ns;unsignedint*levels;+unsignedintpost_pwm_on_delay;+unsignedintpwm_off_delay;/* TODO remove once all users are switched to gpiod_* API */intenable_gpio;int(*init)(structdevice*dev);
From: Lee Jones <hidden> Date: 2017-12-01 10:54:32
On Fri, 01 Dec 2017, Enric Balletbo Serra wrote:
2017-07-26 19:01 GMT+02:00 Jingoo Han [off-list ref]:
quoted
On Monday, July 24, 2017 11:22 AM, Daniel Thompson wrote:
quoted
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
A lot of time has passed since these patches received the acks but I'm
still without seeing the patches in linux-next. There is some action I
need to do ? (rebase?). I'd really like to see those to land in next
merge window if all is ok.
Looks like you are still missing Acks on some of the patches and have
questions outstanding.
Best thing to do is rebase and resubmit with all of the Acks you've
collected applied.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Hi,
2017-12-01 11:54 GMT+01:00 Lee Jones [off-list ref]:
On Fri, 01 Dec 2017, Enric Balletbo Serra wrote:
quoted
2017-07-26 19:01 GMT+02:00 Jingoo Han [off-list ref]:
quoted
On Monday, July 24, 2017 11:22 AM, Daniel Thompson wrote:
quoted
On 21/07/17 11:48, Enric Balletbo i Serra wrote:
quoted
Some panels (i.e. N116BGE-L41), in their power sequence specifications,
request a delay between set the PWM signal and enable the backlight and
between clear the PWM signal and disable the backlight. Add support for
the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
the timings.
Signed-off-by: Enric Balletbo i Serra <redacted>
Acked-by: Daniel Thompson <redacted>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
A lot of time has passed since these patches received the acks but I'm
still without seeing the patches in linux-next. There is some action I
need to do ? (rebase?). I'd really like to see those to land in next
merge window if all is ok.
Looks like you are still missing Acks on some of the patches and have
questions outstanding.
Best thing to do is rebase and resubmit with all of the Acks you've
collected applied.
Thanks will do that then.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog