summaryrefslogtreecommitdiff
path: root/include/linux/mfd/da9052/reg.h
blob: 8c4c9dff8fe5d7245cd54b8a44f1200d89ccc15f (plain)
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
/*
 * da9052 register declarations.
 *
 * Copyright(c) 2009 Dialog Semiconductor Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

#ifndef __LINUX_MFD_DA9052_REG_H
#define __LINUX_MFD_DA9052_REG_H

#define DA9052_PAGECON0_REG			0
#define DA9052_STATUSA_REG			1
#define DA9052_STATUSB_REG			2
#define DA9052_STATUSC_REG			3
#define DA9052_STATUSD_REG			4
#define DA9052_EVENTA_REG			5
#define DA9052_EVENTB_REG			6
#define DA9052_EVENTC_REG			7
#define DA9052_EVENTD_REG			8
#define DA9052_FAULTLOG_REG			9
#define DA9052_IRQMASKA_REG			10
#define DA9052_IRQMASKB_REG			11
#define DA9052_IRQMASKC_REG			12
#define DA9052_IRQMASKD_REG			13
#define DA9052_CONTROLA_REG			14
#define DA9052_CONTROLB_REG			15
#define DA9052_CONTROLC_REG			16
#define DA9052_CONTROLD_REG			17
#define DA9052_PDDIS_REG			18
#define DA9052_INTERFACE_REG			19
#define DA9052_RESET_REG			20
#define DA9052_GPIO0001_REG			21
#define DA9052_GPIO0203_REG			22
#define DA9052_GPIO0405_REG			23
#define DA9052_GPIO0607_REG			24
#define DA9052_GPIO0809_REG			25
#define DA9052_GPIO1011_REG			26
#define DA9052_GPIO1213_REG			27
#define DA9052_GPIO1415_REG			28
#define DA9052_ID01_REG				29
#define DA9052_ID23_REG				30
#define DA9052_ID45_REG				31
#define DA9052_ID67_REG				32
#define DA9052_ID89_REG				33
#define DA9052_ID1011_REG			34
#define DA9052_ID1213_REG			35
#define DA9052_ID1415_REG			36
#define DA9052_ID1617_REG			37
#define DA9052_ID1819_REG			38
#define DA9052_ID2021_REG			39
#define DA9052_SEQSTATUS_REG			40
#define DA9052_SEQA_REG				41
#define DA9052_SEQB_REG				42
#define DA9052_SEQTIMER_REG			43
#define DA9052_BUCKA_REG			44
#define DA9052_BUCKB_REG			45
#define DA9052_BUCKCORE_REG			46
#define DA9052_BUCKPRO_REG			47
#define DA9052_BUCKMEM_REG			48
#define DA9052_BUCKPERI_REG			49
#define DA9052_LDO1_REG				50
#define DA9052_LDO2_REG				51
#define DA9052_LDO3_REG				52
#define DA9052_LDO4_REG				53
#define DA9052_LDO5_REG				54
#define DA9052_LDO6_REG				55
#define DA9052_LDO7_REG				56
#define DA9052_LDO8_REG				57
#define DA9052_LDO9_REG				58
#define DA9052_LDO10_REG			59
#define DA9052_SUPPLY_REG			60
#define DA9052_PULLDOWN_REG			61
#define DA9052_CHGBUCK_REG			62
#define DA9052_WAITCONT_REG			63
#define DA9052_ISET_REG				64
#define DA9052_BATCHG_REG			65
#define DA9052_CHGCONT_REG			66
#define DA9052_INPUTCONT_REG			67
#define DA9052_CHGTIME_REG			68
#define DA9052_BBATCONT_REG			69
#define DA9052_BOOST_REG			70
#define DA9052_LEDCONT_REG			71
#define DA9052_LEDMIN123_REG			72
#define DA9052_LED1CONF_REG			73
#define DA9052_LED2CONF_REG			74
#define DA9052_LED3CONF_REG			75
#define DA9052_LED1CONT_REG			76
#define DA9052_LED2CONT_REG			77
#define DA9052_LED3CONT_REG			78
#define DA9052_LED4CONT_REG			79
#define DA9052_LED5CONT_REG			80
#define DA9052_ADCMAN_REG			81
#define DA9052_ADCCONT_REG			82
#define DA9052_ADCRESL_REG			83
#define DA9052_ADCRESH_REG			84
#define DA9052_VDDRES_REG			85
#define DA9052_VDDMON_REG			86
#define DA9052_ICHGAV_REG			87
#define DA9052_ICHGTHD_REG			88
#define DA9052_ICHGEND_REG			89
#define DA9052_TBATRES_REG			90
#define DA9052_TBATHIGHP_REG			91
#define DA9052_TBATHIGHIN_REG			92
#define DA9052_TBATLOW_REG			93
#define DA9052_TOFFSET_REG			94
#define DA9052_ADCIN4RES_REG			95
#define DA9052_AUTO4HIGH_REG			96
#define DA9052_AUTO4LOW_REG			97
#define DA9052_ADCIN5RES_REG			98
#define DA9052_AUTO5HIGH_REG			99
#define DA9052_AUTO5LOW_REG			100
#define DA9052_ADCIN6RES_REG			101
#define DA9052_AUTO6HIGH_REG			102
#define DA9052_AUTO6LOW_REG			103
#define DA9052_TJUNCRES_REG			104
#define DA9052_TSICONTA_REG			105
#define DA9052_TSICONTB_REG			106
#define DA9052_TSIXMSB_REG			107
#define DA9052_TSIYMSB_REG			108
#define DA9052_TSILSB_REG			109
#define DA9052_TSIZMSB_REG			110
#define DA9052_COUNTS_REG			111
#define DA9052_COUNTMI_REG			112
#define DA9052_COUNTH_REG			113
#define DA9052_COUNTD_REG			114
#define DA9052_COUNTMO_REG			115
#define DA9052_COUNTY_REG			116
#define DA9052_ALARMMI_REG			117
#define DA9052_ALARMH_REG			118
#define DA9052_ALARMD_REG			119
#define DA9052_ALARMMO_REG			120
#define DA9052_ALARMY_REG			121
#define DA9052_SECONDA_REG			122
#define DA9052_SECONDB_REG			123
#define DA9052_SECONDC_REG			124
#define DA9052_SECONDD_REG			125
#define DA9052_PAGECON128_REG			128
#define DA9052_CHIPID_REG			129
#define DA9052_CONFIGID_REG			130
#define DA9052_OTPCONT_REG			131
#define DA9052_OSCTRIM_REG			132
#define DA9052_GPID0_REG			133
#define DA9052_GPID1_REG			134
#define DA9052_GPID2_REG			135
#define DA9052_GPID3_REG			136
#define DA9052_GPID4_REG			137
#define DA9052_GPID5_REG			138
#define DA9052_GPID6_REG			139
#define DA9052_GPID7_REG			140
#define DA9052_GPID8_REG			141
#define DA9052_GPID9_REG			142

#define DA9052_PAGE0_REG_START			(DA9052_STATUSA_REG)
#define DA9052_PAGE0_REG_END			(DA9052_SECONDD_REG)

#define DA9052_PAGE1_REG_START			(DA9052_CHIPID_REG)
#define DA9052_PAGE1_REG_END			(DA9052_GPID9_REG)

/* PAGE CONFIGURATION */

