[alsa-devel] [PATCH 1/4] fbdev: sh-mobile: Add HDMI sound type selection

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Aug 30 07:05:21 CEST 2010


Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
 drivers/video/sh_mobile_hdmi.c |   21 ++++++++++++++++++++-
 include/video/sh_mobile_hdmi.h |   16 ++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index afebe80..d25e348 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -318,6 +318,9 @@ static void sh_hdmi_video_config(struct sh_hdmi *hdmi)
  */
 static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
 {
+	u8 data;
+	struct sh_mobile_hdmi_info *pdata = hdmi->dev->platform_data;
+
 	/*
 	 * [7:4] L/R data swap control
 	 * [3:0] appropriate N[19:16]
@@ -335,7 +338,23 @@ static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
 	 * [6:5] set required down sampling rate if required
 	 * [4:3] set required audio source
 	 */
-	hdmi_write(hdmi, 0x00, HDMI_AUDIO_SETTING_1);
+	switch (pdata->flags & HDMI_SRC_MASK) {
+	default:
+		/* FALL THROUGH */
+	case HDMI_SRC_I2S:
+		data = (0x0 << 3);
+		break;
+	case HDMI_SRC_SPDIF:
+		data = (0x1 << 3);
+		break;
+	case HDMI_SRC_DSD:
+		data = (0x2 << 3);
+		break;
+	case HDMI_SRC_HBR:
+		data = (0x3 << 3);
+		break;
+	}
+	hdmi_write(hdmi, data, HDMI_AUDIO_SETTING_1);
 
 	/* [3:0] set sending channel number for channel status */
 	hdmi_write(hdmi, 0x40, HDMI_AUDIO_SETTING_2);
diff --git a/include/video/sh_mobile_hdmi.h b/include/video/sh_mobile_hdmi.h
index 577cf18..929c2d3 100644
--- a/include/video/sh_mobile_hdmi.h
+++ b/include/video/sh_mobile_hdmi.h
@@ -14,9 +14,25 @@
 struct sh_mobile_lcdc_chan_cfg;
 struct device;
 
+/*
+ * flags format
+ *
+ * 0x0000000A
+ *
+ * A: Audio source select
+ */
+
+/* Audio source select */
+#define HDMI_SRC_MASK		(0xF << 0)
+#define HDMI_SRC_I2S		(0 << 0) /* default */
+#define HDMI_SRC_SPDIF		(1 << 0)
+#define HDMI_SRC_DSD		(2 << 0)
+#define HDMI_SRC_HBR		(3 << 0)
+
 struct sh_mobile_hdmi_info {
 	struct sh_mobile_lcdc_chan_cfg	*lcd_chan;
 	struct device			*lcd_dev;
+	unsigned int			 flags;
 };
 
 #endif
-- 
1.7.0.4



More information about the Alsa-devel mailing list