Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7880f661 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (11868): gspca - spca508: Optimize code.

parent 1af63b3d
Loading
Loading
Loading
Loading
+16 −30
Original line number Diff line number Diff line
@@ -1305,16 +1305,16 @@ static int reg_read(struct gspca_dev *gspca_dev,
}

static int write_vector(struct gspca_dev *gspca_dev,
			const u16 data[][2])
			const u16 (*data)[2])
{
	struct usb_device *dev = gspca_dev->dev;
	int ret, i = 0;
	int ret;

	while (data[i][1] != 0) {
		ret = reg_write(dev, data[i][1], data[i][0]);
	while ((*data)[1] != 0) {
		ret = reg_write(dev, (*data)[1], (*data)[0]);
		if (ret < 0)
			return ret;
		i++;
		data++;
	}
	return 0;
}
@@ -1326,6 +1326,15 @@ static int sd_config(struct gspca_dev *gspca_dev,
	struct sd *sd = (struct sd *) gspca_dev;
	struct cam *cam;
	int data1, data2;
	const u16 (*init_data)[2];
	static const u16 (*(init_data_tb[]))[2] = {
		spca508_vista_init_data,	/* CreativeVista 0 */
		spca508_sightcam_init_data,	/* HamaUSBSightcam 1 */
		spca508_sightcam2_init_data,	/* HamaUSBSightcam2 2 */
		spca508cs110_init_data,		/* IntelEasyPCCamera 3 */
		spca508cs110_init_data,		/* MicroInnovationIC200 4 */
		spca508_init_data,		/* ViewQuestVQ110 5 */
	};

	/* Read from global register the USB product and vendor IDs, just to
	 * prove that we can communicate with the device.  This works, which
@@ -1349,31 +1358,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
	sd->subtype = id->driver_info;
	sd->brightness = BRIGHTNESS_DEF;

	switch (sd->subtype) {
	case ViewQuestVQ110:
		if (write_vector(gspca_dev, spca508_init_data))
			return -1;
		break;
	default:
/*	case MicroInnovationIC200: */
/*	case IntelEasyPCCamera: */
		if (write_vector(gspca_dev, spca508cs110_init_data))
			return -1;
		break;
	case HamaUSBSightcam:
		if (write_vector(gspca_dev, spca508_sightcam_init_data))
			return -1;
		break;
	case HamaUSBSightcam2:
		if (write_vector(gspca_dev, spca508_sightcam2_init_data))
			return -1;
		break;
	case CreativeVista:
		if (write_vector(gspca_dev, spca508_vista_init_data))
			return -1;
		break;
	}
	return 0;			/* success */
	init_data = init_data_tb[sd->subtype];
	return write_vector(gspca_dev, init_data);
}

/* this function is called at probe and resume time */