V4L/DVB (9333): cx88: Not all boards that requires cx88-mpeg has frontends
authorMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 21 Oct 2008 13:43:10 +0000 (10:43 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 21 Oct 2008 16:31:59 +0000 (14:31 -0200)
The multifrontend changes on cx88 assumed that all boards that use cx88-mpeg
supports DVB. This is not true. There also a few analog-only boards based on
Blackboard design that also uses cx88-mpeg. For those boards, there's no need
to allocate dvb frontends.

This patch fixes videobuf allocation for those devices.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88-mpeg.c

index fbc224f..5bcbb4c 100644 (file)
@@ -3044,8 +3044,8 @@ struct cx88_core *cx88_core_create(struct pci_dev *pci, int nr)
 
        memcpy(&core->board, &cx88_boards[core->boardnr], sizeof(core->board));
 
-       if (!core->board.num_frontends)
-               core->board.num_frontends=1;
+       if (!core->board.num_frontends && (core->board.mpeg & CX88_MPEG_DVB))
+               core->board.num_frontends = 1;
 
        info_printk(core, "subsystem: %04x:%04x, board: %s [card=%d,%s], frontend(s): %d\n",
                pci->subsystem_vendor, pci->subsystem_device, core->board.name,
index b21fd93..a1c435b 100644 (file)
@@ -785,11 +785,6 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
        if (!core->board.mpeg)
                goto fail_core;
 
-       if (!core->board.num_frontends) {
-               printk(KERN_ERR "%s() .num_frontends should be non-zero, err = %d\n", __func__, err);
-               goto fail_core;
-       }
-
        err = -ENOMEM;
        dev = kzalloc(sizeof(*dev),GFP_KERNEL);
        if (NULL == dev)
@@ -808,7 +803,8 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
        mutex_init(&dev->frontends.lock);
        INIT_LIST_HEAD(&dev->frontends.felist);
 
-       printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__, core->board.num_frontends);
+       if (core->board.num_frontends)
+               printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__, core->board.num_frontends);
 
        for (i = 1; i <= core->board.num_frontends; i++) {
                demod = videobuf_dvb_alloc_frontend(&dev->frontends, i);