The ATIF method on some systems will provide a backlight curve. Pass this curve into amdgpu_dm add it to the structures. Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 4 ++++ .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 20 +++++++++++++++++++ drivers/gpu/drm/amd/include/amd_acpi.h | 9 +-------- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c index 515c6f32448d..b7f8f2ff143d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c @@ -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; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h index f3bc00e587ad..85b64c457ed6 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -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]; }; /** diff --git a/drivers/gpu/drm/amd/include/amd_acpi.h b/drivers/gpu/drm/amd/include/amd_acpi.h index 2d089d30518f..63713fdca428 100644 --- a/drivers/gpu/drm/amd/include/amd_acpi.h +++ b/drivers/gpu/drm/amd/include/amd_acpi.h @@ -57,13 +57,6 @@ struct atif_qbtc_arguments { u8 requested_display; /* which display is requested */ } __packed; -#define ATIF_QBTC_MAX_DATA_POINTS 99 - -struct atif_qbtc_data_point { - u8 luminance; /* luminance in percent */ - u8 ipnut_signal; /* input signal in range 0-255 */ -} __packed; - struct atif_qbtc_output { u16 size; /* structure size in bytes (includes size field) */ u16 flags; /* all zeroes */ @@ -73,7 +66,7 @@ struct atif_qbtc_output { u8 min_input_signal; /* max input signal in range 0-255 */ u8 max_input_signal; /* min input signal in range 0-255 */ u8 number_of_points; /* number of data points */ - struct atif_qbtc_data_point data_points[ATIF_QBTC_MAX_DATA_POINTS]; + struct amdgpu_dm_luminance_data data_points[MAX_LUMINANCE_DATA_POINTS]; } __packed; #define ATIF_NOTIFY_MASK 0x3 -- 2.48.1