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
|
/* Public Domain */
/*
* Clocks Signals
*/
#define A64_CLK_PLL_PERIPH0 11
#define A64_CLK_PLL_PERIPH0_2X 12
#define A64_CLK_APB2 26
#define A64_CLK_BUS_MMC0 31
#define A64_CLK_BUS_MMC1 32
#define A64_CLK_BUS_MMC2 33
#define A64_CLK_BUS_EHCI0 42
#define A64_CLK_BUS_EHCI1 43
#define A64_CLK_BUS_OHCI0 44
#define A64_CLK_BUS_OHCI1 45
#define A64_CLK_BUS_PIO 58
#define A64_CLK_BUS_UART0 67
#define A64_CLK_BUS_UART1 68
#define A64_CLK_BUS_UART2 69
#define A64_CLK_BUS_UART3 70
#define A64_CLK_BUS_UART4 71
#define A64_CLK_MMC0 75
#define A64_CLK_MMC1 76
#define A64_CLK_MMC2 77
#define A64_CLK_USB_OHCI0 91
#define A64_CLK_USB_OHCI1 93
#define A64_CLK_USB_PHY0 86
#define A64_CLK_USB_PHY1 87
struct sxiccmu_ccu_bit sun50i_a64_gates[] = {
[A64_CLK_BUS_MMC0] = { 0x0060, 8 },
[A64_CLK_BUS_MMC1] = { 0x0060, 9 },
[A64_CLK_BUS_MMC2] = { 0x0060, 10 },
[A64_CLK_BUS_EHCI0] = { 0x0060, 24 },
[A64_CLK_BUS_EHCI1] = { 0x0060, 25 },
[A64_CLK_BUS_OHCI0] = { 0x0060, 28 },
[A64_CLK_BUS_OHCI1] = { 0x0060, 29 },
[A64_CLK_BUS_PIO] = { 0x0068, 5 },
[A64_CLK_BUS_UART0] = { 0x006c, 16, A64_CLK_APB2 },
[A64_CLK_BUS_UART1] = { 0x006c, 17, A64_CLK_APB2 },
[A64_CLK_BUS_UART2] = { 0x006c, 18, A64_CLK_APB2 },
[A64_CLK_BUS_UART3] = { 0x006c, 19, A64_CLK_APB2 },
[A64_CLK_BUS_UART4] = { 0x006c, 20, A64_CLK_APB2 },
[A64_CLK_MMC0] = { 0x0088, 31 },
[A64_CLK_MMC1] = { 0x008c, 31 },
[A64_CLK_MMC2] = { 0x0090, 31 },
[A64_CLK_USB_OHCI0] = { 0x00cc, 16 },
[A64_CLK_USB_OHCI1] = { 0x00cc, 17 },
[A64_CLK_USB_PHY0] = { 0x00cc, 8 },
[A64_CLK_USB_PHY1] = { 0x00cc, 9 },
};
#define H3_CLK_PLL_PERIPH0 9
#define H3_CLK_AXI 15
#define H3_CLK_AHB1 16
#define H3_CLK_APB1 17
#define H3_CLK_APB2 18
#define H3_CLK_AHB2 19
#define H3_CLK_BUS_MMC0 22
#define H3_CLK_BUS_MMC1 23
#define H3_CLK_BUS_MMC2 24
#define H3_CLK_BUS_EMAC 27
#define H3_CLK_BUS_EHCI0 33
#define H3_CLK_BUS_EHCI1 34
#define H3_CLK_BUS_EHCI2 35
#define H3_CLK_BUS_EHCI3 36
#define H3_CLK_BUS_OHCI0 37
#define H3_CLK_BUS_OHCI1 38
#define H3_CLK_BUS_OHCI2 39
#define H3_CLK_BUS_OHCI3 40
#define H3_CLK_BUS_PIO 54
#define H3_CLK_BUS_UART0 62
#define H3_CLK_BUS_UART1 63
#define H3_CLK_BUS_UART2 64
#define H3_CLK_BUS_UART3 65
#define H3_CLK_BUS_EPHY 67
#define H3_CLK_MMC0 71
#define H3_CLK_MMC1 74
#define H3_CLK_MMC2 77
#define H3_CLK_USB_PHY0 88
#define H3_CLK_USB_PHY1 89
#define H3_CLK_USB_PHY2 90
#define H3_CLK_USB_PHY3 91
#define H3_CLK_LOSC 254
#define H3_CLK_HOSC 253
struct sxiccmu_ccu_bit sun8i_h3_gates[] = {
[H3_CLK_BUS_MMC0] = { 0x0060, 8 },
[H3_CLK_BUS_MMC1] = { 0x0060, 9 },
[H3_CLK_BUS_MMC2] = { 0x0060, 10 },
[H3_CLK_BUS_EMAC] = { 0x0060, 17, H3_CLK_AHB2 },
[H3_CLK_BUS_EHCI0] = { 0x0060, 24 },
[H3_CLK_BUS_EHCI1] = { 0x0060, 25 },
[H3_CLK_BUS_EHCI2] = { 0x0060, 26 },
[H3_CLK_BUS_EHCI3] = { 0x0060, 27 },
[H3_CLK_BUS_OHCI0] = { 0x0060, 28 },
[H3_CLK_BUS_OHCI1] = { 0x0060, 29 },
[H3_CLK_BUS_OHCI2] = { 0x0060, 30 },
[H3_CLK_BUS_OHCI3] = { 0x0060, 31 },
[H3_CLK_BUS_PIO] = { 0x0068, 5 },
[H3_CLK_BUS_UART0] = { 0x006c, 16, H3_CLK_APB2 },
[H3_CLK_BUS_UART1] = { 0x006c, 17, H3_CLK_APB2 },
[H3_CLK_BUS_UART2] = { 0x006c, 18, H3_CLK_APB2 },
[H3_CLK_BUS_UART3] = { 0x006c, 19, H3_CLK_APB2 },
[H3_CLK_BUS_EPHY] = { 0x0070, 0 },
[H3_CLK_MMC0] = { 0x0088, 31 },
[H3_CLK_MMC1] = { 0x008c, 31 },
[H3_CLK_MMC2] = { 0x0090, 31 },
[H3_CLK_USB_PHY0] = { 0x00cc, 8 },
[H3_CLK_USB_PHY1] = { 0x00cc, 9 },
[H3_CLK_USB_PHY2] = { 0x00cc, 10 },
[H3_CLK_USB_PHY3] = { 0x00cc, 11 },
};
/*
* Reset Signals
*/
#define A64_RST_USB_PHY0 0
#define A64_RST_USB_PHY1 1
#define A64_RST_BUS_MMC0 8
#define A64_RST_BUS_MMC1 9
#define A64_RST_BUS_MMC2 10
#define A64_RST_BUS_EHCI0 19
#define A64_RST_BUS_EHCI1 20
#define A64_RST_BUS_OHCI0 21
#define A64_RST_BUS_OHCI1 22
struct sxiccmu_ccu_bit sun50i_a64_resets[] = {
[A64_RST_USB_PHY0] = { 0x00cc, 0 },
[A64_RST_USB_PHY1] = { 0x00cc, 1 },
[A64_RST_BUS_MMC0] = { 0x02c0, 8 },
[A64_RST_BUS_MMC1] = { 0x02c0, 9 },
[A64_RST_BUS_MMC2] = { 0x02c0, 10 },
[A64_RST_BUS_EHCI0] = { 0x02c0, 24 },
[A64_RST_BUS_EHCI1] = { 0x02c0, 25 },
[A64_RST_BUS_OHCI0] = { 0x02c0, 28 },
[A64_RST_BUS_OHCI1] = { 0x02c0, 29 },
};
#define H3_RST_USB_PHY0 0
#define H3_RST_USB_PHY1 1
#define H3_RST_USB_PHY2 2
#define H3_RST_USB_PHY3 3
#define H3_RST_BUS_MMC0 7
#define H3_RST_BUS_MMC1 8
#define H3_RST_BUS_MMC2 9
#define H3_RST_BUS_EMAC 12
#define H3_RST_BUS_EHCI0 18
#define H3_RST_BUS_EHCI1 19
#define H3_RST_BUS_EHCI2 20
#define H3_RST_BUS_EHCI3 21
#define H3_RST_BUS_OHCI0 22
#define H3_RST_BUS_OHCI1 23
#define H3_RST_BUS_OHCI2 24
#define H3_RST_BUS_OHCI3 25
#define H3_RST_BUS_EPHY 39
struct sxiccmu_ccu_bit sun8i_h3_resets[] = {
[H3_RST_USB_PHY0] = { 0x00cc, 0 },
[H3_RST_USB_PHY1] = { 0x00cc, 1 },
[H3_RST_USB_PHY2] = { 0x00cc, 2 },
[H3_RST_USB_PHY3] = { 0x00cc, 3 },
[H3_RST_BUS_MMC0] = { 0x02c0, 8 },
[H3_RST_BUS_MMC1] = { 0x02c0, 9 },
[H3_RST_BUS_MMC2] = { 0x02c0, 10 },
[H3_RST_BUS_EMAC] = { 0x02c0, 17 },
[H3_RST_BUS_EHCI0] = { 0x02c0, 24 },
[H3_RST_BUS_EHCI1] = { 0x02c0, 25 },
[H3_RST_BUS_EHCI2] = { 0x02c0, 26 },
[H3_RST_BUS_EHCI3] = { 0x02c0, 27 },
[H3_RST_BUS_OHCI0] = { 0x02c0, 28 },
[H3_RST_BUS_OHCI1] = { 0x02c0, 29 },
[H3_RST_BUS_OHCI2] = { 0x02c0, 30 },
[H3_RST_BUS_OHCI3] = { 0x02c0, 31 },
[H3_RST_BUS_EPHY] = { 0x02c8, 2 },
};
|