/* Reg Page Configuration */
#define DA9052_PAGECON0_REGPAGE			(1<<7)

/* PAGE CONFIGURATION 128 REGISTER */
#define DA9052_PAGECON128_REGPAGE		(1<<7)

/* SYSTEM REGISTER */

/* STATUS REGISTER A */
#define DA9052_STATUSA_VDATDET			(1<<7)
#define DA9052_STATUSA_VBUSSEL			(1<<6)
#define DA9052_STATUSA_DCINSEL			(1<<5)
#define DA9052_STATUSA_VBUSDET			(1<<4)
#define DA9052_STATUSA_DCINDET			(1<<3)
#define DA9052_STATUSA_IDGND			(1<<2)
#define DA9052_STATUSA_IDFLOAT			(1<<1)
#define DA9052_STATUSA_NONKEY			(1<<0)


/* STATUS REGISTER B */
#define DA9052_STATUSB_COMPDET			(1<<7)
#define DA9052_STATUSB_SEQUENCING		(1<<6)
#define DA9052_STATUSB_GPFB2			(1<<5)
#define DA9052_STATUSB_CHGTO			(1<<4)
#define DA9052_STATUSB_CHGEND			(1<<3)
#define DA9052_STATUSB_CHGLIM			(1<<2)
#define DA9052_STATUSB_CHGPRE			(1<<1)
#define DA9052_STATUSB_CHGATT			(1<<0)


/* STATUS REGISTER C */
#define DA9052_STATUSC_GPI7			(1<<7)
#define DA9052_STATUSC_GPI6			(1<<6)
#define DA9052_STATUSC_GPI5			(1<<5)
#define DA9052_STATUSC_GPI4			(1<<4)
#define DA9052_STATUSC_GPI3			(1<<3)
#define DA9052_STATUSC_GPI2			(1<<2)
#define DA9052_STATUSC_GPI1			(1<<1)
#define DA9052_STATUSC_GPI0			(1<<0)


/* STATUS REGISTER D */
#define DA9052_STATUSD_GPI15			(1<<7)
#define DA9052_STATUSD_GPI14			(1<<6)
#define DA9052_STATUSD_GPI13			(1<<5)
#define DA9052_STATUSD_GPI12			(1<<4)
#define DA9052_STATUSD_GPI11			(1<<3)
#define DA9052_STATUSD_GPI10			(1<<2)
#define DA9052_STATUSD_GPI9			(1<<1)
#define DA9052_STATUSD_GPI8			(1<<0)


/* EVENT REGISTER A */
#define DA9052_EVENTA_ECOMP1V2			(1<<7)
#define DA9052_EVENTA_ESEQRDY			(1<<6)
#define DA9052_EVENTA_EALRAM			(1<<5)
#define DA9052_EVENTA_EVDDLOW			(1<<4)
#define DA9052_EVENTA_EVBUSREM			(1<<3)
#define DA9052_EVENTA_EDCINREM			(1<<2)
#define DA9052_EVENTA_EVBUSDET			(1<<1)
#define DA9052_EVENTA_EDCINDET			(1<<0)

/* EVENT REGISTER B */
#define DA9052_EVENTB_ETSIREADY			(1<<7)
#define DA9052_EVENTB_EPENDOWN			(1<<6)
#define DA9052_EVENTB_EADCEOM			(1<<5)
#define DA9052_EVENTB_ETBAT			(1<<4)
#define DA9052_EVENTB_ECHGEND			(1<<3)
#define DA9052_EVENTB_EIDGND			(1<<2)
#define DA9052_EVENTB_EIDFLOAT			(1<<1)
#define DA9052_EVENTB_ENONKEY			(1<<0)

/* EVENT REGISTER C */
#define DA9052_EVENTC_EGPI7			(1<<7)
#define DA9052_EVENTC_EGPI6			(1<<6)
#define DA9052_EVENTC_EGPI5			(1<<5)
#define DA9052_EVENTC_EGPI4			(1<<4)
#define DA9052_EVENTC_EGPI3			(1<<3)
#define DA9052_EVENTC_EGPI2			(1<<2)
#define DA9052_EVENTC_EGPI1			(1<<1)
#define DA9052_EVENTC_EGPI0			(1<<0)

