From: Márton Németh <nm127@xxxxxxxxxxx> Separate the private struct sd where the sensor specific data is stored. The sensor field is no longer needed because we use separate functions. Brightness and color fields are not used in pac7311, so removed. Signed-off-by: Márton Németh <nm127@xxxxxxxxxxx> Cc: Thomas Kaiser <thomas@xxxxxxxxxxxxxxx> Cc: Theodore Kilgore <kilgota@xxxxxxxxxx> Cc: Kyle Guinn <elyk03@xxxxxxxxx> --- diff -uprN p/drivers/media/video/gspca/pac7311.c q/drivers/media/video/gspca/pac7311.c --- p/drivers/media/video/gspca/pac7311.c 2009-10-31 08:22:45.000000000 +0100 +++ q/drivers/media/video/gspca/pac7311.c 2009-10-31 08:26:17.000000000 +0100 @@ -57,8 +57,8 @@ MODULE_AUTHOR("Thomas Kaiser thomas@kais MODULE_DESCRIPTION("Pixart PAC7311"); MODULE_LICENSE("GPL"); -/* specific webcam descriptor */ -struct sd { +/* specific webcam descriptor for pac7302 */ +struct pac7302_sd { struct gspca_dev gspca_dev; /* !! must be the first item */ unsigned char brightness; @@ -70,7 +70,26 @@ struct sd { __u8 hflip; __u8 vflip; - __u8 sensor; +#define SENSOR_PAC7302 0 +#define SENSOR_PAC7311 1 + + u8 sof_read; + u8 autogain_ignore_frames; + + atomic_t avg_lum; +}; + +/* specific webcam descriptor for pac7311 */ +struct pac7311_sd { + struct gspca_dev gspca_dev; /* !! must be the first item */ + + unsigned char contrast; + unsigned char gain; + unsigned char exposure; + unsigned char autogain; + __u8 hflip; + __u8 vflip; + #define SENSOR_PAC7302 0 #define SENSOR_PAC7311 1 @@ -617,12 +636,11 @@ static void reg_w_var(struct gspca_dev * static int pac7302_sd_config(struct gspca_dev *gspca_dev, const struct usb_device_id *id) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; struct cam *cam; cam = &gspca_dev->cam; - sd->sensor = id->driver_info; PDEBUG(D_CONF, "Find Sensor PAC7302"); cam->cam_mode = &vga_mode[2]; /* only 640x480 */ cam->nmodes = 1; @@ -642,19 +660,16 @@ static int pac7302_sd_config(struct gspc static int pac7311_sd_config(struct gspca_dev *gspca_dev, const struct usb_device_id *id) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; struct cam *cam; cam = &gspca_dev->cam; - sd->sensor = id->driver_info; PDEBUG(D_CONF, "Find Sensor PAC7311"); cam->cam_mode = vga_mode; cam->nmodes = ARRAY_SIZE(vga_mode); - sd->brightness = BRIGHTNESS_DEF; sd->contrast = CONTRAST_DEF; - sd->colors = COLOR_DEF; sd->gain = GAIN_DEF; sd->exposure = EXPOSURE_DEF; sd->autogain = AUTOGAIN_DEF; @@ -666,7 +681,7 @@ static int pac7311_sd_config(struct gspc /* This function is used by pac7302 only */ static void pac7302_setbrightcont(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; int i, v; static const __u8 max[10] = {0x29, 0x33, 0x42, 0x5a, 0x6e, 0x80, 0x9f, 0xbb, @@ -693,7 +708,7 @@ static void pac7302_setbrightcont(struct /* This function is used by pac7311 only */ static void pac7311_setcontrast(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; reg_w(gspca_dev, 0xff, 0x04); reg_w(gspca_dev, 0x10, sd->contrast >> 4); @@ -704,7 +719,7 @@ static void pac7311_setcontrast(struct g /* This function is used by pac7302 only */ static void pac7302_setcolors(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; int i, v; static const int a[9] = {217, -212, 0, -101, 170, -67, -38, -315, 355}; @@ -725,7 +740,7 @@ static void pac7302_setcolors(struct gsp static void pac7302_setgain(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ reg_w(gspca_dev, 0x10, sd->gain >> 3); @@ -736,7 +751,7 @@ static void pac7302_setgain(struct gspca static void pac7311_setgain(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; int gain = GAIN_MAX - sd->gain; if (gain < 1) @@ -753,7 +768,7 @@ static void pac7311_setgain(struct gspca static void pac7302_setexposure(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; __u8 reg; /* register 2 of frame 3/4 contains the clock divider configuring the @@ -778,7 +793,7 @@ static void pac7302_setexposure(struct g static void pac7311_setexposure(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; __u8 reg; /* register 2 of frame 3/4 contains the clock divider configuring the @@ -807,7 +822,7 @@ static void pac7311_setexposure(struct g static void pac7302_sethvflip(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; __u8 data; reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ @@ -819,7 +834,7 @@ static void pac7302_sethvflip(struct gsp static void pac7311_sethvflip(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; __u8 data; reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ @@ -847,7 +862,7 @@ static int pac7311_sd_init(struct gspca_ static int pac7302_sd_start(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->sof_read = 0; @@ -873,7 +888,7 @@ static int pac7302_sd_start(struct gspca static int pac7311_sd_start(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->sof_read = 0; @@ -953,7 +968,7 @@ static void pac7311_sd_stop0(struct gspc static void pac7302_do_autogain(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; int avg_lum = atomic_read(&sd->avg_lum); int desired_lum, deadzone; @@ -981,7 +996,7 @@ static void pac7302_do_autogain(struct g static void pac7311_do_autogain(struct gspca_dev *gspca_dev) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; int avg_lum = atomic_read(&sd->avg_lum); int desired_lum, deadzone; @@ -1032,7 +1047,7 @@ static void pac7302_sd_pkt_scan(struct g __u8 *data, /* isoc packet */ int len) /* iso packet length */ { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; unsigned char *sof; sof = pac_find_sof(&sd->sof_read, data, len); @@ -1096,7 +1111,7 @@ static void pac7311_sd_pkt_scan(struct g __u8 *data, /* isoc packet */ int len) /* iso packet length */ { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; unsigned char *sof; sof = pac_find_sof(&sd->sof_read, data, len); @@ -1155,7 +1170,7 @@ static void pac7311_sd_pkt_scan(struct g static int pac7302_sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->brightness = val; if (gspca_dev->streaming) @@ -1165,7 +1180,7 @@ static int pac7302_sd_setbrightness(stru static int pac7302_sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->brightness; return 0; @@ -1173,7 +1188,7 @@ static int pac7302_sd_getbrightness(stru static int pac7302_sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->contrast = val; if (gspca_dev->streaming) { @@ -1184,7 +1199,7 @@ static int pac7302_sd_setcontrast(struct static int pac7311_sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->contrast = val; if (gspca_dev->streaming) { @@ -1195,7 +1210,7 @@ static int pac7311_sd_setcontrast(struct static int pac7302_sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->contrast; return 0; @@ -1203,7 +1218,7 @@ static int pac7302_sd_getcontrast(struct static int pac7311_sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->contrast; return 0; @@ -1211,7 +1226,7 @@ static int pac7311_sd_getcontrast(struct static int pac7302_sd_setcolors(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->colors = val; if (gspca_dev->streaming) @@ -1221,7 +1236,7 @@ static int pac7302_sd_setcolors(struct g static int pac7302_sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->colors; return 0; @@ -1229,7 +1244,7 @@ static int pac7302_sd_getcolors(struct g static int pac7302_sd_setgain(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->gain = val; if (gspca_dev->streaming) @@ -1239,7 +1254,7 @@ static int pac7302_sd_setgain(struct gsp static int pac7311_sd_setgain(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->gain = val; if (gspca_dev->streaming) @@ -1249,7 +1264,7 @@ static int pac7311_sd_setgain(struct gsp static int pac7302_sd_getgain(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->gain; return 0; @@ -1257,7 +1272,7 @@ static int pac7302_sd_getgain(struct gsp static int pac7311_sd_getgain(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->gain; return 0; @@ -1265,7 +1280,7 @@ static int pac7311_sd_getgain(struct gsp static int pac7302_sd_setexposure(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->exposure = val; if (gspca_dev->streaming) @@ -1275,7 +1290,7 @@ static int pac7302_sd_setexposure(struct static int pac7311_sd_setexposure(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->exposure = val; if (gspca_dev->streaming) @@ -1285,7 +1300,7 @@ static int pac7311_sd_setexposure(struct static int pac7302_sd_getexposure(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->exposure; return 0; @@ -1293,7 +1308,7 @@ static int pac7302_sd_getexposure(struct static int pac7311_sd_getexposure(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->exposure; return 0; @@ -1301,7 +1316,7 @@ static int pac7311_sd_getexposure(struct static int pac7302_sd_setautogain(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->autogain = val; /* when switching to autogain set defaults to make sure @@ -1324,7 +1339,7 @@ static int pac7302_sd_setautogain(struct static int pac7311_sd_setautogain(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->autogain = val; /* when switching to autogain set defaults to make sure @@ -1347,7 +1362,7 @@ static int pac7311_sd_setautogain(struct static int pac7302_sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->autogain; return 0; @@ -1355,7 +1370,7 @@ static int pac7302_sd_getautogain(struct static int pac7311_sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->autogain; return 0; @@ -1363,7 +1378,7 @@ static int pac7311_sd_getautogain(struct static int pac7302_sd_sethflip(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->hflip = val; if (gspca_dev->streaming) @@ -1373,7 +1388,7 @@ static int pac7302_sd_sethflip(struct gs static int pac7311_sd_sethflip(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->hflip = val; if (gspca_dev->streaming) @@ -1383,7 +1398,7 @@ static int pac7311_sd_sethflip(struct gs static int pac7302_sd_gethflip(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->hflip; return 0; @@ -1391,7 +1406,7 @@ static int pac7302_sd_gethflip(struct gs static int pac7311_sd_gethflip(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->hflip; return 0; @@ -1399,7 +1414,7 @@ static int pac7311_sd_gethflip(struct gs static int pac7302_sd_setvflip(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; sd->vflip = val; if (gspca_dev->streaming) @@ -1409,7 +1424,7 @@ static int pac7302_sd_setvflip(struct gs static int pac7311_sd_setvflip(struct gspca_dev *gspca_dev, __s32 val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; sd->vflip = val; if (gspca_dev->streaming) @@ -1419,7 +1434,7 @@ static int pac7311_sd_setvflip(struct gs static int pac7302_sd_getvflip(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7302_sd *sd = (struct pac7302_sd *) gspca_dev; *val = sd->vflip; return 0; @@ -1427,7 +1442,7 @@ static int pac7302_sd_getvflip(struct gs static int pac7311_sd_getvflip(struct gspca_dev *gspca_dev, __s32 *val) { - struct sd *sd = (struct sd *) gspca_dev; + struct pac7311_sd *sd = (struct pac7311_sd *) gspca_dev; *val = sd->vflip; return 0; @@ -1488,10 +1503,10 @@ static int sd_probe(struct usb_interface { if (id->driver_info == SENSOR_PAC7302) return gspca_dev_probe(intf, id, &pac7302_sd_desc, - sizeof(struct sd), THIS_MODULE); + sizeof(struct pac7302_sd), THIS_MODULE); else return gspca_dev_probe(intf, id, &pac7311_sd_desc, - sizeof(struct sd), THIS_MODULE); + sizeof(struct pac7311_sd), THIS_MODULE); } static struct usb_driver sd_driver = { -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html