drm/rockchip: hdmi: Implement get input/output bus format handling

Set HDMI controller input/output bus format according to vop bus format.

Change-Id: Ib669ee6b0ea586410c715518d0bc9c55f5a52a50
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
Zheng Yang
2017-06-27 16:52:54 +08:00
committed by Algea Cao
parent d149055570
commit e3cb24ea22

View File

@@ -82,6 +82,8 @@ struct rockchip_hdmi {
u32 max_tmdsclk;
bool unsupported_yuv_input;
bool unsupported_deep_color;
unsigned long bus_format;
};
#define to_rockchip_hdmi(x) container_of(x, struct rockchip_hdmi, x)
@@ -456,9 +458,27 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder,
s->output_type = DRM_MODE_CONNECTOR_HDMIA;
s->tv_state = &conn_state->tv;
hdmi->bus_format = s->bus_format;
return 0;
}
static unsigned long
dw_hdmi_rockchip_get_input_bus_format(void *data)
{
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
return hdmi->bus_format;
}
static unsigned long
dw_hdmi_rockchip_get_output_bus_format(void *data)
{
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
return hdmi->bus_format;
}
static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_helper_funcs = {
.enable = dw_hdmi_rockchip_encoder_enable,
.disable = dw_hdmi_rockchip_encoder_disable,
@@ -672,6 +692,10 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
hdmi->dev = &pdev->dev;
hdmi->chip_data = plat_data->phy_data;
plat_data->phy_data = hdmi;
plat_data->get_input_bus_format =
dw_hdmi_rockchip_get_input_bus_format;
plat_data->get_output_bus_format =
dw_hdmi_rockchip_get_output_bus_format;
encoder = &hdmi->encoder;
encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);