|
@@ -158,10 +158,36 @@ radeon_get_encoder_enum(struct drm_device *dev, uint32_t supported_device, uint8
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+static void radeon_encoder_add_backlight(struct radeon_encoder *radeon_encoder,
|
|
|
+ struct drm_connector *connector)
|
|
|
+{
|
|
|
+ struct drm_device *dev = radeon_encoder->base.dev;
|
|
|
+ struct radeon_device *rdev = dev->dev_private;
|
|
|
+ bool use_bl = false;
|
|
|
+
|
|
|
+ if (!(radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)))
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (radeon_backlight == 0) {
|
|
|
+ return;
|
|
|
+ } else if (radeon_backlight == 1) {
|
|
|
+ use_bl = true;
|
|
|
+ } else if (radeon_backlight == -1) {
|
|
|
+ use_bl = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (use_bl) {
|
|
|
+ if (rdev->is_atom_bios)
|
|
|
+ radeon_atom_backlight_init(radeon_encoder, connector);
|
|
|
+ else
|
|
|
+ radeon_legacy_backlight_init(radeon_encoder, connector);
|
|
|
+ rdev->mode_info.bl_encoder = radeon_encoder;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void
|
|
|
radeon_link_encoder_connector(struct drm_device *dev)
|
|
|
{
|
|
|
- struct radeon_device *rdev = dev->dev_private;
|
|
|
struct drm_connector *connector;
|
|
|
struct radeon_connector *radeon_connector;
|
|
|
struct drm_encoder *encoder;
|
|
@@ -174,13 +200,8 @@ radeon_link_encoder_connector(struct drm_device *dev)
|
|
|
radeon_encoder = to_radeon_encoder(encoder);
|
|
|
if (radeon_encoder->devices & radeon_connector->devices) {
|
|
|
drm_mode_connector_attach_encoder(connector, encoder);
|
|
|
- if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
|
|
|
- if (rdev->is_atom_bios)
|
|
|
- radeon_atom_backlight_init(radeon_encoder, connector);
|
|
|
- else
|
|
|
- radeon_legacy_backlight_init(radeon_encoder, connector);
|
|
|
- rdev->mode_info.bl_encoder = radeon_encoder;
|
|
|
- }
|
|
|
+ if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
|
|
|
+ radeon_encoder_add_backlight(radeon_encoder, connector);
|
|
|
}
|
|
|
}
|
|
|
}
|