V4L/DVB (4667): Changed cx88_board .dvb and .register to an enum.
authorSteven Toth <stoth@hauppauge.com>
Mon, 25 Sep 2006 15:43:45 +0000 (12:43 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 3 Oct 2006 18:13:54 +0000 (15:13 -0300)
Some basic cleanup in preperation for a future patch where
the cx88-mpeg functions have to deal with the port being
used by multiple frontends in (mpeg2 hw encoder and dvb demod).

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88-dvb.c
drivers/media/video/cx88/cx88-i2c.c
drivers/media/video/cx88/cx88-mpeg.c
drivers/media/video/cx88/cx88-tvaudio.c
drivers/media/video/cx88/cx88.h

index a7921f9..8fbbac4 100644 (file)
@@ -1086,7 +1086,7 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev,
                return -EINVAL;
 
        err = -ENODEV;
-       if (!cx88_boards[core->board].blackbird)
+       if (!(cx88_boards[core->board].mpeg & CX88_BOARD_BLACKBIRD))
                goto fail_core;
 
        err = -ENOMEM;
index 425d15d..76386d7 100644 (file)
@@ -294,7 +294,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_RADIO,
                        .gpio0  = 0x0000bd62,
                },
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_IODATA_GVVCP3PCI] = {
                .name           = "IODATA GV-VCP3/PCI",
@@ -358,7 +358,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_RADIO,
                        .gpio0  = 0x0000fde2,
                },
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_MSI_TVANYWHERE] = {
                .name           = "MSI TV-@nywhere",
@@ -401,7 +401,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = {
                .name           = "DViCO FusionHDTV DVB-T1",
@@ -418,7 +418,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x000027df,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_KWORLD_LTV883] = {
                .name           = "KWorld LTV883RF",
@@ -488,7 +488,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x0f00,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_DVB_T1] = {
                .name           = "Hauppauge Nova-T DVB-T",
@@ -500,7 +500,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_DVB,
                        .vmux   = 0,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_CONEXANT_DVB_T1] = {
                .name           = "Conexant DVB-T reference design",
@@ -512,7 +512,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_DVB,
                        .vmux   = 0,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_PROVIDEO_PV259] = {
                .name           = "Provideo PV259",
@@ -524,7 +524,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
                }},
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = {
                .name           = "DViCO FusionHDTV DVB-T Plus",
@@ -541,7 +541,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x000027df,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_DNTV_LIVE_DVB_T] = {
                .name           = "digitalnow DNTV Live! DVB-T",
@@ -560,7 +560,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0x00000700,
                        .gpio2  = 0x00000101,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_PCHDTV_HD3000] = {
                .name           = "pcHDTV HD3000 HDTV",
@@ -599,7 +599,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio2  = 0x00000000,
                        .gpio3  = 0x00000000,
                },
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_ROSLYN] = {
                // entry added by Kaustubh D. Bhalerao <bhalerao.1@osu.edu>
@@ -633,7 +633,7 @@ struct cx88_board cx88_boards[] = {
                         .gpio0  = 0xed96,
                         .gpio2  = 0x00ff,
                 },
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_DIGITALLOGIC_MEC] = {
                .name           = "Digital-Logic MICROSPACE Entertainment Center (MEC)",
@@ -659,7 +659,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_RADIO,
                        .gpio0  = 0x00009d00,
                },
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_IODATA_GVBCTV7E] = {
                .name           = "IODATA GV/BCTV7E",
@@ -727,7 +727,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x97e9,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_ADSTECH_DVB_T_PCI] = {
                .name           = "ADS Tech Instant TV DVB-T PCI",
@@ -746,7 +746,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1] = {
                .name           = "TerraTec Cinergy 1400 DVB-T",
@@ -755,7 +755,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_DVB,
                        .vmux   = 0,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD] = {
                .name           = "DViCO FusionHDTV 5 Gold",
@@ -777,7 +777,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x87f9,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_AVERMEDIA_ULTRATV_MC_550] = {
                .name           = "AverMedia UltraTV Media Center PCI 550",
@@ -786,7 +786,7 @@ struct cx88_board cx88_boards[] = {
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .tda9887_conf   = TDA9887_PRESENT,
-               .blackbird      = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
                .input          = {{
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 0,
@@ -854,7 +854,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio2  = 0x00000001,
                        .gpio3  = 0x00000000,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_WINFAST_DTV1000] = {
                .name           = "WinFast DTV1000-T",
@@ -866,7 +866,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_DVB,
                        .vmux   = 0,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_AVERTV_303] = {
                .name           = "AVerTV 303 (M126)",
@@ -914,7 +914,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
                .name           = "Hauppauge Nova-SE2 DVB-S",
@@ -926,7 +926,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_DVB,
                        .vmux   = 0,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_KWORLD_DVBS_100] = {
                .name           = "KWorld DVB-S 100",
@@ -944,7 +944,7 @@ struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_HVR1100] = {
                .name           = "Hauppauge WinTV-HVR1100 DVB-T/Hybrid",
@@ -964,7 +964,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                }},
                /* fixme: Add radio support */
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_HVR1100LP] = {
                .name           = "Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile)",
@@ -981,7 +981,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 1,
                }},
                /* fixme: Add radio support */
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_DNTV_LIVE_DVB_T_PRO] = {
                .name           = "digitalnow DNTV Live! DVB-T Pro",
@@ -1008,7 +1008,7 @@ struct cx88_board cx88_boards[] = {
                         .type  = CX88_RADIO,
                         .gpio0 = 0xf80808,
                },
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_KWORLD_DVB_T_CX22702] = {
                /* Kworld V-stream Xpert DVB-T with Thomson tuner */
@@ -1030,7 +1030,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL] = {
                .name           = "DViCO FusionHDTV DVB-T Dual Digital",
@@ -1047,7 +1047,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x000067df,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT] = {
                /* FIXME: Audio not working for s-video / composite inputs. */
@@ -1075,7 +1075,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0x3de6,
                        .gpio2  = 0x00ff,
                },
