[media] bttv: there may be multiple tvaudio/tda7432 devices
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 6 Feb 2013 15:43:37 +0000 (12:43 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Mar 2013 17:23:37 +0000 (14:23 -0300)
Probe for additional tvaudio devices, and allow tvaudio+tda7432 to
co-exist. My STB TV PCI FM bttv card has a tda7432, a tda9850 and a
tea6420 and with this patch it finally works again (probably for the
first time in many years).

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/pci/bt8xx/bttv-cards.c

index 682ed893d71837f7ed7d19e5a32aa98ca250f394..fa0faaa2a49a2fb25e4f794f62f44bb755dda400 100644 (file)
@@ -3547,6 +3547,16 @@ void bttv_init_card2(struct bttv *btv)
        if (btv->sd_msp34xx)
                return;
 
+       /* Now see if we can find one of the tvaudio devices. */
+       btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,
+               &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs());
+       if (btv->sd_tvaudio) {
+               /* There may be two tvaudio chips on the card, so try to
+                  find another. */
+               v4l2_i2c_new_subdev(&btv->c.v4l2_dev,
+                       &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs());
+       }
+
        /* it might also be a tda7432. */
        if (!bttv_tvcards[btv->c.type].no_tda7432) {
                static const unsigned short addrs[] = {
@@ -3559,10 +3569,6 @@ void bttv_init_card2(struct bttv *btv)
                if (btv->sd_tda7432)
                        return;
        }
-
-       /* Now see if we can find one of the tvaudio devices. */
-       btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,
-               &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs());
        if (btv->sd_tvaudio)
                return;