Lines Matching +full:0 +full:xce
6 * V0.0X01.0X01 init driver.
7 * V0.0X01.0X02 add quick stream on/off
8 * V0.0X01.0X03 set sensor in stream off state by default
41 #define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x2)
49 #define REG_SOFTWARE_STANDBY 0xf3
51 #define REG_SC_CHIP_ID_H 0xf0
52 #define REG_SC_CHIP_ID_L 0xf1
54 #define REG_NULL 0xFFFF /* Array end token */
57 #define GC032A_ID 0x232a
120 {0xf3, 0x00},
121 {0xf5, 0x06},
122 {0xf7, 0x01},
123 {0xf8, 0x03},
124 {0xf9, 0xce},
125 {0xfa, 0x00},
126 {0xfc, 0x02},
127 {0xfe, 0x02},
128 {0x81, 0x03},
130 {0xfe, 0x00},
131 {0x77, 0x64},
132 {0x78, 0x40},
133 {0x79, 0x60},
136 {0xfe, 0x00},
137 {0x03, 0x01},
138 {0x04, 0xce},
139 {0x05, 0x01},
140 {0x06, 0xad},
141 {0x07, 0x00},
142 {0x08, 0x10},
143 {0x0a, 0x00},
144 {0x0c, 0x00},
145 {0x0d, 0x01},
146 {0x0e, 0xe8},
147 {0x0f, 0x02},
148 {0x10, 0x88},
149 {0x17, 0x54},
150 {0x19, 0x08},
151 {0x1a, 0x0a},
152 {0x1f, 0x40},
153 {0x20, 0x30},
154 {0x2e, 0x80},
155 {0x2f, 0x2b},
156 {0x30, 0x1a},
157 {0xfe, 0x02},
158 {0x03, 0x02},
159 {0x05, 0xd7},
160 {0x06, 0x60},
161 {0x08, 0x80},
162 {0x12, 0x89},
165 {0xfe, 0x00},
166 {0x18, 0x02},
167 {0xfe, 0x02},
168 {0x40, 0x22},
169 {0x45, 0x00},
170 {0x46, 0x00},
171 {0x49, 0x20},
172 {0x4b, 0x3c},
173 {0x50, 0x20},
174 {0x42, 0x10},
177 {0xfe, 0x01},
178 {0x0a, 0xc5},
179 {0x45, 0x00},
180 {0xfe, 0x00},
181 {0x40, 0xff},
182 {0x41, 0x25},
183 {0x42, 0xcf},
184 {0x43, 0x10},
185 {0x44, 0x83},//Output_format //80
186 {0x46, 0x22},//sync
187 {0x49, 0x03},
188 {0xfe, 0x02},
189 {0x22, 0xf6},
192 {0xfe, 0x00},
193 {0xfe, 0x01},
194 {0xc1, 0x38},
195 {0xc2, 0x4c},
196 {0xc3, 0x00},
197 {0xc4, 0x32},
198 {0xc5, 0x24},
199 {0xc6, 0x16},
200 {0xc7, 0x08},
201 {0xc8, 0x08},
202 {0xc9, 0x00},
203 {0xca, 0x20},
204 {0xdc, 0x8a},
205 {0xdd, 0xa0},
206 {0xde, 0xa6},
207 {0xdf, 0x75},
210 {0xfe, 0x01},
211 {0x90, 0x00},
212 {0x91, 0x00},
213 {0x92, 0xe3},
214 {0x93, 0xbe},
215 {0x95, 0x0b},
216 {0x96, 0xe3},
217 {0x97, 0x2e},
218 {0x98, 0x0b},
219 {0x9a, 0x2d},
220 {0x9b, 0x0b},
221 {0x9c, 0x59},
222 {0x9d, 0x2e},
223 {0x9f, 0x67},
224 {0xa0, 0x59},
225 {0xa1, 0x00},
226 {0xa2, 0x00},
227 {0x86, 0x00},
228 {0x87, 0x00},
229 {0x88, 0x00},
230 {0x89, 0x00},
231 {0xa4, 0x00},
232 {0xa5, 0x00},
233 {0xa6, 0xda},
234 {0xa7, 0x97},
235 {0xa9, 0xda},
236 {0xaa, 0x9a},
237 {0xab, 0xac},
238 {0xac, 0x86},
239 {0xae, 0xda},
240 {0xaf, 0xac},
241 {0xb0, 0xda},
242 {0xb1, 0xac},
243 {0xb3, 0xda},
244 {0xb4, 0xac},
245 {0xb5, 0x00},
246 {0xb6, 0x00},
247 {0x8b, 0x00},
248 {0x8c, 0x00},
249 {0x8d, 0x00},
250 {0x8e, 0x00},
251 {0x94, 0x50},
252 {0x99, 0xa6},
253 {0x9e, 0xaa},
254 {0xa3, 0x0a},
255 {0x8a, 0x00},
256 {0xa8, 0x50},
257 {0xad, 0x55},
258 {0xb2, 0x55},
259 {0xb7, 0x05},
260 {0x8f, 0x00},
261 {0xb8, 0xae},
262 {0xb9, 0xbb},
265 {0xfe, 0x01},
266 {0xd0, 0x40},
267 {0xd1, 0xf8},
268 {0xd2, 0x00},
269 {0xd3, 0xfa},
270 {0xd4, 0x45},
271 {0xd5, 0x02},
272 {0xd6, 0x30},
273 {0xd7, 0xfa},
274 {0xd8, 0x08},
275 {0xd9, 0x08},
276 {0xda, 0x58},
277 {0xdb, 0x02},
278 {0xfe, 0x00},
281 {0xfe, 0x00},
282 {0xba, 0x00},
283 {0xbb, 0x04},
284 {0xbc, 0x0a},
285 {0xbd, 0x0e},
286 {0xbe, 0x22},
287 {0xbf, 0x30},
288 {0xc0, 0x3d},
289 {0xc1, 0x4a},
290 {0xc2, 0x5d},
291 {0xc3, 0x6b},
292 {0xc4, 0x7a},
293 {0xc5, 0x85},
294 {0xc6, 0x90},
295 {0xc7, 0xa5},
296 {0xc8, 0xb5},
297 {0xc9, 0xc2},
298 {0xca, 0xcc},
299 {0xcb, 0xd5},
300 {0xcc, 0xde},
301 {0xcd, 0xea},
302 {0xce, 0xf5},
303 {0xcf, 0xff},
306 {0xfe, 0x00},
307 {0x5a, 0x08},
308 {0x5b, 0x0f},
309 {0x5c, 0x15},
310 {0x5d, 0x1c},
311 {0x5e, 0x28},
312 {0x5f, 0x36},
313 {0x60, 0x45},
314 {0x61, 0x51},
315 {0x62, 0x6a},
316 {0x63, 0x7d},
317 {0x64, 0x8d},
318 {0x65, 0x98},
319 {0x66, 0xa2},
320 {0x67, 0xb5},
321 {0x68, 0xc3},
322 {0x69, 0xcd},
323 {0x6a, 0xd4},
324 {0x6b, 0xdc},
325 {0x6c, 0xe3},
326 {0x6d, 0xf0},
327 {0x6e, 0xf9},
328 {0x6f, 0xff},
331 {0xfe, 0x00},
332 {0x70, 0x50},
335 {0xfe, 0x00},
336 {0x4f, 0x01},
337 {0xfe, 0x01},
338 {0x0d, 0x00},//08 add 20170110
339 {0x12, 0xa0},
340 {0x13, 0x3a},
341 {0x44, 0x04},
342 {0x1f, 0x30},
343 {0x20, 0x40},
344 {0x26, 0x9a},
345 {0x3e, 0x20},
346 {0x3f, 0x2d},
347 {0x40, 0x40},
348 {0x41, 0x5b},
349 {0x42, 0x82},
350 {0x43, 0xb7},
351 {0x04, 0x0a},
352 {0x02, 0x79},
353 {0x03, 0xc0},
356 {0xfe, 0x01},
357 {0xcc, 0x08},
358 {0xcd, 0x08},
359 {0xce, 0xa4},
360 {0xcf, 0xec},
363 {0xfe, 0x00},
364 {0x81, 0xb8},
365 {0x82, 0x15},//de_noise
366 {0x83, 0x1a},//de_noise dark
367 {0x84, 0x01},
368 {0x86, 0x50},
369 {0x87, 0x18},
370 {0x88, 0x10},
371 {0x89, 0x70},
372 {0x8a, 0x20},
373 {0x8b, 0x10},
374 {0x8c, 0x08},
375 {0x8d, 0x0a},
378 {0xfe, 0x00},
379 {0x8f, 0xaa},
380 {0x90, 0x9c},
381 {0x91, 0x52},
382 {0x92, 0x03},
383 {0x93, 0x03},
384 {0x94, 0x08},
385 {0x95, 0x65},//sharpness
386 {0x97, 0x00},
387 {0x98, 0x00},
390 {0xfe, 0x00},
391 {0xa1, 0x30},
392 {0xa2, 0x41},
393 {0xa4, 0x30},
394 {0xa5, 0x20},
395 {0xaa, 0x30},
396 {0xac, 0x32},
399 {0xfe, 0x00},
400 {0xd1, 0x37},//3a
401 {0xd2, 0x37},//3a
402 {0xd3, 0x40},//38
403 {0xd6, 0xf4},
404 {0xd7, 0x1d},
405 {0xdd, 0x73},
406 {0xde, 0x84},
411 {0xfe, 0x00},
412 {0x05, 0x01},
413 {0x06, 0xad},
414 {0x07, 0x00},
415 {0x08, 0x10},
417 {0xfe, 0x01},
418 {0x25, 0x00},
419 {0x26, 0x9a},
420 {0x27, 0x01},
421 {0x28, 0xce},
422 {0x29, 0x03},
423 {0x2a, 0x02},
424 {0x2b, 0x04},
425 {0x2c, 0x36},
426 {0x2d, 0x07},
427 {0x2e, 0xd2},
428 {0x2f, 0x0b},
429 {0x30, 0x6e},
430 {0x31, 0x0e},
431 {0x32, 0x70},
432 {0x33, 0x12},
433 {0x34, 0x0c},
434 {0x3c, 0x20},
438 {0xfe, 0x00},
439 {0x05, 0x01},
440 {0x06, 0xad},
441 {0x07, 0x00},
442 {0x08, 0x10},
444 {0xfe, 0x01},
445 {0x25, 0x00},
446 {0x26, 0x9a},
447 {0x27, 0x01},
448 {0x28, 0xce},
449 {0x29, 0x01},
450 {0x2a, 0xce},
451 {0x2b, 0x01},
452 {0x2c, 0xce},
453 {0x2d, 0x01},
454 {0x2e, 0xce},
455 {0x2f, 0x01},
456 {0x30, 0xce},
457 {0x31, 0x01},
458 {0x32, 0xce},
459 {0x33, 0x01},
460 {0x34, 0xce},
461 {0x3c, 0x00},
463 {0xfe, 0x00},
464 {REG_NULL, 0x00},
498 buf[0] = reg & 0xFF; in gc032a_write()
507 if (ret >= 0) in gc032a_write()
508 return 0; in gc032a_write()
511 "gc032a write reg(0x%x val:0x%x) failed !\n", reg, val); in gc032a_write()
523 buf[0] = reg & 0xFF; in gc032a_read()
525 msg[0].addr = client->addr; in gc032a_read()
526 msg[0].flags = client->flags; in gc032a_read()
527 msg[0].buf = buf; in gc032a_read()
528 msg[0].len = sizeof(buf); in gc032a_read()
536 if (ret >= 0) { in gc032a_read()
537 *val = buf[0]; in gc032a_read()
538 return 0; in gc032a_read()
542 "gc032a read reg:0x%x failed !\n", reg); in gc032a_read()
550 int i, ret = 0; in gc032a_write_array()
552 i = 0; in gc032a_write_array()
568 format->width = gc032a_framesizes[0].width; in gc032a_get_default_format()
569 format->height = gc032a_framesizes[0].height; in gc032a_get_default_format()
571 format->code = gc032a_formats[0].code; in gc032a_get_default_format()
604 return 0; in gc032a_enum_mbus_code()
630 return 0; in gc032a_enum_frame_sizes()
646 mf = v4l2_subdev_get_try_format(sd, cfg, 0); in gc032a_get_fmt()
650 return 0; in gc032a_get_fmt()
664 return 0; in gc032a_get_fmt()
670 const struct gc032a_framesize *fsize = &gc032a_framesizes[0]; in __gc032a_try_frame_size()
678 if (err < min_err && fsize->regs[0].addr) { in __gc032a_try_frame_size()
686 match = &gc032a_framesizes[0]; in __gc032a_try_frame_size()
704 int ret = 0; in gc032a_set_fmt()
710 while (--index >= 0) in gc032a_set_fmt()
714 if (index < 0) in gc032a_set_fmt()
747 memset(inf, 0, sizeof(*inf)); in gc032a_get_module_inf()
757 long ret = 0; in gc032a_ioctl()
758 u32 stream = 0; in gc032a_ioctl()
769 gc032a_set_streaming(gc032a, 0xff); in gc032a_ioctl()
771 gc032a_set_streaming(gc032a, 0x00); in gc032a_ioctl()
789 u32 stream = 0; in gc032a_compat_ioctl32()
844 gc032a_set_streaming(gc032a, 0x00); in gc032a_s_stream()
849 gc032a_set_streaming(gc032a, 0xFF); in gc032a_s_stream()
854 return 0; in gc032a_s_stream()
859 return 0; in gc032a_set_test_pattern()
872 return 0; in gc032a_s_ctrl()
893 v4l2_subdev_get_try_format(sd, fh->pad, 0); in gc032a_open()
899 return 0; in gc032a_open()
911 return 0; in gc032a_g_mbus_config()
923 gpiod_set_value_cansleep(gc032a->pwdn_gpio, 0); in gc032a_power()
937 return 0; in gc032a_power()
951 return 0; in gc032a_enum_frame_interval()
1029 if (ret < 0) in __gc032a_power_on()
1041 if (ret < 0) in __gc032a_power_on()
1048 gpiod_set_value_cansleep(gc032a->pwdn_gpio, 0); in __gc032a_power_on()
1054 if (ret < 0) in __gc032a_power_on()
1060 return 0; in __gc032a_power_on()
1078 for (i = 0; i < GC032A_NUM_SUPPLIES; i++) in gc032a_configure_regulators()
1114 (DRIVER_VERSION & 0xff00) >> 8, in gc032a_probe()
1115 DRIVER_VERSION & 0x00ff); in gc032a_probe()
1151 V4L2_CID_PIXEL_RATE, 0, in gc032a_probe()
1158 0, 0, gc032a_test_pattern_menu); in gc032a_probe()
1181 if (ret < 0) { in gc032a_probe()
1190 gc032a->frame_size = &gc032a_framesizes[0]; in gc032a_probe()
1193 if (ret < 0) in gc032a_probe()
1196 memset(facing, 0, sizeof(facing)); in gc032a_probe()
1197 if (strcmp(gc032a->module_facing, "back") == 0) in gc032a_probe()
1198 facing[0] = 'b'; in gc032a_probe()
1200 facing[0] = 'f'; in gc032a_probe()
1211 return 0; in gc032a_probe()
1237 return 0; in gc032a_remove()
1241 { "gc032a", 0 },