Browse Source

V4L/DVB (7976): I2S on for MPEG of saa7134_empress

Rework saa7134_enable_i2s function. Add vendor specific data.
Add definition for I2S audio output control register.

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Dmitri Belimov 17 years ago
parent
commit
f808a9e3ce

+ 1 - 0
drivers/media/video/saa7134/saa7134-reg.h

@@ -353,6 +353,7 @@
 
 /* I2S output */
 #define SAA7134_I2S_AUDIO_OUTPUT                0x1c0
+#define SAA7134_I2S_AUDIO_CONTROL               0x591
 
 /* test modes */
 #define SAA7134_SPECIAL_MODE                    0x1d0

+ 18 - 6
drivers/media/video/saa7134/saa7134-tvaudio.c

@@ -873,13 +873,25 @@ void saa7134_enable_i2s(struct saa7134_dev *dev)
 
 	if (!card_is_empress(dev))
 		return;
-	i2s_format = (dev->input->amux == TV) ? 0x00 : 0x01;
 
-	/* enable I2S audio output for the mpeg encoder */
-	saa_writeb(SAA7134_I2S_OUTPUT_SELECT,  0x80);
-	saa_writeb(SAA7134_I2S_OUTPUT_FORMAT,  i2s_format);
-	saa_writeb(SAA7134_I2S_OUTPUT_LEVEL,   0x0F);
-	saa_writeb(SAA7134_I2S_AUDIO_OUTPUT,   0x01);
+	switch (dev->board) {
+	case SAA7134_BOARD_BEHOLD_M6:
+	    /* configure GPIO for out audio */
+	    saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0E000000, 0x00000000);
+	    /* Set I2S format  */
+	    saa_writeb(SAA7134_I2S_AUDIO_CONTROL,  0x00);
+	    /* Start I2S */
+	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT,   0x11);
+	    break;
+	default:
+	    i2s_format = (dev->input->amux == TV) ? 0x00 : 0x01;
+
+	    /* enable I2S audio output for the mpeg encoder */
+	    saa_writeb(SAA7134_I2S_OUTPUT_SELECT,  0x80);
+	    saa_writeb(SAA7134_I2S_OUTPUT_FORMAT,  i2s_format);
+	    saa_writeb(SAA7134_I2S_OUTPUT_LEVEL,   0x0F);
+	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT,   0x01);
+	}
 }
 
 int saa7134_tvaudio_rx2mode(u32 rx)