|
@@ -47,24 +47,29 @@ struct sd {
|
|
|
u8 image_offset;
|
|
|
|
|
|
u8 bridge;
|
|
|
-#define BRIDGE_VC0321 0
|
|
|
-#define BRIDGE_VC0323 1
|
|
|
u8 sensor;
|
|
|
-#define SENSOR_HV7131R 0
|
|
|
-#define SENSOR_MI0360 1
|
|
|
-#define SENSOR_MI1310_SOC 2
|
|
|
-#define SENSOR_MI1320 3
|
|
|
-#define SENSOR_MI1320_SOC 4
|
|
|
-#define SENSOR_OV7660 5
|
|
|
-#define SENSOR_OV7670 6
|
|
|
-#define SENSOR_PO1200 7
|
|
|
-#define SENSOR_PO3130NC 8
|
|
|
-#define SENSOR_POxxxx 9
|
|
|
u8 flags;
|
|
|
#define FL_SAMSUNG 0x01 /* SamsungQ1 (2 sensors) */
|
|
|
#define FL_HFLIP 0x02 /* mirrored by default */
|
|
|
#define FL_VFLIP 0x04 /* vertical flipped by default */
|
|
|
};
|
|
|
+enum bridges {
|
|
|
+ BRIDGE_VC0321,
|
|
|
+ BRIDGE_VC0323,
|
|
|
+};
|
|
|
+enum sensors {
|
|
|
+ SENSOR_HV7131R,
|
|
|
+ SENSOR_MI0360,
|
|
|
+ SENSOR_MI1310_SOC,
|
|
|
+ SENSOR_MI1320,
|
|
|
+ SENSOR_MI1320_SOC,
|
|
|
+ SENSOR_OV7660,
|
|
|
+ SENSOR_OV7670,
|
|
|
+ SENSOR_PO1200,
|
|
|
+ SENSOR_PO3130NC,
|
|
|
+ SENSOR_POxxxx,
|
|
|
+ NSENSORS
|
|
|
+};
|
|
|
|
|
|
/* V4L2 controls supported by the driver */
|
|
|
static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val);
|
|
@@ -260,56 +265,56 @@ static const struct ctrl sd_ctrls[] = {
|
|
|
};
|
|
|
|
|
|
/* table of the disabled controls */
|
|
|
-static u32 ctrl_dis[] = {
|
|
|
-/* SENSOR_HV7131R 0 */
|
|
|
+static u32 ctrl_dis[NSENSORS] = {
|
|
|
+ [SENSOR_HV7131R] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << HFLIP_IDX) | (1 << VFLIP_IDX) | (1 << LIGHTFREQ_IDX)
|
|
|
| (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_MI0360 1 */
|
|
|
+ [SENSOR_MI0360] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << HFLIP_IDX) | (1 << VFLIP_IDX) | (1 << LIGHTFREQ_IDX)
|
|
|
| (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_MI1310_SOC 2 */
|
|
|
+ [SENSOR_MI1310_SOC] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << LIGHTFREQ_IDX) | (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_MI1320 3 */
|
|
|
+ [SENSOR_MI1320] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << LIGHTFREQ_IDX) | (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_MI1320_SOC 4 */
|
|
|
+ [SENSOR_MI1320_SOC] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << LIGHTFREQ_IDX) | (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_OV7660 5 */
|
|
|
+ [SENSOR_OV7660] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << LIGHTFREQ_IDX) | (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_OV7670 6 */
|
|
|
+ [SENSOR_OV7670] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_PO1200 7 */
|
|
|
+ [SENSOR_PO1200] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << LIGHTFREQ_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_PO3130NC 8 */
|
|
|
+ [SENSOR_PO3130NC] =
|
|
|
(1 << BRIGHTNESS_IDX) | (1 << CONTRAST_IDX) | (1 << COLORS_IDX)
|
|
|
| (1 << HFLIP_IDX) | (1 << VFLIP_IDX) | (1 << LIGHTFREQ_IDX)
|
|
|
| (1 << SHARPNESS_IDX)
|
|
|
| (1 << GAIN_IDX) | (1 << EXPOSURE_IDX)
|
|
|
| (1 << AUTOGAIN_IDX) | (1 << BACKLIGHT_IDX),
|
|
|
-/* SENSOR_POxxxx 9 */
|
|
|
+ [SENSOR_POxxxx] =
|
|
|
(1 << HFLIP_IDX) | (1 << VFLIP_IDX) | (1 << LIGHTFREQ_IDX),
|
|
|
};
|
|
|
|
|
@@ -3420,17 +3425,18 @@ static int sd_init(struct gspca_dev *gspca_dev)
|
|
|
struct sd *sd = (struct sd *) gspca_dev;
|
|
|
struct cam *cam;
|
|
|
int sensor;
|
|
|
- static u8 npkt[] = { /* number of packets per ISOC message */
|
|
|
- 64, /* HV7131R 0 */
|
|
|
- 32, /* MI0360 1 */
|
|
|
- 32, /* MI1310_SOC 2 */
|
|
|
- 64, /* MI1320 3 */
|
|
|
- 128, /* MI1320_SOC 4 */
|
|
|
- 32, /* OV7660 5 */
|
|
|
- 64, /* OV7670 6 */
|
|
|
- 128, /* PO1200 7 */
|
|
|
- 128, /* PO3130NC 8 */
|
|
|
- 128, /* POxxxx 9 */
|
|
|
+ /* number of packets per ISOC message */
|
|
|
+ static u8 npkt[NSENSORS] = {
|
|
|
+ [SENSOR_HV7131R] = 64,
|
|
|
+ [SENSOR_MI0360] = 32,
|
|
|
+ [SENSOR_MI1310_SOC] = 32,
|
|
|
+ [SENSOR_MI1320] = 64,
|
|
|
+ [SENSOR_MI1320_SOC] = 128,
|
|
|
+ [SENSOR_OV7660] = 32,
|
|
|
+ [SENSOR_OV7670] = 64,
|
|
|
+ [SENSOR_PO1200] = 128,
|
|
|
+ [SENSOR_PO3130NC] = 128,
|
|
|
+ [SENSOR_POxxxx] = 128,
|
|
|
};
|
|
|
|
|
|
if (sd->sensor != SENSOR_POxxxx)
|