/* EVENT REGISTER D */
#define DA9052_EVENTC_EGPI15			(1<<7)
#define DA9052_EVENTC_EGPI14			(1<<6)
#define DA9052_EVENTC_EGPI13			(1<<5)
#define DA9052_EVENTC_EGPI12			(1<<4)
#define DA9052_EVENTC_EGPI11			(1<<3)
#define DA9052_EVENTC_EGPI10			(1<<2)
#define DA9052_EVENTC_EGPI9			(1<<1)
#define DA9052_EVENTC_EGPI8			(1<<0)


/* FAULT LOG REGISTER */
#define DA9052_FAULTLOG_WAITSET			(1<<7)
#define DA9052_FAULTLOG_NSDSET			(1<<6)
#define DA9052_FAULTLOG_KEYSHUT			(1<<5)
#define DA9052_FAULTLOG_TEMPOVER		(1<<3)
#define DA9052_FAULTLOG_VDDSTART		(1<<2)
#define DA9052_FAULTLOG_VDDFAULT		(1<<1)
#define DA9052_FAULTLOG_TWDERROR		(1<<0)

/* IRQ_MASK REGISTER A */
#define DA9052_IRQMASKA_MCOMP1V2		(1<<7)
#define DA9052_IRQMASKA_MSEQRDY			(1<<6)
#define DA9052_IRQMASKA_MALRAM			(1<<5)
#define DA9052_IRQMASKA_MVDDLOW			(1<<4)
#define DA9052_IRQMASKA_MVBUSREM		(1<<3)
#define DA9052_IRQMASKA_MDCINREM		(1<<2)
#define DA9052_IRQMASKA_MVBUSVLD		(1<<1)
#define DA9052_IRQMASKA_MDCINVLD		(1<<0)

/* IRQ_MASK REGISTER B */
#define DA9052_IRQMASKB_MTSIREADY		(1<<7)
#define DA9052_IRQMASKB_MPENDOWN		(1<<6)
#define DA9052_IRQMASKB_MADCEOM			(1<<5)
#define DA9052_IRQMASKB_MTBAT			(1<<4)
#define DA9052_IRQMASKB_MCHGEND			(1<<3)
#define DA9052_IRQMASKB_MIDGND			(1<<2)
#define DA9052_IRQMASKB_MIDFLOAT		(1<<1)
#define DA9052_IRQMASKB_MNONKEY			(1<<0)

/* IRQ_MASK REGISTER C */
#define DA9052_IRQMASKC_MGPI7			(1<<7)
#define DA9052_IRQMASKC_MGPI6			(1<<6)
#define DA9052_IRQMASKC_MGPI5			(1<<5)
#define DA9052_IRQMASKC_MGPI4			(1<<4)
#define DA9052_IRQMASKC_MGPI3			(1<<3)
#define DA9052_IRQMASKC_MGPI2			(1<<2)
#define DA9052_IRQMASKC_MGPI1			(1<<1)
#define DA9052_IRQMASKC_MGPI0			(1<<0)

/* IRQ_MASK REGISTER D */
#define DA9052_IRQMASKD_MGPI15			(1<<7)
#define DA9052_IRQMASKD_MGPI14			(1<<6)
#define DA9052_IRQMASKD_MGPI13			(1<<5)
#define DA9052_IRQMASKD_MGPI12			(1<<4)
#define DA9052_IRQMASKD_MGPI11			(1<<3)
#define DA9052_IRQMASKD_MGPI10			(1<<2)
#define DA9052_IRQMASKD_MGPI9			(1<<1)
#define DA9052_IRQMASKD_MGPI8			(1<<0)

/* CONTROL REGISTER A */
#define DA9052_CONTROLA_GPIV			(1<<7)
#define DA9052_CONTROLA_PMOTYPE			(1<<5)
#define DA9052_CONTROLA_PMOV			(1<<4)
#define DA9052_CONTROLA_PMIV			(1<<3)
#define DA9052_CONTROLA_PMIFV			(1<<3)
#define DA9052_CONTROLA_PWR1EN			(1<<2)
#define DA9052_CONTROLA_PWREN			(1<<1)
#define DA9052_CONTROLA_SYSEN			(1<<0)

/* CONTROL REGISTER B */
#define DA9052_CONTROLB_SHUTDOWN		(1<<7)
#define DA9052_CONTROLB_DEEPSLEEP		(1<<6)
#define DA9052_CONTROLB_WRITEMODE		(1<<5)
#define DA9052_CONTROLB_BBATEN			(1<<4)
#define DA9052_CONTROLB_OTPREADEN		(1<<3)
#define DA9052_CONTROLB_AUTOBOOT		(1<<2)
#define DA9052_CONTROLB_ACTDIODE		(1<<1)
#define DA9052_CONTROLB_BUCKMERGE		(1<<0)

/* CONTROL REGISTER C */
#define DA9052_CONTROLC_BLINKDUR		(1<<7)
#define DA9052_CONTROLC_BLINKFRQ		(3<<5)
#define DA9052_CONTROLC_DEBOUNCING		(7<<2)
#define DA9052_CONTROLC_PMFB2PIN		(1<<1)
#define DA9052_CONTROLC_PMFB1PIN		(1<<0)

/* CONTROL REGISTER D */
#define DA9052_CONTROLD_WATCHDOG		(1<<7)
#define DA9052_CONTROLD_ACCDETEN		(1<<6)
#define DA9052_CONTROLD_GPI1415SD		(1<<5)
#define DA9052_CONTROLD_NONKEYSD		(1<<4)
#define DA9052_CONTROLD_KEEPACTEN		(1<<3)
#define DA9052_CONTROLD_TWDSCALE		(7<<0)

