aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2012-07-26 11:05:22 -0400
committerAlex Deucher <alexander.deucher@amd.com>2012-09-20 13:10:34 -0400
commit910308802c528f8afe864b694d5456fedd0bb18f (patch)
treee957691745999c6192e5caffc3558ab45179ffe8 /drivers
parentaf7912e57316caa1b705f06b03592cec0737cb36 (diff)
drm/radeon: rework legacy backlight control
To better enable sharing with atom backlight control. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_encoders.c19
-rw-r--r--drivers/gpu/drm/radeon/radeon_mode.h11
2 files changed, 17 insertions, 13 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index 670e9910f869..9910fe494744 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -271,13 +271,6 @@ static const struct drm_encoder_helper_funcs radeon_legacy_lvds_helper_funcs = {
271 271
272#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) 272#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
273 273
274#define MAX_RADEON_LEVEL 0xFF
275
276struct radeon_backlight_privdata {
277 struct radeon_encoder *encoder;
278 uint8_t negative;
279};
280
281static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd) 274static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd)
282{ 275{
283 struct radeon_backlight_privdata *pdata = bl_get_data(bd); 276 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 /* Convert brightness to hardware level */ 279 /* Convert brightness to hardware level */
287 if (bd->props.brightness < 0) 280 if (bd->props.brightness < 0)
288 level = 0; 281 level = 0;
289 else if (bd->props.brightness > MAX_RADEON_LEVEL) 282 else if (bd->props.brightness > RADEON_MAX_BL_LEVEL)
290 level = MAX_RADEON_LEVEL; 283 level = RADEON_MAX_BL_LEVEL;
291 else 284 else
292 level = bd->props.brightness; 285 level = bd->props.brightness;
293 286
294 if (pdata->negative) 287 if (pdata->negative)
295 level = MAX_RADEON_LEVEL - level; 288 level = RADEON_MAX_BL_LEVEL - level;
296 289
297 return level; 290 return level;
298} 291}
@@ -336,7 +329,7 @@ static int radeon_legacy_backlight_get_brightness(struct backlight_device *bd)
336 backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >> 329 backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >>
337 RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff; 330 RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff;
338 331
339 return pdata->negative ? MAX_RADEON_LEVEL - backlight_level : backlight_level; 332 return pdata->negative ? RADEON_MAX_BL_LEVEL - backlight_level : backlight_level;
340} 333}
341 334
342static const struct backlight_ops radeon_backlight_ops = { 335static const struct backlight_ops radeon_backlight_ops = {
@@ -370,7 +363,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder,
370 } 363 }
371 364
372 memset(&props, 0, sizeof(props)); 365 memset(&props, 0, sizeof(props));
373 props.max_brightness = MAX_RADEON_LEVEL; 366 props.max_brightness = RADEON_MAX_BL_LEVEL;
374 props.type = BACKLIGHT_RAW; 367 props.type = BACKLIGHT_RAW;
375 bd = backlight_device_register("radeon_bl", &drm_connector->kdev, 368 bd = backlight_device_register("radeon_bl", &drm_connector->kdev,
376 pdata, &radeon_backlight_ops, &props); 369 pdata, &radeon_backlight_ops, &props);
@@ -449,7 +442,7 @@ static void radeon_legacy_backlight_exit(struct radeon_encoder *radeon_encoder)
449 } 442 }
450 443
451 if (bd) { 444 if (bd) {
452 struct radeon_legacy_backlight_privdata *pdata; 445 struct radeon_backlight_privdata *pdata;
453 446
454 pdata = bl_get_data(bd); 447 pdata = bl_get_data(bd);
455 backlight_device_unregister(bd); 448 backlight_device_unregister(bd);
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index 806140d32b5d..5005057974b1 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -256,6 +256,17 @@ struct radeon_mode_info {
256 u16 firmware_flags; 256 u16 firmware_flags;
257}; 257};
258 258
259#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
260
261#define RADEON_MAX_BL_LEVEL 0xFF
262
263struct radeon_backlight_privdata {
264 struct radeon_encoder *encoder;
265 uint8_t negative;
266};
267
268#endif
269
259#define MAX_H_CODE_TIMING_LEN 32 270#define MAX_H_CODE_TIMING_LEN 32
260#define MAX_V_CODE_TIMING_LEN 32 271#define MAX_V_CODE_TIMING_LEN 32
261 272