Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
"Two drm atomic core fixes.

And two radeon patches needed to fix a backlight regression on some
older hardware"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm: Correct arguments to list_tail_add in create blob ioctl
drm: crtc: integer overflow in drm_property_create_blob()
drm/radeon: fix dpms when driver backlight control is disabled
drm/radeon: move bl encoder assignment into bl init

+18 -7
+2 -2
drivers/gpu/drm/drm_crtc.c
··· 4105 4105 struct drm_property_blob *blob; 4106 4106 int ret; 4107 4107 4108 - if (!length) 4108 + if (!length || length > ULONG_MAX - sizeof(struct drm_property_blob)) 4109 4109 return ERR_PTR(-EINVAL); 4110 4110 4111 4111 blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL); ··· 4454 4454 * not associated with any file_priv. */ 4455 4455 mutex_lock(&dev->mode_config.blob_lock); 4456 4456 out_resp->blob_id = blob->base.id; 4457 - list_add_tail(&file_priv->blobs, &blob->head_file); 4457 + list_add_tail(&blob->head_file, &file_priv->blobs); 4458 4458 mutex_unlock(&dev->mode_config.blob_lock); 4459 4459 4460 4460 return 0;
+15 -4
drivers/gpu/drm/radeon/atombios_encoders.c
··· 237 237 backlight_update_status(bd); 238 238 239 239 DRM_INFO("radeon atom DIG backlight initialized\n"); 240 + rdev->mode_info.bl_encoder = radeon_encoder; 240 241 241 242 return; 242 243 ··· 1625 1624 } else 1626 1625 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 1627 1626 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 1628 - struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 1627 + if (rdev->mode_info.bl_encoder) { 1628 + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 1629 1629 1630 - atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1630 + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1631 + } else { 1632 + args.ucAction = ATOM_LCD_BLON; 1633 + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 1634 + } 1631 1635 } 1632 1636 break; 1633 1637 case DRM_MODE_DPMS_STANDBY: ··· 1712 1706 if (ASIC_IS_DCE4(rdev)) 1713 1707 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); 1714 1708 } 1715 - if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) 1716 - atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1709 + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 1710 + if (rdev->mode_info.bl_encoder) 1711 + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1712 + else 1713 + atombios_dig_transmitter_setup(encoder, 1714 + ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); 1715 + } 1717 1716 if (ext_encoder) 1718 1717 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); 1719 1718 break;
-1
drivers/gpu/drm/radeon/radeon_encoders.c
··· 194 194 radeon_atom_backlight_init(radeon_encoder, connector); 195 195 else 196 196 radeon_legacy_backlight_init(radeon_encoder, connector); 197 - rdev->mode_info.bl_encoder = radeon_encoder; 198 197 } 199 198 } 200 199
+1
drivers/gpu/drm/radeon/radeon_legacy_encoders.c
··· 441 441 backlight_update_status(bd); 442 442 443 443 DRM_INFO("radeon legacy LVDS backlight initialized\n"); 444 + rdev->mode_info.bl_encoder = radeon_encoder; 444 445 445 446 return; 446 447