/* POWER DOWN DISABLE REGISTER */
#define DA9052_PDDIS_PMCONTPD			(1<<7)
#define DA9052_PDDIS_OUT32KPD			(1<<6)
#define DA9052_PDDIS_CHGBBATPD			(1<<5)
#define DA9052_PDDIS_CHGPD			(1<<4)
#define DA9052_PDDIS_HS2WIREPD			(1<<3)
#define DA9052_PDDIS_PMIFPD			(1<<2)
#define DA9052_PDDIS_GPADCPD			(1<<1)
#define DA9052_PDDIS_GPIOPD			(1<<0)

/* CONTROL REGISTER D */
#define DA9052_INTERFACE_IFBASEADDR		(7<<5)
#define DA9052_INTERFACE_NCSPOL			(1<<4)
#define DA9052_INTERFACE_RWPOL			(1<<3)
#define DA9052_INTERFACE_CPHA			(1<<2)
#define DA9052_INTERFACE_CPOL			(1<<1)
#define DA9052_INTERFACE_IFTYPE			(1<<0)

/* CONTROL REGISTER D */
#define DA9052_RESET_RESETEVENT			(3<<6)
#define DA9052_RESET_RESETTIMER			(63<<0)

/* GPIO REGISTERS */

/* GPIO control register for PIN 0 and 1 */
#define DA9052_GPIO0001_GPIO1MODE		(1<<7)
#define DA9052_GPIO0001_GPIO1TYPE		(1<<6)
#define DA9052_GPIO0001_GPIO1PIN		(3<<4)
#define DA9052_GPIO0001_GPIO0MODE		(1<<3)
#define DA9052_GPIO0001_GPIO0TYPE		(1<<2)
#define DA9052_GPIO0001_GPIO0PIN		(3<<0)

/* GPIO control register for PIN 2 and 3 */
#define DA9052_GPIO0203_GPIO3MODE		(1<<7)
#define DA9052_GPIO0203_GPIO3TYPE		(1<<6)
#define DA9052_GPIO0203_GPIO3PIN		(3<<4)
#define DA9052_GPIO0203_GPIO2MODE		(1<<3)
#define DA9052_GPIO0203_GPIO2TYPE		(1<<2)
#define DA9052_GPIO0203_GPIO2PIN		(3<<0)

/* GPIO control register for PIN 4 and 5 */
#define DA9052_GPIO0405_GPIO5MODE		(1<<7)
#define DA9052_GPIO0405_GPIO5TYPE		(1<<6)
#define DA9052_GPIO0405_GPIO5PIN		(3<<4)
#define DA9052_GPIO0405_GPIO4MODE		(1<<3)
#define DA9052_GPIO0405_GPIO4TYPE		(1<<2)
#define DA9052_GPIO0405_GPIO4PIN		(3<<0)

/* GPIO control register for PIN 6 and 7 */
#define DA9052_GPIO0607_GPIO7MODE		(1<<7)
#define DA9052_GPIO0607_GPIO7TYPE		(1<<6)
#define DA9052_GPIO0607_GPIO7PIN		(3<<4)
#define DA9052_GPIO0607_GPIO6MODE		(1<<3)
#define DA9052_GPIO0607_GPIO6TYPE		(1<<2)
#define DA9052_GPIO0607_GPIO6PIN		(3<<0)

/* GPIO control register for PIN 8 and 9 */
#define DA9052_GPIO0809_GPIO9MODE		(1<<7)
#define DA9052_GPIO0809_GPIO9TYPE		(1<<6)
#define DA9052_GPIO0809_GPIO9PIN		(3<<4)
#define DA9052_GPIO0809_GPIO8MODE		(1<<3)
#define DA9052_GPIO0809_GPIO8TYPE		(1<<2)
#define DA9052_GPIO0809_GPIO8PIN		(3<<0)

/* GPIO control register for PIN 10 and 11 */
#define DA9052_GPIO1011_GPIO11MODE		(1<<7)
#define DA9052_GPIO1011_GPIO11TYPE		(1<<6)
#define DA9052_GPIO1011_GPIO11PIN		(3<<4)
#define DA9052_GPIO1011_GPIO10MODE		(1<<3)
#define DA9052_GPIO1011_GPIO10TYPE		(1<<2)
#define DA9052_GPIO1011_GPIO10PIN		(3<<0)

/* GPIO control register for PIN 12 and 13 */
#define DA9052_GPIO1213_GPIO13MODE		(1<<7)
#define DA9052_GPIO1213_GPIO13TYPE		(1<<6)
#define DA9052_GPIO1213_GPIO13PIN		(3<<4)
#define DA9052_GPIO1213_GPIO12MODE		(1<<3)
#define DA9052_GPIO1213_GPIO12TYPE		(1<<2)
#define DA9052_GPIO1213_GPIO12PIN		(3<<0)

/* GPIO control register for PIN 14 and 15 */
#define DA9052_GPIO1415_GPIO15MODE		(1<<7)
#define DA9052_GPIO1415_GPIO15TYPE		(1<<6)
#define DA9052_GPIO1415_GPIO15PIN		(3<<4)
#define DA9052_GPIO1415_GPIO14MODE		(1<<3)
#define DA9052_GPIO1415_GPIO14TYPE		(1<<2)
#define DA9052_GPIO1415_GPIO14PIN		(3<<0)

/*POWER SEQUENCER REGISTER*/

