Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250519112900.1383997-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

+18 -15
+1 -1
drivers/gpu/drm/display/drm_hdmi_helper.c
··· 45 45 46 46 /* Sink EOTF is Bit map while infoframe is absolute values */ 47 47 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)) 49 49 DRM_DEBUG_KMS("Unknown EOTF %d\n", hdr_metadata->hdmi_metadata_type1.eotf); 50 50 51 51 err = hdmi_drm_infoframe_init(frame);
+1 -1
drivers/gpu/drm/drm_connector.c
··· 1687 1687 * structure from userspace. This is received as blob and stored in 1688 1688 * &drm_connector_state.hdr_output_metadata. It parses EDID and saves the 1689 1689 * 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 1691 1691 * drm_hdmi_infoframe_set_hdr_metadata() helper to set the HDR metadata, 1692 1692 * hdmi_drm_infoframe_pack() to pack the infoframe as per spec, in case of 1693 1693 * HDMI encoder.
+10 -9
drivers/gpu/drm/drm_edid.c
··· 5374 5374 5375 5375 static void drm_calculate_luminance_range(struct drm_connector *connector) 5376 5376 { 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; 5378 5379 struct drm_luminance_range_info *luminance_range = 5379 5380 &connector->display_info.luminance_range; 5380 5381 static const u8 pre_computed_values[] = { ··· 5436 5435 static void 5437 5436 drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db) 5438 5437 { 5438 + struct hdr_static_metadata *hdr_metadata = 5439 + &connector->display_info.hdr_sink_metadata.hdmi_type1; 5439 5440 u16 len; 5440 5441 5441 5442 len = cea_db_payload_len(db); 5442 5443 5443 - connector->hdr_sink_metadata.hdmi_type1.eotf = 5444 - eotf_supported(db); 5445 - connector->hdr_sink_metadata.hdmi_type1.metadata_type = 5446 - hdr_metadata_type(db); 5444 + hdr_metadata->eotf = eotf_supported(db); 5445 + hdr_metadata->metadata_type = hdr_metadata_type(db); 5447 5446 5448 5447 if (len >= 4) 5449 - connector->hdr_sink_metadata.hdmi_type1.max_cll = db[4]; 5448 + hdr_metadata->max_cll = db[4]; 5450 5449 if (len >= 5) 5451 - connector->hdr_sink_metadata.hdmi_type1.max_fall = db[5]; 5450 + hdr_metadata->max_fall = db[5]; 5452 5451 if (len >= 6) { 5453 - connector->hdr_sink_metadata.hdmi_type1.min_cll = db[6]; 5452 + hdr_metadata->min_cll = db[6]; 5454 5453 5455 5454 /* Calculate only when all values are available */ 5456 5455 drm_calculate_luminance_range(connector); ··· 6598 6597 info->has_hdmi_infoframe = false; 6599 6598 info->rgb_quant_range_selectable = false; 6600 6599 memset(&info->hdmi, 0, sizeof(info->hdmi)); 6601 - memset(&connector->hdr_sink_metadata, 0, sizeof(connector->hdr_sink_metadata)); 6600 + memset(&info->hdr_sink_metadata, 0, sizeof(info->hdr_sink_metadata)); 6602 6601 6603 6602 info->edid_hdmi_rgb444_dc_modes = 0; 6604 6603 info->edid_hdmi_ycbcr444_dc_modes = 0;
+1 -1
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
··· 145 145 * ranges for such panels. 146 146 */ 147 147 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 & 149 149 BIT(HDMI_STATIC_METADATA_TYPE1))) { 150 150 drm_info(display->drm, 151 151 "[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",
+5 -3
include/drm/drm_connector.h
··· 800 800 struct drm_hdmi_info hdmi; 801 801 802 802 /** 803 + * @hdr_sink_metadata: HDR Metadata Information read from sink 804 + */ 805 + struct hdr_sink_metadata hdr_sink_metadata; 806 + 807 + /** 803 808 * @non_desktop: Non desktop display (HMD). 804 809 */ 805 810 bool non_desktop; ··· 2288 2283 * &drm_mode_config.connector_free_work. 2289 2284 */ 2290 2285 struct llist_node free_node; 2291 - 2292 - /** @hdr_sink_metadata: HDR Metadata Information read from sink */ 2293 - struct hdr_sink_metadata hdr_sink_metadata; 2294 2286 2295 2287 /** 2296 2288 * @hdmi: HDMI-related variable and properties.