From f07e572f6447465d8938679533d604e402b0f066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 18 Feb 2021 18:04:33 +0100 Subject: bcm27xx: import latest patches from the RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- ...565-drm-vc4-hdmi-Move-structure-to-header.patch | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 target/linux/bcm27xx/patches-5.4/950-0565-drm-vc4-hdmi-Move-structure-to-header.patch (limited to 'target/linux/bcm27xx/patches-5.4/950-0565-drm-vc4-hdmi-Move-structure-to-header.patch') diff --git a/target/linux/bcm27xx/patches-5.4/950-0565-drm-vc4-hdmi-Move-structure-to-header.patch b/target/linux/bcm27xx/patches-5.4/950-0565-drm-vc4-hdmi-Move-structure-to-header.patch new file mode 100644 index 0000000000..430fc0459e --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0565-drm-vc4-hdmi-Move-structure-to-header.patch @@ -0,0 +1,195 @@ +From 13bb65d33681b0095214033a5e80186faa325854 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 18 Dec 2019 18:35:12 +0100 +Subject: [PATCH] drm/vc4: hdmi: Move structure to header + +We will need to share the vc4_hdmi and related structures with multiple +files, so let's create a header for it. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 76 +----------------------------- + drivers/gpu/drm/vc4/vc4_hdmi.h | 86 ++++++++++++++++++++++++++++++++++ + 2 files changed, 87 insertions(+), 75 deletions(-) + create mode 100644 drivers/gpu/drm/vc4/vc4_hdmi.h + +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -48,87 +48,13 @@ + #include + #include "media/cec.h" + #include "vc4_drv.h" ++#include "vc4_hdmi.h" + #include "vc4_regs.h" + + #define HSM_CLOCK_FREQ 163682864 + #define CEC_CLOCK_FREQ 40000 + #define CEC_CLOCK_DIV (HSM_CLOCK_FREQ / CEC_CLOCK_FREQ) + +-/* HDMI audio information */ +-struct vc4_hdmi_audio { +- struct snd_soc_card card; +- struct snd_soc_dai_link link; +- struct snd_soc_dai_link_component cpu; +- struct snd_soc_dai_link_component codec; +- struct snd_soc_dai_link_component platform; +- int samplerate; +- int channels; +- struct snd_dmaengine_dai_dma_data dma_data; +- struct snd_pcm_substream *substream; +-}; +- +-/* General HDMI hardware state. */ +-struct vc4_hdmi { +- struct platform_device *pdev; +- +- struct drm_encoder *encoder; +- struct drm_connector *connector; +- +- struct vc4_hdmi_audio audio; +- +- struct i2c_adapter *ddc; +- void __iomem *hdmicore_regs; +- void __iomem *hd_regs; +- int hpd_gpio; +- bool hpd_active_low; +- +- struct cec_adapter *cec_adap; +- struct cec_msg cec_rx_msg; +- bool cec_tx_ok; +- bool cec_irq_was_rx; +- +- struct clk *pixel_clock; +- struct clk *hsm_clock; +- +- struct debugfs_regset32 hdmi_regset; +- struct debugfs_regset32 hd_regset; +-}; +- +-#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) +-#define HD_WRITE(offset, val) writel(val, vc4->hdmi->hd_regs + offset) +- +-/* VC4 HDMI encoder KMS struct */ +-struct vc4_hdmi_encoder { +- struct vc4_encoder base; +- bool hdmi_monitor; +- bool limited_rgb_range; +-}; +- +-static inline struct vc4_hdmi_encoder * +-to_vc4_hdmi_encoder(struct drm_encoder *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); +-} +- + static const struct debugfs_reg32 hdmi_regs[] = { + VC4_REG32(VC4_HDMI_CORE_REV), + VC4_REG32(VC4_HDMI_SW_RESET_CONTROL), +--- /dev/null ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -0,0 +1,86 @@ ++#ifndef _VC4_HDMI_H_ ++#define _VC4_HDMI_H_ ++ ++#include ++#include ++#include ++#include ++ ++#include "vc4_drv.h" ++ ++/* HDMI audio information */ ++struct vc4_hdmi_audio { ++ struct snd_soc_card card; ++ struct snd_soc_dai_link link; ++ struct snd_soc_dai_link_component cpu; ++ struct snd_soc_dai_link_component codec; ++ struct snd_soc_dai_link_component platform; ++ int samplerate; ++ int channels; ++ struct snd_dmaengine_dai_dma_data dma_data; ++ struct snd_pcm_substream *substream; ++}; ++ ++/* General HDMI hardware state. */ ++struct vc4_hdmi { ++ struct platform_device *pdev; ++ ++ struct drm_encoder *encoder; ++ struct drm_connector *connector; ++ ++ struct vc4_hdmi_audio audio; ++ ++ struct i2c_adapter *ddc; ++ void __iomem *hdmicore_regs; ++ void __iomem *hd_regs; ++ int hpd_gpio; ++ bool hpd_active_low; ++ ++ struct cec_adapter *cec_adap; ++ struct cec_msg cec_rx_msg; ++ bool cec_tx_ok; ++ bool cec_irq_was_rx; ++ ++ struct clk *pixel_clock; ++ struct clk *hsm_clock; ++ ++ struct debugfs_regset32 hdmi_regset; ++ struct debugfs_regset32 hd_regset; ++}; ++ ++#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) ++#define HD_WRITE(offset, val) writel(val, vc4->hdmi->hd_regs + offset) ++ ++/* VC4 HDMI encoder KMS struct */ ++struct vc4_hdmi_encoder { ++ struct vc4_encoder base; ++ bool hdmi_monitor; ++ bool limited_rgb_range; ++}; ++ ++static inline struct vc4_hdmi_encoder * ++to_vc4_hdmi_encoder(struct drm_encoder *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); ++} ++ ++#endif /* _VC4_HDMI_H_ */ -- cgit v1.2.3