/* SEQ control register for ID 0 and 1 */
#define DA9052_ID01_LDO1STEP			(15<<4)
#define DA9052_ID01_SYSPRE			(1<<2)
#define DA9052_ID01_DEFSUPPLY			(1<<1)
#define DA9052_ID01_nRESMODE			(1<<0)

/* SEQ control register for ID 2 and 3 */
#define DA9052_ID23_LDO3STEP			(15<<4)
#define DA9052_ID23_LDO2STEP			(15<<0)

/* SEQ control register for ID 4 and 5 */
#define DA9052_ID45_LDO5STEP			(15<<4)
#define DA9052_ID45_LDO4STEP			(15<<0)

/* SEQ control register for ID 6 and 7 */
#define DA9052_ID67_LDO7STEP			(15<<4)
#define DA9052_ID67_LDO6STEP			(15<<0)

/* SEQ control register for ID 8 and 9 */
#define DA9052_ID89_LDO9STEP			(15<<4)
#define DA9052_ID89_LDO8STEP			(15<<0)

/* SEQ control register for ID 10 and 11 */
#define DA9052_ID1011_PDDISSTEP			(15<<4)
#define DA9052_ID1011_LDO10STEP			(15<<0)

/* SEQ control register for ID 12 and 13 */
#define DA9052_ID1213_VMEMSWSTEP		(15<<4)
#define DA9052_ID1213_VPERISWSTEP		(15<<0)

/* SEQ control register for ID 14 and 15 */
#define DA9052_ID1415_BUCKPROSTEP		(15<<4)
#define DA9052_ID1415_BUCKCORESTEP		(15<<0)

/* SEQ control register for ID 16 and 17 */
#define DA9052_ID1617_BUCKPERISTEP		(15<<4)
#define DA9052_ID1617_BUCKMEMSTEP		(15<<0)

/* SEQ control register for ID 18 and 19 */
#define DA9052_ID1819_GPRISE2STEP		(15<<4)
#define DA9052_ID1819_GPRISE1STEP		(15<<0)

/* SEQ control register for ID 20 and 21 */
#define DA9052_ID2021_GPFALL2STEP		(15<<4)
#define DA9052_ID2021_GPFALL1STEP		(15<<0)

/* Power SEQ Status register */
#define DA9052_SEQSTATUS_SEQPOINTER		(15<<4)
#define DA9052_SEQSTATUS_WAITSTEP		(15<<0)

/* Power SEQ A register */
#define DA9052_SEQA_POWEREND			(15<<4)
#define DA9052_SEQA_SYSTEMEND			(15<<0)

/* Power SEQ B register */
#define DA9052_SEQB_PARTDOWN			(15<<4)
#define DA9052_SEQB_MAXCOUNT			(15<<0)

/* Power SEQ TIMER register */
#define DA9052_SEQTIMER_SEQDUMMY		(15<<4)
#define DA9052_SEQTIMER_SEQTIME			(15<<0)

/*POWER SUPPLY CONTROL REGISTER*/

/* BUCK REGISTER A */
#define DA9052_BUCKA_BPROILIM			(3<<6)
#define DA9052_BUCKA_BPROMODE			(3<<4)
#define DA9052_BUCKA_BCOREILIM			(3<<2)
#define DA9052_BUCKA_BCOREMODE			(3<<0)

/* BUCK REGISTER B */
#define DA9052_BUCKB_BERIILIM			(3<<6)
#define DA9052_BUCKB_BPERIMODE			(3<<4)
#define DA9052_BUCKB_BMEMILIM			(3<<2)
#define DA9052_BUCKB_BMEMMODE			(3<<0)

/* BUCKCORE REGISTER */
#define DA9052_BUCKCORE_BCORECONF		(1<<7)
#define DA9052_BUCKCORE_BCOREEN			(1<<6)
#define DA9052_BUCKCORE_VBCORE			(63<<0)

/* BUCKPRO REGISTER */
#define DA9052_BUCKPRO_BPROCONF			(1<<7)
#define DA9052_BUCKPRO_BPROEN			(1<<6)
#define DA9052_BUCKPRO_VBPRO			(63<<0)

/* BUCKMEM REGISTER */
#define DA9052_BUCKMEM_BMEMCONF			(1<<7)
#define DA9052_BUCKMEM_BMEMEN			(1<<6)
#define DA9052_BUCKMEM_VBMEM			(63<<0)

/* BUCKPERI REGISTER */
#define DA9052_BUCKPERI_BPERICONF		(1<<7)
#define DA9052_BUCKPERI_BPERIEN			(1<<6)
#if defined(CONFIG_PMIC_DA9052)
#define DA9052_BUCKPERI_BPERIHS			(1<<5)
#define DA9052_BUCKPERI_VBPERI			(31<<0)
#elif defined(CONFIG_PMIC_DA9053AA) || defined(CONFIG_PMIC_DA9053Bx)
#define DA9052_BUCKPERI_VBPERI			(63<<0)
#endif

/* LDO1 REGISTER */
#define DA9052_LDO1_LDO1CONF			(1<<7)
#define DA9052_LDO1_LDO1EN			(1<<6)
#define DA9052_LDO1_VLDO1			(31<<0)

/* LDO2 REGISTER */
#define DA9052_LDO2_LDO2CONF			(1<<7)
#define DA9052_LDO2_LDO2EN			(1<<6)
#define DA9052_LDO2_VLDO2			(63<<0)

/* LDO3 REGISTER */
#define DA9052_LDO3_LDO3CONF			(1<<7)
#define DA9052_LDO3_LDO3EN			(1<<6)
#define DA9052_LDO3_VLDO3			(63<<0)

