Commit 52841e5e authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] cx231xx: return an error if it can't read PCB config

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: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 4d2a7d35
...@@ -997,7 +997,11 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev, ...@@ -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; dev->cx231xx_gpio_i2c_write = cx231xx_gpio_i2c_write;
/* Query cx231xx to find what pcb config it is related to */ /* 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, /*To workaround error number=-71 on EP0 for VideoGrabber,
need set alt here.*/ need set alt here.*/
......
...@@ -654,8 +654,9 @@ static struct pcb_config cx231xx_Scenario[] = { ...@@ -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; u32 config_info = 0;
struct pcb_config *p_pcb_info; struct pcb_config *p_pcb_info;
u8 usb_speed = 1; /* from register,1--HS, 0--FS */ u8 usb_speed = 1; /* from register,1--HS, 0--FS */
...@@ -670,7 +671,10 @@ u32 initialize_cx231xx(struct cx231xx *dev) ...@@ -670,7 +671,10 @@ u32 initialize_cx231xx(struct cx231xx *dev)
/* read board config register to find out which /* read board config register to find out which
pcb config it is related to */ 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)); config_info = le32_to_cpu(*((__le32 *)data));
usb_speed = (u8) (config_info & 0x1); usb_speed = (u8) (config_info & 0x1);
...@@ -767,7 +771,7 @@ u32 initialize_cx231xx(struct cx231xx *dev) ...@@ -767,7 +771,7 @@ u32 initialize_cx231xx(struct cx231xx *dev)
cx231xx_info("bad senario!!!!!\n"); cx231xx_info("bad senario!!!!!\n");
cx231xx_info("config_info=%x\n", cx231xx_info("config_info=%x\n",
(config_info & SELFPOWER_MASK)); (config_info & SELFPOWER_MASK));
return 1; return -ENODEV;
} }
} }
......
...@@ -221,6 +221,6 @@ enum INDEX_PCB_CONFIG{ ...@@ -221,6 +221,6 @@ enum INDEX_PCB_CONFIG{
/***************************************************************************/ /***************************************************************************/
struct cx231xx; struct cx231xx;
u32 initialize_cx231xx(struct cx231xx *p_dev); int initialize_cx231xx(struct cx231xx *p_dev);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment