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

V4L/DVB (10372): gspca - sonixj: Cleanup code.

parent a48196a2
Loading
Loading
Loading
Loading
+91 −91
Original line number Diff line number Diff line
@@ -36,28 +36,28 @@ struct sd {
	struct gspca_dev gspca_dev;	/* !! must be the first item */

	atomic_t avg_lum;
	unsigned int exposure;

	__u16 brightness;
	__u8 contrast;
	__u8 colors;
	__u8 autogain;
	__u8 blue;
	__u8 red;
	u32 exposure;

	u16 brightness;
	u8 contrast;
	u8 colors;
	u8 autogain;
	u8 blue;
	u8 red;
	u8 gamma;
	__u8 vflip;			/* ov7630 only */
	__u8 infrared;			/* mi0360 only */
	u8 vflip;			/* ov7630 only */
	u8 infrared;			/* mi0360 only */

	__s8 ag_cnt;
	s8 ag_cnt;
#define AG_CNT_START 13

	__u8 bridge;
	u8 bridge;
#define BRIDGE_SN9C102P 0
#define BRIDGE_SN9C105 1
#define BRIDGE_SN9C110 2
#define BRIDGE_SN9C120 3
#define BRIDGE_SN9C325 4
	__u8 sensor;			/* Type of image sensor chip */
	u8 sensor;			/* Type of image sensor chip */
#define SENSOR_HV7131R 0
#define SENSOR_MI0360 1
#define SENSOR_MO4000 2
@@ -65,7 +65,7 @@ struct sd {
#define SENSOR_OV7630 4
#define SENSOR_OV7648 5
#define SENSOR_OV7660 6
	__u8 i2c_base;
	u8 i2c_base;
};

/* V4L2 controls supported by the driver */
@@ -349,20 +349,20 @@ static const u8 *sn_tb[] = {
	sn_ov7660
};

static const __u8 gamma_def[17] = {
static const u8 gamma_def[17] = {
	0x00, 0x2d, 0x46, 0x5a, 0x6c, 0x7c, 0x8b, 0x99,
	0xa6, 0xb2, 0xbf, 0xca, 0xd5, 0xe0, 0xeb, 0xf5, 0xff
};


/* color matrix and offsets */
static const __u8 reg84[] = {
static const u8 reg84[] = {
	0x14, 0x00, 0x27, 0x00, 0x07, 0x00,	/* YR YG YB gains */
	0xe8, 0x0f, 0xda, 0x0f, 0x40, 0x00,	/* UR UG UB */
	0x3e, 0x00, 0xcd, 0x0f, 0xf7, 0x0f,	/* VR VG VB */
	0x00, 0x00, 0x00			/* YUV offsets */
};
static const __u8 hv7131r_sensor_init[][8] = {
static const u8 hv7131r_sensor_init[][8] = {
	{0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
	{0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},
	{0xd1, 0x11, 0x40, 0xff, 0x7f, 0x7f, 0x7f, 0x10},
@@ -393,9 +393,9 @@ static const __u8 hv7131r_sensor_init[][8] = {
	{0xa1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},
	{}
};
static const __u8 mi0360_sensor_init[][8] = {
static const u8 mi0360_sensor_init[][8] = {
	{0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
	{0xb1, 0x5d, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x10},
	{0xb1, 0x5d, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10},
	{0xb1, 0x5d, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xd1, 0x5d, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},
	{0xd1, 0x5d, 0x03, 0x01, 0xe2, 0x02, 0x82, 0x10},
@@ -416,7 +416,7 @@ static const __u8 mi0360_sensor_init[][8] = {
	{0xd1, 0x5d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xd1, 0x5d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xd1, 0x5d, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},
	{0xd1, 0x5d, 0x2F, 0xF7, 0xB0, 0x00, 0x04, 0x10},
	{0xd1, 0x5d, 0x2f, 0xf7, 0xB0, 0x00, 0x04, 0x10},
	{0xd1, 0x5d, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xd1, 0x5d, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},
	{0xb1, 0x5d, 0x3d, 0x06, 0x8f, 0x00, 0x00, 0x10},
@@ -447,7 +447,7 @@ static const __u8 mi0360_sensor_init[][8] = {
	{0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
	{}
};
static const __u8 mo4000_sensor_init[][8] = {
static const u8 mo4000_sensor_init[][8] = {
	{0xa1, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00, 0x10},
	{0xa1, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
@@ -470,7 +470,7 @@ static const __u8 mo4000_sensor_init[][8] = {
	{0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
	{}
};
static __u8 om6802_sensor_init[][8] = {
static const u8 om6802_sensor_init[][8] = {
	{0xa0, 0x34, 0x90, 0x05, 0x00, 0x00, 0x00, 0x10},
	{0xa0, 0x34, 0x49, 0x85, 0x00, 0x00, 0x00, 0x10},
	{0xa0, 0x34, 0x5a, 0xc0, 0x00, 0x00, 0x00, 0x10},
@@ -504,7 +504,7 @@ static __u8 om6802_sensor_init[][8] = {
/*	{0xa0, 0x34, 0x69, 0x01, 0x00, 0x00, 0x00, 0x10}, */
	{}
};
static const __u8 ov7630_sensor_init[][8] = {
static const u8 ov7630_sensor_init[][8] = {
	{0xa1, 0x21, 0x76, 0x01, 0x00, 0x00, 0x00, 0x10},
	{0xa1, 0x21, 0x12, 0xc8, 0x00, 0x00, 0x00, 0x10},
/* win: delay 20ms */
@@ -558,7 +558,7 @@ static const __u8 ov7630_sensor_init[][8] = {
	{}
};

static const __u8 ov7648_sensor_init[][8] = {
static const u8 ov7648_sensor_init[][8] = {
	{0xa1, 0x21, 0x76, 0x00, 0x00, 0x00, 0x00, 0x10},
	{0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10},	/* reset */
	{0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
@@ -604,7 +604,7 @@ static const __u8 ov7648_sensor_init[][8] = {
	{}
};

static const __u8 ov7660_sensor_init[][8] = {
static const u8 ov7660_sensor_init[][8] = {
	{0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */
/*		(delay 20ms) */
	{0xa1, 0x21, 0x12, 0x05, 0x00, 0x00, 0x00, 0x10},
@@ -693,28 +693,28 @@ static const __u8 ov7660_sensor_init[][8] = {
	{}
};

static const __u8 qtable4[] = {
	0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x08, 0x06,
	0x06, 0x08, 0x0a, 0x11,
	0x0a, 0x0a, 0x08, 0x08, 0x0a, 0x15, 0x0f, 0x0f, 0x0c, 0x11, 0x19, 0x15,
	0x19, 0x19, 0x17, 0x15,
	0x17, 0x17, 0x1b, 0x1d, 0x25, 0x21, 0x1b, 0x1d, 0x23, 0x1d, 0x17, 0x17,
	0x21, 0x2e, 0x21, 0x23,
	0x27, 0x29, 0x2c, 0x2c, 0x2c, 0x19, 0x1f, 0x30, 0x32, 0x2e, 0x29, 0x32,
	0x25, 0x29, 0x2c, 0x29,
	0x06, 0x08, 0x08, 0x0a, 0x08, 0x0a, 0x13, 0x0a, 0x0a, 0x13, 0x29, 0x1b,
	0x17, 0x1b, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29
static const u8 qtable4[] = {
	0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06,
	0x06, 0x06, 0x08, 0x06, 0x06, 0x08, 0x0a, 0x11,
	0x0a, 0x0a, 0x08, 0x08, 0x0a, 0x15, 0x0f, 0x0f,
	0x0c, 0x11, 0x19, 0x15, 0x19, 0x19, 0x17, 0x15,
	0x17, 0x17, 0x1b, 0x1d, 0x25, 0x21, 0x1b, 0x1d,
	0x23, 0x1d, 0x17, 0x17, 0x21, 0x2e, 0x21, 0x23,
	0x27, 0x29, 0x2c, 0x2c, 0x2c, 0x19, 0x1f, 0x30,
	0x32, 0x2e, 0x29, 0x32, 0x25, 0x29, 0x2c, 0x29,
	0x06, 0x08, 0x08, 0x0a, 0x08, 0x0a, 0x13, 0x0a,
	0x0a, 0x13, 0x29, 0x1b, 0x17, 0x1b, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
	0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29
};

/* read <len> bytes to gspca_dev->usb_buf */
static void reg_r(struct gspca_dev *gspca_dev,
		  __u16 value, int len)
		  u16 value, int len)
{
#ifdef GSPCA_DEBUG
	if (len > USB_BUF_SZ) {
@@ -733,8 +733,8 @@ static void reg_r(struct gspca_dev *gspca_dev,
}

static void reg_w1(struct gspca_dev *gspca_dev,
		   __u16 value,
		   __u8 data)
		   u16 value,
		   u8 data)
{
	PDEBUG(D_USBO, "reg_w1 [%02x] = %02x", value, data);
	gspca_dev->usb_buf[0] = data;
@@ -748,8 +748,8 @@ static void reg_w1(struct gspca_dev *gspca_dev,
			500);
}
static void reg_w(struct gspca_dev *gspca_dev,
			  __u16 value,
			  const __u8 *buffer,
			  u16 value,
			  const u8 *buffer,
			  int len)
{
	PDEBUG(D_USBO, "reg_w [%02x] = %02x %02x ..",
@@ -771,7 +771,7 @@ static void reg_w(struct gspca_dev *gspca_dev,
}

/* I2C write 1 byte */
static void i2c_w1(struct gspca_dev *gspca_dev, __u8 reg, __u8 val)
static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
{
	struct sd *sd = (struct sd *) gspca_dev;

@@ -796,7 +796,7 @@ static void i2c_w1(struct gspca_dev *gspca_dev, __u8 reg, __u8 val)

/* I2C write 8 bytes */
static void i2c_w8(struct gspca_dev *gspca_dev,
		   const __u8 *buffer)
		   const u8 *buffer)
{
	memcpy(gspca_dev->usb_buf, buffer, 8);
	usb_control_msg(gspca_dev->dev,
@@ -810,10 +810,10 @@ static void i2c_w8(struct gspca_dev *gspca_dev,
}

/* read 5 bytes in gspca_dev->usb_buf */
static void i2c_r5(struct gspca_dev *gspca_dev, __u8 reg)
static void i2c_r5(struct gspca_dev *gspca_dev, u8 reg)
{
	struct sd *sd = (struct sd *) gspca_dev;
	__u8 mode[8];
	u8 mode[8];

	mode[0] = 0x81 | 0x10;
	mode[1] = sd->i2c_base;
@@ -855,15 +855,15 @@ static int probesensor(struct gspca_dev *gspca_dev)
}

static int configure_gpio(struct gspca_dev *gspca_dev,
			  const __u8 *sn9c1xx)
			  const u8 *sn9c1xx)
{
	struct sd *sd = (struct sd *) gspca_dev;
	const __u8 *reg9a;
	static const __u8 reg9a_def[] =
	const u8 *reg9a;
	static const u8 reg9a_def[] =
		{0x08, 0x40, 0x20, 0x10, 0x00, 0x04};
	static const __u8 reg9a_sn9c325[] =
	static const u8 reg9a_sn9c325[] =
		{0x0a, 0x40, 0x38, 0x30, 0x00, 0x20};
	static const __u8 regd4[] = {0x60, 0x00, 0x00};
	static const u8 regd4[] = {0x60, 0x00, 0x00};

	reg_w1(gspca_dev, 0xf1, 0x00);
	reg_w1(gspca_dev, 0x01, sn9c1xx[1]);
@@ -931,7 +931,7 @@ static int configure_gpio(struct gspca_dev *gspca_dev,
static void hv7131R_InitSensor(struct gspca_dev *gspca_dev)
{
	int i = 0;
	static const __u8 SetSensorClk[] =	/* 0x08 Mclk */
	static const u8 SetSensorClk[] =	/* 0x08 Mclk */
		{ 0xa1, 0x11, 0x01, 0x18, 0x00, 0x00, 0x00, 0x10 };

	while (hv7131r_sensor_init[i][0]) {
@@ -1059,8 +1059,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
static int sd_init(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	__u8 regGpio[] = { 0x29, 0x74 };
	__u8 regF1;
	u8 regGpio[] = { 0x29, 0x74 };
	u8 regF1;

	/* setup a selector by bridge */
	reg_w1(gspca_dev, 0xf1, 0x01);
@@ -1100,20 +1100,14 @@ static int sd_init(struct gspca_dev *gspca_dev)
	return 0;
}

static unsigned int setexposure(struct gspca_dev *gspca_dev,
				unsigned int expo)
static u32 setexposure(struct gspca_dev *gspca_dev,
			u32 expo)
{
	struct sd *sd = (struct sd *) gspca_dev;
	static const __u8 doit[] =		/* update sensor */
		{ 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 };
	static const __u8 sensorgo[] =		/* sensor on */
		{ 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 };
	static const __u8 gainMo[] =
		{ 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d };

	switch (sd->sensor) {
	case SENSOR_HV7131R: {
		__u8 Expodoit[] =
		u8 Expodoit[] =
			{ 0xc1, 0x11, 0x25, 0x07, 0x27, 0xc0, 0x00, 0x16 };

		Expodoit[3] = expo >> 16;
@@ -1123,8 +1117,12 @@ static unsigned int setexposure(struct gspca_dev *gspca_dev,
		break;
	    }
	case SENSOR_MI0360: {
		__u8 expoMi[] =	 /* exposure 0x0635 -> 4 fp/s 0x10 */
		u8 expoMi[] =	 /* exposure 0x0635 -> 4 fp/s 0x10 */
			{ 0xb1, 0x5d, 0x09, 0x06, 0x35, 0x00, 0x00, 0x16 };
		static const u8 doit[] =		/* update sensor */
			{ 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 };
		static const u8 sensorgo[] =		/* sensor on */
			{ 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 };

		if (expo > 0x0635)
			expo = 0x0635;
@@ -1138,10 +1136,12 @@ static unsigned int setexposure(struct gspca_dev *gspca_dev,
		break;
	    }
	case SENSOR_MO4000: {
		__u8 expoMof[] =
		u8 expoMof[] =
			{ 0xa1, 0x21, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x10 };
		__u8 expoMo10[] =
		u8 expoMo10[] =
			{ 0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10 };
		static const u8 gainMo[] =
			{ 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d };

		if (expo > 0x1fff)
			expo = 0x1fff;
@@ -1160,7 +1160,7 @@ static unsigned int setexposure(struct gspca_dev *gspca_dev,
		break;
	    }
	case SENSOR_OM6802: {
		__u8 gainOm[] =
		u8 gainOm[] =
			{ 0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10 };

		if (expo > 0x03ff)
@@ -1181,7 +1181,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	unsigned int expo;
	__u8 k2;
	u8 k2;

	k2 = ((int) sd->brightness - 0x8000) >> 10;
	switch (sd->sensor) {
@@ -1211,8 +1211,8 @@ static void setbrightness(struct gspca_dev *gspca_dev)
static void setcontrast(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	__u8 k2;
	__u8 contrast[6];
	u8 k2;
	u8 contrast[6];

	k2 = sd->contrast * 0x30 / (CONTRAST_MAX + 1) + 0x10;	/* 10..40 */
	contrast[0] = (k2 + 1) / 2;		/* red */
@@ -1228,8 +1228,8 @@ static void setcolors(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	int i, v;
	__u8 reg8a[12];			/* U & V gains */
	static __s16 uv[6] = {		/* same as reg84 in signed decimal */
	u8 reg8a[12];			/* U & V gains */
	static s16 uv[6] = {		/* same as reg84 in signed decimal */
		-24, -38, 64,		/* UR UG UB */
		 62, -51, -9		/* VR VG VB */
	};
@@ -1297,13 +1297,13 @@ static int sd_start(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	int i;
	__u8 reg1, reg17, reg18;
	const __u8 *sn9c1xx;
	u8 reg1, reg17, reg18;
	const u8 *sn9c1xx;
	int mode;
	static const __u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f };
	static const __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
	static const __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd };	/* MI0360 */
	static const __u8 CE_ov76xx[] =
	static const u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f };
	static const u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
	static const u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd };	/* MI0360 */
	static const u8 CE_ov76xx[] =
				{ 0x32, 0xdd, 0x32, 0xdd };

	sn9c1xx = sn_tb[(int) sd->sensor];
@@ -1460,14 +1460,14 @@ static int sd_start(struct gspca_dev *gspca_dev)
static void sd_stopN(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	static const __u8 stophv7131[] =
	static const u8 stophv7131[] =
		{ 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 };
	static const __u8 stopmi0360[] =
	static const u8 stopmi0360[] =
		{ 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 };
	static const __u8 stopov7648[] =
	static const u8 stopov7648[] =
		{ 0xa1, 0x21, 0x76, 0x20, 0x00, 0x00, 0x00, 0x10 };
	__u8 data;
	const __u8 *sn9c1xx;
	u8 data;
	const u8 *sn9c1xx;

	data = 0x0b;
	switch (sd->sensor) {
@@ -1503,8 +1503,8 @@ static void do_autogain(struct gspca_dev *gspca_dev)
	struct sd *sd = (struct sd *) gspca_dev;
	int delta;
	int expotimes;
	__u8 luma_mean = 130;
	__u8 luma_delta = 20;
	u8 luma_mean = 130;
	u8 luma_delta = 20;

	/* Thanks S., without your advice, autobright should not work :) */
	if (sd->ag_cnt < 0)
@@ -1546,7 +1546,7 @@ static void do_autogain(struct gspca_dev *gspca_dev)
/* This function is run at interrupt level. */
static void sd_pkt_scan(struct gspca_dev *gspca_dev,
			struct gspca_frame *frame,	/* target */
			__u8 *data,			/* isoc packet */
			u8 *data,			/* isoc packet */
			int len)			/* iso packet length */
{
	struct sd *sd = (struct sd *) gspca_dev;