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

[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
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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.*/
+7 −3
Original line number Diff line number Diff line
@@ -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;
		}
	}

+1 −1
Original line number Diff line number Diff line
@@ -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