forked from Rust-for-Linux/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathds90ub954.rs
More file actions
2026 lines (1684 loc) · 72.6 KB
/
Copy pathds90ub954.rs
File metadata and controls
2026 lines (1684 loc) · 72.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// SPDX-License-Identifier: GPL-2.0
//! Driver for the DS90UB954 FDP Link III deserializer in connection
//! with the DS90UB953 serializer from Texas Instruments
//!
//! Datasheet: https://www.ti.com/lit/ds/symlink/ds90ub954-q1.pdf
// ------------------------------------------------------------------
// -- _____ ______ _____ -
// -- |_ _| | ____|/ ____| -
// -- | | _ __ | |__ | (___ Institute of Embedded Systems -
// -- | | | '_ \| __| \___ \ Zurich University of -
// -- _| |_| | | | |____ ____) | Applied Sciences -
// -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
// ------------------------------------------------------------------
use kernel::{
c_str,
device::property::{self, FwNodeReferenceArgs},
gpio::consumer as gpio,
i2c, of,
prelude::*,
regmap,
str::BStr,
};
/// Deserializer registers
#[allow(unused)]
mod ti954 {
pub(crate) const REG_I2C_DEV_ID: u32 = 0x00;
pub(crate) const DES_ID: usize = 0;
pub(crate) const DEVICE_ID: usize = 1;
pub(crate) const REG_RESET: usize = 0x01;
pub(crate) const DIGITAL_RESET0: usize = 0;
pub(crate) const DIGITAL_RESET1: usize = 1;
pub(crate) const RESTART_AUTOLOAD: usize = 2;
pub(crate) const REG_GENERAL_CFG: usize = 0x2;
pub(crate) const FORCE_REFCLK_DET: usize = 0;
pub(crate) const RX_PARITY_CHECKER_ENABLE: usize = 1;
pub(crate) const OUTPUT_SLEEP_STATE_SELECT: usize = 2;
pub(crate) const OUTPUT_ENABLE: usize = 3;
pub(crate) const OUTPUT_EN_MODE: usize = 4;
pub(crate) const I2C_MASTER_EN: usize = 5;
pub(crate) const REG_REVISION: u32 = 0x03;
pub(crate) const MASK_ID: usize = 0;
pub(crate) const REG_DEVICE_STS: u32 = 0x04;
pub(crate) const LOCK: usize = 2;
pub(crate) const PASS: usize = 3;
pub(crate) const REFCLK_VALID: usize = 4;
pub(crate) const CFG_INIT_DONE: usize = 6;
pub(crate) const CFG_CKSUM_STS: usize = 7;
pub(crate) const REG_PAR_ERR_THOLD_HI: usize = 0x5;
pub(crate) const PAR_ERR_THOLD_HI: usize = 0;
pub(crate) const REG_PAR_ERR_THOLD_LO: usize = 0x6;
pub(crate) const PAR_ERR_THOLD_LO: usize = 0;
pub(crate) const REG_BCC_WD_CTL: usize = 0x07;
pub(crate) const BCC_WATCHDOG_TIMER_DISABLE: usize = 0;
pub(crate) const BCC_WATCHDOG_TIMER: usize = 1;
pub(crate) const REG_I2C_CTL1: usize = 0x08;
pub(crate) const I2C_FILTER_DEPTH: usize = 0;
pub(crate) const I2C_SDA_HOLD: usize = 4;
pub(crate) const LOCAL_WRITE_DISABLE: usize = 7;
pub(crate) const REG_I2C_CTL2: usize = 0x09;
pub(crate) const I2C_BUS_TIMER_DISABLE: usize = 0;
pub(crate) const I2C_BUS_TIMER_SPEEDUP: usize = 1;
pub(crate) const SDA_OUTPUT_DELAY: usize = 2;
pub(crate) const SDA_OUTPUT_SETUP: usize = 4;
pub(crate) const REG_SCL_HIGH_TIME: usize = 0x0a;
pub(crate) const SCL_HIGH_TIME: usize = 0;
pub(crate) const REG_SCL_LOW_TIME: usize = 0x0b;
pub(crate) const SCL_LOW_TIME: usize = 0;
pub(crate) const REG_RX_PORT_CTL: u32 = 0x0c;
pub(crate) const PORT0_EN: u32 = 0;
pub(crate) const PORT1_ER: usize = 1;
pub(crate) const LOCK_SEL: usize = 2;
pub(crate) const PASS_SEL: usize = 4;
pub(crate) const REG_IO_CTL: usize = 0x0d;
pub(crate) const IO_SUPPLY_MODE: usize = 4;
pub(crate) const IO_SUPPLY_MODE_OV: usize = 6;
pub(crate) const SEL3P3V: usize = 7;
pub(crate) const REG_GPIO_PIN_STS: usize = 0x0e;
pub(crate) const GPIO_STS: usize = 0;
pub(crate) const GPIO0_STS: usize = 0;
pub(crate) const GPIO1_STS: usize = 1;
pub(crate) const GPIO2_STS: usize = 2;
pub(crate) const GPIO3_STS: usize = 3;
pub(crate) const GPIO4_STS: usize = 4;
pub(crate) const GPIO5_STS: usize = 5;
pub(crate) const GPIO6_STS: usize = 6;
pub(crate) const REG_GPIO_INPUT_CTL: u32 = 0x0f;
pub(crate) const GPIO_INPUT_EN: usize = 0;
pub(crate) const GPIO0_INPUT_EN: usize = 0;
pub(crate) const GPIO1_INPUT_EN: usize = 1;
pub(crate) const GPIO2_INPUT_EN: usize = 2;
pub(crate) const GPIO3_INPUT_EN: usize = 3;
pub(crate) const GPIO4_INPUT_EN: usize = 4;
pub(crate) const GPIO5_INPUT_EN: usize = 5;
pub(crate) const GPIO6_INPUT_EN: usize = 6;
pub(crate) const REG_GPIO0_PIN_CTL: u32 = 0x10;
pub(crate) const GPIO0_OUT_EN: usize = 0;
pub(crate) const GPIO0_OUT_VAL: usize = 1;
pub(crate) const GPIO0_OUT_SRC: usize = 2;
pub(crate) const GPIO0_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO1_PIN_CTL: u32 = 0x11;
pub(crate) const GPIO1_OUT_EN: usize = 0;
pub(crate) const GPIO1_OUT_VAL: usize = 1;
pub(crate) const GPIO1_OUT_SRC: usize = 2;
pub(crate) const GPIO1_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO2_PIN_CTL: u32 = 0x12;
pub(crate) const GPIO2_OUT_EN: usize = 0;
pub(crate) const GPIO2_OUT_VAL: usize = 1;
pub(crate) const GPIO2_OUT_SRC: usize = 2;
pub(crate) const GPIO2_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO3_PIN_CTL: u32 = 0x13;
pub(crate) const GPIO3_OUT_EN: usize = 0;
pub(crate) const GPIO3_OUT_VAL: usize = 1;
pub(crate) const GPIO3_OUT_SRC: usize = 2;
pub(crate) const GPIO3_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO4_PIN_CTL: u32 = 0x14;
pub(crate) const GPIO4_OUT_EN: usize = 0;
pub(crate) const GPIO4_OUT_VAL: usize = 1;
pub(crate) const GPIO4_OUT_SRC: usize = 2;
pub(crate) const GPIO4_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO5_PIN_CTL: u32 = 0x15;
pub(crate) const GPIO5_OUT_EN: usize = 0;
pub(crate) const GPIO5_OUT_VAL: usize = 1;
pub(crate) const GPIO5_OUT_SRC: usize = 2;
pub(crate) const GPIO5_OUT_SEL: usize = 5;
pub(crate) const REG_GPIO6_PIN_CTL: u32 = 0x16;
pub(crate) const GPIO6_OUT_EN: usize = 0;
pub(crate) const GPIO6_OUT_VAL: usize = 1;
pub(crate) const GPIO6_OUT_SRC: usize = 2;
pub(crate) const GPIO6_OUT_SEL: usize = 5;
pub(crate) const REG_RESERVED: usize = 0x17;
pub(crate) const REG_FS_CTL: usize = 0x18;
pub(crate) const FS_GEN_ENABLE: usize = 0;
pub(crate) const FS_GEN_MODE: usize = 1;
pub(crate) const FS_INIT_STATE: usize = 2;
pub(crate) const FS_SINGLE: usize = 3;
pub(crate) const FS_MODE: usize = 4;
pub(crate) const REG_FS_HIGH_TIME_1: usize = 0x19;
pub(crate) const FRAMESYNC_HIGH_TIME_1: usize = 0;
pub(crate) const REG_FS_HIGH_TIME_0: usize = 0x1A;
pub(crate) const FRAMESYNC_HIGH_TIME_0: usize = 0;
pub(crate) const REG_FS_LOW_TIME_1: usize = 0x1B;
pub(crate) const FRAMESYNC_LOW_TIME_1: usize = 0;
pub(crate) const REG_FS_LOW_TIME_0: usize = 0x1C;
pub(crate) const FRAMESYNC_LOW_TIME_0: usize = 0;
pub(crate) const REG_MAX_FRM_HI: usize = 0x1d;
pub(crate) const MAX_FRAME_HI: usize = 0;
pub(crate) const REG_MAX_FRM_LO: usize = 0x1e;
pub(crate) const MAX_FRAME_LO: usize = 0;
pub(crate) const REG_CSI_PLL_CTL: u32 = 0x1f;
pub(crate) const CSI_TX_SPEED: usize = 0;
pub(crate) const REG_FWD_CTL1: u32 = 0x20;
pub(crate) const FWD_PORT0_DIS: u32 = 4;
pub(crate) const FWD_PORT1_DIS: usize = 6;
pub(crate) const FWD_CTL2: usize = 0x21;
pub(crate) const CSI0_RR_RWD: usize = 0;
pub(crate) const CSI0_SYNC_FWD: usize = 2;
pub(crate) const FWD_SYNC_AS_AVAIL: usize = 6;
pub(crate) const CSI_REPLICATE: usize = 7;
pub(crate) const REG_FWD_STS: usize = 0x22;
pub(crate) const FWD_SYNC0: usize = 0;
pub(crate) const FWD_SYNC_FAIL0: usize = 2;
pub(crate) const REG_INTERRUPT_CTL: usize = 0x23;
pub(crate) const IE_RX0: usize = 0;
pub(crate) const IE_RX1: usize = 1;
pub(crate) const IE_CSI_TX0: usize = 4;
pub(crate) const INT_EN: usize = 7;
pub(crate) const REG_INTERRUPT_STS: usize = 0x24;
pub(crate) const IS_RX0: usize = 0;
pub(crate) const IS_RX1: usize = 1;
pub(crate) const IS_CSI_TX0: usize = 4;
pub(crate) const INTERRUPT_STS: usize = 7;
pub(crate) const REG_TS_CONFIG: usize = 0x25;
pub(crate) const TS_MODE: usize = 0;
pub(crate) const TS_FREERUN: usize = 1;
pub(crate) const TS_AS_AVAIL: usize = 3;
pub(crate) const TS_RES_CTL: usize = 4;
pub(crate) const FS_POLARITY: usize = 6;
pub(crate) const REG_TS_CONTROL: usize = 0x26;
pub(crate) const TS_ENABLE0: usize = 0;
pub(crate) const TS_ENABLE1: usize = 1;
pub(crate) const TS_FREEZE: usize = 4;
pub(crate) const REG_TS_LINE_LO: usize = 0x28;
pub(crate) const TS_LINE_LO: usize = 0;
pub(crate) const REG_TS_STATUS: usize = 0x29;
pub(crate) const TS_VALID0: usize = 0;
pub(crate) const TS_VALID1: usize = 1;
pub(crate) const TS_READY: usize = 42;
pub(crate) const REG_TIMESTAMP_P0_HI: usize = 0x2a;
pub(crate) const TIMESTAMP_P0_HI: usize = 3;
pub(crate) const REG_TIMESTAMP_P0_LO: usize = 0x2b;
pub(crate) const TIMESTAMP_P0_LO: usize = 4;
pub(crate) const REG_TIMESTAMP_P1_HI: usize = 0x2c;
pub(crate) const TIMESTAMP_P1_HI: usize = 0;
pub(crate) const REG_TIMESTAMP_P1_LO: usize = 0x2d;
pub(crate) const TIMESTAMP_P1_LO: usize = 0;
pub(crate) const REG_CSI_CTL: u32 = 0x33;
pub(crate) const CSI_ENABLE: usize = 0;
pub(crate) const CSI_CONTS_CLOCK: usize = 1;
pub(crate) const CSI_ULP: usize = 2;
pub(crate) const CSI_LANE_COUNT: usize = 4;
pub(crate) const CSI_CAL_EN: usize = 6;
pub(crate) const CSI_4_LANE: u32 = 0;
pub(crate) const CSI_3_LANE: u32 = 1;
pub(crate) const CSI_2_LANE: u32 = 2;
pub(crate) const CSI_1_LANE: u32 = 3;
pub(crate) const REG_CSI_CTL2: usize = 0x34;
pub(crate) const CSI_CAL_PERIODIC: usize = 0;
pub(crate) const CSI_CAL_SINGLE: usize = 1;
pub(crate) const CSI_CAL_INV: usize = 2;
pub(crate) const CSI_PASS_MODE: usize = 3;
pub(crate) const REG_CSI_STS: usize = 0x35;
pub(crate) const TX_PORT_PASS: usize = 0;
pub(crate) const TX_PORT_SYNC: usize = 1;
pub(crate) const REG_CSI_TX_ICR: usize = 0x36;
pub(crate) const IE_CSI_PASS: usize = 0;
pub(crate) const IE_SCI_PASS_ERROR: usize = 1;
pub(crate) const IE_CSI_SYNC: usize = 2;
pub(crate) const IE_CSI_SYNC_ERROR: usize = 3;
pub(crate) const REG_CSI_TX_ISR: usize = 0x37;
pub(crate) const IS_CSI_PASS: usize = 0;
pub(crate) const IS_CSI_PASS_ERR_OR: usize = 1;
pub(crate) const IS_CSI_SYNC: usize = 2;
pub(crate) const IS_CSI_SYNC_ERR_OR: usize = 3;
pub(crate) const IS_RX_PORT_INT: usize = 4;
pub(crate) const REG_CSI_TEST_CTL: usize = 0x38;
pub(crate) const REG_CSI_TEST_PATT_HI: usize = 0x39;
pub(crate) const CSI_TEST_PATT_HI: usize = 0;
pub(crate) const REG_CSI_TEST_PATT_LO: usize = 0x3a;
pub(crate) const CSI_TEST_PATT_LO: usize = 0;
pub(crate) const REG_SFILTER_CFG: usize = 0x41;
pub(crate) const SFILTER_MIN: usize = 0;
pub(crate) const SFILTER_MAX: usize = 4;
pub(crate) const REG_AEQ_CTL1: usize = 0x42;
pub(crate) const AEQ_SFILTER_EN: usize = 0;
pub(crate) const AEQ_OUTER_LOOP: usize = 1;
pub(crate) const AEQ_2STEP_EN: usize = 2;
pub(crate) const AEQ_ERR_CTL: usize = 4;
pub(crate) const REG_AEQ_ERR_THOLD: usize = 0x43;
pub(crate) const AEQ_ERR_THRESHOLD: usize = 0;
pub(crate) const REG_FPD3_CAP: usize = 0x4a;
pub(crate) const FPD3_ENC_CRC_CAP: usize = 4;
pub(crate) const REG_RAQ_EMBED_DTYPE: usize = 0x4b;
pub(crate) const EMBED_DTYPE_ID: usize = 0;
pub(crate) const EMBED_DTYPE_EN: usize = 6;
pub(crate) const REG_FPD3_PORT_SEL: u32 = 0x4c;
pub(crate) const RX_WRITE_PORT_0: usize = 0;
pub(crate) const RX_WRITE_PORT_1: usize = 1;
pub(crate) const RX_READ_PORT: usize = 4;
pub(crate) const PHYS_PORT_NUM: usize = 6;
pub(crate) const REG_RX_PORT_STS1: usize = 0x4d;
pub(crate) const LOCK_STS: usize = 0;
pub(crate) const PORT_PASS: usize = 1;
pub(crate) const PARITY_ERROR: usize = 2;
pub(crate) const BCC_SEQ_ERROR: usize = 3;
pub(crate) const LOCK_STS_CHG: usize = 4;
pub(crate) const BCC_CRC_ERROR: usize = 5;
pub(crate) const RX_PORT_NUM: usize = 6;
pub(crate) const REG_RX_PORT_STS2: usize = 0x4e;
pub(crate) const LINE_CNT_CHG: usize = 0;
pub(crate) const CABLE_FAULT: usize = 1;
pub(crate) const FREQ_STABLE: usize = 2;
pub(crate) const CSI_ERROR: usize = 3;
pub(crate) const BUFFER_ERROR: usize = 4;
pub(crate) const FPD3_ENCODE_ERROR: usize = 5;
pub(crate) const LINE_LEN_CHG: usize = 6;
pub(crate) const LINE_LEN_UNSTABLE: usize = 7;
pub(crate) const REG_RX_FREQ_HIGH: usize = 0x4f;
pub(crate) const FREQ_CNT_HIGH: usize = 0;
pub(crate) const REG_RX_FERQ_LOQ: usize = 0x50;
pub(crate) const FREQ_CNT_LOW: usize = 0;
pub(crate) const REG_SENSOR_STS_0: usize = 0x51;
pub(crate) const VOLT0_SENSE_ALARM: usize = 0;
pub(crate) const VOLT1_SENSE_ALARM: usize = 1;
pub(crate) const TEMP_SENSE_ALARM: usize = 2;
pub(crate) const LINK_DETECT_ALARM: usize = 3;
pub(crate) const BCC_ALARM: usize = 4;
pub(crate) const CSI_ALARM: usize = 5;
pub(crate) const REG_SENSOR_STS_1: usize = 0x52;
pub(crate) const VOLT0_SENSE_LEVEL: usize = 0;
pub(crate) const VOLT1_SENSE_LEVEL: usize = 4;
pub(crate) const REG_SENSOR_STS_2: usize = 0x53;
pub(crate) const TEMP_SENSE_LEVEL: usize = 0;
pub(crate) const REG_SENSOR_ST_3: usize = 0x54;
pub(crate) const CSI_CNTRL_ERR: usize = 0;
pub(crate) const CSI_SYNC_ERR: usize = 1;
pub(crate) const CSI_SOT_ERR: usize = 2;
pub(crate) const CSI_CHKSUM_ERR: usize = 3;
pub(crate) const CSI_ECC_2BIT_ERR: usize = 4;
pub(crate) const REG_RX_PAR_ERR_HI: usize = 0x55;
pub(crate) const PAR_ERROR_BYTE_1: usize = 0;
pub(crate) const REG_RX_PAR_ERR_LO: usize = 0x56;
pub(crate) const PAR_ERROR_BYTE_0: usize = 0;
pub(crate) const REG_BIST_ERR_COUNT: usize = 0x57;
pub(crate) const BIST_ERROR_COUNT: usize = 0;
pub(crate) const REG_BCC_CONFIG: u32 = 0x58;
pub(crate) const BC_FREQ_SELECT: usize = 0;
pub(crate) const BC_CRC_GENERAOTR_ENABLE: usize = 3;
pub(crate) const BC_ALWAYS_ON: usize = 4;
pub(crate) const AUTO_ACK_ALL: usize = 5;
pub(crate) const I2C_PASS_THROUGH: usize = 6;
pub(crate) const I2C_PASS_THROUGH_ALL: usize = 7;
pub(crate) const BC_FREQ_2M5: usize = 0;
pub(crate) const BC_FREQ_1M: usize = 2;
pub(crate) const BC_FREQ_25M: usize = 5;
pub(crate) const BC_FREQ_50M: u32 = 6;
pub(crate) const BC_FREQ_250: usize = 7;
pub(crate) const REG_DATAPATH_CTL1: usize = 0x59;
pub(crate) const FC_GPIO_EN: usize = 0;
pub(crate) const OVERRIDE_FC_CONFIG: usize = 7;
pub(crate) const REG_DATAPATH_CTL2: usize = 0x5a;
pub(crate) const REG_SER_ID: usize = 0x5b;
pub(crate) const FREEZE_DEVICE_ID: usize = 0;
pub(crate) const SER_ID: usize = 1;
pub(crate) const REG_SER_ALIAS_ID: u32 = 0x5c;
pub(crate) const SER_AUTO_ACK: usize = 0;
pub(crate) const SER_ALIAS_ID: usize = 1;
pub(crate) const REG_SLAVE_ID0: u32 = 0x5d;
pub(crate) const SLAVE_ID0: usize = 1;
pub(crate) const REG_SLAVE_ID1: usize = 0x5e;
pub(crate) const SLAVE_ID1: usize = 1;
pub(crate) const REG_SLAVE_ID2: usize = 0x5f;
pub(crate) const SLAVE_ID2: usize = 1;
pub(crate) const REG_SLAVE_ID3: usize = 0x60;
pub(crate) const SLAVE_ID3: usize = 1;
pub(crate) const REG_SLAVE_ID4: usize = 0x61;
pub(crate) const SLAVE_ID4: usize = 1;
pub(crate) const REG_SLAVE_ID5: usize = 0x62;
pub(crate) const SLAVE_ID5: usize = 1;
pub(crate) const REG_SLAVE_ID6: usize = 0x63;
pub(crate) const SLAVE_ID6: usize = 1;
pub(crate) const REG_SLAVE_ID7: usize = 0x64;
pub(crate) const SLAVE_ID7: usize = 1;
pub(crate) const REG_ALIAS_ID0: u32 = 0x65;
pub(crate) const ALIAS_ID0: usize = 1;
pub(crate) const REG_ALIAS_ID1: usize = 0x66;
pub(crate) const ALIAS_ID1: usize = 1;
pub(crate) const REG_ALIAS_ID2: usize = 0x67;
pub(crate) const ALIAS_ID2: usize = 1;
pub(crate) const REG_ALIAS_ID3: usize = 0x68;
pub(crate) const ALIAS_ID3: usize = 1;
pub(crate) const REG_ALIAS_ID4: usize = 0x644;
pub(crate) const ALIAS_ID4: usize = 1;
pub(crate) const REG_ALIAS_ID5: usize = 0x6a;
pub(crate) const ALIAS_ID5: usize = 1;
pub(crate) const REG_ALIAS_ID6: usize = 0x6b;
pub(crate) const ALIAS_ID6: usize = 1;
pub(crate) const REG_ALIAS_ID7: usize = 0x6c;
pub(crate) const ALIAS_ID7: usize = 1;
pub(crate) const REG_PORT_CONFIG: usize = 0x6d;
pub(crate) const FPD3_MODE: usize = 0;
pub(crate) const COAX_MODE: usize = 2;
pub(crate) const CSI_FWD_LEN: usize = 3;
pub(crate) const CSI_FWD_ECC: usize = 4;
pub(crate) const CSI_FWD_CKSUM: usize = 5;
pub(crate) const CSI_WAIT_FS: usize = 6;
pub(crate) const CSI_WAIT_FS1: usize = 7;
pub(crate) const REG_BC_GPIO_CTL0: u32 = 0x6e;
pub(crate) const BC_GPIO0_SEL: usize = 0;
pub(crate) const BC_GPIO1_SEL: usize = 4;
pub(crate) const REG_BC_GPIO_CTL1: u32 = 0x6f;
pub(crate) const BC_GPIO2_SEL: usize = 0;
pub(crate) const BC_GPIO3_SEL: usize = 4;
pub(crate) const REG_RAW10_ID: usize = 0x70;
pub(crate) const RAW10_DT: usize = 0;
pub(crate) const RAW10_VC: usize = 6;
pub(crate) const REG_RAW12_ID: usize = 0x71;
pub(crate) const RAW12_DT: usize = 0;
pub(crate) const RAW12_VC: usize = 6;
pub(crate) const REG_CSI_VC_MAP: u32 = 0x72;
pub(crate) const CSI_VC_MAP: usize = 0;
pub(crate) const REG_LINE_COUNT_HI: usize = 0x73;
pub(crate) const LINE_COUNT_HI: usize = 0;
pub(crate) const REG_LINE_COUNT_LO: usize = 0x74;
pub(crate) const LINE_COUNT_LO: usize = 0;
pub(crate) const REG_LINE_LEN_1: usize = 0x750;
pub(crate) const LINE_LEN_HI: usize = 0;
pub(crate) const REG_LINE_LEN_0: usize = 0x76;
pub(crate) const LINE_LEN_LO: usize = 0;
pub(crate) const REG_FREQ_DET_CTL: usize = 0x77;
pub(crate) const FREW_LO_THR: usize = 0;
pub(crate) const FREQ_STABLE_THR: usize = 4;
pub(crate) const FREQ_HYST: usize = 6;
pub(crate) const REG_MAILBOX_1: usize = 0x78;
pub(crate) const MAILBOX_0: usize = 0;
pub(crate) const REG_MAILBOX_2: usize = 0x79;
pub(crate) const MAILBOX_1: usize = 0;
pub(crate) const REG_CSI_RX_STS: usize = 0x7a;
pub(crate) const ECC1_ERR: usize = 0;
pub(crate) const ECC2_ERR: usize = 1;
pub(crate) const CKSUM_ERR: usize = 2;
pub(crate) const LENGTH_ERR: usize = 3;
pub(crate) const REG_CSI_ERR_COUNTER: usize = 0x7b;
pub(crate) const CSI_ERR_CNT: usize = 0;
pub(crate) const REG_PORT_CONFIG2: usize = 0x7c;
pub(crate) const FV_POLARITY: usize = 0;
pub(crate) const LV_POLARITY: usize = 1;
pub(crate) const DISCARD_ON_FRAME_SIZE: usize = 3;
pub(crate) const DISCARD_ON_LINE_SIZE: usize = 4;
pub(crate) const DISCARD_ON_PAR_ERR: usize = 5;
pub(crate) const RAW10_8BIT_CTL: usize = 6;
pub(crate) const REG_PORT_PASS_CTL: usize = 0x7d;
pub(crate) const PASS_THRESHOLD: usize = 0;
pub(crate) const PASS_WDOG_DIS: usize = 2;
pub(crate) const PASS_PARITY_ERR: usize = 3;
pub(crate) const PASS_LINE_SIZE: usize = 4;
pub(crate) const PASS_LINE_CNT: usize = 5;
pub(crate) const PASS_DISCARD_EN: usize = 7;
pub(crate) const REG_SEN_INT_RISE_CTL: usize = 0x7e;
pub(crate) const SEN_INT_RISE_MASK: usize = 0;
pub(crate) const REG_SEN_INT_FALL_CTL: usize = 0x7f;
pub(crate) const SEN_INT_FALL_MASK: usize = 0;
pub(crate) const REG_REFCLK_FREQ: usize = 0xa5;
pub(crate) const REFCLK_FREQ: usize = 0;
pub(crate) const REG_IND_ACC_CTL: usize = 0xb0;
pub(crate) const IA_READ: usize = 0;
pub(crate) const IA_AUTO_INC: usize = 1;
pub(crate) const IA_SEL: usize = 2;
pub(crate) const REG_IND_ACC_ADDR: usize = 0xb1;
pub(crate) const IA_ADDR: usize = 0;
pub(crate) const REG_IND_ACC_DATA: usize = 0xb2;
pub(crate) const IA_DATA: usize = 0;
pub(crate) const REG_BIST_CONTROL: u32 = 0xb3;
pub(crate) const BIST_EN: usize = 0;
pub(crate) const BIST_CLOCK_SOURCE: usize = 1;
pub(crate) const BIST_PIN_CONFIG: usize = 3;
pub(crate) const BIST_OUT_MODE: usize = 6;
pub(crate) const REG_MODE_IDX_STS: usize = 0xb8;
pub(crate) const MODE: usize = 0;
pub(crate) const MODE_DONE: usize = 1;
pub(crate) const IDX: usize = 4;
pub(crate) const IDX_DONE: usize = 7;
pub(crate) const REG_LINK_ERROR_COUNT: usize = 0xb9;
pub(crate) const LINK_ERR_THRESH: usize = 0;
pub(crate) const LINK_ERR_COUNT_EN: usize = 4;
pub(crate) const LINK_SFIL_WAIT: usize = 5;
pub(crate) const REG_FPD3_ENC_CTL: usize = 0xba;
pub(crate) const FPD3_ENC_CRC_DIS: usize = 7;
pub(crate) const REG_FV_MIN_TIME: usize = 0xbc;
pub(crate) const FRAME_VALID_MIN: usize = 0;
pub(crate) const REG_GPIO_PD_CTL: usize = 0xbe;
pub(crate) const GPIO0_PD_DIS: usize = 0;
pub(crate) const GPIO1_PD_DIS: usize = 1;
pub(crate) const GPIO2_PD_DIS: usize = 2;
pub(crate) const GPIO3_PD_DIS: usize = 3;
pub(crate) const GPIO4_PD_DIS: usize = 4;
pub(crate) const GPIO5_PD_DIS: usize = 5;
pub(crate) const GPIO6_PD_DIS: usize = 6;
pub(crate) const REG_PORT_DEBUG: usize = 0xd0;
pub(crate) const FORCE_1_BC_ERROR: usize = 0;
pub(crate) const FORCE_BC_ERRORS: usize = 1;
pub(crate) const SER_BIST_ACT: usize = 5;
pub(crate) const REG_AEQ_CTL2: usize = 0xd2;
pub(crate) const SET_AEQ_FLOOR: usize = 2;
pub(crate) const AEQ_RESTART: usize = 3;
pub(crate) const AEQ_1ST_LOCK_MODE: usize = 4;
pub(crate) const ADAPTIVE_EQ_RELOCK_TIME: usize = 5;
pub(crate) const REG_AEQ_STATUS: usize = 0xd3;
pub(crate) const EQ_STATUS: usize = 0;
pub(crate) const REG_ADAPTIVE_EQ_BYPASS: usize = 0xd4;
pub(crate) const ADAPTIVE_EQ_BYPASS: usize = 0;
pub(crate) const EQ_STAGE_2_SELECT_VALUE: usize = 1;
pub(crate) const AE_LOCK_MODE: usize = 4;
pub(crate) const EQ_STAGE_1_SELECT_VALUE: usize = 5;
pub(crate) const REG_AEQ_MIN_MAX: usize = 0xd5;
pub(crate) const ADAPTIVE_EQ_FLOOR_VALUE: usize = 0;
pub(crate) const AEQ_MAX: usize = 4;
pub(crate) const REG_PRT_ICR_HI: usize = 0xd8;
pub(crate) const IE_BC_CRC_ERR: usize = 0;
pub(crate) const IE_BCC_SEQ_ERR: usize = 1;
pub(crate) const IE_FPD3_ENC_ERR: usize = 2;
pub(crate) const REG_PORT_ICR_LO: usize = 0xd9;
pub(crate) const IE_LOCK_STS: usize = 0;
pub(crate) const IE_PORT_PASS: usize = 1;
pub(crate) const IE_FPD3_PAR_ERR: usize = 2;
pub(crate) const IE_CSI_RX_ERR: usize = 3;
pub(crate) const IE_BUFFER_ERR: usize = 4;
pub(crate) const IE_LINE_CNT_CHG: usize = 5;
pub(crate) const IE_LINE_LNE_CHG: usize = 6;
pub(crate) const REG_PORT_ISR_HI: usize = 0xda;
pub(crate) const IS_BCC_CRC_ERR: usize = 0;
pub(crate) const IS_BCC_CEQ_ERR: usize = 1;
pub(crate) const IS_FPD3_ENC_ERR: usize = 2;
pub(crate) const IS_FC_SENS_STS: usize = 3;
pub(crate) const IE_FC_GPIO: usize = 4;
pub(crate) const REG_PORT_ISR_LO: usize = 0xdb;
pub(crate) const IS_LOCK_STS: usize = 0;
pub(crate) const IS_PORT_PASS: usize = 1;
pub(crate) const IS_PFD3_PAR_ERR: usize = 2;
pub(crate) const IS_SCI_RX_ERR: usize = 3;
pub(crate) const IS_BUFFER_ERR: usize = 4;
pub(crate) const IS_LINE_CNT_CHG: usize = 5;
pub(crate) const IS_LINE_LEN_CHG: usize = 6;
pub(crate) const REG_FC_GPIO_STS: usize = 0xdc;
pub(crate) const FC_GPIO0_STS: usize = 0;
pub(crate) const FC_GPIO1_STS: usize = 1;
pub(crate) const FC_GPIO2_STS: usize = 2;
pub(crate) const FC_GPIO3_STS: usize = 3;
pub(crate) const GPIO0_INT_STS: usize = 4;
pub(crate) const GPIO1_INT_STS: usize = 5;
pub(crate) const GPIO2_INT_STS: usize = 6;
pub(crate) const GPIO3_INT_STS: usize = 7;
pub(crate) const REG_FC_GPIO_ICR: usize = 0xdd;
pub(crate) const GPIO0_RISE_IE: usize = 0;
pub(crate) const GPIO0_FALL_IE: usize = 1;
pub(crate) const GPIO1_RISE_IE: usize = 2;
pub(crate) const GPIO1_FALL_IE: usize = 3;
pub(crate) const GPIO2_RISE_IE: usize = 4;
pub(crate) const GPIO2_FALL_IE: usize = 5;
pub(crate) const GPIO3_RISE_IE: usize = 6;
pub(crate) const GPIO3_FALL_IE: usize = 7;
pub(crate) const REG_SEN_INT_RISE_STS: usize = 0xde;
pub(crate) const SEN_INT_RISE: usize = 0;
pub(crate) const REG_SEN_INT_FALL_STS: usize = 0xdf;
pub(crate) const SEN_INT_FALL: usize = 0;
pub(crate) const REG_FPD3_RX_ID0: u32 = 0xf0;
pub(crate) const FPD3_RX_ID0: usize = 0;
pub(crate) const REG_FPD3_RX_ID1: usize = 0xf1;
pub(crate) const FPD3_RX_ID1: usize = 0;
pub(crate) const REG_FPD3_RX_ID2: usize = 0xf2;
pub(crate) const FPD3_RX_ID2: usize = 0;
pub(crate) const REG_FPD3_RX_ID3: usize = 0xf3;
pub(crate) const FPD3_RX_ID3: usize = 0;
pub(crate) const REG_FPD3_RX_ID4: usize = 0xf4;
pub(crate) const FPD3_RX_ID4: usize = 0;
pub(crate) const REG_FPD3_RX_ID5: usize = 0xf5;
pub(crate) const FPD3_RX_ID5: usize = 0;
pub(crate) const RX_ID_LENGTH: usize = 6;
pub(crate) const REG_I2C_RX0_ID: usize = 0xf8;
pub(crate) const RX_PORT0_ID: usize = 1;
pub(crate) const REG_I2C_RX1_ID: usize = 0xf9;
pub(crate) const RX_PORT1_ID: usize = 1;
// Indirect Register Map Description
pub(crate) const REG_IA_PATTERN_GEN_PAGE_BLOCK_SELECT: usize = 0x0;
pub(crate) const REG_IA_PGEN_CTL: u32 = 0x01;
pub(crate) const PGEB_ENABLE: u8 = 0;
pub(crate) const REG_IA_PGEB_CFG: u32 = 0x02;
pub(crate) const BLOCK_SIZE: usize = 0;
pub(crate) const NUM_CBARS: usize = 4;
pub(crate) const PGEN_FIXED_EN: usize = 7;
pub(crate) const REG_IA_PGEN_CSI_DI: u32 = 0x03;
pub(crate) const PGEN_CSI_DT: usize = 0;
pub(crate) const PGEN_CSI_VC: usize = 6;
pub(crate) const REG_IA_PGEN_LINE_SIZE1: u32 = 0x04;
pub(crate) const PGEN_LINE_SIZE1: usize = 0;
pub(crate) const REG_IA_PGEN_LINE_SIZE0: u32 = 0x05;
pub(crate) const PGEN_LINE_SIZE0: usize = 0;
pub(crate) const REG_IA_PGEN_BAR_SIZE1: u32 = 0x06;
pub(crate) const PGEN_BAR_SIZE1: usize = 0;
pub(crate) const REG_IA_PGEN_BAR_SIZE0: u32 = 0x07;
pub(crate) const PGEN_BAR_SIZE0: usize = 0;
pub(crate) const REG_IA_PGEN_ACT_LPF1: u32 = 0x08;
pub(crate) const PGEN_ACT_LPF1: usize = 0;
pub(crate) const REG_IA_PGEN_ACT_LPF0: u32 = 0x09;
pub(crate) const PGEN_ACT_LPF0: usize = 0;
pub(crate) const REG_IA_PGEN_TOT_LPF1: u32 = 0x0a;
pub(crate) const PGEN_TOT_LPF1: usize = 0;
pub(crate) const REG_IA_PGEN_TOT_LPF0: u32 = 0x0b;
pub(crate) const PGEN_TOT_LPF0: usize = 0;
pub(crate) const REG_IA_PGEN_LINE_PD1: u32 = 0x0c;
pub(crate) const PGEN_LINE_PD1: usize = 0;
pub(crate) const REG_IA_PGEN_LINE_PD0: u32 = 0x0d;
pub(crate) const PGEN_LINE_PD0: usize = 0;
pub(crate) const REG_IA_PGEN_VBP: u32 = 0x0e;
pub(crate) const PGEN_VBP: usize = 0;
pub(crate) const REG_IA_PGEN_VFP: u32 = 0x0f;
pub(crate) const PGEN_VFP: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR0: usize = 0x10;
pub(crate) const PGEN_COLOR0: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR1: usize = 0x11;
pub(crate) const PGEN_COLOR1: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR2: usize = 0x12;
pub(crate) const PGEN_COLOR2: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR3: usize = 0x13;
pub(crate) const PGEN_COLOR3: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR4: usize = 0x14;
pub(crate) const PGEN_COLOR4: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR5: usize = 0x15;
pub(crate) const PGEN_COLOR5: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR6: usize = 0x16;
pub(crate) const PGEN_COLOR6: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR7: usize = 0x17;
pub(crate) const PGEN_COLOR7: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR8: usize = 0x18;
pub(crate) const PGEN_COLOR8: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR9: usize = 0x19;
pub(crate) const PGEN_COLOR9: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR10: usize = 0x1a;
pub(crate) const PGEN_COLOR10: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR11: usize = 0x1b;
pub(crate) const PGEN_COLOR11: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR12: usize = 0x1c;
pub(crate) const PGEN_COLOR12: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR13: usize = 0x1d;
pub(crate) const PGEN_COLOR13: usize = 0;
pub(crate) const REG_IA_PGEN_COLOR14: usize = 0x1e;
pub(crate) const PGEN_COLOR14: usize = 0;
pub(crate) const REG_IA_CSI0_TCK_PREP: usize = 0x40;
pub(crate) const MC_TCK_PREP: usize = 0;
pub(crate) const MC_TCK_PREP_OV: usize = 7;
pub(crate) const REG_IA_CSI0_TCK_ZERO: usize = 0x41;
pub(crate) const MC_TCK_ZERO: usize = 0;
pub(crate) const MC_TCK_ZERO_OV: usize = 7;
pub(crate) const REG_IA_CSI0_TCK_TRAIL: usize = 0x42;
pub(crate) const MR_TCK_TRAIL: usize = 0;
pub(crate) const MR_TCK_TRAIL_OV: usize = 7;
pub(crate) const REG_IA_CSI0_TCK_POST: usize = 0x43;
pub(crate) const MR_TCK_POST: usize = 0;
pub(crate) const MR_TCK_POST_OV: usize = 7;
pub(crate) const REG_IA_CSI0_THS_PREP: usize = 0x44;
pub(crate) const MR_THS_PREP: usize = 0;
pub(crate) const MR_THS_PREP_OV: usize = 7;
pub(crate) const REG_IA_CSI0_THS_ZERO: usize = 0x45;
pub(crate) const MR_THS_ZERO: usize = 0;
pub(crate) const MR_THS_ZERO_OV: usize = 7;
pub(crate) const REG_IA_CSI0_THS_TRAIL: usize = 0x46;
pub(crate) const MR_THS_TRAIL: usize = 0;
pub(crate) const MR_THS_TRIAL_OV: usize = 7;
pub(crate) const REG_IA_CSI0_THS_EXIT: usize = 0x47;
pub(crate) const MR_THS_EXIT: usize = 0;
pub(crate) const MR_THS_EXIT_OV: usize = 7;
pub(crate) const REG_IA_CSI0_TPLX: usize = 0x48;
pub(crate) const MR_TPLX: usize = 0;
pub(crate) const MR_TPLX_OV: usize = 7;
}
/// Serializer registers
#[allow(unused)]
mod ti953 {
pub(crate) const REG_I2C_DEV_ID: u32 = 0x00;
pub(crate) const SER_ID_OVERRIDE: usize = 0;
pub(crate) const DEVICE_ID: usize = 1;
pub(crate) const REG_RESET: usize = 0x01;
pub(crate) const DIGITAL_RESET_0: usize = 0;
pub(crate) const DIGITAL_RESET_1: usize = 1;
pub(crate) const RESTART_AUTOLOAD: usize = 2;
pub(crate) const REG_GENERAL_CFG: u32 = 0x02;
pub(crate) const I2C_STRAP_MODE: usize = 0;
pub(crate) const CRC_TX_GEN_ENABLE: usize = 1;
pub(crate) const CSI_LANE_SEL: usize = 4;
pub(crate) const CONTS_CLK: usize = 6;
pub(crate) const CSI_LANE_SEL1: u32 = 0;
pub(crate) const CSI_LANE_SEL2: u32 = 1;
pub(crate) const CSI_LANE_SEL4: u32 = 3;
pub(crate) const REG_MODE_SEL: usize = 0x03;
pub(crate) const MODE: usize = 0;
pub(crate) const MODE_DONE: usize = 3;
pub(crate) const MODE_OV: usize = 4;
pub(crate) const REG_BC_MODE_SELECT: usize = 0x04;
pub(crate) const DVP_MODE_OVER_EN: usize = 0;
pub(crate) const MODE_OVERWRITE_75M: usize = 1;
pub(crate) const MODE_OVERWRITE_100M: usize = 2;
pub(crate) const REG_PLLCLK_CTL: usize = 0x05;
pub(crate) const OSCCLO_SEL: usize = 3;
pub(crate) const CLKIN_DIV: usize = 4;
pub(crate) const REG_CLKOUT_CTRL0: u32 = 0x06;
pub(crate) const DIV_M_VAL: usize = 0;
pub(crate) const HS_CLK_DIV: usize = 5;
pub(crate) const HS_CLK_DIV_1: usize = 0;
pub(crate) const HS_CLK_DIV_2: usize = 1;
pub(crate) const HS_CLK_DIV_4: usize = 2;
pub(crate) const HS_CLK_DIV_8: usize = 3;
pub(crate) const HS_CLK_DIV_16: usize = 4;
pub(crate) const REG_CLKOUT_CTRL1: u32 = 0x07;
pub(crate) const DIV_N_VAL: usize = 0;
pub(crate) const REG_BBC_WATCHDOG: usize = 0x08;
pub(crate) const BCC_WD_TIMER_DISABLE: usize = 0;
pub(crate) const BCC_WD_TIMER: usize = 1;
pub(crate) const REG_I2C_CONTROL1: usize = 0x09;
pub(crate) const I2C_FILTER_DEPTH: usize = 0;
pub(crate) const I2C_SDA_HOLD: usize = 4;
pub(crate) const LCL_WRITE_DISABLE: usize = 7;
pub(crate) const REG_I2C_CONTROL2: usize = 0x0a;
pub(crate) const I2C_BUS_TIMER_DISABLE: usize = 0;
pub(crate) const I2C_BUS_TIMER_SPEEDUP: usize = 1;
pub(crate) const SDA_OUTPUT_DELAY: usize = 2;
pub(crate) const SDA_OUTPUT_SETUP: usize = 4;
pub(crate) const REG_SCL_HIGH_TIME: usize = 0x0b;
pub(crate) const SCL_HIGH_TIME: usize = 0;
pub(crate) const REG_SCL_LOW_TIME: usize = 0x0c;
pub(crate) const SCL_LOW_TIME: usize = 0;
pub(crate) const REG_LOCAL_GPIO_DATA: u32 = 0x0d;
pub(crate) const GPIO_OUT_SRC: usize = 0;
pub(crate) const GPIO_RMTEN: usize = 4;
pub(crate) const REG_GPIO_CTRL: u32 = 0x0e;
pub(crate) const GPIO0_INPUT_EN: usize = 0;
pub(crate) const GPIO1_INPUT_EN: usize = 1;
pub(crate) const GPIO2_INPUT_EN: usize = 2;
pub(crate) const GPIO3_INPUT_EN: usize = 3;
pub(crate) const GPIO0_OUT_EN: usize = 4;
pub(crate) const GPIO1_OUT_EN: usize = 5;
pub(crate) const GPIO2_OUT_EN: usize = 6;
pub(crate) const GPIO3_OUT_EN: usize = 7;
pub(crate) const REG_DVP_CFG: usize = 0x10;
pub(crate) const DVP_LV_INV: usize = 0;
pub(crate) const DVP_FV_IN: usize = 1;
pub(crate) const DVP_DT_YUV_EN: usize = 2;
pub(crate) const DVP_DT_MATH_EN: usize = 3;
pub(crate) const DVP_DT_ANY_EN: usize = 4;
pub(crate) const REG_DVP_DT: usize = 0x11;
pub(crate) const DVP_DT_MATCH_VAL: usize = 0;
pub(crate) const REG_FORCE_BIST_EN: usize = 0x13;
pub(crate) const FORCE_FC_CNT: usize = 0;
pub(crate) const FORCE_FC_ERR: usize = 7;
pub(crate) const REG_REMOTE_BIST_CTRL: usize = 0x14;
pub(crate) const REMOTE_BIST_EN: usize = 0;
pub(crate) const BIST_CLOCK: usize = 1;
pub(crate) const LOCAL_BIST_EN: usize = 3;
pub(crate) const FORCE_ERR_CNT: usize = 4;
pub(crate) const REG_SENSOR_VGAIN: usize = 0x15;
pub(crate) const VOLT_GAIN: usize = 0;
pub(crate) const REG_SENSOR_CTRL0: usize = 0x17;
pub(crate) const SENSE_V_GPIO: usize = 0;
pub(crate) const SENSOR_ENABLE: usize = 2;
pub(crate) const REG_SENSOR_CTRL1: usize = 0x18;
pub(crate) const SENSE_GAIN_EN: usize = 7;
pub(crate) const REG_SENSOR_V0_THRESH: usize = 0x19;
pub(crate) const SENSE_V0_LO: usize = 0;
pub(crate) const SENSE_V0_HI: usize = 4;
pub(crate) const REG_SENSOR_V1_THRESH: usize = 0x1a;
pub(crate) const SENSE_V1_LO: usize = 0;
pub(crate) const SENSE_V1_HI: usize = 4;
pub(crate) const REG_SENSOR_T_THRESH: usize = 0x1b;
pub(crate) const SENSE_T_LO: usize = 0;
pub(crate) const SENSE_T_HI: usize = 4;
pub(crate) const REG_ALARM_CSI_EN: usize = 0x1c;
pub(crate) const CSI_LENGTH_ERR_EN: usize = 0;
pub(crate) const CSI_CHKSUM_ERR_EN: usize = 1;
pub(crate) const CSI_ECC_2_EN: usize = 2;
pub(crate) const DPHY_CTRL_ERR_EN: usize = 3;
pub(crate) const CSI_NO_FV_EN: usize = 5;
pub(crate) const REG_SENSE_EN: usize = 0x1d;
pub(crate) const V0_UNDER: usize = 0;
pub(crate) const V0_OVER: usize = 1;
pub(crate) const V1_UNSER: usize = 2;
pub(crate) const V1_OVER: usize = 3;
pub(crate) const T_UNDER: usize = 4;
pub(crate) const T_OVER: usize = 5;
pub(crate) const REG_ALARM_BC_EN: usize = 0x1e;
pub(crate) const LINK_DETECT_EN: usize = 0;
pub(crate) const CRC_ER_EN: usize = 1;
pub(crate) const REG_CSI_POL_SEL: usize = 0x20;
pub(crate) const POLARITY_D0: usize = 0;
pub(crate) const POLARITY_D1: usize = 1;
pub(crate) const POLARITY_D2: usize = 2;
pub(crate) const POLARITY_D3: usize = 3;
pub(crate) const POLARITY_CK0: usize = 4;
pub(crate) const REG_CSI_LP_POLARITY: usize = 0x21;
pub(crate) const POL_LP_DATA: usize = 0;
pub(crate) const POL_LP_CLK0: usize = 4;
pub(crate) const REG_CSI_EN_RXTERM: usize = 0x24;
pub(crate) const EN_RXTERM_D0: usize = 0;
pub(crate) const EN_RXTERM_D1: usize = 1;
pub(crate) const EN_RXTERM_D2: usize = 2;
pub(crate) const EN_RXTERM_D3: usize = 3;
pub(crate) const REG_CSI_PKT_HDR_TINT_CTRL: usize = 0x31;
pub(crate) const TINIT_TIME: usize = 0;
pub(crate) const PKT_HDR_VCI_ENABLE: usize = 4;
pub(crate) const PKT_HDR_CORRECTED: usize = 5;
pub(crate) const PKT_HDR_SEL_VC: usize = 6;
pub(crate) const REG_BCC_CONFIG: u32 = 0x32;
pub(crate) const RX_PARITY_CHECKER_ENABLE: usize = 3;
pub(crate) const AUTO_ACK_ALL: usize = 5;
pub(crate) const I2C_PASS_THROUGH: usize = 6;
pub(crate) const I2C_PASS_THROUGH_ALL: usize = 7;
pub(crate) const REG_DATAPATH_CTL1: usize = 0x33;
pub(crate) const FC_GPIO_EN: usize = 0;
pub(crate) const DCA_CRC_EN: usize = 2;
pub(crate) const REG_DES_PAR_CAP1: usize = 0x35;
pub(crate) const PORT_NUM: usize = 0;
pub(crate) const MPORT: usize = 4;
pub(crate) const BIST_EN: usize = 5;
pub(crate) const FREEZE_DES_CAP: usize = 7;
pub(crate) const REG_DES_ID: usize = 0x37;
pub(crate) const FREEZE_DEVICE_ID: usize = 0;
pub(crate) const DES_ID: usize = 1;
pub(crate) const REG_SLAVE_ID_0: usize = 0x39;
pub(crate) const SLAVE_ID_0: usize = 1;
pub(crate) const REG_SLAVE_ID_1: usize = 0x3a;
pub(crate) const SLAVE_ID_1: usize = 1;
pub(crate) const REG_SLAVE_ID_2: usize = 0x3b;
pub(crate) const SLAVE_ID_2: usize = 1;
pub(crate) const REG_SLAVE_ID_3: usize = 0x3c;
pub(crate) const SLAVE_ID_3: usize = 1;
pub(crate) const REG_SLAVE_ID_4: usize = 0x3d;
pub(crate) const SLAVE_ID_4: usize = 1;
pub(crate) const REG_SLAVE_ID_5: usize = 0x3e;
pub(crate) const SLAVE_ID_5: usize = 1;
pub(crate) const REG_SLAVE_ID_6: usize = 0x3f;
pub(crate) const SLAVE_ID_6: usize = 1;
pub(crate) const REG_SLAVE_ID_7: usize = 0x40;
pub(crate) const SLAVE_ID_7: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_0: usize = 0x41;
pub(crate) const SLAVE_ID_ALIAS_0: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_1: usize = 0x42;
pub(crate) const SLAVE_ID_ALIAS_1: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_2: usize = 0x43;
pub(crate) const SLAVE_ID_ALIAS_2: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_3: usize = 0x44;
pub(crate) const SLAVE_ID_ALIAS_3: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_4: usize = 0x45;
pub(crate) const SLAVE_ID_ALIAS_4: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_5: usize = 0x46;
pub(crate) const SLAVE_ID_ALIAS_5: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_6: usize = 0x47;
pub(crate) const SLAVE_ID_ALIAS_6: usize = 1;
pub(crate) const REG_SLAVE_ID_ALIAS_7: usize = 0x48;
pub(crate) const SLAVE_ID_ALIAS_7: usize = 1;
pub(crate) const REG_CB_CTRL: usize = 0x49;
pub(crate) const LINK_DET_TIMER: usize = 0;
pub(crate) const CRC_ERR_CLR: usize = 3;
pub(crate) const BIST_CRC_ERR_CLR: usize = 5;