Commit 91030880 authored by Alex Deucher's avatar Alex Deucher
Browse files

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
Loading
Loading
Loading
Loading
+6 −13
Original line number Diff line number Diff line
@@ -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)

#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)
{
	struct radeon_backlight_privdata *pdata = bl_get_data(bd);
@@ -286,13 +279,13 @@ static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd)
	/* Convert brightness to hardware level */
	if (bd->props.brightness < 0)
		level = 0;
	else if (bd->props.brightness > MAX_RADEON_LEVEL)
		level = MAX_RADEON_LEVEL;
	else if (bd->props.brightness > RADEON_MAX_BL_LEVEL)
		level = RADEON_MAX_BL_LEVEL;
	else
		level = bd->props.brightness;

	if (pdata->negative)
		level = MAX_RADEON_LEVEL - level;
		level = RADEON_MAX_BL_LEVEL - level;

	return level;
}
@@ -336,7 +329,7 @@ static int radeon_legacy_backlight_get_brightness(struct backlight_device *bd)
	backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >>
			   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 = {
@@ -370,7 +363,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder,
	}

	memset(&props, 0, sizeof(props));
	props.max_brightness = MAX_RADEON_LEVEL;
	props.max_brightness = RADEON_MAX_BL_LEVEL;
	props.type = BACKLIGHT_RAW;
	bd = backlight_device_register("radeon_bl", &drm_connector->kdev,
				       pdata, &radeon_backlight_ops, &props);
@@ -449,7 +442,7 @@ static void radeon_legacy_backlight_exit(struct radeon_encoder *radeon_encoder)
	}

	if (bd) {
		struct radeon_legacy_backlight_privdata *pdata;
		struct radeon_backlight_privdata *pdata;

		pdata = bl_get_data(bd);
		backlight_device_unregister(bd);
+11 −0
Original line number Diff line number Diff line
@@ -256,6 +256,17 @@ struct radeon_mode_info {
	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_V_CODE_TIMING_LEN 32