-               .blackbird      = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID] = {
                .name           = "DViCO FusionHDTV DVB-T Hybrid",
@@ -1096,7 +1096,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x0000a75b,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_PCHDTV_HD5500] = {
                .name           = "pcHDTV HD5500 HDTV",
@@ -1118,7 +1118,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x87f9,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_KWORLD_MCE200_DELUXE] = {
                /* FIXME: tested TV input only, disabled composite,
@@ -1134,7 +1134,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 0,
                        .gpio0  = 0x0000BDE6
                }},
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_PIXELVIEW_PLAYTV_P7000] = {
                /* FIXME: SVideo, Composite and FM inputs are untested */
@@ -1150,7 +1150,7 @@ struct cx88_board cx88_boards[] = {
                        .vmux   = 0,
                        .gpio0  = 0x5da6,
                }},
-               .blackbird = 1,
+               .mpeg           = CX88_BOARD_BLACKBIRD,
        },
        [CX88_BOARD_NPGTECH_REALTV_TOP10FM] = {
                .name           = "NPG Tech Real TV FM Top 10",
@@ -1192,7 +1192,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio2  = 0x00017304,
                        .gpio3  = 0x02000000,
                }},
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_GENIATECH_DVBS] = {
                .name          = "Geniatech DVB-S",
@@ -1207,7 +1207,7 @@ struct cx88_board cx88_boards[] = {
                        .type  = CX88_VMUX_COMPOSITE1,
                        .vmux  = 1,
                }},
-               .dvb      = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
        [CX88_BOARD_HAUPPAUGE_HVR3000] = {
                /* FIXME: Add dvb & radio support */
@@ -1302,7 +1302,7 @@ struct cx88_board cx88_boards[] = {
                        .gpio0  = 0xe780,
                }},
                /* fixme: Add radio support */
-               .dvb            = 1,
+               .mpeg           = CX88_BOARD_DVB,
        },
 };
 const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
