[AMD Official Use Only - AMD Internal Distribution Only] > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Mario > Limonciello > Sent: Friday, February 21, 2025 12:10 PM > To: amd-gfx @ lists . freedesktop . org <amd-gfx@xxxxxxxxxxxxxxxxxxxxx>; Hung, > Alex <Alex.Hung@xxxxxxx> > Cc: Wentland, Harry <Harry.Wentland@xxxxxxx>; Limonciello, Mario > <Mario.Limonciello@xxxxxxx> > Subject: [PATCH 2/5] 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. > > 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; I'd be careful here lest someone changes the definition of struct amdgpu_dm_luminance_data not realizing that it used here as well. The ACPI definition should be separate IMHO. Alex > - > 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