[PATCH] New for I2S on for MPEG of saa7134_empress
- Date: Tue, 10 Jun 2008 20:56:20 +1000
- From: Dmitri Belimov <d.belimov@xxxxxxxxx>
- Subject: [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