aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-18 18:04:33 +0100
committerÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-18 23:42:32 +0100
commitf07e572f6447465d8938679533d604e402b0f066 (patch)
treecb333bd2a67e59e7c07659514850a0fd55fc825e /target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch
parent5d3a6fd970619dfc55f8259035c3027d7613a2a6 (diff)
downloadupstream-f07e572f6447465d8938679533d604e402b0f066.tar.gz
upstream-f07e572f6447465d8938679533d604e402b0f066.tar.bz2
upstream-f07e572f6447465d8938679533d604e402b0f066.zip
bcm27xx: import latest patches from the RPi foundation
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>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch151
1 files changed, 0 insertions, 151 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch b/target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch
deleted file mode 100644
index 1d70ca851c..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0576-drm-vc4-hdmi-Add-container_of-macros-for-encoders-an.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From fe19f02dbfd020df9b028cf2c580417c4edc31b3 Mon Sep 17 00:00:00 2001
-From: Maxime Ripard <maxime@cerno.tech>
-Date: Mon, 6 Jan 2020 18:45:46 +0100
-Subject: [PATCH] drm/vc4: hdmi: Add container_of macros for encoders
- and connectors
-
-Whenever the code needs to access the vc4_hdmi structure from a DRM
-connector or encoder, it first accesses the drm_device associated to the
-connector, then retrieve the drm_dev private data which gives it a
-pointer to our vc4_dev, and will finally follow the vc4_hdmi pointer in
-that structure.
-
-That will also give us some trouble when having multiple controllers,
-but now that we have our encoder and connector structures that are part
-of vc4_hdmi, we can simply call container_of on the DRM connector or
-encoder and retrieve the vc4_hdmi structure directly.
-
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 41 ++++++++++------------------------
- drivers/gpu/drm/vc4/vc4_hdmi.h | 16 +++++++++++++
- 2 files changed, 28 insertions(+), 29 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -120,9 +120,7 @@ static int vc4_hdmi_debugfs_regs(struct
- static enum drm_connector_status
- vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
- {
-- struct drm_device *dev = connector->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector);
-
- if (vc4_hdmi->hpd_gpio) {
- if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^
-@@ -149,17 +147,13 @@ static void vc4_hdmi_connector_destroy(s
-
- static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
- {
-- struct vc4_hdmi_connector *vc4_connector =
-- to_vc4_hdmi_connector(connector);
-- struct drm_encoder *encoder = vc4_connector->encoder;
-- struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
-- struct drm_device *dev = connector->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector);
-+ struct vc4_hdmi_encoder *vc4_encoder = &vc4_hdmi->encoder;
- int ret = 0;
- struct edid *edid;
-
-- edid = drm_get_edid(connector, vc4->hdmi->ddc);
-- cec_s_phys_addr_from_edid(vc4->hdmi->cec_adap, edid);
-+ edid = drm_get_edid(connector, vc4_hdmi->ddc);
-+ cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid);
- if (!edid)
- return -ENODEV;
-
-@@ -235,9 +229,7 @@ static const struct drm_encoder_funcs vc
- static int vc4_hdmi_stop_packet(struct drm_encoder *encoder,
- enum hdmi_infoframe_type type)
- {
-- struct drm_device *dev = encoder->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
- u32 packet_id = type - 0x80;
-
- HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG,
-@@ -250,9 +242,7 @@ static int vc4_hdmi_stop_packet(struct d
- static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder,
- union hdmi_infoframe *frame)
- {
-- struct drm_device *dev = encoder->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
- u32 packet_id = frame->any.type - 0x80;
- u32 packet_reg = VC4_HDMI_RAM_PACKET(packet_id);
- uint8_t buffer[VC4_HDMI_PACKET_STRIDE];
-@@ -298,9 +288,8 @@ static void vc4_hdmi_write_infoframe(str
-
- static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
- {
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
- struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
-- struct vc4_dev *vc4 = encoder->dev->dev_private;
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
- struct drm_connector *connector = &vc4_hdmi->connector.base;
- struct drm_connector_state *cstate = connector->state;
- struct drm_crtc *crtc = encoder->crtc;
-@@ -347,9 +336,7 @@ static void vc4_hdmi_set_spd_infoframe(s
-
- static void vc4_hdmi_set_audio_infoframe(struct drm_encoder *encoder)
- {
-- struct drm_device *drm = encoder->dev;
-- struct vc4_dev *vc4 = drm->dev_private;
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
- union hdmi_infoframe frame;
- int ret;
-
-@@ -371,9 +358,7 @@ static void vc4_hdmi_set_infoframes(stru
-
- static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
- {
-- struct drm_device *dev = encoder->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
- int ret;
-
- HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG, 0);
-@@ -392,10 +377,8 @@ static void vc4_hdmi_encoder_disable(str
- static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
- {
- struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
-- struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
-- struct drm_device *dev = encoder->dev;
-- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
-+ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
-+ struct vc4_hdmi_encoder *vc4_encoder = &vc4_hdmi->encoder;
- bool debug_dump_regs = false;
- bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
- bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
---- a/drivers/gpu/drm/vc4/vc4_hdmi.h
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
-@@ -78,6 +78,22 @@ struct vc4_hdmi {
- struct debugfs_regset32 hd_regset;
- };
-
-+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);
-+}
-+
-+static inline struct vc4_hdmi *
-+encoder_to_vc4_hdmi(struct drm_encoder *encoder)
-+{
-+ struct vc4_hdmi_encoder *_encoder = to_vc4_hdmi_encoder(encoder);
-+
-+ return container_of(_encoder, struct vc4_hdmi, encoder);
-+}
-+
- #define HDMI_READ(offset) readl(vc4_hdmi->hdmicore_regs + offset)
- #define HDMI_WRITE(offset, val) writel(val, vc4_hdmi->hdmicore_regs + offset)
- #define HD_READ(offset) readl(vc4_hdmi->hd_regs + offset)