/* LDO4 REGISTER */
#define DA9052_LDO4_LDO4CONF			(1<<7)
#define DA9052_LDO4_LDO4EN			(1<<6)
#define DA9052_LDO4_VLDO4			(63<<0)

/* LDO5 REGISTER */
#define DA9052_LDO5_LDO5CONF			(1<<7)
#define DA9052_LDO5_LDO5EN			(1<<6)
#define DA9052_LDO5_VLDO5			(63<<0)

/* LDO6 REGISTER */
#define DA9052_LDO6_LDO6CONF			(1<<7)
#define DA9052_LDO6_LDO6EN			(1<<6)
#define DA9052_LDO6_VLDO6			(63<<0)

/* LDO7 REGISTER */
#define DA9052_LDO7_LDO7CONF			(1<<7)
#define DA9052_LDO7_LDO7EN			(1<<6)
#define DA9052_LDO7_VLDO7			(63<<0)

/* LDO8 REGISTER */
#define DA9052_LDO8_LDO8CONF			(1<<7)
#define DA9052_LDO8_LDO8EN			(1<<6)
#define DA9052_LDO8_VLDO8			(63<<0)

/* LDO9 REGISTER */
#define DA9052_LDO9_LDO9CONF			(1<<7)
#define DA9052_LDO9_LDO9EN			(1<<6)
#define DA9052_LDO9_VLDO9			(63<<0)

/* LDO10 REGISTER */
#define DA9052_LDO10_LDO10CONF			(1<<7)
#define DA9052_LDO10_LDO10EN			(1<<6)
#define DA9052_LDO10_VLDO10			(63<<0)

/* SUPPLY REGISTER */
#define DA9052_SUPPLY_VLOCK			(1<<7)
#define DA9052_SUPPLY_VMEMSWEN			(1<<6)
#define DA9052_SUPPLY_VPERISWEN			(1<<5)
#define DA9052_SUPPLY_VLDO3GO			(1<<4)
#define DA9052_SUPPLY_VLDO2GO			(1<<3)
#define DA9052_SUPPLY_VBMEMGO			(1<<2)
#define DA9052_SUPPLY_VBPROGO			(1<<1)
#define DA9052_SUPPLY_VBCOREGO			(1<<0)

/* PULLDOWN REGISTER */
#define DA9052_PULLDOWN_LDO5PDDIS		(1<<5)
#define DA9052_PULLDOWN_LDO2PDDIS		(1<<4)
#define DA9052_PULLDOWN_LDO1PDDIS		(1<<3)
#define DA9052_PULLDOWN_MEMPDDIS		(1<<2)
#define DA9052_PULLDOWN_PROPDDIS		(1<<1)
#define DA9052_PULLDOWN_COREPDDIS		(1<<0)

/* BAT CHARGER REGISTER */

/* CHARGER BUCK REGISTER */
#define DA9052_CHGBUCK_CHGTEMP			(1<<7)
#define DA9052_CHGBUCK_CHGUSBILIM		(1<<6)
#define DA9052_CHGBUCK_CHGBUCKLP		(1<<5)
#define DA9052_CHGBUCK_CHGBUCKEN		(1<<4)
#define DA9052_CHGBUCK_ISETBUCK			(15<<0)

/* WAIT COUNTER REGISTER */
#define DA9052_WAITCONT_WAITDIR			(1<<7)
#define DA9052_WAITCONT_RTCCLOCK		(1<<6)
#define DA9052_WAITCONT_WAITMODE		(1<<5)
#define DA9052_WAITCONT_EN32KOUT		(1<<4)
#define DA9052_WAITCONT_DELAYTIME		(15<<0)

/* ISET CONTROL REGISTER */
#define DA9052_ISET_ISETDCIN			(15<<4)
#define DA9052_ISET_ISETVBUS			(15<<0)

/* BATTERY CHARGER CONTROL REGISTER */
#define DA9052_BATCHG_ICHGPRE			(3<<6)
#define DA9052_BATCHG_ICHGBAT			(63<<0)

/* CHARGER COUNTER REGISTER */
#define DA9052_CHGCONT_VCHGBAT			(31<<3)
#define DA9052_CHGCONT_TCTR			(7<<0)

/* INPUT CONTROL REGISTER */
#define DA9052_INPUTCONT_TCTRMODE		(1<<7)
#define DA9052_INPUTCONT_ICHGLOW		(1<<5)
#define DA9052_INPUTCONT_VBUSSUSP		(1<<4)
#define DA9052_INPUTCONT_DCINSUSP		(1<<3)
#define DA9052_INPUTCONT_VCHGTHR		(7<<0)

/* CHARGING TIME REGISTER */
#define DA9052_CHGTIME_CHGTIME			(255<<0)

/* BACKUP BATTERY CONTROL REGISTER */
#define DA9052_BBATCONT_BCHARGERISET		(15<<4)
#define DA9052_BBATCONT_BCHARGERVSET		(15<<0)

/* LED REGISTERS */

/* LED BOOST REGISTER */
#define DA9052_BOOST_EBFAULT			(1<<7)
#define DA9052_BOOST_MBFAULT			(1<<6)
#define DA9052_BOOST_BOOSTFRQ			(1<<5)
#define DA9052_BOOST_BOOSTILIM			(1<<4)
#define DA9052_BOOST_LED3INEN			(1<<3)
#define DA9052_BOOST_LED2INEN			(1<<2)
#define DA9052_BOOST_LED1INEN			(1<<1)
#define DA9052_BOOST_BOOSTEN			(1<<0)

