diff -ur a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c --- a/drivers/gpu/drm/nouveau/nouveau_backlight.c 2014-12-07 23:21:05.000000000 +0100 +++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c 2015-02-23 14:29:19.263677836 +0100 @@ -173,6 +173,22 @@ .update_status = nva3_set_intensity, }; +int +nouveau_backlight_config(struct nouveau_drm *drm) +{ + struct backlight_device *bd = drm->backlight; + struct nvif_device *device = &drm->device; + struct nouveau_encoder *nv_encoder = bl_get_data(bd); + + if (device->info.chipset <= 0xa0 || + device->info.chipset == 0xaa || + device->info.chipset == 0xac) + nvif_wr32(device, NV50_PDISP_SOR_PWM_DIV(nv_encoder->or), 0x5e); + + return 0; + +} + static int nv50_backlight_init(struct drm_connector *connector) { diff -ur a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c --- a/drivers/gpu/drm/nouveau/nouveau_display.c 2014-12-07 23:21:05.000000000 +0100 +++ b/drivers/gpu/drm/nouveau/nouveau_display.c 2015-02-23 14:30:42.755337580 +0100 @@ -608,6 +608,12 @@ nouveau_display_init(dev); + /* configure backlight params */ + if (drm->backlight) { + nouveau_backlight_config(drm); + } + + /* Force CLUT to get re-loaded during modeset */ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); diff -ur a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h --- a/drivers/gpu/drm/nouveau/nouveau_display.h 2014-12-07 23:21:05.000000000 +0100 +++ b/drivers/gpu/drm/nouveau/nouveau_display.h 2015-02-23 14:32:06.376999909 +0100 @@ -88,6 +88,7 @@ int nouveau_crtc_set_config(struct drm_mode_set *set); #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT extern int nouveau_backlight_init(struct drm_device *); +extern int nouveau_backlight_config(struct nouveau_drm *); extern void nouveau_backlight_exit(struct drm_device *); #else static inline int @@ -95,6 +96,12 @@ { return 0; } + +static inline int +nouveau_backlight_config(struct nouveau_drm *connector) +{ + return 0; +} static inline void nouveau_backlight_exit(struct drm_device *dev) {