Web lists-archives.org

[PATCH] New for I2S on for MPEG of saa7134_empress




Hi All

Rework saa7134_enable_i2s function. Remove vendor specific data.
Configure I2S output port specific for model of SAA7133/5-SAA7134. 
I think it is more good.
Renamed definition of I2S audio output control register. It`s SAA7133/5 register
Start video port after configuring procedure.

diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-reg.h
--- a/linux/drivers/media/video/saa7134/saa7134-reg.h	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-reg.h	Mon Jun 09 15:16:05 2008 +1000
@@ -353,7 +353,6 @@
 
 /* I2S output */
 #define SAA7134_I2S_AUDIO_OUTPUT                0x1c0
-#define SAA7134_I2S_AUDIO_CONTROL               0x591
 
 /* test modes */
 #define SAA7134_SPECIAL_MODE                    0x1d0
@@ -369,6 +368,7 @@
 #define SAA7135_DSP_RWCLEAR			0x586
 #define SAA7135_DSP_RWCLEAR_RERR		    1
 
+#define SAA7133_I2S_AUDIO_CONTROL               0x591
 /* ------------------------------------------------------------------ */
 /*
  * Local variables:
diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-tvaudio.c
--- a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c	Tue Jun 10 20:33:00 2008 +1000
@@ -929,23 +929,32 @@ void saa7134_enable_i2s(struct saa7134_d
 	if (!card_is_empress(dev))
 		return;
 
-	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);
+	if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130)
+		return;
+
+	/* configure GPIO for out */
+	saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0E000000, 0x00000000);
+
+	switch (dev->pci->device) {
+	case PCI_DEVICE_ID_PHILIPS_SAA7133:
+	case PCI_DEVICE_ID_PHILIPS_SAA7135:
+	    /* Set I2S format (SONY)  */
+	    saa_writeb(SAA7133_I2S_AUDIO_CONTROL, 0x00);
 	    /* Start I2S */
-	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT,   0x11);
+	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT, 0x11);
 	    break;
+
+	case PCI_DEVICE_ID_PHILIPS_SAA7134:
+	    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);
+
 	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);
+	    break;
 	}
 }
 
diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-video.c
--- a/linux/drivers/media/video/saa7134/saa7134-video.c	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-video.c	Tue Jun 10 19:49:58 2008 +1000
@@ -2469,13 +2469,14 @@ int saa7134_videoport_init(struct saa713
 	int vo = saa7134_boards[dev->board].video_out;
 	int video_reg;
 	unsigned int vid_port_opts = saa7134_boards[dev->board].vid_port_opts;
+
+	/* Configure videoport */
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL0, video_out[vo][0]);
 	video_reg = video_out[vo][1];
 	if (vid_port_opts & SET_T_CODE_POLARITY_NON_INVERTED)
 		video_reg &= ~VP_T_CODE_P_INVERTED;
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL1, video_reg);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL2, video_out[vo][2]);
-	saa_writeb(SAA7134_VIDEO_PORT_CTRL3, video_out[vo][3]);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL4, video_out[vo][4]);
 	video_reg = video_out[vo][5];
 	if (vid_port_opts & SET_CLOCK_NOT_DELAYED)
@@ -2491,6 +2492,9 @@ int saa7134_videoport_init(struct saa713
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL6, video_reg);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL7, video_out[vo][7]);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL8, video_out[vo][8]);
+
+	/* Start videoport */
+	saa_writeb(SAA7134_VIDEO_PORT_CTRL3, video_out[vo][3]);
 
 	return 0;
 }

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@xxxxxxxxx>

With my best regards, Dmitry.
diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-reg.h
--- a/linux/drivers/media/video/saa7134/saa7134-reg.h	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-reg.h	Mon Jun 09 15:16:05 2008 +1000
@@ -353,7 +353,6 @@
 
 /* I2S output */
 #define SAA7134_I2S_AUDIO_OUTPUT                0x1c0
-#define SAA7134_I2S_AUDIO_CONTROL               0x591
 
 /* test modes */
 #define SAA7134_SPECIAL_MODE                    0x1d0
@@ -369,6 +368,7 @@
 #define SAA7135_DSP_RWCLEAR			0x586
 #define SAA7135_DSP_RWCLEAR_RERR		    1
 
+#define SAA7133_I2S_AUDIO_CONTROL               0x591
 /* ------------------------------------------------------------------ */
 /*
  * Local variables:
diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-tvaudio.c
--- a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c	Tue Jun 10 20:33:00 2008 +1000
@@ -929,23 +929,32 @@ void saa7134_enable_i2s(struct saa7134_d
 	if (!card_is_empress(dev))
 		return;
 
-	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);
+	if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130)
+		return;
+
+	/* configure GPIO for out */
+	saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0E000000, 0x00000000);
+
+	switch (dev->pci->device) {
+	case PCI_DEVICE_ID_PHILIPS_SAA7133:
+	case PCI_DEVICE_ID_PHILIPS_SAA7135:
+	    /* Set I2S format (SONY)  */
+	    saa_writeb(SAA7133_I2S_AUDIO_CONTROL, 0x00);
 	    /* Start I2S */
-	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT,   0x11);
+	    saa_writeb(SAA7134_I2S_AUDIO_OUTPUT, 0x11);
 	    break;
+
+	case PCI_DEVICE_ID_PHILIPS_SAA7134:
+	    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);
+
 	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);
+	    break;
 	}
 }
 
diff -r ca65777314d2 linux/drivers/media/video/saa7134/saa7134-video.c
--- a/linux/drivers/media/video/saa7134/saa7134-video.c	Mon Jun 09 11:59:05 2008 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-video.c	Tue Jun 10 19:49:58 2008 +1000
@@ -2469,13 +2469,14 @@ int saa7134_videoport_init(struct saa713
 	int vo = saa7134_boards[dev->board].video_out;
 	int video_reg;
 	unsigned int vid_port_opts = saa7134_boards[dev->board].vid_port_opts;
+
+	/* Configure videoport */
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL0, video_out[vo][0]);
 	video_reg = video_out[vo][1];
 	if (vid_port_opts & SET_T_CODE_POLARITY_NON_INVERTED)
 		video_reg &= ~VP_T_CODE_P_INVERTED;
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL1, video_reg);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL2, video_out[vo][2]);
-	saa_writeb(SAA7134_VIDEO_PORT_CTRL3, video_out[vo][3]);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL4, video_out[vo][4]);
 	video_reg = video_out[vo][5];
 	if (vid_port_opts & SET_CLOCK_NOT_DELAYED)
@@ -2491,6 +2492,9 @@ int saa7134_videoport_init(struct saa713
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL6, video_reg);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL7, video_out[vo][7]);
 	saa_writeb(SAA7134_VIDEO_PORT_CTRL8, video_out[vo][8]);
+
+	/* Start videoport */
+	saa_writeb(SAA7134_VIDEO_PORT_CTRL3, video_out[vo][3]);
 
 	return 0;
 }

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@xxxxxxxxx>
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list