/* LED COUNT REGISTER */
#if defined(CONFIG_PMIC_DA9053Bx)
#define DA9052_LEDCONT_SELLEDMODE		(1<<7)
#endif
#define DA9052_LEDCONT_LED3ICONT		(1<<6)
#define DA9052_LEDCONT_LED3RAMP			(1<<5)
#define DA9052_LEDCONT_LED3EN			(1<<4)
#define DA9052_LEDCONT_LED2RAMP			(1<<3)
#define DA9052_LEDCONT_LED2EN			(1<<2)
#define DA9052_LEDCONT_LED1RAMP			(1<<1)
#define DA9052_LEDCONT_LED1EN			(1<<0)

/* LEDMIN123  REGISTER */
#define DA9052_LEDMIN123_LEDMINCURRENT		(255<<0)

/* LED1CONF  REGISTER */
#define DA9052_LED1CONF_LED1CURRENT		(255<<0)

/* LED2CONF  REGISTER */
#define DA9052_LED2CONF_LED2CURRENT		(255<<0)

/* LED3CONF  REGISTER */
#define DA9052_LED3CONF_LED3CURRENT		(255<<0)

/* LED1 COUNT  REGISTER */
#define DA9052_LED1CONT_LED1DIM			(1<<7)
#define DA9052_LED1CONT_LED1PWM			(127<<0)

/* LED2 COUNT  REGISTER */
#define DA9052_LED2CONT_LED2DIM			(1<<7)
#define DA9052_LED2CONT_LED2PWM			(127<<0)

/* LED3 COUNT  REGISTER */
#define DA9052_LED3CONT_LED3DIM			(1<<7)
#define DA9052_LED3CONT_LED3PWM			(127<<0)

/* LED4 COUNT  REGISTER */
#define DA9052_LED4CONT_LED4DIM			(1<<7)
#define DA9052_LED4CONT_LED4PWM			(127<<0)

/* LED5 COUNT  REGISTER */
#define DA9052_LED5CONT_LED5DIM			(1<<7)
#define DA9052_LED5CONT_LED5PWM			(127<<0)

/* ADC REGISTERS */

/* ADC MAN registers */
#define DA9052_ADCMAN_MANCONV			(1<<4)
#define DA9052_ADCMAN_MUXSEL			(15<<0)

/* ADC COUNT regsisters */
#define DA9052_ADCCONT_COMP1V2EN		(1<<7)
#define DA9052_ADCCONT_ADCMODE			(1<<6)
#define DA9052_ADCCONT_TBATISRCEN		(1<<5)
#define DA9052_ADCCONT_AD4ISRCEN		(1<<4)
#define DA9052_ADCCONT_AUTOAD6EN		(1<<3)
#define DA9052_ADCCONT_AUTOAD5EN		(1<<2)
#define DA9052_ADCCONT_AUTOAD4EN		(1<<1)
#define DA9052_ADCCONT_AUTOVDDEN		(1<<0)

/* ADC 10 BIT MANUAL CONVERSION RESULT LOW register */
#define DA9052_ADCRESL_ADCRESLSB		(3<<0)

/* ADC 10 BIT MANUAL CONVERSION RESULT HIGH register */
#define DA9052_ADCRESH_ADCRESMSB		(255<<0)

/* VDD RES regsister*/
#define DA9052_VDDRES_VDDOUTRES			(255<<0)

/* VDD MON regsister*/
#define DA9052_VDDMON_VDDOUTMON			(255<<0)

/* ICHG_AV regsister*/
#define DA9052_ICHGAV_ICHGAV			(255<<0)

/* ICHG_THD regsister*/
#define DA9052_ICHGTHD_ICHGTHD			(255<<0)

/* ICHG_END regsister*/
#define DA9052_ICHGEND_ICHGEND			(255<<0)

/* TBAT_RES regsister*/
#define DA9052_TBATRES_TBATRES			(255<<0)

/* TBAT_HIGHP regsister*/
#define DA9052_TBATHIGHP_TBATHIGHP		(255<<0)

/* TBAT_HIGHN regsister*/
#define DA9052_TBATHIGHN_TBATHIGHN		(255<<0)

/* TBAT_LOW regsister*/
#define DA9052_TBATLOW_TBATLOW			(255<<0)

/* T_OFFSET regsister*/
#define DA9052_TOFFSET_TOFFSET			(255<<0)

/* ADCIN4_RES regsister*/
#define DA9052_ADCIN4RES_ADCIN4RES		(255<<0)

/* ADCIN4_HIGH regsister*/
#define DA9052_AUTO4HIGH_AUTO4HIGH		(255<<0)

/* ADCIN4_LOW regsister*/
#define DA9052_AUTO4LOW_AUTO4LOW		(255<<0)

/* ADCIN5_RES regsister*/
#define DA9052_ADCIN5RES_ADCIN5RES		(255<<0)

/* ADCIN5_HIGH regsister*/
#define DA9052_AUTO5HIGH_AUTOHIGH		(255<<0)

/* ADCIN5_LOW regsister*/
#define DA9052_AUTO5LOW_AUTO5LOW		(255<<0)

/* ADCIN6_RES regsister*/
#define DA9052_ADCIN6RES_ADCIN6RES		(255<<0)

/* ADCIN6_HIGH regsister*/
#define DA9052_AUTO6HIGH_AUTO6HIGH		(255<<0)

/* ADCIN6_LOW regsister*/
#define DA9052_AUTO6LOW_AUTO6LOW		(255<<0)

/* TJUNC_RES regsister*/
#define DA9052_TJUNCRES_TJUNCRES		(255<<0)

/* TSI REGISTER */

/* TSI Control Register A */
#define DA9052_TSICONTA_TSIDELAY		(3<<6)
#define DA9052_TSICONTA_TSISKIP			(7<<3)
#define DA9052_TSICONTA_TSIMODE			(1<<2)
#define DA9052_TSICONTA_PENDETEN		(1<<1)
#define DA9052_TSICONTA_AUTOTSIEN		(1<<0)

