Skip to content

Commit 1174bf1

Browse files
committed
drm/connector: move HDR sink metadata to display info
Information parsed from the display EDID should be stored in display info. Move HDR sink metadata there. Reviewed-by: Dmitry Baryshkov <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jani Nikula <[email protected]>
1 parent 786bd08 commit 1174bf1

File tree

5 files changed

+18
-15
lines changed

5 files changed

+18
-15
lines changed

drivers/gpu/drm/display/drm_hdmi_helper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ int drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
4545

4646
/* Sink EOTF is Bit map while infoframe is absolute values */
4747
if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
48-
connector->hdr_sink_metadata.hdmi_type1.eotf))
48+
connector->display_info.hdr_sink_metadata.hdmi_type1.eotf))
4949
DRM_DEBUG_KMS("Unknown EOTF %d\n", hdr_metadata->hdmi_metadata_type1.eotf);
5050

5151
err = hdmi_drm_infoframe_init(frame);

drivers/gpu/drm/drm_connector.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1687,7 +1687,7 @@ EXPORT_SYMBOL(drm_hdmi_connector_get_output_format_name);
16871687
* structure from userspace. This is received as blob and stored in
16881688
* &drm_connector_state.hdr_output_metadata. It parses EDID and saves the
16891689
* sink metadata in &struct hdr_sink_metadata, as
1690-
* &drm_connector.hdr_sink_metadata. Driver uses
1690+
* &drm_connector.display_info.hdr_sink_metadata. Driver uses
16911691
* drm_hdmi_infoframe_set_hdr_metadata() helper to set the HDR metadata,
16921692
* hdmi_drm_infoframe_pack() to pack the infoframe as per spec, in case of
16931693
* HDMI encoder.

drivers/gpu/drm/drm_edid.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5374,7 +5374,8 @@ static void fixup_detailed_cea_mode_clock(struct drm_connector *connector,
53745374

53755375
static void drm_calculate_luminance_range(struct drm_connector *connector)
53765376
{
5377-
struct hdr_static_metadata *hdr_metadata = &connector->hdr_sink_metadata.hdmi_type1;
5377+
const struct hdr_static_metadata *hdr_metadata =
5378+
&connector->display_info.hdr_sink_metadata.hdmi_type1;
53785379
struct drm_luminance_range_info *luminance_range =
53795380
&connector->display_info.luminance_range;
53805381
static const u8 pre_computed_values[] = {
@@ -5435,21 +5436,21 @@ static uint8_t hdr_metadata_type(const u8 *edid_ext)
54355436
static void
54365437
drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
54375438
{
5439+
struct hdr_static_metadata *hdr_metadata =
5440+
&connector->display_info.hdr_sink_metadata.hdmi_type1;
54385441
u16 len;
54395442

54405443
len = cea_db_payload_len(db);
54415444

5442-
connector->hdr_sink_metadata.hdmi_type1.eotf =
5443-
eotf_supported(db);
5444-
connector->hdr_sink_metadata.hdmi_type1.metadata_type =
5445-
hdr_metadata_type(db);
5445+
hdr_metadata->eotf = eotf_supported(db);
5446+
hdr_metadata->metadata_type = hdr_metadata_type(db);
54465447

54475448
if (len >= 4)
5448-
connector->hdr_sink_metadata.hdmi_type1.max_cll = db[4];
5449+
hdr_metadata->max_cll = db[4];
54495450
if (len >= 5)
5450-
connector->hdr_sink_metadata.hdmi_type1.max_fall = db[5];
5451+
hdr_metadata->max_fall = db[5];
54515452
if (len >= 6) {
5452-
connector->hdr_sink_metadata.hdmi_type1.min_cll = db[6];
5453+
hdr_metadata->min_cll = db[6];
54535454

54545455
/* Calculate only when all values are available */
54555456
drm_calculate_luminance_range(connector);
@@ -6597,7 +6598,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
65976598
info->has_hdmi_infoframe = false;
65986599
info->rgb_quant_range_selectable = false;
65996600
memset(&info->hdmi, 0, sizeof(info->hdmi));
6600-
memset(&connector->hdr_sink_metadata, 0, sizeof(connector->hdr_sink_metadata));
6601+
memset(&info->hdr_sink_metadata, 0, sizeof(info->hdr_sink_metadata));
66016602

66026603
info->edid_hdmi_rgb444_dc_modes = 0;
66036604
info->edid_hdmi_ycbcr444_dc_modes = 0;

drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ intel_dp_aux_supports_hdr_backlight(struct intel_connector *connector)
145145
* ranges for such panels.
146146
*/
147147
if (display->params.enable_dpcd_backlight != INTEL_DP_AUX_BACKLIGHT_FORCE_INTEL &&
148-
!(connector->base.hdr_sink_metadata.hdmi_type1.metadata_type &
148+
!(connector->base.display_info.hdr_sink_metadata.hdmi_type1.metadata_type &
149149
BIT(HDMI_STATIC_METADATA_TYPE1))) {
150150
drm_info(display->drm,
151151
"[CONNECTOR:%d:%s] Panel is missing HDR static metadata. Possible support for Intel HDR backlight interface is not used. If your backlight controls don't work try booting with i915.enable_dpcd_backlight=%d.\n",

include/drm/drm_connector.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,11 @@ struct drm_display_info {
799799
*/
800800
struct drm_hdmi_info hdmi;
801801

802+
/**
803+
* @hdr_sink_metadata: HDR Metadata Information read from sink
804+
*/
805+
struct hdr_sink_metadata hdr_sink_metadata;
806+
802807
/**
803808
* @non_desktop: Non desktop display (HMD).
804809
*/
@@ -2284,9 +2289,6 @@ struct drm_connector {
22842289
*/
22852290
struct llist_node free_node;
22862291

2287-
/** @hdr_sink_metadata: HDR Metadata Information read from sink */
2288-
struct hdr_sink_metadata hdr_sink_metadata;
2289-
22902292
/**
22912293
* @hdmi: HDMI-related variable and properties.
22922294
*/

0 commit comments

Comments
 (0)