Lines Matching +full:0 +full:x69

7  * V0.0X01.0X00 first version
8 * V0.0X01.0X01 add conversion gain control
9 * V0.0X01.0X02 add debug interface for conversion gain control
10 * V0.0X01.0X03 support enum sensor fmt
35 #define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x03)
52 #define CHIP_ID 0x06
53 #define IMX464_REG_CHIP_ID 0x3057
55 #define IMX464_REG_CTRL_MODE 0x3000
56 #define IMX464_MODE_SW_STANDBY BIT(0)
57 #define IMX464_MODE_STREAMING 0x0
59 #define IMX464_REG_MARSTER_MODE 0x3002
60 #define IMX464_MODE_STOP BIT(0)
61 #define IMX464_MODE_START 0x0
63 #define IMX464_GAIN_SWITCH_REG 0x3019
65 #define IMX464_LF_GAIN_REG_H 0x30E9
66 #define IMX464_LF_GAIN_REG_L 0x30E8
68 #define IMX464_SF1_GAIN_REG_H 0x30EB
69 #define IMX464_SF1_GAIN_REG_L 0x30EA
71 #define IMX464_SF2_GAIN_REG_H 0x30ED
72 #define IMX464_SF2_GAIN_REG_L 0x30EC
74 #define IMX464_LF_EXPO_REG_H 0x305A
75 #define IMX464_LF_EXPO_REG_M 0x3059
76 #define IMX464_LF_EXPO_REG_L 0x3058
78 #define IMX464_SF1_EXPO_REG_H 0x305E
79 #define IMX464_SF1_EXPO_REG_M 0x305D
80 #define IMX464_SF1_EXPO_REG_L 0x305C
82 #define IMX464_SF2_EXPO_REG_H 0x3062
83 #define IMX464_SF2_EXPO_REG_M 0x3061
84 #define IMX464_SF2_EXPO_REG_L 0x3060
85 #define IMX464_RHS1_DEFAULT 0x06d
86 #define IMX464_RHS1_X3_DEFAULT 0x0a3
88 #define IMX464_RHS1_REG_H 0x306a
89 #define IMX464_RHS1_REG_M 0x3069
90 #define IMX464_RHS1_REG_L 0x3068
92 #define IMX464_RHS2_REG_H 0x306E
93 #define IMX464_RHS2_REG_M 0x306D
94 #define IMX464_RHS2_REG_L 0x306C
95 #define IMX464_RHS2_X3_DEFAULT 0x0ce
100 #define IMX464_VTS_MAX 0x7fff
102 #define IMX464_GAIN_MIN 0x00
103 #define IMX464_GAIN_MAX 0xee
105 #define IMX464_GAIN_DEFAULT 0x00
107 #define IMX464_FETCH_GAIN_H(VAL) (((VAL) >> 8) & 0x07)
108 #define IMX464_FETCH_GAIN_L(VAL) ((VAL) & 0xFF)
110 #define IMX464_FETCH_EXP_H(VAL) (((VAL) >> 16) & 0x0F)
111 #define IMX464_FETCH_EXP_M(VAL) (((VAL) >> 8) & 0xFF)
112 #define IMX464_FETCH_EXP_L(VAL) ((VAL) & 0xFF)
114 #define IMX464_FETCH_RHS1_H(VAL) (((VAL) >> 16) & 0x0F)
115 #define IMX464_FETCH_RHS1_M(VAL) (((VAL) >> 8) & 0xFF)
116 #define IMX464_FETCH_RHS1_L(VAL) ((VAL) & 0xFF)
118 #define IMX464_FETCH_VTS_H(VAL) (((VAL) >> 16) & 0x0F)
119 #define IMX464_FETCH_VTS_M(VAL) (((VAL) >> 8) & 0xFF)
120 #define IMX464_FETCH_VTS_L(VAL) ((VAL) & 0xFF)
122 #define IMX464_GROUP_HOLD_REG 0x3001
123 #define IMX464_GROUP_HOLD_START 0x01
124 #define IMX464_GROUP_HOLD_END 0x00
126 #define IMX464_VTS_REG_L 0x3030
127 #define IMX464_VTS_REG_M 0x3031
128 #define IMX464_VTS_REG_H 0x3032
130 #define REG_NULL 0xFFFF
138 #define IMX464_VREVERSE_REG 0x304f
139 #define IMX464_HREVERSE_REG 0x304e
231 {REG_NULL, 0x00},
235 {0x3000, 0x01},
236 {0x3002, 0x01},
237 {0x300C, 0x5B},
238 {0x300D, 0x40},
239 {0x3034, 0xDC},
240 {0x3035, 0x05},
241 {0x3050, 0x00},
242 {0x3058, 0x83},
243 {0x3059, 0x04},
244 {0x30BE, 0x5E},
245 {0x30E8, 0x14},
246 {0x3110, 0x02},
247 {0x314C, 0xC0},
248 {0x315A, 0x06},
249 {0x316A, 0x7E},
250 {0x319D, 0x00},
251 {0x319E, 0x02},
252 {0x31A1, 0x00},
253 {0x3288, 0x22},
254 {0x328A, 0x02},
255 {0x328C, 0xA2},
256 {0x328E, 0x22},
257 {0x3415, 0x27},
258 {0x3418, 0x27},
259 {0x3428, 0xFE},
260 {0x349E, 0x6A},
261 {0x34A2, 0x9A},
262 {0x34A4, 0x8A},
263 {0x34A6, 0x8E},
264 {0x34AA, 0xD8},
265 {0x35BC, 0x00},
266 {0x35BE, 0xFF},
267 {0x35CC, 0x1B},
268 {0x35CD, 0x00},
269 {0x35CE, 0x2A},
270 {0x35CF, 0x00},
271 {0x35DC, 0x07},
272 {0x35DE, 0x1A},
273 {0x35DF, 0x00},
274 {0x35E4, 0x2B},
275 {0x35E5, 0x00},
276 {0x35E6, 0x07},
277 {0x35E7, 0x01},
278 {0x3648, 0x01},
279 {0x3678, 0x01},
280 {0x367C, 0x69},
281 {0x367E, 0x69},
282 {0x3680, 0x69},
283 {0x3682, 0x69},
284 {0x3718, 0x1C},
285 {0x371D, 0x05},
286 {0x375D, 0x11},
287 {0x375E, 0x43},
288 {0x375F, 0x76},
289 {0x3760, 0x07},
290 {0x3768, 0x1B},
291 {0x3769, 0x1B},
292 {0x376A, 0x1A},
293 {0x376B, 0x19},
294 {0x376C, 0x17},
295 {0x376D, 0x0F},
296 {0x376E, 0x0B},
297 {0x376F, 0x0B},
298 {0x3770, 0x0B},
299 {0x3776, 0x89},
300 {0x3777, 0x00},
301 {0x3778, 0xCA},
302 {0x3779, 0x00},
303 {0x377A, 0x45},
304 {0x377B, 0x01},
305 {0x377C, 0x56},
306 {0x377D, 0x02},
307 {0x377E, 0xFE},
308 {0x377F, 0x03},
309 {0x3780, 0xFE},
310 {0x3781, 0x05},
311 {0x3782, 0xFE},
312 {0x3783, 0x06},
313 {0x3784, 0x7F},
314 {0x3788, 0x1F},
315 {0x378A, 0xCA},
316 {0x378B, 0x00},
317 {0x378C, 0x45},
318 {0x378D, 0x01},
319 {0x378E, 0x56},
320 {0x378F, 0x02},
321 {0x3790, 0xFE},
322 {0x3791, 0x03},
323 {0x3792, 0xFE},
324 {0x3793, 0x05},
325 {0x3794, 0xFE},
326 {0x3795, 0x06},
327 {0x3796, 0x7F},
328 {0x3798, 0xBF},
329 {0x3A01, 0x01},
330 {0x3A18, 0x7F},
331 {0x3A1A, 0x37},
332 {0x3A1C, 0x37},
333 {0x3A1E, 0xF7},
334 {0x3A1F, 0x00},
335 {0x3A20, 0x3F},
336 {0x3A22, 0x6F},
337 {0x3A24, 0x3F},
338 {0x3A26, 0x5F},
339 {0x3A28, 0x2F},
340 {REG_NULL, 0x00},
344 {0x3000, 0x01},
345 {0x3002, 0x01},
346 {0x300C, 0x5B},
347 {0x300D, 0x40},
348 {0x3034, 0xDC},
349 {0x3035, 0x05},
350 {0x3048, 0x01},
351 {0x3049, 0x01},
352 {0x304A, 0x01},
353 {0x304B, 0x01},
354 {0x304C, 0x13},
355 {0x304D, 0x00},
356 {0x3050, 0x00},
357 {0x3058, 0xF4},
358 {0x3059, 0x0A},
359 {0x3068, 0x3D},
360 {0x30BE, 0x5E},
361 {0x30E8, 0x0A},
362 {0x3110, 0x02},
363 {0x314C, 0x80},//
364 {0x315A, 0x02},
365 {0x316A, 0x7E},
366 {0x319D, 0x00},
367 {0x319E, 0x01},//1188M
368 {0x31A1, 0x00},
369 {0x31D7, 0x01},
370 {0x3200, 0x10},
371 {0x3288, 0x22},
372 {0x328A, 0x02},
373 {0x328C, 0xA2},
374 {0x328E, 0x22},
375 {0x3415, 0x27},
376 {0x3418, 0x27},
377 {0x3428, 0xFE},
378 {0x349E, 0x6A},
379 {0x34A2, 0x9A},
380 {0x34A4, 0x8A},
381 {0x34A6, 0x8E},
382 {0x34AA, 0xD8},
383 {0x35BC, 0x00},
384 {0x35BE, 0xFF},
385 {0x35CC, 0x1B},
386 {0x35CD, 0x00},
387 {0x35CE, 0x2A},
388 {0x35CF, 0x00},
389 {0x35DC, 0x07},
390 {0x35DE, 0x1A},
391 {0x35DF, 0x00},
392 {0x35E4, 0x2B},
393 {0x35E5, 0x00},
394 {0x35E6, 0x07},
395 {0x35E7, 0x01},
396 {0x3648, 0x01},
397 {0x3678, 0x01},
398 {0x367C, 0x69},
399 {0x367E, 0x69},
400 {0x3680, 0x69},
401 {0x3682, 0x69},
402 {0x3718, 0x1C},
403 {0x371D, 0x05},
404 {0x375D, 0x11},
405 {0x375E, 0x43},
406 {0x375F, 0x76},
407 {0x3760, 0x07},
408 {0x3768, 0x1B},
409 {0x3769, 0x1B},
410 {0x376A, 0x1A},
411 {0x376B, 0x19},
412 {0x376C, 0x17},
413 {0x376D, 0x0F},
414 {0x376E, 0x0B},
415 {0x376F, 0x0B},
416 {0x3770, 0x0B},
417 {0x3776, 0x89},
418 {0x3777, 0x00},
419 {0x3778, 0xCA},
420 {0x3779, 0x00},
421 {0x377A, 0x45},
422 {0x377B, 0x01},
423 {0x377C, 0x56},
424 {0x377D, 0x02},
425 {0x377E, 0xFE},
426 {0x377F, 0x03},
427 {0x3780, 0xFE},
428 {0x3781, 0x05},
429 {0x3782, 0xFE},
430 {0x3783, 0x06},
431 {0x3784, 0x7F},
432 {0x3788, 0x1F},
433 {0x378A, 0xCA},
434 {0x378B, 0x00},
435 {0x378C, 0x45},
436 {0x378D, 0x01},
437 {0x378E, 0x56},
438 {0x378F, 0x02},
439 {0x3790, 0xFE},
440 {0x3791, 0x03},
441 {0x3792, 0xFE},
442 {0x3793, 0x05},
443 {0x3794, 0xFE},
444 {0x3795, 0x06},
445 {0x3796, 0x7F},
446 {0x3798, 0xBF},
447 {0x3A01, 0x01},
448 {0x3A18, 0x8F},
449 {0x3A1A, 0x4F},
450 {0x3A1C, 0x47},
451 {0x3A1E, 0x37},
452 {0x3A1F, 0x01},
453 {0x3A20, 0x4F},
454 {0x3A22, 0x87},
455 {0x3A24, 0x4F},
456 {0x3A26, 0x7F},
457 {0x3A28, 0x3F},
458 {REG_NULL, 0x00},
462 {0x3000, 0x01},
463 {0x3002, 0x01},
464 {0x300C, 0x3b},
465 {0x300D, 0x2a},
466 {0x3034, 0xDC},
467 {0x3035, 0x05},
468 {0x3048, 0x00},
469 {0x3049, 0x00},
470 {0x304A, 0x03},
471 {0x304B, 0x02},
472 {0x304C, 0x14},
473 {0x304D, 0x03},
474 {0x3050, 0x00},
475 {0x3058, 0x83},
476 {0x3059, 0x04},
477 {0x3068, 0xc9},
478 {0x30BE, 0x5E},
479 {0x30E8, 0x14},
480 {0x3110, 0x02},
481 {0x314C, 0x29},
482 {0x314D, 0x01},
483 {0x315A, 0x06},
484 {0x3168, 0xA0},
485 {0x316A, 0x7E},
486 {0x319D, 0x00},
487 {0x319E, 0x02},
488 {0x31A1, 0x00},
489 {0x31D7, 0x00},
490 {0x3200, 0x11},
491 {0x3288, 0x22},
492 {0x328A, 0x02},
493 {0x328C, 0xA2},
494 {0x328E, 0x22},
495 {0x3415, 0x27},
496 {0x3418, 0x27},
497 {0x3428, 0xFE},
498 {0x349E, 0x6A},
499 {0x34A2, 0x9A},
500 {0x34A4, 0x8A},
501 {0x34A6, 0x8E},
502 {0x34AA, 0xD8},
503 {0x35BC, 0x00},
504 {0x35BE, 0xFF},
505 {0x35CC, 0x1B},
506 {0x35CD, 0x00},
507 {0x35CE, 0x2A},
508 {0x35CF, 0x00},
509 {0x35DC, 0x07},
510 {0x35DE, 0x1A},
511 {0x35DF, 0x00},
512 {0x35E4, 0x2B},
513 {0x35E5, 0x00},
514 {0x35E6, 0x07},
515 {0x35E7, 0x01},
516 {0x3648, 0x01},
517 {0x3678, 0x01},
518 {0x367C, 0x69},
519 {0x367E, 0x69},
520 {0x3680, 0x69},
521 {0x3682, 0x69},
522 {0x3718, 0x1C},
523 {0x371D, 0x05},
524 {0x375D, 0x11},
525 {0x375E, 0x43},
526 {0x375F, 0x76},
527 {0x3760, 0x07},
528 {0x3768, 0x1B},
529 {0x3769, 0x1B},
530 {0x376A, 0x1A},
531 {0x376B, 0x19},
532 {0x376C, 0x17},
533 {0x376D, 0x0F},
534 {0x376E, 0x0B},
535 {0x376F, 0x0B},
536 {0x3770, 0x0B},
537 {0x3776, 0x89},
538 {0x3777, 0x00},
539 {0x3778, 0xCA},
540 {0x3779, 0x00},
541 {0x377A, 0x45},
542 {0x377B, 0x01},
543 {0x377C, 0x56},
544 {0x377D, 0x02},
545 {0x377E, 0xFE},
546 {0x377F, 0x03},
547 {0x3780, 0xFE},
548 {0x3781, 0x05},
549 {0x3782, 0xFE},
550 {0x3783, 0x06},
551 {0x3784, 0x7F},
552 {0x3788, 0x1F},
553 {0x378A, 0xCA},
554 {0x378B, 0x00},
555 {0x378C, 0x45},
556 {0x378D, 0x01},
557 {0x378E, 0x56},
558 {0x378F, 0x02},
559 {0x3790, 0xFE},
560 {0x3791, 0x03},
561 {0x3792, 0xFE},
562 {0x3793, 0x05},
563 {0x3794, 0xFE},
564 {0x3795, 0x06},
565 {0x3796, 0x7F},
566 {0x3798, 0xBF},
567 {0x3A01, 0x01},
568 {0x3A18, 0x7F},
569 {0x3A1A, 0x37},
570 {0x3A1C, 0x37},
571 {0x3A1E, 0xF7},
572 {0x3A1F, 0x00},
573 {0x3A20, 0x3F},
574 {0x3A22, 0x6F},
575 {0x3A24, 0x3F},
576 {0x3A26, 0x5F},
577 {0x3A28, 0x2F},
578 {REG_NULL, 0x00},
582 {0x3000, 0x01},
583 {0x3002, 0x01},
584 {0x300C, 0x3B},
585 {0x300D, 0x2A},
586 {0x3034, 0xDC},
587 {0x3035, 0x05},
588 {0x3048, 0x01},
589 {0x3049, 0x01},
590 {0x304A, 0x04},
591 {0x304B, 0x04},
592 {0x304C, 0x13},
593 {0x304D, 0x00},
594 {0x3050, 0x00},
595 {0x3058, 0xF4},
596 {0x3059, 0x0A},
597 {0x3068, 0x3D},
598 {0x30BE, 0x5E},
599 {0x30E8, 0x14},
600 {0x3110, 0x02},
601 {0x314C, 0x29},//
602 {0x314D, 0x01},//
603 {0x315A, 0x06},
604 {0x3168, 0xA0},
605 {0x316A, 0x7E},
606 {0x319D, 0x00},
607 {0x319E, 0x02},//1188M
608 {0x31A1, 0x00},
609 {0x31D7, 0x01},
610 {0x3200, 0x10},
611 {0x3288, 0x22},
612 {0x328A, 0x02},
613 {0x328C, 0xA2},
614 {0x328E, 0x22},
615 {0x3415, 0x27},
616 {0x3418, 0x27},
617 {0x3428, 0xFE},
618 {0x349E, 0x6A},
619 {0x34A2, 0x9A},
620 {0x34A4, 0x8A},
621 {0x34A6, 0x8E},
622 {0x34AA, 0xD8},
623 {0x35BC, 0x00},
624 {0x35BE, 0xFF},
625 {0x35CC, 0x1B},
626 {0x35CD, 0x00},
627 {0x35CE, 0x2A},
628 {0x35CF, 0x00},
629 {0x35DC, 0x07},
630 {0x35DE, 0x1A},
631 {0x35DF, 0x00},
632 {0x35E4, 0x2B},
633 {0x35E5, 0x00},
634 {0x35E6, 0x07},
635 {0x35E7, 0x01},
636 {0x3648, 0x01},
637 {0x3678, 0x01},
638 {0x367C, 0x69},
639 {0x367E, 0x69},
640 {0x3680, 0x69},
641 {0x3682, 0x69},
642 {0x3718, 0x1C},
643 {0x371D, 0x05},
644 {0x375D, 0x11},
645 {0x375E, 0x43},
646 {0x375F, 0x76},
647 {0x3760, 0x07},
648 {0x3768, 0x1B},
649 {0x3769, 0x1B},
650 {0x376A, 0x1A},
651 {0x376B, 0x19},
652 {0x376C, 0x17},
653 {0x376D, 0x0F},
654 {0x376E, 0x0B},
655 {0x376F, 0x0B},
656 {0x3770, 0x0B},
657 {0x3776, 0x89},
658 {0x3777, 0x00},
659 {0x3778, 0xCA},
660 {0x3779, 0x00},
661 {0x377A, 0x45},
662 {0x377B, 0x01},
663 {0x377C, 0x56},
664 {0x377D, 0x02},
665 {0x377E, 0xFE},
666 {0x377F, 0x03},
667 {0x3780, 0xFE},
668 {0x3781, 0x05},
669 {0x3782, 0xFE},
670 {0x3783, 0x06},
671 {0x3784, 0x7F},
672 {0x3788, 0x1F},
673 {0x378A, 0xCA},
674 {0x378B, 0x00},
675 {0x378C, 0x45},
676 {0x378D, 0x01},
677 {0x378E, 0x56},
678 {0x378F, 0x02},
679 {0x3790, 0xFE},
680 {0x3791, 0x03},
681 {0x3792, 0xFE},
682 {0x3793, 0x05},
683 {0x3794, 0xFE},
684 {0x3795, 0x06},
685 {0x3796, 0x7F},
686 {0x3798, 0xBF},
687 {0x3A01, 0x01},
688 {0x3A18, 0x7F},
689 {0x3A1A, 0x37},
690 {0x3A1C, 0x37},
691 {0x3A1E, 0xF7},
692 {0x3A1F, 0x00},
693 {0x3A20, 0x3F},
694 {0x3A22, 0x6F},
695 {0x3A24, 0x3F},
696 {0x3A26, 0x5F},
697 {0x3A28, 0x2F},
698 {REG_NULL, 0x00},
702 {0x3000, 0x01},
703 {0x3002, 0x01},
704 {0x300C, 0x5B},
705 {0x300D, 0x40},
706 {0x3030, 0xE4},
707 {0x3031, 0x0C},
708 {0x3034, 0xee},
709 {0x3035, 0x02},
710 {0x3048, 0x00},
711 {0x3049, 0x00},
712 {0x304A, 0x03},
713 {0x304B, 0x02},
714 {0x304C, 0x14},
715 {0x3050, 0x00},
716 {0x3058, 0x06},
717 {0x3059, 0x09},
718 {0x305C, 0x09},
719 {0x3060, 0x21},
720 {0x3061, 0x01},
721 {0x3068, 0xc9},
722 {0x306C, 0x56},
723 {0x306D, 0x09},
724 {0x30BE, 0x5E},
725 {0x30E8, 0x14},
726 {0x3110, 0x02},
727 {0x314C, 0xC0},
728 {0x315A, 0x06},
729 {0x316A, 0x7E},
730 {0x319D, 0x00},
731 {0x319E, 0x02},
732 {0x31A1, 0x00},
733 {0x31D7, 0x00},
734 {0x3200, 0x11},
735 {0x3288, 0x22},
736 {0x328A, 0x02},
737 {0x328C, 0xA2},
738 {0x328E, 0x22},
739 {0x3415, 0x27},
740 {0x3418, 0x27},
741 {0x3428, 0xFE},
742 {0x349E, 0x6A},
743 {0x34A2, 0x9A},
744 {0x34A4, 0x8A},
745 {0x34A6, 0x8E},
746 {0x34AA, 0xD8},
747 {0x35BC, 0x00},
748 {0x35BE, 0xFF},
749 {0x35CC, 0x1B},
750 {0x35CD, 0x00},
751 {0x35CE, 0x2A},
752 {0x35CF, 0x00},
753 {0x35DC, 0x07},
754 {0x35DE, 0x1A},
755 {0x35DF, 0x00},
756 {0x35E4, 0x2B},
757 {0x35E5, 0x00},
758 {0x35E6, 0x07},
759 {0x35E7, 0x01},
760 {0x3648, 0x01},
761 {0x3678, 0x01},
762 {0x367C, 0x69},
763 {0x367E, 0x69},
764 {0x3680, 0x69},
765 {0x3682, 0x69},
766 {0x3718, 0x1C},
767 {0x371D, 0x05},
768 {0x375D, 0x11},
769 {0x375E, 0x43},
770 {0x375F, 0x76},
771 {0x3760, 0x07},
772 {0x3768, 0x1B},
773 {0x3769, 0x1B},
774 {0x376A, 0x1A},
775 {0x376B, 0x19},
776 {0x376C, 0x17},
777 {0x376D, 0x0F},
778 {0x376E, 0x0B},
779 {0x376F, 0x0B},
780 {0x3770, 0x0B},
781 {0x3776, 0x89},
782 {0x3777, 0x00},
783 {0x3778, 0xCA},
784 {0x3779, 0x00},
785 {0x377A, 0x45},
786 {0x377B, 0x01},
787 {0x377C, 0x56},
788 {0x377D, 0x02},
789 {0x377E, 0xFE},
790 {0x377F, 0x03},
791 {0x3780, 0xFE},
792 {0x3781, 0x05},
793 {0x3782, 0xFE},
794 {0x3783, 0x06},
795 {0x3784, 0x7F},
796 {0x3788, 0x1F},
797 {0x378A, 0xCA},
798 {0x378B, 0x00},
799 {0x378C, 0x45},
800 {0x378D, 0x01},
801 {0x378E, 0x56},
802 {0x378F, 0x02},
803 {0x3790, 0xFE},
804 {0x3791, 0x03},
805 {0x3792, 0xFE},
806 {0x3793, 0x05},
807 {0x3794, 0xFE},
808 {0x3795, 0x06},
809 {0x3796, 0x7F},
810 {0x3798, 0xBF},
811 {0x3A18, 0x7F},
812 {0x3A1A, 0x37},
813 {0x3A1C, 0x37},
814 {0x3A1E, 0xF7},
815 {0x3A1F, 0x00},
816 {0x3A20, 0x3F},
817 {0x3A22, 0x6F},
818 {0x3A24, 0x3F},
819 {0x3A26, 0x5F},
820 {0x3A28, 0x2F},
821 {REG_NULL, 0x00},
825 {0x3000, 0x01},
826 {0x3002, 0x01},
827 {0x300C, 0x5B},
828 {0x300D, 0x40},
829 {0x3030, 0x72},
830 {0x3031, 0x06},
831 {0x3034, 0xee},
832 {0x3035, 0x02},
833 {0x3048, 0x01},
834 {0x3049, 0x01},
835 {0x304A, 0x04},
836 {0x304B, 0x04},
837 {0x304C, 0x13},
838 {0x3050, 0x00},
839 {0x3058, 0x06},
840 {0x3059, 0x09},
841 {0x305C, 0x09},
842 {0x3060, 0x21},
843 {0x3061, 0x01},
844 {0x3068, 0x6D},
845 {0x306C, 0x56},
846 {0x306D, 0x09},
847 {0x30BE, 0x5E},
848 {0x30E8, 0x14},
849 {0x3110, 0x02},
850 {0x314C, 0xC0},
851 {0x315A, 0x06},
852 {0x316A, 0x7E},
853 {0x319D, 0x00},
854 {0x319E, 0x02},
855 {0x31A1, 0x00},
856 {0x31D7, 0x01},
857 {0x3200, 0x10},
858 {0x3288, 0x22},
859 {0x328A, 0x02},
860 {0x328C, 0xA2},
861 {0x328E, 0x22},
862 {0x3415, 0x27},
863 {0x3418, 0x27},
864 {0x3428, 0xFE},
865 {0x349E, 0x6A},
866 {0x34A2, 0x9A},
867 {0x34A4, 0x8A},
868 {0x34A6, 0x8E},
869 {0x34AA, 0xD8},
870 {0x35BC, 0x00},
871 {0x35BE, 0xFF},
872 {0x35CC, 0x1B},
873 {0x35CD, 0x00},
874 {0x35CE, 0x2A},
875 {0x35CF, 0x00},
876 {0x35DC, 0x07},
877 {0x35DE, 0x1A},
878 {0x35DF, 0x00},
879 {0x35E4, 0x2B},
880 {0x35E5, 0x00},
881 {0x35E6, 0x07},
882 {0x35E7, 0x01},
883 {0x3648, 0x01},
884 {0x3678, 0x01},
885 {0x367C, 0x69},
886 {0x367E, 0x69},
887 {0x3680, 0x69},
888 {0x3682, 0x69},
889 {0x3718, 0x1C},
890 {0x371D, 0x05},
891 {0x375D, 0x11},
892 {0x375E, 0x43},
893 {0x375F, 0x76},
894 {0x3760, 0x07},
895 {0x3768, 0x1B},
896 {0x3769, 0x1B},
897 {0x376A, 0x1A},
898 {0x376B, 0x19},
899 {0x376C, 0x17},
900 {0x376D, 0x0F},
901 {0x376E, 0x0B},
902 {0x376F, 0x0B},
903 {0x3770, 0x0B},
904 {0x3776, 0x89},
905 {0x3777, 0x00},
906 {0x3778, 0xCA},
907 {0x3779, 0x00},
908 {0x377A, 0x45},
909 {0x377B, 0x01},
910 {0x377C, 0x56},
911 {0x377D, 0x02},
912 {0x377E, 0xFE},
913 {0x377F, 0x03},
914 {0x3780, 0xFE},
915 {0x3781, 0x05},
916 {0x3782, 0xFE},
917 {0x3783, 0x06},
918 {0x3784, 0x7F},
919 {0x3788, 0x1F},
920 {0x378A, 0xCA},
921 {0x378B, 0x00},
922 {0x378C, 0x45},
923 {0x378D, 0x01},
924 {0x378E, 0x56},
925 {0x378F, 0x02},
926 {0x3790, 0xFE},
927 {0x3791, 0x03},
928 {0x3792, 0xFE},
929 {0x3793, 0x05},
930 {0x3794, 0xFE},
931 {0x3795, 0x06},
932 {0x3796, 0x7F},
933 {0x3798, 0xBF},
934 {0x3A18, 0x7F},
935 {0x3A1A, 0x37},
936 {0x3A1C, 0x37},
937 {0x3A1E, 0xF7},
938 {0x3A1F, 0x00},
939 {0x3A20, 0x3F},
940 {0x3A22, 0x6F},
941 {0x3A24, 0x3F},
942 {0x3A26, 0x5F},
943 {0x3A28, 0x2F},
944 {REG_NULL, 0x00},
948 {0x3000, 0x01},
949 {0x3002, 0x01},
950 {0x300C, 0x5B},
951 {0x300D, 0x40},
953 {0x3030, 0xA2},
954 {0x3031, 0x09},
956 {0x3030, 0xD1},
957 {0x3031, 0x04},
960 {0x3034, 0xF4},
961 {0x3035, 0x01},
962 {0x3048, 0x01},
963 {0x3049, 0x02},
964 {0x304A, 0x05},
965 {0x304B, 0x04},
966 {0x304C, 0x13},
967 {0x3050, 0x00},
968 {0x3058, 0x77},
969 {0x3059, 0x0D},
970 {0x305C, 0x0D},
971 {0x3060, 0xB0},
972 {0x3061, 0x00},
973 {0x3068, 0xA3},
974 {0x306C, 0xCE},
975 {0x306D, 0x00},
976 {0x30BE, 0x5E},
977 {0x30E8, 0x14},
978 {0x3110, 0x02},
979 {0x314C, 0x80},
980 {0x315A, 0x02},
981 {0x316A, 0x7E},
982 {0x319D, 0x00},
983 {0x319E, 0x01},
984 {0x31A1, 0x00},
985 {0x31D7, 0x03},
986 {0x3200, 0x10},
987 {0x3288, 0x22},
988 {0x328A, 0x02},
989 {0x328C, 0xA2},
990 {0x328E, 0x22},
991 {0x3415, 0x27},
992 {0x3418, 0x27},
993 {0x3428, 0xFE},
994 {0x349E, 0x6A},
995 {0x34A2, 0x9A},
996 {0x34A4, 0x8A},
997 {0x34A6, 0x8E},
998 {0x34AA, 0xD8},
999 {0x35BC, 0x00},
1000 {0x35BE, 0xFF},
1001 {0x35CC, 0x1B},
1002 {0x35CD, 0x00},
1003 {0x35CE, 0x2A},
1004 {0x35CF, 0x00},
1005 {0x35DC, 0x07},
1006 {0x35DE, 0x1A},
1007 {0x35DF, 0x00},
1008 {0x35E4, 0x2B},
1009 {0x35E5, 0x00},
1010 {0x35E6, 0x07},
1011 {0x35E7, 0x01},
1012 {0x3648, 0x01},
1013 {0x3678, 0x01},
1014 {0x367C, 0x69},
1015 {0x367E, 0x69},
1016 {0x3680, 0x69},
1017 {0x3682, 0x69},
1018 {0x3718, 0x1C},
1019 {0x371D, 0x05},
1020 {0x375D, 0x11},
1021 {0x375E, 0x43},
1022 {0x375F, 0x76},
1023 {0x3760, 0x07},
1024 {0x3768, 0x1B},
1025 {0x3769, 0x1B},
1026 {0x376A, 0x1A},
1027 {0x376B, 0x19},
1028 {0x376C, 0x17},
1029 {0x376D, 0x0F},
1030 {0x376E, 0x0B},
1031 {0x376F, 0x0B},
1032 {0x3770, 0x0B},
1033 {0x3776, 0x89},
1034 {0x3777, 0x00},
1035 {0x3778, 0xCA},
1036 {0x3779, 0x00},
1037 {0x377A, 0x45},
1038 {0x377B, 0x01},
1039 {0x377C, 0x56},
1040 {0x377D, 0x02},
1041 {0x377E, 0xFE},
1042 {0x377F, 0x03},
1043 {0x3780, 0xFE},
1044 {0x3781, 0x05},
1045 {0x3782, 0xFE},
1046 {0x3783, 0x06},
1047 {0x3784, 0x7F},
1048 {0x3788, 0x1F},
1049 {0x378A, 0xCA},
1050 {0x378B, 0x00},
1051 {0x378C, 0x45},
1052 {0x378D, 0x01},
1053 {0x378E, 0x56},
1054 {0x378F, 0x02},
1055 {0x3790, 0xFE},
1056 {0x3791, 0x03},
1057 {0x3792, 0xFE},
1058 {0x3793, 0x05},
1059 {0x3794, 0xFE},
1060 {0x3795, 0x06},
1061 {0x3796, 0x7F},
1062 {0x3798, 0xBF},
1063 {0x3A18, 0x8F},
1064 {0x3A1A, 0x4F},
1065 {0x3A1C, 0x47},
1066 {0x3A1E, 0xF7},
1067 {0x3A1F, 0x01},
1068 {0x3A20, 0x4F},
1069 {0x3A22, 0x87},
1070 {0x3A24, 0x4F},
1071 {0x3A26, 0x5F},
1072 {0x3A28, 0x3F},
1073 {REG_NULL, 0x00},
1077 {0x3000, 0x01},
1078 {0x3002, 0x00},
1079 {0x300C, 0x3B},
1080 {0x300D, 0x2A},
1081 {0x3018, 0x04},
1082 {0x302C, 0x30},
1083 {0x302E, 0x80},
1084 {0x302F, 0x0A},
1085 {0x3030, 0x6B},
1086 {0x3031, 0x0A},
1087 {0x3032, 0x00},
1088 {0x3034, 0xee},
1089 {0x3035, 0x02},
1090 {0x3048, 0x00},
1091 {0x3049, 0x00},
1092 {0x304A, 0x03},
1093 {0x304B, 0x02},
1094 {0x304C, 0x14},
1095 {0x3050, 0x01},
1096 {0x3056, 0x02},
1097 {0x3057, 0x06},
1098 {0x3058, 0x03},
1099 {0x3059, 0x00},
1100 {0x3068, 0xc9},
1101 {0x3069, 0x00},
1102 {0x30BE, 0x5E},
1103 {0x30C6, 0x00},
1104 {0x30CE, 0x00},
1105 {0x30D8, 0x4F},
1106 {0x30D9, 0x64},
1107 {0x3110, 0x02},
1108 {0x314C, 0xF0},
1109 {0x315A, 0x06},
1110 {0x3168, 0x82},
1111 {0x316A, 0x7E},
1112 {0x319D, 0x01},
1113 {0x319E, 0x02},
1114 {0x31A1, 0x00},
1115 {0x31D7, 0x00},
1116 {0x3202, 0x02},
1117 {0x3288, 0x22},
1118 {0x328A, 0x02},
1119 {0x328C, 0xA2},
1120 {0x328E, 0x22},
1121 {0x3415, 0x27},
1122 {0x3418, 0x27},
1123 {0x3428, 0xFE},
1124 {0x349E, 0x6A},
1125 {0x34A2, 0x9A},
1126 {0x34A4, 0x8A},
1127 {0x34A6, 0x8E},
1128 {0x34AA, 0xD8},
1129 {0x3648, 0x01},
1130 {0x3678, 0x01},
1131 {0x367C, 0x69},
1132 {0x367E, 0x69},
1133 {0x3680, 0x69},
1134 {0x3682, 0x69},
1135 {0x371D, 0x05},
1136 {0x375D, 0x11},
1137 {0x375E, 0x43},
1138 {0x375F, 0x76},
1139 {0x3760, 0x07},
1140 {0x3768, 0x1B},
1141 {0x3769, 0x1B},
1142 {0x376A, 0x1A},
1143 {0x376B, 0x19},
1144 {0x376C, 0x17},
1145 {0x376D, 0x0F},
1146 {0x376E, 0x0B},
1147 {0x376F, 0x0B},
1148 {0x3770, 0x0B},
1149 {0x3776, 0x89},
1150 {0x3777, 0x00},
1151 {0x3778, 0xCA},
1152 {0x3779, 0x00},
1153 {0x377A, 0x45},
1154 {0x377B, 0x01},
1155 {0x377C, 0x56},
1156 {0x377D, 0x02},
1157 {0x377E, 0xFE},
1158 {0x377F, 0x03},
1159 {0x3780, 0xFE},
1160 {0x3781, 0x05},
1161 {0x3782, 0xFE},
1162 {0x3783, 0x06},
1163 {0x3784, 0x7F},
1164 {0x3788, 0x1F},
1165 {0x378A, 0xCA},
1166 {0x378B, 0x00},
1167 {0x378C, 0x45},
1168 {0x378D, 0x01},
1169 {0x378E, 0x56},
1170 {0x378F, 0x02},
1171 {0x3790, 0xFE},
1172 {0x3791, 0x03},
1173 {0x3792, 0xFE},
1174 {0x3793, 0x05},
1175 {0x3794, 0xFE},
1176 {0x3795, 0x06},
1177 {0x3796, 0x7F},
1178 {0x3200, 0x11},
1179 {0x3798, 0xBF},
1180 {0x3A01, 0x03},
1181 {0x3A18, 0x6F},
1182 {0x3A1A, 0x2F},
1183 {0x3A1C, 0x2F},
1184 {0x3A1E, 0xBF},
1185 {0x3A1F, 0x00},
1186 {0x3A20, 0x2F},
1187 {0x3A22, 0x57},
1188 {0x3A24, 0x2F},
1189 {0x3A26, 0x4F},
1190 {0x3A28, 0x27},
1191 {REG_NULL, 0x00},
1195 {0x3000, 0x01},
1196 {0x3002, 0x00},
1197 {0x300C, 0x3B},
1198 {0x300D, 0x2A},
1199 {0x3018, 0x04},
1200 {0x302C, 0x30},
1201 {0x302E, 0x80},
1202 {0x302F, 0x0A},
1203 {0x3030, 0x40},
1204 {0x3031, 0x06},
1205 {0x3032, 0x00},
1206 {0x3034, 0xee},
1207 {0x3035, 0x02},
1208 {0x3048, 0x01},
1209 {0x3049, 0x01},
1210 {0x304A, 0x04},
1211 {0x304B, 0x04},
1212 {0x304C, 0x13},
1213 {0x3050, 0x01},
1214 {0x3056, 0x02},
1215 {0x3057, 0x06},
1216 {0x3058, 0x20},
1217 {0x3059, 0x03},
1218 {0x3068, 0xD9},
1219 {0x3069, 0x02},
1220 {0x30BE, 0x5E},
1221 {0x30C6, 0x00},
1222 {0x30CE, 0x00},
1223 {0x30D8, 0x4F},
1224 {0x30D9, 0x64},
1225 {0x3110, 0x02},
1226 {0x314C, 0xF0},
1227 {0x315A, 0x06},
1228 {0x3168, 0x82},
1229 {0x316A, 0x7E},
1230 {0x319D, 0x01},
1231 {0x319E, 0x02},
1232 {0x31A1, 0x00},
1233 {0x31D7, 0x01},
1234 {0x3202, 0x02},
1235 {0x3288, 0x22},
1236 {0x328A, 0x02},
1237 {0x328C, 0xA2},
1238 {0x328E, 0x22},
1239 {0x3415, 0x27},
1240 {0x3418, 0x27},
1241 {0x3428, 0xFE},
1242 {0x349E, 0x6A},
1243 {0x34A2, 0x9A},
1244 {0x34A4, 0x8A},
1245 {0x34A6, 0x8E},
1246 {0x34AA, 0xD8},
1247 {0x3648, 0x01},
1248 {0x3678, 0x01},
1249 {0x367C, 0x69},
1250 {0x367E, 0x69},
1251 {0x3680, 0x69},
1252 {0x3682, 0x69},
1253 {0x371D, 0x05},
1254 {0x375D, 0x11},
1255 {0x375E, 0x43},
1256 {0x375F, 0x76},
1257 {0x3760, 0x07},
1258 {0x3768, 0x1B},
1259 {0x3769, 0x1B},
1260 {0x376A, 0x1A},
1261 {0x376B, 0x19},
1262 {0x376C, 0x17},
1263 {0x376D, 0x0F},
1264 {0x376E, 0x0B},
1265 {0x376F, 0x0B},
1266 {0x3770, 0x0B},
1267 {0x3776, 0x89},
1268 {0x3777, 0x00},
1269 {0x3778, 0xCA},
1270 {0x3779, 0x00},
1271 {0x377A, 0x45},
1272 {0x377B, 0x01},
1273 {0x377C, 0x56},
1274 {0x377D, 0x02},
1275 {0x377E, 0xFE},
1276 {0x377F, 0x03},
1277 {0x3780, 0xFE},
1278 {0x3781, 0x05},
1279 {0x3782, 0xFE},
1280 {0x3783, 0x06},
1281 {0x3784, 0x7F},
1282 {0x3788, 0x1F},
1283 {0x378A, 0xCA},
1284 {0x378B, 0x00},
1285 {0x378C, 0x45},
1286 {0x378D, 0x01},
1287 {0x378E, 0x56},
1288 {0x378F, 0x02},
1289 {0x3790, 0xFE},
1290 {0x3791, 0x03},
1291 {0x3792, 0xFE},
1292 {0x3793, 0x05},
1293 {0x3794, 0xFE},
1294 {0x3795, 0x06},
1295 {0x3796, 0x7F},
1296 {0x3200, 0x10},
1297 {0x3798, 0xBF},
1298 {0x3A01, 0x03},
1299 {0x3A18, 0x6F},
1300 {0x3A1A, 0x2F},
1301 {0x3A1C, 0x2F},
1302 {0x3A1E, 0xBF},
1303 {0x3A1F, 0x00},
1304 {0x3A20, 0x2F},
1305 {0x3A22, 0x57},
1306 {0x3A24, 0x2F},
1307 {0x3A26, 0x4F},
1308 {0x3A28, 0x27},
1309 {REG_NULL, 0x00},
1313 {0x3010, 0x07},
1314 {0x31a1, 0x00},
1315 {REG_NULL, 0x00},
1318 {0x31a1, 0x0f},
1319 {REG_NULL, 0x00},
1323 {0x3010, 0x05},
1324 {0x31a1, 0x03},
1325 {0x31d9, 0x01},
1326 {REG_NULL, 0x00},
1329 {0x31a1, 0x0f},
1330 {REG_NULL, 0x00},
1334 {0x3010, 0x05},
1335 {0x31a1, 0x0f},
1336 {REG_NULL, 0x00},
1360 .exp_def = 0x0906,
1361 .hts_def = 0x05dc * 2,
1362 .vts_def = 0x0ce4,
1363 .mipi_freq_idx = 0,
1378 .exp_def = 0x03de,
1379 .hts_def = 0x02ee * 4,
1380 .vts_def = 0x0672 * 2,
1403 .exp_def = 0x05cd,
1404 .hts_def = 0x01F4 * 8,
1406 .vts_def = 0x09A2 * 4,
1408 .vts_def = 0x04D1 * 4,
1431 .exp_def = 0x0600,
1432 .hts_def = 0x05dc * 2,
1433 .vts_def = 0x672,
1434 .mipi_freq_idx = 0,
1449 .exp_def = 0x0600,
1450 .hts_def = 0x05dc * 4,
1451 .vts_def = 0x0672 * 2,
1452 .mipi_freq_idx = 0,
1481 buf[0] = reg >> 8; in imx464_write_reg()
1482 buf[1] = reg & 0xff; in imx464_write_reg()
1495 return 0; in imx464_write_reg()
1502 int ret = 0; in IMX464_write_array()
1504 for (i = 0; ret == 0 && regs[i].addr != REG_NULL; i++) { in IMX464_write_array()
1517 __be32 data_be = 0; in IMX464_read_reg()
1526 msgs[0].addr = client->addr; in IMX464_read_reg()
1527 msgs[0].flags = 0; in IMX464_read_reg()
1528 msgs[0].len = 2; in IMX464_read_reg()
1529 msgs[0].buf = (u8 *)&reg_addr_be; in IMX464_read_reg()
1543 return 0; in IMX464_read_reg()
1558 int cur_best_fit = 0; in IMX464_find_best_fit()
1562 for (i = 0; i < IMX464->cfg_num; i++) { in IMX464_find_best_fit()
1581 u64 pixel_rate = 0; in IMX464_set_fmt()
1617 return 0; in IMX464_set_fmt()
1641 fmt->reserved[0] = mode->vc[fmt->pad]; in IMX464_get_fmt()
1643 fmt->reserved[0] = mode->vc[PAD0]; in IMX464_get_fmt()
1647 return 0; in IMX464_get_fmt()
1656 if (code->index != 0) in IMX464_enum_mbus_code()
1660 return 0; in IMX464_enum_mbus_code()
1680 return 0; in IMX464_enum_frame_sizes()
1691 return 0; in IMX464_g_frame_interval()
1699 u32 val = 0; in IMX464_g_mbus_config()
1722 return 0; in IMX464_g_mbus_config()
1728 memset(inf, 0, sizeof(*inf)); in IMX464_get_module_inf()
1741 u32 gain_switch = 0; in IMX464_set_hdrae()
1742 u32 shr1 = 0; in IMX464_set_hdrae()
1743 u32 shr0 = 0; in IMX464_set_hdrae()
1744 u32 rhs1 = 0; in IMX464_set_hdrae()
1745 u32 rhs1_max = 0; in IMX464_set_hdrae()
1748 int ret = 0; in IMX464_set_hdrae()
1750 u8 cg_mode = 0; in IMX464_set_hdrae()
1765 "rev exp req: L_exp: 0x%x, 0x%x, M_exp: 0x%x, 0x%x S_exp: 0x%x, 0x%x\n", in IMX464_set_hdrae()
1776 gain_switch = 0x01 | 0x100; in IMX464_set_hdrae()
1779 gain_switch = 0x00 | 0x100; in IMX464_set_hdrae()
1803 if (gain_switch & 0x100) in IMX464_set_hdrae()
1807 gain_switch & 0xff); in IMX464_set_hdrae()
1934 int shr2, shr1, shr0, rhs2, rhs1 = 0; in IMX464_set_hdrae_3frame()
1935 int rhs1_change_limit, rhs2_change_limit = 0; in IMX464_set_hdrae_3frame()
1938 int ret = 0; in IMX464_set_hdrae_3frame()
1939 u32 gain_switch = 0; in IMX464_set_hdrae_3frame()
1940 u8 cg_mode = 0; in IMX464_set_hdrae_3frame()
1942 int rhs1_max = 0; in IMX464_set_hdrae_3frame()
1943 int shr2_min = 0; in IMX464_set_hdrae_3frame()
1963 gain_switch = 0x01 | 0x100; in IMX464_set_hdrae_3frame()
1966 gain_switch = 0x00 | 0x100; in IMX464_set_hdrae_3frame()
1971 "rev exp req: L_exp: 0x%x, 0x%x, M_exp: 0x%x, 0x%x S_exp: 0x%x, 0x%x\n", in IMX464_set_hdrae_3frame()
1989 if (gain_switch & 0x100) in IMX464_set_hdrae_3frame()
1993 gain_switch & 0xff); in IMX464_set_hdrae_3frame()
2199 int ret = 0; in IMX464_set_conversion_gain()
2202 u32 gain_switch = 0; in IMX464_set_conversion_gain()
2205 gain_switch = 0x00 | 0x100; in IMX464_set_conversion_gain()
2208 gain_switch = 0x01 | 0x100; in IMX464_set_conversion_gain()
2215 if (gain_switch & 0x100) in IMX464_set_conversion_gain()
2219 gain_switch & 0xff); in IMX464_set_conversion_gain()
2228 //ag: echo 0 > /sys/devices/platform/ff510000.i2c/i2c-1/1-0037/cam_s_cg
2237 int status = 0; in set_conversion_gain_status()
2238 int ret = 0; in set_conversion_gain_status()
2240 ret = kstrtoint(buf, 0, &status); in set_conversion_gain_status()
2241 if (!ret && status >= 0 && status < 2) in set_conversion_gain_status()
2244 dev_err(dev, "input 0 for LCG, 1 for HCG, cur %d\n", status); in set_conversion_gain_status()
2256 for (i = 0; i < ARRAY_SIZE(attributes); i++) in add_sysfs_interfaces()
2259 return 0; in add_sysfs_interfaces()
2261 for (i--; i >= 0 ; i--) in add_sysfs_interfaces()
2271 for (i = 0; i < ARRAY_SIZE(attributes); i++) in remove_sysfs_interfaces()
2273 return 0; in remove_sysfs_interfaces()
2285 return 0; in IMX464_get_channel_info()
2294 long ret = 0; in IMX464_ioctl()
2295 u64 pixel_rate = 0; in IMX464_ioctl()
2317 for (i = 0; i < IMX464->cfg_num; i++) { in IMX464_ioctl()
2392 u32 cg = 0; in IMX464_compat_ioctl32()
2526 int ret = 0; in IMX464_init_conversion_gain()
2527 u32 val = 0; in IMX464_init_conversion_gain()
2530 val = 0x01; in IMX464_init_conversion_gain()
2532 val = 0; in IMX464_init_conversion_gain()
2579 IMX464_REG_VALUE_08BIT, 0); in __IMX464_start_stream()
2582 IMX464_REG_VALUE_08BIT, 0); in __IMX464_start_stream()
2589 int ret = 0; in __IMX464_stop_stream()
2606 int ret = 0; in IMX464_s_stream()
2615 if (ret < 0) { in IMX464_s_stream()
2643 int ret = 0; in IMX464_s_power()
2653 if (ret < 0) { in IMX464_s_power()
2692 if (ret < 0) in __IMX464_power_on()
2697 if (ret < 0) in __IMX464_power_on()
2704 if (ret < 0) { in __IMX464_power_on()
2709 gpiod_set_value_cansleep(IMX464->reset_gpio, 0); in __IMX464_power_on()
2712 if (ret < 0) { in __IMX464_power_on()
2728 return 0; in __IMX464_power_on()
2742 gpiod_set_value_cansleep(IMX464->pwdn_gpio, 0); in __IMX464_power_off()
2745 gpiod_set_value_cansleep(IMX464->reset_gpio, 0); in __IMX464_power_off()
2749 if (ret < 0) in __IMX464_power_off()
2773 return 0; in IMX464_runtime_suspend()
2781 v4l2_subdev_get_try_format(sd, fh->pad, 0); in IMX464_open()
2782 const struct IMX464_mode *def_mode = &IMX464->support_modes[0]; in IMX464_open()
2794 return 0; in IMX464_open()
2811 fie->reserved[0] = IMX464->support_modes[fie->index].hdr_mode; in IMX464_enum_frame_interval()
2812 return 0; in IMX464_enum_frame_interval()
2839 return 0; in IMX464_get_selection()
2891 u32 vts = 0; in IMX464_set_ctrl()
2892 int ret = 0; in IMX464_set_ctrl()
2893 u32 shr0 = 0; in IMX464_set_ctrl()
2894 u32 flip = 0; in IMX464_set_ctrl()
2911 return 0; in IMX464_set_ctrl()
2926 dev_err(&client->dev, "set exposure 0x%x\n", in IMX464_set_ctrl()
2938 dev_err(&client->dev, "set analog gain 0x%x\n", in IMX464_set_ctrl()
2966 dev_err(&client->dev, "set vts 0x%x\n", in IMX464_set_ctrl()
2990 ret |= imx464_write_reg(IMX464->client, 0x3074, in IMX464_set_ctrl()
2991 IMX464_REG_VALUE_08BIT, 0x40); in IMX464_set_ctrl()
2992 ret |= imx464_write_reg(IMX464->client, 0x3075, in IMX464_set_ctrl()
2993 IMX464_REG_VALUE_08BIT, 0x06); in IMX464_set_ctrl()
2994 ret |= imx464_write_reg(IMX464->client, 0x3080, in IMX464_set_ctrl()
2995 IMX464_REG_VALUE_08BIT, 0xff); in IMX464_set_ctrl()
2996 ret |= imx464_write_reg(IMX464->client, 0x30ad, in IMX464_set_ctrl()
2997 IMX464_REG_VALUE_08BIT, 0x7e); in IMX464_set_ctrl()
2998 ret |= imx464_write_reg(IMX464->client, 0x30b6, in IMX464_set_ctrl()
2999 IMX464_REG_VALUE_08BIT, 0xff); in IMX464_set_ctrl()
3000 ret |= imx464_write_reg(IMX464->client, 0x30b7, in IMX464_set_ctrl()
3001 IMX464_REG_VALUE_08BIT, 0x01); in IMX464_set_ctrl()
3002 ret |= imx464_write_reg(IMX464->client, 0x30d8, in IMX464_set_ctrl()
3003 IMX464_REG_VALUE_08BIT, 0x45); in IMX464_set_ctrl()
3004 ret |= imx464_write_reg(IMX464->client, 0x3114, in IMX464_set_ctrl()
3005 IMX464_REG_VALUE_08BIT, 0x01); in IMX464_set_ctrl()
3007 ret |= imx464_write_reg(IMX464->client, 0x3074, in IMX464_set_ctrl()
3008 IMX464_REG_VALUE_08BIT, 0x3c); in IMX464_set_ctrl()
3009 ret |= imx464_write_reg(IMX464->client, 0x3075, in IMX464_set_ctrl()
3010 IMX464_REG_VALUE_08BIT, 0x00); in IMX464_set_ctrl()
3011 ret |= imx464_write_reg(IMX464->client, 0x3080, in IMX464_set_ctrl()
3012 IMX464_REG_VALUE_08BIT, 0x01); in IMX464_set_ctrl()
3013 ret |= imx464_write_reg(IMX464->client, 0x30ad, in IMX464_set_ctrl()
3014 IMX464_REG_VALUE_08BIT, 0x02); in IMX464_set_ctrl()
3015 ret |= imx464_write_reg(IMX464->client, 0x30b6, in IMX464_set_ctrl()
3016 IMX464_REG_VALUE_08BIT, 0x00); in IMX464_set_ctrl()
3017 ret |= imx464_write_reg(IMX464->client, 0x30b7, in IMX464_set_ctrl()
3018 IMX464_REG_VALUE_08BIT, 0x00); in IMX464_set_ctrl()
3019 ret |= imx464_write_reg(IMX464->client, 0x30d8, in IMX464_set_ctrl()
3020 IMX464_REG_VALUE_08BIT, 0x44); in IMX464_set_ctrl()
3021 ret |= imx464_write_reg(IMX464->client, 0x3114, in IMX464_set_ctrl()
3022 IMX464_REG_VALUE_08BIT, 0x02); in IMX464_set_ctrl()
3030 dev_warn(&client->dev, "%s Unhandled id:0x%x, val:0x%x\n", in IMX464_set_ctrl()
3050 u64 pixel_rate = 0; in IMX464_initialize_controls()
3062 1, 0, link_freq_menu_items); in IMX464_initialize_controls()
3068 V4L2_CID_PIXEL_RATE, 0, IMX464_10BIT_HDR2_PIXEL_RATE, in IMX464_initialize_controls()
3094 v4l2_ctrl_new_std(handler, &IMX464_ctrl_ops, V4L2_CID_HFLIP, 0, 1, 1, 0); in IMX464_initialize_controls()
3095 v4l2_ctrl_new_std(handler, &IMX464_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); in IMX464_initialize_controls()
3108 return 0; in IMX464_initialize_controls()
3120 u32 id = 0; in IMX464_check_sensor_id()
3132 return 0; in IMX464_check_sensor_id()
3139 for (i = 0; i < IMX464_NUM_SUPPLIES; i++) in IMX464_configure_regulators()
3157 u32 i, hdr_mode = 0; in IMX464_probe()
3163 (DRIVER_VERSION & 0xff00) >> 8, in IMX464_probe()
3164 DRIVER_VERSION & 0x00ff); in IMX464_probe()
3189 if (strcmp(sync_mode_name, RKMODULE_EXTERNAL_MASTER_MODE) == 0) in IMX464_probe()
3191 else if (strcmp(sync_mode_name, RKMODULE_INTERNAL_MASTER_MODE) == 0) in IMX464_probe()
3193 else if (strcmp(sync_mode_name, RKMODULE_SLAVE_MODE) == 0) in IMX464_probe()
3223 for (i = 0; i < IMX464->cfg_num; i++) { in IMX464_probe()
3229 IMX464->cur_mode = &IMX464->support_modes[0]; in IMX464_probe()
3292 if (ret < 0) in IMX464_probe()
3296 memset(facing, 0, sizeof(facing)); in IMX464_probe()
3297 if (strcmp(IMX464->module_facing, "back") == 0) in IMX464_probe()
3298 facing[0] = 'b'; in IMX464_probe()
3300 facing[0] = 'f'; in IMX464_probe()
3318 return 0; in IMX464_probe()
3353 return 0; in IMX464_remove()
3365 { "sony,imx464", 0 },