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

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

V4L/DVB (13917): gspca - zc3xx: Cleanup code.



- update copyright and module author
- change __u8/16 to u8/16
- set unsigned the sd sensor
- initialize the controls by macros

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5599678c
Loading
Loading
Loading
Loading
+64 −66
Original line number Diff line number Diff line
/*
 * Z-Star/Vimicro zc301/zc302p/vc30x library
 *	Copyright (C) 2004 2005 2006 Michel Xhaard
 *		mxhaard@magic.fr
 *
 * V4L2 by Jean-Francois Moine <http://moinejf.free.fr>
 * Copyright (C) 2009-2010 Jean-Francois Moine <http://moinejf.free.fr>
 * Copyright (C) 2004 2005 2006 Michel Xhaard mxhaard@magic.fr
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
@@ -25,7 +24,7 @@
#include "gspca.h"
#include "jpeg.h"

MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>, "
MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, "
		"Serge A. Suchkov <Serge.A.S@tochka.ru>");
MODULE_DESCRIPTION("GSPCA ZC03xx/VC3xx USB Camera Driver");
MODULE_LICENSE("GPL");
@@ -39,18 +38,18 @@ static int force_sensor = -1;
struct sd {
	struct gspca_dev gspca_dev;	/* !! must be the first item */

	__u8 brightness;
	__u8 contrast;
	__u8 gamma;
	__u8 autogain;
	__u8 lightfreq;
	__u8 sharpness;
	u8 brightness;
	u8 contrast;
	u8 gamma;
	u8 autogain;
	u8 lightfreq;
	u8 sharpness;
	u8 quality;			/* image quality */
#define QUALITY_MIN 40
#define QUALITY_MAX 60
#define QUALITY_DEF 50

	signed char sensor;		/* Type of image sensor chip */
	u8 sensor;		/* Type of image sensor chip */
/* !! values used in different tables */
#define SENSOR_ADCM2700 0
#define SENSOR_CS2102 1
@@ -94,7 +93,6 @@ static int sd_getsharpness(struct gspca_dev *gspca_dev, __s32 *val);

