f07e572f64
bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
142 lines
5.2 KiB
Diff
142 lines
5.2 KiB
Diff
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));
|
|
@@ -1314,7 +1311,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);
|
|
@@ -1351,7 +1348,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);
|
|
@@ -1375,7 +1372,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 *
|