[3/4] backlight: pwm_bl: Set scale type for CIE 1931 curves
diff mbox series

Message ID 20190613194326.180889-4-mka@chromium.org
State New
Headers show
Series
  • backlight: Expose brightness curve type through sysfs
Related show

Commit Message

Matthias Kaehlcke June 13, 2019, 7:43 p.m. UTC
For backlight curves calculated with the CIE 1931 algorithm set
the brightness scale type property accordingly. This makes the
scale type available to userspace via the 'scale' sysfs attribute.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
---
 drivers/video/backlight/pwm_bl.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Enric Balletbo i Serra June 19, 2019, 9:17 a.m. UTC | #1
Hi Matthias,

On 13/6/19 21:43, Matthias Kaehlcke wrote:
> For backlight curves calculated with the CIE 1931 algorithm set
> the brightness scale type property accordingly. This makes the
> scale type available to userspace via the 'scale' sysfs attribute.
> 
> Signed-off-by: Matthias Kaehlcke <mka@chromium.org>

Tested on Samsung Chromebook Plus which uses the CIE 1931 algorithm.

Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>

> ---
>  drivers/video/backlight/pwm_bl.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
> index fb45f866b923..f067fe7aa35d 100644
> --- a/drivers/video/backlight/pwm_bl.c
> +++ b/drivers/video/backlight/pwm_bl.c
> @@ -553,6 +553,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>  		goto err_alloc;
>  	}
>  
> +	memset(&props, 0, sizeof(struct backlight_properties));
> +
>  	if (data->levels) {
>  		/*
>  		 * For the DT case, only when brightness levels is defined
> @@ -591,6 +593,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>  
>  			pb->levels = data->levels;
>  		}
> +
> +		props.scale = BACKLIGHT_SCALE_CIE1931;
>  	} else {
>  		/*
>  		 * That only happens for the non-DT case, where platform data
> @@ -601,7 +605,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>  
>  	pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
>  
> -	memset(&props, 0, sizeof(struct backlight_properties));
>  	props.type = BACKLIGHT_RAW;
>  	props.max_brightness = data->max_brightness;
>  	bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, pb,
>
Daniel Thompson June 21, 2019, 12:55 p.m. UTC | #2
On 13/06/2019 20:43, Matthias Kaehlcke wrote:
> For backlight curves calculated with the CIE 1931 algorithm set
> the brightness scale type property accordingly. This makes the
> scale type available to userspace via the 'scale' sysfs attribute.
> 
> Signed-off-by: Matthias Kaehlcke <mka@chromium.org>

I'd like to keep discussion on patch 2 open a bit longer (it's not part 
of the thread below patch 2 but Pavel had concerns about the sysfs 
interface) so this ack won't really push things forward but FWIW:

Acked-by: Daniel Thompson <daniel.thompson@linaro.org>


> ---
>   drivers/video/backlight/pwm_bl.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
> index fb45f866b923..f067fe7aa35d 100644
> --- a/drivers/video/backlight/pwm_bl.c
> +++ b/drivers/video/backlight/pwm_bl.c
> @@ -553,6 +553,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>   		goto err_alloc;
>   	}
>   
> +	memset(&props, 0, sizeof(struct backlight_properties));
> +
>   	if (data->levels) {
>   		/*
>   		 * For the DT case, only when brightness levels is defined
> @@ -591,6 +593,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>   
>   			pb->levels = data->levels;
>   		}
> +
> +		props.scale = BACKLIGHT_SCALE_CIE1931;
>   	} else {
>   		/*
>   		 * That only happens for the non-DT case, where platform data
> @@ -601,7 +605,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
>   
>   	pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
>   
> -	memset(&props, 0, sizeof(struct backlight_properties));
>   	props.type = BACKLIGHT_RAW;
>   	props.max_brightness = data->max_brightness;
>   	bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, pb,
>
Lee Jones June 27, 2019, 9:24 a.m. UTC | #3
On Fri, 21 Jun 2019, Daniel Thompson wrote:

> On 13/06/2019 20:43, Matthias Kaehlcke wrote:
> > For backlight curves calculated with the CIE 1931 algorithm set
> > the brightness scale type property accordingly. This makes the
> > scale type available to userspace via the 'scale' sysfs attribute.
> > 
> > Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> 
> I'd like to keep discussion on patch 2 open a bit longer (it's not part of
> the thread below patch 2 but Pavel had concerns about the sysfs interface)
> so this ack won't really push things forward but FWIW:
> 
> Acked-by: Daniel Thompson <daniel.thompson@linaro.org>

Does this depend on patch 2, or is it orthogonal?

> > ---
> >   drivers/video/backlight/pwm_bl.c | 5 ++++-
> >   1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
> > index fb45f866b923..f067fe7aa35d 100644
> > --- a/drivers/video/backlight/pwm_bl.c
> > +++ b/drivers/video/backlight/pwm_bl.c
> > @@ -553,6 +553,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> >   		goto err_alloc;
> >   	}
> > +	memset(&props, 0, sizeof(struct backlight_properties));
> > +
> >   	if (data->levels) {
> >   		/*
> >   		 * For the DT case, only when brightness levels is defined
> > @@ -591,6 +593,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> >   			pb->levels = data->levels;
> >   		}
> > +
> > +		props.scale = BACKLIGHT_SCALE_CIE1931;
> >   	} else {
> >   		/*
> >   		 * That only happens for the non-DT case, where platform data
> > @@ -601,7 +605,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> >   	pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
> > -	memset(&props, 0, sizeof(struct backlight_properties));
> >   	props.type = BACKLIGHT_RAW;
> >   	props.max_brightness = data->max_brightness;
> >   	bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, pb,
> > 
>
Daniel Thompson June 27, 2019, 3:49 p.m. UTC | #4
On Thu, Jun 27, 2019 at 10:24:53AM +0100, Lee Jones wrote:
> On Fri, 21 Jun 2019, Daniel Thompson wrote:
> 
> > On 13/06/2019 20:43, Matthias Kaehlcke wrote:
> > > For backlight curves calculated with the CIE 1931 algorithm set
> > > the brightness scale type property accordingly. This makes the
> > > scale type available to userspace via the 'scale' sysfs attribute.
> > > 
> > > Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> > 
> > I'd like to keep discussion on patch 2 open a bit longer (it's not part of
> > the thread below patch 2 but Pavel had concerns about the sysfs interface)
> > so this ack won't really push things forward but FWIW:
> > 
> > Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
> 
> Does this depend on patch 2, or is it orthogonal?

IIRC it depends on patch 2 (since that't what introduces props.scale ).


Daniel.

> 
> > > ---
> > >   drivers/video/backlight/pwm_bl.c | 5 ++++-
> > >   1 file changed, 4 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
> > > index fb45f866b923..f067fe7aa35d 100644
> > > --- a/drivers/video/backlight/pwm_bl.c
> > > +++ b/drivers/video/backlight/pwm_bl.c
> > > @@ -553,6 +553,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> > >   		goto err_alloc;
> > >   	}
> > > +	memset(&props, 0, sizeof(struct backlight_properties));
> > > +
> > >   	if (data->levels) {
> > >   		/*
> > >   		 * For the DT case, only when brightness levels is defined
> > > @@ -591,6 +593,8 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> > >   			pb->levels = data->levels;
> > >   		}
> > > +
> > > +		props.scale = BACKLIGHT_SCALE_CIE1931;
> > >   	} else {
> > >   		/*
> > >   		 * That only happens for the non-DT case, where platform data
> > > @@ -601,7 +605,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
> > >   	pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
> > > -	memset(&props, 0, sizeof(struct backlight_properties));
> > >   	props.type = BACKLIGHT_RAW;
> > >   	props.max_brightness = data->max_brightness;
> > >   	bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, pb,
> > > 
> > 
> 
> -- 
> Lee Jones [李琼斯]
> Linaro Services Technical Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

Patch
diff mbox series

diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index fb45f866b923..f067fe7aa35d 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -553,6 +553,8 @@  static int pwm_backlight_probe(struct platform_device *pdev)
 		goto err_alloc;
 	}
 
+	memset(&props, 0, sizeof(struct backlight_properties));
+
 	if (data->levels) {
 		/*
 		 * For the DT case, only when brightness levels is defined
@@ -591,6 +593,8 @@  static int pwm_backlight_probe(struct platform_device *pdev)
 
 			pb->levels = data->levels;
 		}
+
+		props.scale = BACKLIGHT_SCALE_CIE1931;
 	} else {
 		/*
 		 * That only happens for the non-DT case, where platform data
@@ -601,7 +605,6 @@  static int pwm_backlight_probe(struct platform_device *pdev)
 
 	pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
 
-	memset(&props, 0, sizeof(struct backlight_properties));
 	props.type = BACKLIGHT_RAW;
 	props.max_brightness = data->max_brightness;
 	bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, pb,