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
|
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* (C) Copyright 2010
* Stefano Babic, DENX Software Engineering, sbabic@denx.de.
*
* (C) Copyright 2009 Freescale Semiconductor, Inc.
*/
#ifndef __FSL_PMIC_H__
#define __FSL_PMIC_H__
/*
* The registers of different PMIC has the same meaning
* but the bit positions of the fields can differ or
* some fields has a meaning only on some devices.
* You have to check with the internal SPI bitmap
* (see Freescale Documentation) to set the registers
* for the device you are using
*/
enum {
REG_INT_STATUS0 = 0,
REG_INT_MASK0,
REG_INT_SENSE0,
REG_INT_STATUS1,
REG_INT_MASK1,
REG_INT_SENSE1,
REG_PU_MODE_S,
REG_IDENTIFICATION,
REG_UNUSED0,
REG_ACC0,
REG_ACC1, /*10 */
REG_UNUSED1,
REG_UNUSED2,
REG_POWER_CTL0,
REG_POWER_CTL1,
REG_POWER_CTL2,
REG_REGEN_ASSIGN,
REG_UNUSED3,
REG_MEM_A,
REG_MEM_B,
REG_RTC_TIME, /*20 */
REG_RTC_ALARM,
REG_RTC_DAY,
REG_RTC_DAY_ALARM,
REG_SW_0,
REG_SW_1,
REG_SW_2,
REG_SW_3,
REG_SW_4,
REG_SW_5,
REG_SETTING_0, /*30 */
REG_SETTING_1,
REG_MODE_0,
REG_MODE_1,
REG_POWER_MISC,
REG_UNUSED4,
REG_UNUSED5,
REG_UNUSED6,
REG_UNUSED7,
REG_UNUSED8,
REG_UNUSED9, /*40 */
REG_UNUSED10,
REG_UNUSED11,
REG_ADC0,
REG_ADC1,
REG_ADC2,
REG_ADC3,
REG_ADC4,
REG_CHARGE,
REG_USB0,
REG_USB1, /*50 */
REG_LED_CTL0,
REG_LED_CTL1,
REG_LED_CTL2,
REG_LED_CTL3,
REG_UNUSED12,
REG_UNUSED13,
REG_TRIM0,
REG_TRIM1,
REG_TEST0,
REG_TEST1, /*60 */
REG_TEST2,
REG_TEST3,
REG_TEST4,
PMIC_NUM_OF_REGS,
};
/* REG_POWER_MISC */
#define GPO1EN (1 << 6)
#define GPO1STBY (1 << 7)
#define GPO2EN (1 << 8)
#define GPO2STBY (1 << 9)
#define GPO3EN (1 << 10)
#define GPO3STBY (1 << 11)
#define GPO4EN (1 << 12)
#define GPO4STBY (1 << 13)
#define PWGT1SPIEN (1 << 15)
#define PWGT2SPIEN (1 << 16)
#define PWUP (1 << 21)
/* Power Control 0 */
#define COINCHEN (1 << 23)
#define BATTDETEN (1 << 19)
/* Interrupt status 1 */
#define RTCRSTI (1 << 7)
/* MC34708 Definitions */
#define SWx_VOLT_MASK_MC34708 0x3F
#define SWx_1_110V_MC34708 0x24
#define SWx_1_250V_MC34708 0x30
#define SWx_1_300V_MC34708 0x34
#define TIMER_MASK_MC34708 0x300
#define TIMER_4S_MC34708 0x100
#define VUSBSEL_MC34708 (1 << 2)
#define VUSBEN_MC34708 (1 << 3)
#define SWBST_CTRL 31
#define SWBST_AUTO 0x8
#define MC34708_REG_SW12_OPMODE 28
#define MC34708_SW1AMODE_MASK 0x00000f
#define MC34708_SW1AMHMODE 0x000010
#define MC34708_SW1AUOMODE 0x000020
#define MC34708_SW1DVSSPEED 0x0000c0
#define MC34708_SW2MODE_MASK 0x03c000
#define MC34708_SW2MHMODE 0x040000
#define MC34708_SW2UOMODE 0x080000
#define MC34708_SW2DVSSPEED 0x300000
#define MC34708_PLLEN 0x400000
#define MC34708_PLLX 0x800000
#define MC34708_REG_SW345_OPMODE 29
#define MC34708_SW3MODE_MASK 0x00000f
#define MC34708_SW3MHMODE 0x000010
#define MC34708_SW3UOMODE 0x000020
#define MC34708_SW4AMODE_MASK 0x0003c0
#define MC34708_SW4AMHMODE 0x000400
#define MC34708_SW4AUOMODE 0x000800
#define MC34708_SW4BMODE_MASK 0x00f000
#define MC34708_SW4BMHMODE 0x010000
#define MC34708_SW4BUOMODE 0x020000
#define MC34708_SW5MODE_MASK 0x3c0000
#define MC34708_SW5MHMODE 0x400000
#define MC34708_SW5UOMODE 0x800000
#define SW_MODE_OFFOFF 0x00
#define SW_MODE_PWMOFF 0x01
#define SW_MODE_PFMOFF 0x03
#define SW_MODE_APSOFF 0x04
#define SW_MODE_PWMPWM 0x05
#define SW_MODE_PWMAPS 0x06
#define SW_MODE_APSAPS 0x08
#define SW_MODE_APSPFM 0x0c
#define SW_MODE_PWMPFM 0x0d
#define SW_MODE_PFMPFM 0x0f
#define MC34708_TRANSFER_SIZE 3
#endif
|