V4L/DVB (6157): Removed the need to manually define .bridge for each card
authorSteven Toth <stoth@hauppauge.com>
Mon, 19 Mar 2007 22:22:41 +0000 (19:22 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 10 Oct 2007 01:08:06 +0000 (22:08 -0300)
Moved the field from cx23885_board to cx23885_dev and added code to
iautomatically set the bridge type based on the pci device id.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/cx23885/cx23885-cards.c
drivers/media/video/cx23885/cx23885-core.c
drivers/media/video/cx23885/cx23885.h

index 9344fb5..decf602 100644 (file)
@@ -32,7 +32,6 @@
 struct cx23885_board cx23885_boards[] = {
        [CX23885_BOARD_UNKNOWN] = {
                .name           = "UNKNOWN/GENERIC",
-               .bridge         = CX23885_BRIDGE_UNDEFINED,
                .input          = {{
                        .type   = CX23885_VMUX_COMPOSITE1,
                        .vmux   = 0,
@@ -49,7 +48,6 @@ struct cx23885_board cx23885_boards[] = {
        },
        [CX23885_BOARD_HAUPPAUGE_HVR1800lp] = {
                .name           = "Hauppauge WinTV-HVR1800lp",
-               .bridge         = CX23885_BRIDGE_885,
                .portc          = CX23885_MPEG_DVB,
                .input          = {{
                        .type   = CX23885_VMUX_TELEVISION,
@@ -71,7 +69,6 @@ struct cx23885_board cx23885_boards[] = {
        },
        [CX23885_BOARD_HAUPPAUGE_HVR1800] = {
                .name           = "Hauppauge WinTV-HVR1800",
-               .bridge         = CX23885_BRIDGE_887,
                .portc          = CX23885_MPEG_DVB,
                .input          = {{
                        .type   = CX23885_VMUX_TELEVISION,
index b1f7535..d8e376d 100644 (file)
@@ -452,8 +452,8 @@ int cx23885_sram_channel_setup(struct cx23885_dev *dev,
        cx_write(ch->cnt2_reg, (lines*16) >> 3);
        cx_write(ch->cnt1_reg, (bpl >> 3) -1);
 
-       dprintk(2,"[bridged %d] sram setup %s: bpl=%d lines=%d\n",
-               cx23885_boards[dev->board].bridge,
+       dprintk(2,"[bridge %d] sram setup %s: bpl=%d lines=%d\n",
+               dev->bridge,
                ch->name,
                bpl,
                lines);
@@ -770,18 +770,16 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
                dev->board, card[dev->nr] == dev->board ?
                "insmod option" : "autodetected");
 
-       /* Configure the hardware internal memory for fifos */
-       switch(cx23885_boards[dev->board].bridge) {
-       case CX23885_BRIDGE_UNDEFINED:
-       case CX23885_BRIDGE_885:
-               dev->sram_channels = cx23885_sram_channels;
-               break;
-       case CX23885_BRIDGE_887:
+       /* Configure the internal memory */
+       if(dev->pci->device == 0x8880) {
+               dev->bridge = CX23885_BRIDGE_887;
                dev->sram_channels = cx23887_sram_channels;
-               break;
-       default:
-               printk(KERN_ERR "%s() error, default case", __FUNCTION__ );
+       } else
+       if(dev->pci->device == 0x8852) {
+               dev->bridge = CX23885_BRIDGE_885;
+               dev->sram_channels = cx23885_sram_channels;
        }
+       dprintk(1, "%s() Memory configured for PCIe bridge type %d\n", __FUNCTION__, dev->bridge);
 
        /* init hardware */
        cx23885_reset(dev);
@@ -1037,7 +1035,7 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
         * starting or stopping interrupts or dma. Avoid the bug for the time being,
         * enabling the developer to work on the demod/tuner locking work.
         */
-       switch(cx23885_boards[dev->board].bridge) {
+       switch(dev->bridge) {
        case CX23885_BRIDGE_885:
        case CX23885_BRIDGE_887:
                /* enable irqs */
index 04105bc..4e1fc68 100644 (file)
@@ -101,11 +101,6 @@ struct cx23885_board {
                CX23885_MPEG_UNDEFINED = 0,
                CX23885_MPEG_DVB
        } portc;
-       enum {
-               CX23885_BRIDGE_UNDEFINED = 0,
-               CX23885_BRIDGE_885 = 885,
-               CX23885_BRIDGE_887 = 887,
-       } bridge;
        struct cx23885_input    input[MAX_CX23885_INPUT];
 };
 
@@ -210,6 +205,12 @@ struct cx23885_dev {
 
        /* sram configuration */
        struct sram_channel        *sram_channels;
+
+       enum {
+               CX23885_BRIDGE_UNDEFINED = 0,
+               CX23885_BRIDGE_885 = 885,
+               CX23885_BRIDGE_887 = 887,
+       } bridge;
 };
 
 #define SRAM_CH01  0 /* Video A */