V4L/DVB (3371): Turn frame locked sound on, basic support for FM radio with TDA8275(a)
authorHartmut Hackmann <hartmut.hackmann@t-online.de>
Sat, 14 Jan 2006 23:26:44 +0000 (21:26 -0200)
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>
Sun, 15 Jan 2006 11:02:57 +0000 (09:02 -0200)
- Enabled audio PLL. This is mandatory for NICAM sound
- modify FM IF frequency to 5.5MHz for SAA7133/35 if tuner is tda8290

Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-tvaudio.c

index 275d06a..c64718a 100644 (file)
@@ -2515,6 +2515,7 @@ struct saa7134_board saa7134_boards[] = {
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .mpeg           = SAA7134_MPEG_DVB,
+               .gpiomask       = 1 << 21,
                .inputs = {{
                        .name   = name_tv,
                        .vmux   = 1,
@@ -2529,6 +2530,11 @@ struct saa7134_board saa7134_boards[] = {
                        .vmux   = 8,
                        .amux   = LINE1,
                }},
+               .radio = {
+                       .name   = name_radio,
+                       .amux   = TV,
+                       .gpio   = 0x0200000,
+               },
        },
        [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
                .name           = "MSI TV@Anywhere plus",
index 9326842..afa4dcb 100644 (file)
@@ -180,8 +180,8 @@ static void tvaudio_init(struct saa7134_dev *dev)
        saa_writeb(SAA7134_AUDIO_CLOCK0,      clock        & 0xff);
        saa_writeb(SAA7134_AUDIO_CLOCK1,     (clock >>  8) & 0xff);
        saa_writeb(SAA7134_AUDIO_CLOCK2,     (clock >> 16) & 0xff);
-       // frame locked audio was reported not to be reliable
-       saa_writeb(SAA7134_AUDIO_PLL_CTRL,   0x02);
+       /* frame locked audio is mandatory for NICAM */
+       saa_writeb(SAA7134_AUDIO_PLL_CTRL,   0x01);
 
        saa_writeb(SAA7134_NICAM_ERROR_LOW,  0x14);
        saa_writeb(SAA7134_NICAM_ERROR_HIGH, 0x50);
@@ -809,7 +809,12 @@ static int tvaudio_thread_ddep(void *data)
                        dprintk("ddep override: %s\n",stdres[audio_ddep]);
                } else if (&card(dev).radio == dev->input) {
                        dprintk("FM Radio\n");
-                       norms = (0x0f << 2) | 0x01;
+                       if (dev->tuner_type == TUNER_PHILIPS_TDA8290) {
+                               norms = (0x11 << 2) | 0x01;
+                               saa_dsp_writel(dev, 0x42c >> 2, 0x729555);
+                       } else {
+                               norms = (0x0f << 2) | 0x01;
+                       }
                } else {
                        /* (let chip) scan for sound carrier */
                        norms = 0;