static const struct ctrl sd_ctrls[] = {
#define BRIGHTNESS_IDX 0
#define SD_BRIGHTNESS 0
	{
	    {
		.id      = V4L2_CID_BRIGHTNESS,
@@ -103,12 +101,12 @@ static const struct ctrl sd_ctrls[] = {
		.minimum = 0,
		.maximum = 255,
		.step    = 1,
		.default_value = 128,
#define BRIGHTNESS_DEF 128
		.default_value = BRIGHTNESS_DEF,
	    },
	    .set = sd_setbrightness,
	    .get = sd_getbrightness,
	},
#define SD_CONTRAST 1
	{
	    {
		.id      = V4L2_CID_CONTRAST,
@@ -117,12 +115,12 @@ static const struct ctrl sd_ctrls[] = {
		.minimum = 0,
		.maximum = 255,
		.step    = 1,
		.default_value = 128,
#define CONTRAST_DEF 128
		.default_value = CONTRAST_DEF,
	    },
	    .set = sd_setcontrast,
	    .get = sd_getcontrast,
	},
#define SD_GAMMA 2
	{
	    {
		.id      = V4L2_CID_GAMMA,
@@ -136,7 +134,6 @@ static const struct ctrl sd_ctrls[] = {
	    .set = sd_setgamma,
	    .get = sd_getgamma,
	},
#define SD_AUTOGAIN 3
	{
	    {
		.id      = V4L2_CID_AUTOGAIN,
@@ -145,13 +142,13 @@ static const struct ctrl sd_ctrls[] = {
		.minimum = 0,
		.maximum = 1,
		.step    = 1,
		.default_value = 1,
#define AUTOGAIN_DEF 1
		.default_value = AUTOGAIN_DEF,
	    },
	    .set = sd_setautogain,
	    .get = sd_getautogain,
	},
#define LIGHTFREQ_IDX 4
#define SD_FREQ 4
	{
	    {
		.id	 = V4L2_CID_POWER_LINE_FREQUENCY,
@@ -160,12 +157,12 @@ static const struct ctrl sd_ctrls[] = {
		.minimum = 0,
		.maximum = 2,	/* 0: 0, 1: 50Hz, 2:60Hz */
		.step    = 1,
		.default_value = 1,
#define FREQ_DEF 0
		.default_value = FREQ_DEF,
	    },
	    .set = sd_setfreq,
	    .get = sd_getfreq,
	},
#define SD_SHARPNESS 5
	{
	    {
		.id	 = V4L2_CID_SHARPNESS,
@@ -174,7 +171,8 @@ static const struct ctrl sd_ctrls[] = {
		.minimum = 0,
		.maximum = 3,
		.step    = 1,
		.default_value = 2,
#define SHARPNESS_DEF 2
		.default_value = SHARPNESS_DEF,
	    },
	    .set = sd_setsharpness,
	    .get = sd_getsharpness,
@@ -209,9 +207,9 @@ static const struct v4l2_pix_format sif_mode[] = {

/* usb exchanges */
struct usb_action {
	__u8	req;
	__u8	val;
	__u16	idx;
	u8	req;
	u8	val;
	u16	idx;
};

static const struct usb_action adcm2700_Initial[] = {
@@ -5841,7 +5839,7 @@ static const struct usb_action tas5130c_vf0250_NoFlikerScale[] = {
};

static u8 reg_r_i(struct gspca_dev *gspca_dev,
		__u16 index)
		u16 index)
{
	usb_control_msg(gspca_dev->dev,
			usb_rcvctrlpipe(gspca_dev->dev, 0),
@@ -5854,7 +5852,7 @@ static u8 reg_r_i(struct gspca_dev *gspca_dev,
}

static u8 reg_r(struct gspca_dev *gspca_dev,
		__u16 index)
		u16 index)
{
	u8 ret;

@@ -5864,8 +5862,8 @@ static u8 reg_r(struct gspca_dev *gspca_dev,
}

static void reg_w_i(struct usb_device *dev,
			__u8 value,
			__u16 index)
			u8 value,
			u16 index)
{
	usb_control_msg(dev,
			usb_sndctrlpipe(dev, 0),
@@ -5876,18 +5874,18 @@ static void reg_w_i(struct usb_device *dev,
}

static void reg_w(struct usb_device *dev,
			__u8 value,
			__u16 index)
			u8 value,
			u16 index)
{
	PDEBUG(D_USBO, "reg w [%04x] = %02x", index, value);
	reg_w_i(dev, value, index);
}

static __u16 i2c_read(struct gspca_dev *gspca_dev,
			__u8 reg)
static u16 i2c_read(struct gspca_dev *gspca_dev,
			u8 reg)
{
	__u8 retbyte;
	__u16 retval;
	u8 retbyte;
	u16 retval;

	reg_w_i(gspca_dev->dev, reg, 0x0092);
	reg_w_i(gspca_dev->dev, 0x02, 0x0090);		/* <- read command */
@@ -5902,12 +5900,12 @@ static __u16 i2c_read(struct gspca_dev *gspca_dev,
	return retval;
}

static __u8 i2c_write(struct gspca_dev *gspca_dev,
			__u8 reg,
			__u8 valL,
			__u8 valH)
static u8 i2c_write(struct gspca_dev *gspca_dev,
			u8 reg,
			u8 valL,
			u8 valH)
{
	__u8 retbyte;
	u8 retbyte;

	reg_w_i(gspca_dev->dev, reg, 0x92);
	reg_w_i(gspca_dev->dev, valL, 0x93);
@@ -5959,24 +5957,24 @@ static void setmatrix(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	int i;
	const __u8 *matrix;
	const u8 *matrix;
	static const u8 adcm2700_matrix[9] =
/*		{0x66, 0xed, 0xed, 0xed, 0x66, 0xed, 0xed, 0xed, 0x66}; */
/*ms-win*/
		{0x74, 0xed, 0xed, 0xed, 0x74, 0xed, 0xed, 0xed, 0x74};
	static const __u8 gc0305_matrix[9] =
	static const u8 gc0305_matrix[9] =
		{0x50, 0xf8, 0xf8, 0xf8, 0x50, 0xf8, 0xf8, 0xf8, 0x50};
	static const __u8 ov7620_matrix[9] =
	static const u8 ov7620_matrix[9] =
		{0x58, 0xf4, 0xf4, 0xf4, 0x58, 0xf4, 0xf4, 0xf4, 0x58};
	static const __u8 pas202b_matrix[9] =
	static const u8 pas202b_matrix[9] =
		{0x4c, 0xf5, 0xff, 0xf9, 0x51, 0xf5, 0xfb, 0xed, 0x5f};
	static const __u8 po2030_matrix[9] =
	static const u8 po2030_matrix[9] =
		{0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60};
	static const u8 tas5130c_matrix[9] =
		{0x68, 0xec, 0xec, 0xec, 0x68, 0xec, 0xec, 0xec, 0x68};
	static const __u8 vf0250_matrix[9] =
	static const u8 vf0250_matrix[9] =
		{0x7b, 0xea, 0xea, 0xea, 0x7b, 0xea, 0xea, 0xea, 0x7b};
	static const __u8 *matrix_tb[SENSOR_MAX] = {
	static const u8 *matrix_tb[SENSOR_MAX] = {
		adcm2700_matrix, /* SENSOR_ADCM2700 0 */
		ov7620_matrix,	/* SENSOR_CS2102 1 */
		NULL,		/* SENSOR_CS2102K 2 */
@@ -6008,7 +6006,7 @@ static void setmatrix(struct gspca_dev *gspca_dev)
static void setbrightness(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	__u8 brightness;
	u8 brightness;

	switch (sd->sensor) {
	case SENSOR_GC0305:
@@ -6037,7 +6035,7 @@ static void setsharpness(struct gspca_dev *gspca_dev)
	struct sd *sd = (struct sd *) gspca_dev;
	struct usb_device *dev = gspca_dev->dev;
	int sharpness;
	static const __u8 sharpness_tb[][2] = {
	static const u8 sharpness_tb[][2] = {
		{0x02, 0x03},
		{0x04, 0x07},
		{0x08, 0x0f},
@@ -6056,7 +6054,7 @@ static void setcontrast(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	struct usb_device *dev = gspca_dev->dev;
	const __u8 *Tgamma;
	const u8 *Tgamma;
	int g, i, k, adj, gp;
	u8 gr[16];
	static const u8 delta_tb[16] =		/* delta for contrast */
@@ -6111,7 +6109,7 @@ static void setquality(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	struct usb_device *dev = gspca_dev->dev;
	__u8 frxt;
	u8 frxt;

	switch (sd->sensor) {
	case SENSOR_ADCM2700:
@@ -6233,7 +6231,7 @@ static int setlightfreq(struct gspca_dev *gspca_dev)
	mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
	if (!mode)
		i++;			/* 640x480 */
	zc3_freq = freq_tb[(int) sd->sensor][i];
	zc3_freq = freq_tb[sd->sensor][i];
	if (zc3_freq != NULL) {
		usb_exchange(gspca_dev, zc3_freq);
		switch (sd->sensor) {
@@ -6262,7 +6260,7 @@ static int setlightfreq(struct gspca_dev *gspca_dev)
static void setautogain(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	__u8 autoval;
	u8 autoval;

	if (sd->autogain)
		autoval = 0x42;
@@ -6312,7 +6310,7 @@ static void start_2wr_probe(struct usb_device *dev, int sensor)

static int sif_probe(struct gspca_dev *gspca_dev)
{
	__u16 checkword;
	u16 checkword;

	start_2wr_probe(gspca_dev->dev, 0x0f);		/* PAS106 */
	reg_w(gspca_dev->dev, 0x08, 0x008d);
@@ -6422,8 +6420,8 @@ static int vga_2wr_probe(struct gspca_dev *gspca_dev)
}

struct sensor_by_chipset_revision {
	__u16 revision;
	__u8 internal_sensor_id;
	u16 revision;
	u8 internal_sensor_id;
};
static const struct sensor_by_chipset_revision chipset_revision_sensor[] = {
	{0xc000, 0x12},		/* TAS5130C */
@@ -6440,7 +6438,7 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev)
	struct sd *sd = (struct sd *) gspca_dev;
	struct usb_device *dev = gspca_dev->dev;
	int i;
	__u8 retbyte;
	u8 retbyte;
	u16 retword;

/*fixme: lack of 8b=b3 (11,12)-> 10, 8b=e0 (14,15,16)-> 12 found in gspcav1*/
@@ -6589,7 +6587,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
	struct cam *cam;
	int sensor;
	int vga = 1;		/* 1: vga, 0: sif */
	static const __u8 gamma[SENSOR_MAX] = {
	static const u8 gamma[SENSOR_MAX] = {
		4,	/* SENSOR_ADCM2700 0 */
		4,	/* SENSOR_CS2102 1 */
		5,	/* SENSOR_CS2102K 2 */
@@ -6612,7 +6610,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
	};

	/* define some sensors from the vendor/product */
	sd->sharpness = 2;
	sd->sharpness = SHARPNESS_DEF;
	sd->sensor = id->driver_info;
	sensor = zcxx_probeSensor(gspca_dev);
	if (sensor >= 0)
@@ -6764,11 +6762,11 @@ static int sd_config(struct gspca_dev *gspca_dev,
		cam->cam_mode = sif_mode;
		cam->nmodes = ARRAY_SIZE(sif_mode);
	}
	sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value;
	sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value;
	sd->gamma = gamma[(int) sd->sensor];
	sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value;
	sd->lightfreq = sd_ctrls[SD_FREQ].qctrl.default_value;
	sd->brightness = BRIGHTNESS_DEF;
	sd->contrast = CONTRAST_DEF;
	sd->gamma = gamma[sd->sensor];
	sd->autogain = AUTOGAIN_DEF;
	sd->lightfreq = FREQ_DEF;
	sd->quality = QUALITY_DEF;

	switch (sd->sensor) {
@@ -6835,7 +6833,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
	jpeg_set_qual(sd->jpeg_hdr, sd->quality);

	mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
	zc3_init = init_tb[(int) sd->sensor][mode];
	zc3_init = init_tb[sd->sensor][mode];
	switch (sd->sensor) {
	case SENSOR_HV7131C:
		zcxx_probeSensor(gspca_dev);