diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c index 2f46e0c..a8cd9b0 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c @@ -328,11 +328,27 @@ static int radeon_legacy_backlight_update_status(struct backlight_device *bd) static int radeon_legacy_backlight_get_brightness(struct backlight_device *bd) { struct radeon_backlight_privdata *pdata = bl_get_data(bd); - struct radeon_encoder *radeon_encoder = pdata->encoder; - struct drm_device *dev = radeon_encoder->base.dev; - struct radeon_device *rdev = dev->dev_private; + struct radeon_encoder *radeon_encoder; + struct drm_device *dev; + struct radeon_device *rdev; uint8_t backlight_level; + DRM_INFO("pdata=%p\n", pdata); + if (!pdata) + return MAX_RADEON_LEVEL; + radeon_encoder = pdata->encoder; + DRM_INFO("radeon_encoder=%p\n", radeon_encoder); + if (!radeon_encoder) + return MAX_RADEON_LEVEL; + dev = radeon_encoder->base.dev; + DRM_INFO("dev=%p\n", dev); + if (!dev) + return MAX_RADEON_LEVEL; + rdev = dev->dev_private; + DRM_INFO("rdev=%p\n", rdev); + if (!rdev) + return MAX_RADEON_LEVEL; + backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >> RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff;