diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0581-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0581-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0581-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch b/target/linux/bcm27xx/patches-5.4/950-0581-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch new file mode 100644 index 0000000000..4ef3d69b2c --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0581-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch @@ -0,0 +1,141 @@ +From 6fdf2c94a028e04e1e20791aae5e0adaf905df77 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard <maxime@cerno.tech> +Date: Mon, 6 Jan 2020 18:57:16 +0100 +Subject: [PATCH] drm/vc4: hdmi: Remove vc4_hdmi_connector + +The vc4_hdmi_connector was only used to switch between drm_connector to +drm_encoder. However, we can now use vc4_hdmi to do the switch, so that +structure is redundant. + +Signed-off-by: Maxime Ripard <maxime@cerno.tech> +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 19 ++++++++----------- + drivers/gpu/drm/vc4/vc4_hdmi.h | 23 ++--------------------- + 2 files changed, 10 insertions(+), 32 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -188,13 +188,10 @@ static const struct drm_connector_helper + static int vc4_hdmi_connector_init(struct drm_device *dev, + struct vc4_hdmi *vc4_hdmi) + { +- struct vc4_hdmi_connector *hdmi_connector = &vc4_hdmi->connector; +- struct drm_connector *connector = &hdmi_connector->base; ++ struct drm_connector *connector = &vc4_hdmi->connector; + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; + int ret; + +- hdmi_connector->encoder = encoder; +- + drm_connector_init(dev, connector, &vc4_hdmi_connector_funcs, + DRM_MODE_CONNECTOR_HDMIA); + drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs); +@@ -290,7 +287,7 @@ static void vc4_hdmi_set_avi_infoframe(s + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); +- struct drm_connector *connector = &vc4_hdmi->connector.base; ++ struct drm_connector *connector = &vc4_hdmi->connector; + struct drm_connector_state *cstate = connector->state; + struct drm_crtc *crtc = encoder->crtc; + const struct drm_display_mode *mode = &crtc->state->adjusted_mode; +@@ -672,7 +669,7 @@ static int vc4_hdmi_audio_startup(struct + { + struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai); + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; +- struct drm_connector *connector = &vc4_hdmi->connector.base; ++ struct drm_connector *connector = &vc4_hdmi->connector; + int ret; + + if (vc4_hdmi->audio.substream && vc4_hdmi->audio.substream != substream) +@@ -846,7 +843,7 @@ static int vc4_hdmi_audio_eld_ctl_info(s + { + struct snd_soc_component *component = snd_kcontrol_chip(kcontrol); + struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component); +- struct drm_connector *connector = &vc4_hdmi->connector.base; ++ struct drm_connector *connector = &vc4_hdmi->connector; + + uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES; + uinfo->count = sizeof(connector->eld); +@@ -859,7 +856,7 @@ static int vc4_hdmi_audio_eld_ctl_get(st + { + struct snd_soc_component *component = snd_kcontrol_chip(kcontrol); + struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component); +- struct drm_connector *connector = &vc4_hdmi->connector.base; ++ struct drm_connector *connector = &vc4_hdmi->connector; + + memcpy(ucontrol->value.bytes.data, connector->eld, + sizeof(connector->eld)); +@@ -1313,7 +1310,7 @@ static int vc4_hdmi_bind(struct device * + if (ret < 0) + goto err_destroy_conn; + +- cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector.base); ++ cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector); + cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info); + + HDMI_WRITE(VC4_HDMI_CPU_MASK_SET, 0xffffffff); +@@ -1350,7 +1347,7 @@ static int vc4_hdmi_bind(struct device * + err_delete_cec_adap: + cec_delete_adapter(vc4_hdmi->cec_adap); + err_destroy_conn: +- vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base); ++ vc4_hdmi_connector_destroy(&vc4_hdmi->connector); + #endif + err_destroy_encoder: + vc4_hdmi_encoder_destroy(encoder); +@@ -1374,7 +1371,7 @@ static void vc4_hdmi_unbind(struct devic + struct vc4_hdmi *vc4_hdmi = snd_soc_card_get_drvdata(card); + + cec_unregister_adapter(vc4_hdmi->cec_adap); +- vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base); ++ vc4_hdmi_connector_destroy(&vc4_hdmi->connector); + vc4_hdmi_encoder_destroy(&vc4_hdmi->encoder.base.base); + + clk_disable_unprepare(vc4_hdmi->hsm_clock); +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -21,23 +21,6 @@ to_vc4_hdmi_encoder(struct drm_encoder * + return container_of(encoder, struct vc4_hdmi_encoder, base.base); + } + +-/* VC4 HDMI connector KMS struct */ +-struct vc4_hdmi_connector { +- struct drm_connector base; +- +- /* Since the connector is attached to just the one encoder, +- * this is the reference to it so we can do the best_encoder() +- * hook. +- */ +- struct drm_encoder *encoder; +-}; +- +-static inline struct vc4_hdmi_connector * +-to_vc4_hdmi_connector(struct drm_connector *connector) +-{ +- return container_of(connector, struct vc4_hdmi_connector, base); +-} +- + /* HDMI audio information */ + struct vc4_hdmi_audio { + struct snd_soc_card card; +@@ -56,7 +39,7 @@ struct vc4_hdmi { + struct platform_device *pdev; + + struct vc4_hdmi_encoder encoder; +- struct vc4_hdmi_connector connector; ++ struct drm_connector connector; + + struct vc4_hdmi_audio audio; + +@@ -81,9 +64,7 @@ struct vc4_hdmi { + static inline struct vc4_hdmi * + connector_to_vc4_hdmi(struct drm_connector *connector) + { +- struct vc4_hdmi_connector *_connector = to_vc4_hdmi_connector(connector); +- +- return container_of(_connector, struct vc4_hdmi, connector); ++ return container_of(connector, struct vc4_hdmi, connector); + } + + static inline struct vc4_hdmi * |