Commit 91030880 authored by Alex Deucher's avatar Alex Deucher

drm/radeon: rework legacy backlight control

To better enable sharing with atom backlight control.
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent af7912e5
...@@ -271,13 +271,6 @@ static const struct drm_encoder_helper_funcs radeon_legacy_lvds_helper_funcs = { ...@@ -271,13 +271,6 @@ static const struct drm_encoder_helper_funcs radeon_legacy_lvds_helper_funcs = {
#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
#define MAX_RADEON_LEVEL 0xFF
struct radeon_backlight_privdata {
struct radeon_encoder *encoder;
uint8_t negative;
};
static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd) static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd)
{ {
struct radeon_backlight_privdata *pdata = bl_get_data(bd); struct radeon_backlight_privdata *pdata = bl_get_data(bd);
...@@ -286,13 +279,13 @@ static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd) ...@@ -286,13 +279,13 @@ static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd)
/* Convert brightness to hardware level */ /* Convert brightness to hardware level */
if (bd->props.brightness < 0) if (bd->props.brightness < 0)
level = 0; level = 0;
else if (bd->props.brightness > MAX_RADEON_LEVEL) else if (bd->props.brightness > RADEON_MAX_BL_LEVEL)
level = MAX_RADEON_LEVEL; level = RADEON_MAX_BL_LEVEL;
else else
level = bd->props.brightness; level = bd->props.brightness;
if (pdata->negative) if (pdata->negative)
level = MAX_RADEON_LEVEL - level; level = RADEON_MAX_BL_LEVEL - level;
return level; return level;
} }
...@@ -336,7 +329,7 @@ static int radeon_legacy_backlight_get_brightness(struct backlight_device *bd) ...@@ -336,7 +329,7 @@ static int radeon_legacy_backlight_get_brightness(struct backlight_device *bd)
backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >> backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >>
RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff; RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff;
return pdata->negative ? MAX_RADEON_LEVEL - backlight_level : backlight_level; return pdata->negative ? RADEON_MAX_BL_LEVEL - backlight_level : backlight_level;
} }
static const struct backlight_ops radeon_backlight_ops = { static const struct backlight_ops radeon_backlight_ops = {
...@@ -370,7 +363,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, ...@@ -370,7 +363,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder,
} }
memset(&props, 0, sizeof(props)); memset(&props, 0, sizeof(props));
props.max_brightness = MAX_RADEON_LEVEL; props.max_brightness = RADEON_MAX_BL_LEVEL;
props.type = BACKLIGHT_RAW; props.type = BACKLIGHT_RAW;
bd = backlight_device_register("radeon_bl", &drm_connector->kdev, bd = backlight_device_register("radeon_bl", &drm_connector->kdev,
pdata, &radeon_backlight_ops, &props); pdata, &radeon_backlight_ops, &props);
...@@ -449,7 +442,7 @@ static void radeon_legacy_backlight_exit(struct radeon_encoder *radeon_encoder) ...@@ -449,7 +442,7 @@ static void radeon_legacy_backlight_exit(struct radeon_encoder *radeon_encoder)
} }
if (bd) { if (bd) {
struct radeon_legacy_backlight_privdata *pdata; struct radeon_backlight_privdata *pdata;
pdata = bl_get_data(bd); pdata = bl_get_data(bd);
backlight_device_unregister(bd); backlight_device_unregister(bd);
......
...@@ -256,6 +256,17 @@ struct radeon_mode_info { ...@@ -256,6 +256,17 @@ struct radeon_mode_info {
u16 firmware_flags; u16 firmware_flags;
}; };
#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
#define RADEON_MAX_BL_LEVEL 0xFF
struct radeon_backlight_privdata {
struct radeon_encoder *encoder;
uint8_t negative;
};
#endif
#define MAX_H_CODE_TIMING_LEN 32 #define MAX_H_CODE_TIMING_LEN 32
#define MAX_V_CODE_TIMING_LEN 32 #define MAX_V_CODE_TIMING_LEN 32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment