drm/vc4: hdmi: Move structure to header
authorMaxime Ripard <maxime@cerno.tech>
Thu, 3 Sep 2020 08:01:11 +0000 (10:01 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Mon, 7 Sep 2020 16:04:54 +0000 (18:04 +0200)
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 <maxime@cerno.tech>
Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/db3ff2babc914e38e86f794c4e49128697aed887.1599120059.git-series.maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_hdmi.c
drivers/gpu/drm/vc4/vc4_hdmi.h [new file with mode: 0644]

index ae8c4d5..5c4d2fe 100644 (file)
 #include <sound/soc.h>
 #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),
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
new file mode 100644 (file)
index 0000000..5ec5d1f
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _VC4_HDMI_H_
+#define _VC4_HDMI_H_
+
+#include <drm/drm_connector.h>
+#include <media/cec.h>
+#include <sound/dmaengine_pcm.h>
+#include <sound/soc.h>
+
+#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_ */