[media] cx231xx: scan all four existing i2c busses instead of the 3 masters
authorMatthias Schwarzott <zzam@gentoo.org>
Thu, 2 Oct 2014 05:21:05 +0000 (02:21 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Thu, 30 Oct 2014 19:42:17 +0000 (17:42 -0200)
The scanning itself just fails (as before this series) but now
the correct busses are scanned.

Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/usb/cx231xx/cx231xx-core.c
drivers/media/usb/cx231xx/cx231xx-i2c.c

index c49022f4525a93623144c10c8f4ea6e70eae5936..9b5cd9e9b169c0c92dc31f4ddfdc997e07cf7a08 100644 (file)
@@ -1303,6 +1303,12 @@ int cx231xx_dev_init(struct cx231xx *dev)
        cx231xx_i2c_mux_register(dev, 0);
        cx231xx_i2c_mux_register(dev, 1);
 
+       /* scan the real bus segments in the order of physical port numbers */
+       cx231xx_do_i2c_scan(dev, I2C_0);
+       cx231xx_do_i2c_scan(dev, I2C_1_MUX_1);
+       cx231xx_do_i2c_scan(dev, I2C_2);
+       cx231xx_do_i2c_scan(dev, I2C_1_MUX_3);
+
        /* init hardware */
        /* Note : with out calling set power mode function,
        afe can not be set up correctly */
index 3e9dfd808518bd671c865cdaf2d03179b9b72eb5..d1003c703fb55c88e2987792d540d76f7036e4df 100644 (file)
@@ -492,6 +492,9 @@ void cx231xx_do_i2c_scan(struct cx231xx *dev, int i2c_port)
        int i, rc;
        struct i2c_client client;
 
+       if (!i2c_scan)
+               return;
+
        memset(&client, 0, sizeof(client));
        client.adapter = cx231xx_get_i2c_adap(dev, i2c_port);
 
@@ -528,10 +531,7 @@ int cx231xx_i2c_register(struct cx231xx_i2c *bus)
        i2c_set_adapdata(&bus->i2c_adap, &dev->v4l2_dev);
        i2c_add_adapter(&bus->i2c_adap);
 
-       if (0 == bus->i2c_rc) {
-               if (i2c_scan)
-                       cx231xx_do_i2c_scan(dev, bus->nr);
-       } else
+       if (0 != bus->i2c_rc)
                cx231xx_warn("%s: i2c bus %d register FAILED\n",
                             dev->name, bus->nr);