[Nouveau] [PATCH v2] bl: fix backlight regression

Pierre Moreau pierre.morrow at free.fr
Mon Feb 19 16:28:07 UTC 2018


A few words about why this change is needed would be nice, as well as what
changed since the v1 (well, looking back to your original patch, absolutely
everything changed :-D).

On 2018-02-19 — 17:09, Karol Herbst wrote:
> fixes d9c0aadc5aa241df26ce8301d34a8418919fb5ae

The formatting does not follow the kernel guidelines, see
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=91ab883eb21325ad80f3473633f794c78ac87f51#n183
Also, you might want to use the commit hash from Linus’ tree, rather than from
Ben’s out-of-tree module.

> 
> Suggested-by: Ben Skeggs <skeggsb at redhat.com>
> Signed-off-by: Karol Herbst <kherbst at redhat.com>
> ---
>  drm/nouveau/nouveau_backlight.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau/nouveau_backlight.c
> index 380f3402..55172655 100644
> --- a/drm/nouveau/nouveau_backlight.c
> +++ b/drm/nouveau/nouveau_backlight.c
> @@ -134,7 +134,7 @@ nv50_get_intensity(struct backlight_device *bd)
>  	struct nouveau_encoder *nv_encoder = bl_get_data(bd);
>  	struct nouveau_drm *drm = nouveau_drm(nv_encoder->base.base.dev);
>  	struct nvif_object *device = &drm->client.device.object;
> -	int or = nv_encoder->or;
> +	int or = ffs(nv_encoder->dcb->or) - 1;

Since you have that change in a few places, wouldn’t it make sense to have it
in an helper function, that given an nv_encoder object would give you back the
correct or value? The function wouldn’t be doing much, I agree, but it would be
less error-prone to forgetting the -1 or using ffs in some cases.

Pierre

>  	u32 div = 1025;
>  	u32 val;
>  
> @@ -149,7 +149,7 @@ nv50_set_intensity(struct backlight_device *bd)
>  	struct nouveau_encoder *nv_encoder = bl_get_data(bd);
>  	struct nouveau_drm *drm = nouveau_drm(nv_encoder->base.base.dev);
>  	struct nvif_object *device = &drm->client.device.object;
> -	int or = nv_encoder->or;
> +	int or = ffs(nv_encoder->dcb->or) - 1;
>  	u32 div = 1025;
>  	u32 val = (bd->props.brightness * div) / 100;
>  
> @@ -170,7 +170,7 @@ nva3_get_intensity(struct backlight_device *bd)
>  	struct nouveau_encoder *nv_encoder = bl_get_data(bd);
>  	struct nouveau_drm *drm = nouveau_drm(nv_encoder->base.base.dev);
>  	struct nvif_object *device = &drm->client.device.object;
> -	int or = nv_encoder->or;
> +	int or = ffs(nv_encoder->dcb->or) - 1;
>  	u32 div, val;
>  
>  	div  = nvif_rd32(device, NV50_PDISP_SOR_PWM_DIV(or));
> @@ -188,7 +188,7 @@ nva3_set_intensity(struct backlight_device *bd)
>  	struct nouveau_encoder *nv_encoder = bl_get_data(bd);
>  	struct nouveau_drm *drm = nouveau_drm(nv_encoder->base.base.dev);
>  	struct nvif_object *device = &drm->client.device.object;
> -	int or = nv_encoder->or;
> +	int or = ffs(nv_encoder->dcb->or) - 1;
>  	u32 div, val;
>  
>  	div = nvif_rd32(device, NV50_PDISP_SOR_PWM_DIV(or));
> @@ -228,7 +228,7 @@ nv50_backlight_init(struct drm_connector *connector)
>  			return -ENODEV;
>  	}
>  
> -	if (!nvif_rd32(device, NV50_PDISP_SOR_PWM_CTL(nv_encoder->or)))
> +	if (!nvif_rd32(device, NV50_PDISP_SOR_PWM_CTL(ffs(nv_encoder->dcb->or) - 1)))
>  		return 0;
>  
>  	if (drm->client.device.info.chipset <= 0xa0 ||
> -- 
> 2.14.3
> 
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20180219/efa48efe/attachment.sig>


More information about the Nouveau mailing list