Commit f729e637 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

drm/amd: Pass luminance data to amdgpu_dm_backlight_caps



The ATIF method on some systems will provide a backlight curve. Pass
this curve into amdgpu_dm add it to the structures.

Reviewed-by: default avatarAlex Hung <alex.hung@amd.com>
Link: https://lore.kernel.org/r/20250228185145.186319-3-mario.limonciello@amd.com


Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 1c79b5fc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -394,6 +394,10 @@ static int amdgpu_atif_query_backlight_caps(struct amdgpu_atif *atif)
			characteristics.max_input_signal;
	atif->backlight_caps.ac_level = characteristics.ac_level;
	atif->backlight_caps.dc_level = characteristics.dc_level;
	atif->backlight_caps.data_points = characteristics.number_of_points;
	memcpy(atif->backlight_caps.luminance_data,
	       characteristics.data_points,
	       sizeof(atif->backlight_caps.luminance_data));
out:
	kfree(info);
	return err;
+20 −0
Original line number Diff line number Diff line
@@ -151,6 +151,18 @@ struct idle_workqueue {
	bool running;
};

#define MAX_LUMINANCE_DATA_POINTS 99

/**
 * struct amdgpu_dm_luminance_data - Custom luminance data
 * @luminance: Luminance in percent
 * @input_signal: Input signal in range 0-255
 */
struct amdgpu_dm_luminance_data {
	u8 luminance;
	u8 input_signal;
} __packed;

/**
 * struct amdgpu_dm_backlight_caps - Information about backlight
 *
@@ -195,6 +207,14 @@ struct amdgpu_dm_backlight_caps {
	 * @dc_level: the default brightness if booted on DC
	 */
	u8 dc_level;
	/**
	 * @data_points: the number of custom luminance data points
	 */
	u8 data_points;
	/**
	 * @luminance_data: custom luminance data
	 */
	struct amdgpu_dm_luminance_data luminance_data[MAX_LUMINANCE_DATA_POINTS];
};

/**
+3 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ struct atif_qbtc_arguments {

struct atif_qbtc_data_point {
	u8 luminance;		/* luminance in percent */
	u8 ipnut_signal;	/* input signal in range 0-255 */
	u8 input_signal;	/* input signal in range 0-255 */
} __packed;

struct atif_qbtc_output {
@@ -75,6 +75,8 @@ struct atif_qbtc_output {
	u8 number_of_points;	/* number of data points */
	struct atif_qbtc_data_point data_points[ATIF_QBTC_MAX_DATA_POINTS];
} __packed;
static_assert(ATIF_QBTC_MAX_DATA_POINTS == MAX_LUMINANCE_DATA_POINTS);
static_assert(sizeof(struct atif_qbtc_data_point) == sizeof(struct amdgpu_dm_luminance_data));

#define ATIF_NOTIFY_MASK	0x3
#define ATIF_NOTIFY_NONE	0