mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
[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: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
4d2a7d3509
commit
52841e5e14
@ -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.*/
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user