drm/rockchip: dw-hdmi: attach CONNECTOR_ID prop to identify multi HDMI

Change-Id: I10efb880a050b5db54571f8041d5841ac368488d
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang
2021-04-15 11:30:50 +08:00
committed by Algea Cao
parent 9986819280
commit b1e11053d6

View File

@@ -115,6 +115,7 @@ struct rockchip_hdmi {
bool unsupported_yuv_input;
bool unsupported_deep_color;
bool mode_changed;
u8 id;
unsigned long bus_format;
unsigned long output_bus_format;
@@ -924,6 +925,7 @@ dw_hdmi_rockchip_attach_properties(struct drm_connector *connector,
{
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
struct drm_property *prop;
struct rockchip_drm_private *private = connector->dev->dev_private;
switch (color) {
case MEDIA_BUS_FMT_RGB101010_1X30:
@@ -1029,6 +1031,7 @@ 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);
drm_object_attach_property(&connector->base, private->connector_id_prop, 0);
}
static void
@@ -1123,6 +1126,7 @@ dw_hdmi_rockchip_get_property(struct drm_connector *connector,
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
struct drm_display_info *info = &connector->display_info;
struct drm_mode_config *config = &connector->dev->mode_config;
struct rockchip_drm_private *private = connector->dev->dev_private;
if (property == hdmi->color_depth_property) {
*val = hdmi->colordepth;
@@ -1168,6 +1172,9 @@ dw_hdmi_rockchip_get_property(struct drm_connector *connector,
} else if (property == hdmi->colorimetry_property) {
*val = hdmi->colorimetry;
return 0;
} else if (property == private->connector_id_prop) {
*val = hdmi->id;
return 0;
}
DRM_ERROR("failed to get rockchip hdmi connector property\n");
@@ -1431,7 +1438,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
struct drm_device *drm = data;
struct drm_encoder *encoder;
struct rockchip_hdmi *hdmi;
int ret;
int ret, id;
if (!pdev->dev.of_node)
return -ENODEV;
@@ -1446,6 +1453,10 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
if (!plat_data)
return -ENOMEM;
id = of_alias_get_id(dev->of_node, "hdmi");
if (id < 0)
id = 0;
hdmi->id = id;
hdmi->dev = &pdev->dev;
hdmi->chip_data = plat_data->phy_data;
plat_data->phy_data = hdmi;