Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

drm/radeon: restore backlight level on resume

Restore the backlight level on resume.  Some systems
need to explicitly restore the backlight level on
resume.

Fixes panel resume on my Trinity laptop and may fix the
following bugs:
https://bugs.freedesktop.org/show_bug.cgi?id=43829
https://bugzilla.kernel.org/show_bug.cgi?id=46241



Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6d92f81d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,6 @@

extern int atom_debug;

#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)

static u8
radeon_atom_get_backlight_level_from_reg(struct radeon_device *rdev)
{
@@ -134,6 +132,8 @@ atombios_set_backlight_level(struct radeon_encoder *radeon_encoder, u8 level)
	}
}

#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)

static u8 radeon_atom_bl_level(struct backlight_device *bd)
{
	u8 level;
+7 −0
Original line number Diff line number Diff line
@@ -1282,6 +1282,13 @@ int radeon_resume_kms(struct drm_device *dev)
	if (rdev->is_atom_bios) {
		radeon_atom_encoder_init(rdev);
		radeon_atom_disp_eng_pll_init(rdev);
		/* turn on the BL */
		if (rdev->mode_info.bl_encoder) {
			u8 bl_level = radeon_get_backlight_level(rdev,
								 rdev->mode_info.bl_encoder);
			radeon_set_backlight_level(rdev, rdev->mode_info.bl_encoder,
						   bl_level);
		}
	}
	/* reset hpd state */
	radeon_hpd_init(rdev);
+1 −0
Original line number Diff line number Diff line
@@ -179,6 +179,7 @@ radeon_link_encoder_connector(struct drm_device *dev)
						radeon_atom_backlight_init(radeon_encoder, connector);
					else
						radeon_legacy_backlight_init(radeon_encoder, connector);
					rdev->mode_info.bl_encoder = radeon_encoder;
				}
			}
		}
+4 −2
Original line number Diff line number Diff line
@@ -254,12 +254,14 @@ struct radeon_mode_info {
	struct radeon_fbdev *rfbdev;
	/* firmware flags */
	u16 firmware_flags;
	/* pointer to backlight encoder */
	struct radeon_encoder *bl_encoder;
};

#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)

#define RADEON_MAX_BL_LEVEL 0xFF

#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)

struct radeon_backlight_privdata {
	struct radeon_encoder *encoder;
	uint8_t negative;