index c87041d..32775f6 100644 (file)
@@ -802,7 +802,7 @@ static int __devinit dvb_probe(struct pci_dev *pci_dev,
                return -EINVAL;
 
        err = -ENODEV;
-       if (!cx88_boards[core->board].dvb)
+       if (!(cx88_boards[core->board].mpeg & CX88_BOARD_DVB))
                goto fail_core;
 
        err = -ENOMEM;
index 27b5dbb..440c417 100644 (file)
@@ -220,7 +220,7 @@ int cx88_i2c_init(struct cx88_core *core, struct pci_dev *pci)
 
        if (core->tuner_type != TUNER_ABSENT)
                core->i2c_adap.class |= I2C_CLASS_TV_ANALOG;
-       if (cx88_boards[core->board].dvb)
+       if (cx88_boards[core->board].mpeg & CX88_BOARD_DVB)
                core->i2c_adap.class |= I2C_CLASS_TV_DIGITAL;
 
        core->i2c_adap.dev.parent = &pci->dev;
index 138a4f6..957f37c 100644 (file)
@@ -65,8 +65,17 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
 
        /* FIXME: this needs a review.
         * also: move to cx88-blackbird + cx88-dvb source files? */
+       if (cx88_boards[core->board].mpeg == (CX88_BOARD_DVB | CX88_BOARD_BLACKBIRD) ) {
+               /* Report a warning until the mini driver patch is applied,
+                * else the following conditions will set the dma registers incorrectly.
+                * This will be removed in the next major patch and changes to the conditions
+                * will be made.
+                */
+               printk(KERN_INFO "%s() board->(CX88_BOARD_DVB | CX88_BOARD_BLACKBIRD) is invalid\n", __FUNCTION__);
+               return -EINVAL;
+       }
 
-       if (cx88_boards[core->board].dvb) {
+       if (cx88_boards[core->board].mpeg & CX88_BOARD_DVB) {
                /* negedge driven & software reset */
                cx_write(TS_GEN_CNTRL, 0x0040 | dev->ts_gen_cntrl);
                udelay(100);
@@ -92,7 +101,7 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
                udelay(100);
        }
 
-       if (cx88_boards[core->board].blackbird) {
+       if (cx88_boards[core->board].mpeg & CX88_BOARD_BLACKBIRD) {
                cx_write(MO_PINMUX_IO, 0x88); /* enable MPEG parallel IO */
 
                cx_write(TS_GEN_CNTRL, 0x46); /* punctured clock TS & posedge driven & software reset */
index 741e7c5..b6e2bf9 100644 (file)
@@ -142,7 +142,7 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl)
        cx_write(AUD_RATE_THRES_DMD, 0x000000C0);
        cx88_start_audio_dma(core);
 
-       if (cx88_boards[core->board].blackbird) {
+       if (cx88_boards[core->board].mpeg & CX88_BOARD_BLACKBIRD) {
                /* sets sound input from external adc */
                switch (core->board) {
                case CX88_BOARD_HAUPPAUGE_ROSLYN:
@@ -164,7 +164,7 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl)
                cx_write(AUD_I2SCNTL, 0);
                /* cx_write(AUD_APB_IN_RATE_ADJ, 0); */
        }
-       if ((always_analog) || (!cx88_boards[core->board].blackbird)) {
+       if ((always_analog) || (!(cx88_boards[core->board].mpeg & CX88_BOARD_BLACKBIRD))) {
                ctl |= EN_DAC_ENABLE;
                cx_write(AUD_CTL, ctl);
        }
index 2371ab4..5c4e845 100644 (file)
@@ -74,6 +74,12 @@ enum cx88_deemph_type {
        FM_DEEMPH_75
 };
 
+enum cx88_board_type {
+       CX88_BOARD_NONE = 0,
+       CX88_BOARD_DVB,
+       CX88_BOARD_BLACKBIRD
+};
+
 /* ----------------------------------------------------------- */
 /* tv norms                                                    */
 
@@ -231,8 +237,7 @@ struct cx88_board {
        int                     tda9887_conf;
        struct cx88_input       input[MAX_CX88_INPUT];
        struct cx88_input       radio;
-       unsigned int            blackbird:1;
-       unsigned int            dvb:1;
+       enum cx88_board_type    mpeg;
        enum audiochip          audio_chip;
 };