mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 06:25:52 +02:00
drm: Add HDR panel metadata property
HDR_PANEL_METADATA is used to indicate HDR capacity of sink device. Change-Id: I598a7bb5634f14b57f94135fd3be6b0ad2075116 Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
parent
2391d71d38
commit
97fd2e42b6
|
|
@ -2360,6 +2360,8 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
|||
{
|
||||
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
||||
connector);
|
||||
struct hdr_static_metadata *metedata =
|
||||
&connector->hdr_sink_metadata.hdmi_type1;
|
||||
struct edid *edid;
|
||||
int ret = 0;
|
||||
|
||||
|
|
@ -2376,6 +2378,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
|||
drm_connector_update_edid_property(connector, edid);
|
||||
cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid);
|
||||
ret = drm_add_edid_modes(connector, edid);
|
||||
drm_mode_connector_update_hdr_property(connector, metedata);
|
||||
kfree(edid);
|
||||
} else {
|
||||
dev_dbg(hdmi->dev, "failed to get edid\n");
|
||||
|
|
|
|||
|
|
@ -1005,6 +1005,14 @@ int drm_connector_create_standard_properties(struct drm_device *dev)
|
|||
return -ENOMEM;
|
||||
dev->mode_config.hdr_output_metadata_property = prop;
|
||||
|
||||
prop = drm_property_create(dev,
|
||||
DRM_MODE_PROP_BLOB |
|
||||
DRM_MODE_PROP_IMMUTABLE,
|
||||
"HDR_PANEL_METADATA", 0);
|
||||
if (!prop)
|
||||
return -ENOMEM;
|
||||
dev->mode_config.hdr_panel_metadata_property = prop;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1554,6 +1562,28 @@ int drm_connector_update_edid_property(struct drm_connector *connector,
|
|||
}
|
||||
EXPORT_SYMBOL(drm_connector_update_edid_property);
|
||||
|
||||
int
|
||||
drm_mode_connector_update_hdr_property(struct drm_connector *connector,
|
||||
const struct hdr_static_metadata *data)
|
||||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
size_t size = sizeof(*data);
|
||||
struct drm_property *property =
|
||||
dev->mode_config.hdr_panel_metadata_property;
|
||||
struct drm_property_blob **replace =
|
||||
&connector->state->hdr_panel_blob_ptr;
|
||||
int ret;
|
||||
|
||||
ret = drm_property_replace_global_blob(dev,
|
||||
replace,
|
||||
size,
|
||||
data,
|
||||
&connector->base,
|
||||
property);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_connector_update_hdr_property);
|
||||
|
||||
/**
|
||||
* drm_connector_set_link_status_property - Set link status property of a connector
|
||||
* @connector: drm connector
|
||||
|
|
|
|||
|
|
@ -836,6 +836,9 @@ dw_hdmi_rockchip_attach_properties(struct drm_connector *connector,
|
|||
prop = connector->dev->mode_config.hdr_output_metadata_property;
|
||||
if (version >= 0x211a)
|
||||
drm_object_attach_property(&connector->base, prop, 0);
|
||||
|
||||
prop = connector->dev->mode_config.hdr_panel_metadata_property;
|
||||
drm_object_attach_property(&connector->base, prop, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -466,6 +466,8 @@ struct drm_connector_state {
|
|||
* DRM blob property for HDR output metadata
|
||||
*/
|
||||
struct drm_property_blob *hdr_output_metadata;
|
||||
|
||||
struct drm_property_blob *hdr_panel_blob_ptr;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1213,6 +1215,9 @@ int drm_connector_set_path_property(struct drm_connector *connector,
|
|||
int drm_connector_set_tile_property(struct drm_connector *connector);
|
||||
int drm_connector_update_edid_property(struct drm_connector *connector,
|
||||
const struct edid *edid);
|
||||
int
|
||||
drm_mode_connector_update_hdr_property(struct drm_connector *connector,
|
||||
const struct hdr_static_metadata *data);
|
||||
void drm_connector_set_link_status_property(struct drm_connector *connector,
|
||||
uint64_t link_status);
|
||||
int drm_connector_init_panel_orientation_property(
|
||||
|
|
|
|||
|
|
@ -824,6 +824,8 @@ struct drm_mode_config {
|
|||
*/
|
||||
struct drm_property *hdr_output_metadata_property;
|
||||
|
||||
struct drm_property *hdr_panel_metadata_property;
|
||||
|
||||
/* dumb ioctl parameters */
|
||||
uint32_t preferred_depth, prefer_shadow;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user