/* TSI Control Register B */
#define DA9052_TSICONTB_ADCREF			(1<<7)
#define DA9052_TSICONTB_TSIMAN			(1<<6)
#define DA9052_TSICONTB_TSIMUX			(3<<4)
#define DA9052_TSICONTB_TSISEL3			(1<<3)
#define DA9052_TSICONTB_TSISEL2			(1<<2)
#define DA9052_TSICONTB_TSISEL1			(1<<1)
#define DA9052_TSICONTB_TSISEL0			(1<<0)

/* TSI X Co-ordinate MSB Result register */
#define DA9052_TSIXMSB_TSIXM			(255<<0)

/* TSI Y Co-ordinate MSB Result register */
#define DA9052_TSIYMSB_TSIYM			(255<<0)

/* TSI Co-ordinate LSB Result register */
#define DA9052_TSILSB_PENDOWN			(1<<6)
#define DA9052_TSILSB_TSIZL			(3<<4)
#define DA9052_TSILSB_TSIYL			(3<<2)
#define DA9052_TSILSB_TSIXL			(3<<0)

/* TSI Z Measurement MSB Result register */
#define DA9052_TSIZMSB_TSIZM			(255<<0)

/* RTC REGISTER */

/* RTC TIMER SECONDS REGISTER */
#define DA9052_COUNTS_MONITOR			(1<<6)
#define DA9052_COUNTS_COUNTSEC			(63<<0)

/* RTC TIMER MINUTES REGISTER */
#define DA9052_COUNTMI_COUNTMIN			(63<<0)

/* RTC TIMER HOUR REGISTER */
#define DA9052_COUNTH_COUNTHOUR			(31<<0)

/* RTC TIMER DAYS REGISTER */
#define DA9052_COUNTD_COUNTDAY			(31<<0)

/* RTC TIMER MONTHS REGISTER */
#define DA9052_COUNTMO_COUNTMONTH		(15<<0)

/* RTC TIMER YEARS REGISTER */
#define DA9052_COUNTY_COUNTYEAR			(63<<0)

/* RTC ALARM MINUTES REGISTER */
#define DA9052_ALARMMI_TICKTYPE			(1<<7)
#define DA9052_ALARMMI_ALARMTYPE		(1<<6)
#define DA9052_ALARMMI_ALARMMIN			(63<<0)

/* RTC ALARM HOURS REGISTER */
#define DA9052_ALARMH_ALARMHOUR			(31<<0)

/* RTC ALARM DAYS REGISTER */
#define DA9052_ALARMD_ALARMDAY			(31<<0)

/* RTC ALARM MONTHS REGISTER */
#define DA9052_ALARMMO_ALARMMONTH		(15<<0)

/* RTC ALARM YEARS REGISTER */
#define DA9052_ALARMY_TICKON			(1<<7)
#define DA9052_ALARMY_ALARMON			(1<<6)
#define DA9052_ALARMY_ALARMYEAR			(63<<0)

/* RTC SECONDS REGISTER  A*/
#define DA9052_SECONDA_SECONDSA			(255<<0)

/* RTC SECONDS REGISTER  B*/
#define DA9052_SECONDB_SECONDSB			(255<<0)

/* RTC SECONDS REGISTER  C*/
#define DA9052_SECONDC_SECONDSC			(255<<0)

/* RTC SECONDS REGISTER  D*/
#define DA9052_SECONDD_SECONDSD			(255<<0)

/* OTP REGISTER */

/* CHIP IDENTIFICATION REGISTER */
#define DA9052_CHIPID_MRC			(15<<4)
#define DA9052_CHIPID_TRC			(15<<0)

/* CONFIGURATION IDENTIFICATION REGISTER */
#define DA9052_CONFIGID_CUSTOMERID		(31<<3)
#define DA9052_CONFIGID_CONFID			(7<<0)

/* OTP CONTROL REGISTER */
#define DA9052_OTPCONT_GPWRITEDIS		(1<<7)
#define DA9052_OTPCONT_OTPCONFLOCK		(1<<6)
#define DA9052_OTPCONT_OTPGPLOCK		(1<<5)
#define DA9052_OTPCONT_OTPCONFG			(1<<3)
#define DA9052_OTPCONT_OTPGP			(1<<2)
#define DA9052_OTPCONT_OTPRP			(1<<1)
#define DA9052_OTPCONT_OTPTRANSFER		(1<<0)

/* RTC OSCILLATOR TRIM REGISTER */
#define DA9052_OSCTRIM_TRIM32K			(255<<0)

/* GP ID REGISTER 0 */
#define DA9052_GPID0_GP0			(255<<0)

/* GP ID REGISTER 1 */
#define DA9052_GPID1_GP1			(255<<0)

/* GP ID REGISTER 2 */
#define DA9052_GPID2_GP2			(255<<0)

/* GP ID REGISTER 3 */
#define DA9052_GPID3_GP3			(255<<0)

/* GP ID REGISTER 4 */
#define DA9052_GPID4_GP4			(255<<0)

/* GP ID REGISTER 5 */
#define DA9052_GPID5_GP5			(255<<0)

/* GP ID REGISTER 6 */
#define DA9052_GPID6_GP6			(255<<0)

/* GP ID REGISTER 7 */
#define DA9052_GPID7_GP7			(255<<0)

/* GP ID REGISTER 8 */
#define DA9052_GPID8_GP8			(255<<0)

/* GP ID REGISTER 9 */
#define DA9052_GPID9_GP9			(255<<0)

#endif
/* __LINUX_MFD_DA9052_REG_H */