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

Commit 9919fe89 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB: gspca - zc3xx: Change the resolutions of some sensors



The sensors adcm2700, mc501cb and ov7620 cannot have the full height
permitted by the zc3xx bridges. This change removes 8 pixels at the
bottom of the images.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 6aeb0905
Loading
Loading
Loading
Loading
+46 −6
Original line number Original line Diff line number Diff line
@@ -192,6 +192,19 @@ static const struct v4l2_pix_format vga_mode[] = {
		.priv = 0},
		.priv = 0},
};
};


static const struct v4l2_pix_format broken_vga_mode[] = {
	{320, 232, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
		.bytesperline = 320,
		.sizeimage = 320 * 232 * 4 / 8 + 590,
		.colorspace = V4L2_COLORSPACE_JPEG,
		.priv = 1},
	{640, 472, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
		.bytesperline = 640,
		.sizeimage = 640 * 472 * 3 / 8 + 590,
		.colorspace = V4L2_COLORSPACE_JPEG,
		.priv = 0},
};

static const struct v4l2_pix_format sif_mode[] = {
static const struct v4l2_pix_format sif_mode[] = {
	{176, 144, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
	{176, 144, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
		.bytesperline = 176,
		.bytesperline = 176,
@@ -6573,7 +6586,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
	struct sd *sd = (struct sd *) gspca_dev;
	struct sd *sd = (struct sd *) gspca_dev;
	struct cam *cam;
	struct cam *cam;
	int sensor;
	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_ADCM2700 0 */
		4,	/* SENSOR_CS2102 1 */
		4,	/* SENSOR_CS2102 1 */
@@ -6595,6 +6607,27 @@ static int sd_config(struct gspca_dev *gspca_dev,
		3,	/* SENSOR_TAS5130CXX 17 */
		3,	/* SENSOR_TAS5130CXX 17 */
		3,	/* SENSOR_TAS5130C_VF0250 18 */
		3,	/* SENSOR_TAS5130C_VF0250 18 */
	};
	};
	static const u8 mode_tb[SENSOR_MAX] = {
		2,	/* SENSOR_ADCM2700 0 */
		1,	/* SENSOR_CS2102 1 */
		1,	/* SENSOR_CS2102K 2 */
		1,	/* SENSOR_GC0305 3 */
		1,	/* SENSOR_HDCS2020b 4 */
		1,	/* SENSOR_HV7131B 5 */
		1,	/* SENSOR_HV7131C 6 */
		1,	/* SENSOR_ICM105A 7 */
		2,	/* SENSOR_MC501CB 8 */
		1,	/* SENSOR_MI0360SOC 9 */
		2,	/* SENSOR_OV7620 10 */
		1,	/* SENSOR_OV7630C 11 */
		0,	/* SENSOR_PAS106 12 */
		1,	/* SENSOR_PAS202B 13 */
		1,	/* SENSOR_PB0330 14 */
		1,	/* SENSOR_PO2030 15 */
		1,	/* SENSOR_TAS5130CK 16 */
		1,	/* SENSOR_TAS5130CXX 17 */
		1,	/* SENSOR_TAS5130C_VF0250 18 */
	};


	/* define some sensors from the vendor/product */
	/* define some sensors from the vendor/product */
	sd->sharpness = SHARPNESS_DEF;
	sd->sharpness = SHARPNESS_DEF;
@@ -6668,7 +6701,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
		case 0x0f:
		case 0x0f:
			PDEBUG(D_PROBE, "Find Sensor PAS106");
			PDEBUG(D_PROBE, "Find Sensor PAS106");
			sd->sensor = SENSOR_PAS106;
			sd->sensor = SENSOR_PAS106;
			vga = 0;		/* SIF */
			break;
			break;
		case 0x10:
		case 0x10:
		case 0x12:
		case 0x12:
@@ -6740,12 +6772,20 @@ static int sd_config(struct gspca_dev *gspca_dev,
	cam = &gspca_dev->cam;
	cam = &gspca_dev->cam;
/*fixme:test*/
/*fixme:test*/
	gspca_dev->nbalt--;
	gspca_dev->nbalt--;
	if (vga) {
	switch (mode_tb[sd->sensor]) {
		cam->cam_mode = vga_mode;
	case 0:
		cam->nmodes = ARRAY_SIZE(vga_mode);
	} else {
		cam->cam_mode = sif_mode;
		cam->cam_mode = sif_mode;
		cam->nmodes = ARRAY_SIZE(sif_mode);
		cam->nmodes = ARRAY_SIZE(sif_mode);
		break;
	case 1:
		cam->cam_mode = vga_mode;
		cam->nmodes = ARRAY_SIZE(vga_mode);
		break;
	default:
/*	case 2: */
		cam->cam_mode = broken_vga_mode;
		cam->nmodes = ARRAY_SIZE(broken_vga_mode);
		break;
	}
	}
	sd->brightness = BRIGHTNESS_DEF;
	sd->brightness = BRIGHTNESS_DEF;
	sd->contrast = CONTRAST_DEF;
	sd->contrast = CONTRAST_DEF;