[media] cx231xx: return an error if it can't read PCB config
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 27 Jul 2014 19:27:32 +0000 (16:27 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 27 Jul 2014 19:57:43 +0000 (16:57 -0300)
Instead of using some random value, return an error if the
PCB config is not available or doesn't match a know profile

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/cx231xx/cx231xx-cards.c
drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c
drivers/media/usb/cx231xx/cx231xx-pcb-cfg.h

index 75b24b711531fdfa7791770741b3558e4b365bb7..db69307d86aed002ab2bed6078530f23e078c459 100644 (file)
@@ -997,7 +997,11 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
        dev->cx231xx_gpio_i2c_write = cx231xx_gpio_i2c_write;
 
        /* Query cx231xx to find what pcb config it is related to */
-       initialize_cx231xx(dev);
+       retval = initialize_cx231xx(dev);
+       if (retval < 0) {
+               cx231xx_errdev("Failed to read PCB config\n");
+               return retval;
+       }
 
        /*To workaround error number=-71 on EP0 for VideoGrabber,
                 need set alt here.*/
index 2a34ceee48020b886ba2d1ebd832dd2e3ee4ef6a..3052c4c2022942f6243830f498f46403e1367ca9 100644 (file)
@@ -654,8 +654,9 @@ static struct pcb_config cx231xx_Scenario[] = {
 
 /*****************************************************************/
 
-u32 initialize_cx231xx(struct cx231xx *dev)
+int initialize_cx231xx(struct cx231xx *dev)
 {
+       int retval;
        u32 config_info = 0;
        struct pcb_config *p_pcb_info;
        u8 usb_speed = 1;       /* from register,1--HS, 0--FS  */
@@ -670,7 +671,10 @@ u32 initialize_cx231xx(struct cx231xx *dev)
 
        /* read board config register to find out which
        pcb config it is related to */
-       cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT, data, 4);
+       retval = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT,
+                                      data, 4);
+       if (retval < 0)
+               return retval;
 
        config_info = le32_to_cpu(*((__le32 *)data));
        usb_speed = (u8) (config_info & 0x1);
@@ -767,7 +771,7 @@ u32 initialize_cx231xx(struct cx231xx *dev)
                        cx231xx_info("bad senario!!!!!\n");
                        cx231xx_info("config_info=%x\n",
                                     (config_info & SELFPOWER_MASK));
-                       return 1;
+                       return -ENODEV;
                }
        }
 
index b3c6190e0c697a61af9fc41a04365cd71f37e14b..4511dc5d199cd74323ee86d9c989833a02039c9a 100644 (file)
@@ -221,6 +221,6 @@ enum INDEX_PCB_CONFIG{
 /***************************************************************************/
 struct cx231xx;
 
-u32 initialize_cx231xx(struct cx231xx *p_dev);
+int initialize_cx231xx(struct cx231xx *p_dev);
 
 #endif