aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/m5602/m5602_po1030.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/gspca/m5602/m5602_po1030.h')
-rw-r--r--drivers/media/video/gspca/m5602/m5602_po1030.h43
1 files changed, 37 insertions, 6 deletions
diff --git a/drivers/media/video/gspca/m5602/m5602_po1030.h b/drivers/media/video/gspca/m5602/m5602_po1030.h
index f75dfa6f6594..a0b75ff61d79 100644
--- a/drivers/media/video/gspca/m5602/m5602_po1030.h
+++ b/drivers/media/video/gspca/m5602/m5602_po1030.h
@@ -108,10 +108,13 @@
108#define PO1030_REG_YCONTRAST 0x74 108#define PO1030_REG_YCONTRAST 0x74
109#define PO1030_REG_YSATURATION 0x75 109#define PO1030_REG_YSATURATION 0x75
110 110
111#define PO1030_HFLIP (1 << 7)
112#define PO1030_VFLIP (1 << 6)
113
111/*****************************************************************************/ 114/*****************************************************************************/
112 115
113#define PO1030_GLOBAL_GAIN_DEFAULT 0x12 116#define PO1030_GLOBAL_GAIN_DEFAULT 0x12
114#define PO1030_EXPOSURE_DEFAULT 0xf0ff 117#define PO1030_EXPOSURE_DEFAULT 0x0085
115#define PO1030_BLUE_GAIN_DEFAULT 0x40 118#define PO1030_BLUE_GAIN_DEFAULT 0x40
116#define PO1030_RED_GAIN_DEFAULT 0x40 119#define PO1030_RED_GAIN_DEFAULT 0x40
117 120
@@ -120,7 +123,6 @@
120/* Kernel module parameters */ 123/* Kernel module parameters */
121extern int force_sensor; 124extern int force_sensor;
122extern int dump_sensor; 125extern int dump_sensor;
123extern unsigned int m5602_debug;
124 126
125int po1030_probe(struct sd *sd); 127int po1030_probe(struct sd *sd);
126int po1030_init(struct sd *sd); 128int po1030_init(struct sd *sd);
@@ -141,6 +143,10 @@ int po1030_get_red_balance(struct gspca_dev *gspca_dev, __s32 *val);
141int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val); 143int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val);
142int po1030_get_blue_balance(struct gspca_dev *gspca_dev, __s32 *val); 144int po1030_get_blue_balance(struct gspca_dev *gspca_dev, __s32 *val);
143int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val); 145int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val);
146int po1030_get_hflip(struct gspca_dev *gspca_dev, __s32 *val);
147int po1030_set_hflip(struct gspca_dev *gspca_dev, __s32 val);
148int po1030_get_vflip(struct gspca_dev *gspca_dev, __s32 *val);
149int po1030_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
144 150
145static struct m5602_sensor po1030 = { 151static struct m5602_sensor po1030 = {
146 .name = "PO1030", 152 .name = "PO1030",
@@ -151,7 +157,7 @@ static struct m5602_sensor po1030 = {
151 .init = po1030_init, 157 .init = po1030_init,
152 .power_down = po1030_power_down, 158 .power_down = po1030_power_down,
153 159
154 .nctrls = 4, 160 .nctrls = 6,
155 .ctrls = { 161 .ctrls = {
156 { 162 {
157 { 163 {
@@ -159,7 +165,7 @@ static struct m5602_sensor po1030 = {
159 .type = V4L2_CTRL_TYPE_INTEGER, 165 .type = V4L2_CTRL_TYPE_INTEGER,
160 .name = "gain", 166 .name = "gain",
161 .minimum = 0x00, 167 .minimum = 0x00,
162 .maximum = 0xff, 168 .maximum = 0x4f,
163 .step = 0x1, 169 .step = 0x1,
164 .default_value = PO1030_GLOBAL_GAIN_DEFAULT, 170 .default_value = PO1030_GLOBAL_GAIN_DEFAULT,
165 .flags = V4L2_CTRL_FLAG_SLIDER 171 .flags = V4L2_CTRL_FLAG_SLIDER
@@ -172,7 +178,7 @@ static struct m5602_sensor po1030 = {
172 .type = V4L2_CTRL_TYPE_INTEGER, 178 .type = V4L2_CTRL_TYPE_INTEGER,
173 .name = "exposure", 179 .name = "exposure",
174 .minimum = 0x00, 180 .minimum = 0x00,
175 .maximum = 0xffff, 181 .maximum = 0x02ff,
176 .step = 0x1, 182 .step = 0x1,
177 .default_value = PO1030_EXPOSURE_DEFAULT, 183 .default_value = PO1030_EXPOSURE_DEFAULT,
178 .flags = V4L2_CTRL_FLAG_SLIDER 184 .flags = V4L2_CTRL_FLAG_SLIDER
@@ -205,8 +211,33 @@ static struct m5602_sensor po1030 = {
205 }, 211 },
206 .set = po1030_set_blue_balance, 212 .set = po1030_set_blue_balance,
207 .get = po1030_get_blue_balance 213 .get = po1030_get_blue_balance
214 }, {
215 {
216 .id = V4L2_CID_HFLIP,
217 .type = V4L2_CTRL_TYPE_BOOLEAN,
218 .name = "horizontal flip",
219 .minimum = 0,
220 .maximum = 1,
221 .step = 1,
222 .default_value = 0,
223 },
224 .set = po1030_set_hflip,
225 .get = po1030_get_hflip
226 }, {
227 {
228 .id = V4L2_CID_VFLIP,
229 .type = V4L2_CTRL_TYPE_BOOLEAN,
230 .name = "vertical flip",
231 .minimum = 0,
232 .maximum = 1,
233 .step = 1,
234 .default_value = 0,
235 },
236 .set = po1030_set_vflip,
237 .get = po1030_get_vflip
208 } 238 }
209 }, 239 },
240
210 .nmodes = 1, 241 .nmodes = 1,
211 .modes = { 242 .modes = {
212 { 243 {
@@ -380,7 +411,7 @@ static const unsigned char init_po1030[][4] =
380 411
381 /* Set the y window to 1 */ 412 /* Set the y window to 1 */
382 {SENSOR, PO1030_REG_WINDOWY_H, 0x00}, 413 {SENSOR, PO1030_REG_WINDOWY_H, 0x00},
383 {SENSOR, PO1030_REG_WINDOWX_L, 0x01}, 414 {SENSOR, PO1030_REG_WINDOWY_L, 0x01},
384 415
385 {SENSOR, PO1030_REG_WINDOWWIDTH_H, 0x02}, 416 {SENSOR, PO1030_REG_WINDOWWIDTH_H, 0x02},
386 {SENSOR, PO1030_REG_WINDOWWIDTH_L, 0x87}, 417 {SENSOR, PO1030_REG_WINDOWWIDTH_L, 0x87},