summaryrefslogtreecommitdiff
path: root/arch/arm/plat-s5pc1xx/include/plat/regs-clock.h
blob: 24dec4e5253887c28156a1f2859e508648002c40 (plain) (blame)
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
/* arch/arm/plat-s5pc1xx/include/plat/regs-clock.h
 *
 * Copyright 2009 Samsung Electronics Co.
 *	Byungho Min <bhmin@samsung.com>
 *
 * S5PC1XX clock register definitions
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

#ifndef __PLAT_REGS_CLOCK_H
#define __PLAT_REGS_CLOCK_H __FILE__

#define S5PC100_CLKREG(x)		(S5PC1XX_VA_CLK + (x))
#define S5PC100_CLKREG_OTHER(x)		(S5PC1XX_VA_CLK_OTHER + (x))

/* s5pc100 register for clock */
#define S5PC100_APLL_LOCK		S5PC100_CLKREG(0x00)
#define S5PC100_MPLL_LOCK		S5PC100_CLKREG(0x04)
#define S5PC100_EPLL_LOCK		S5PC100_CLKREG(0x08)
#define S5PC100_HPLL_LOCK		S5PC100_CLKREG(0x0C)

#define S5PC100_APLL_CON		S5PC100_CLKREG(0x100)
#define S5PC100_MPLL_CON		S5PC100_CLKREG(0x104)
#define S5PC100_EPLL_CON		S5PC100_CLKREG(0x108)
#define S5PC100_HPLL_CON		S5PC100_CLKREG(0x10C)

#define S5PC100_CLKSRC0			S5PC100_CLKREG(0x200)
#define S5PC100_CLKSRC1			S5PC100_CLKREG(0x204)
#define S5PC100_CLKSRC2			S5PC100_CLKREG(0x208)
#define S5PC100_CLKSRC3			S5PC100_CLKREG(0x20C)

#define S5PC100_CLKDIV0			S5PC100_CLKREG(0x300)
#define S5PC100_CLKDIV1			S5PC100_CLKREG(0x304)
#define S5PC100_CLKDIV2			S5PC100_CLKREG(0x308)
#define S5PC100_CLKDIV3			S5PC100_CLKREG(0x30C)
#define S5PC100_CLKDIV4			S5PC100_CLKREG(0x310)

#define S5PC100_CLK_OUT			S5PC100_CLKREG(0x400)

#define S5PC100_CLKGATE_D00		S5PC100_CLKREG(0x500)
#define S5PC100_CLKGATE_D01		S5PC100_CLKREG(0x504)
#define S5PC100_CLKGATE_D02		S5PC100_CLKREG(0x508)

#define S5PC100_CLKGATE_D10		S5PC100_CLKREG(0x520)
#define S5PC100_CLKGATE_D11		S5PC100_CLKREG(0x524)
#define S5PC100_CLKGATE_D12		S5PC100_CLKREG(0x528)
#define S5PC100_CLKGATE_D13		S5PC100_CLKREG(0x52C)
#define S5PC100_CLKGATE_D14		S5PC100_CLKREG(0x530)
#define S5PC100_CLKGATE_D15		S5PC100_CLKREG(0x534)

#define S5PC100_CLKGATE_D20		S5PC100_CLKREG(0x540)

#define S5PC100_SCLKGATE0		S5PC100_CLKREG(0x560)
#define S5PC100_SCLKGATE1		S5PC100_CLKREG(0x564)

/* EPLL_CON */
#define S5PC100_EPLL_EN			(1<<31)
#define S5PC100_EPLL_MASK		0xffffffff
#define S5PC100_EPLLVAL(_m, _p, _s)	((_m) << 16 | ((_p) << 8) | ((_s)))

/* CLKSRC0..CLKSRC3 -> mostly removed due to clksrc updates */
#define S5PC100_CLKSRC1_CLK48M_MASK	(0x1<<24)
#define S5PC100_CLKSRC1_CLK48M_SHIFT	(24)

/* CLKDIV0 */
#define S5PC100_CLKDIV0_APLL_MASK		(0x1<<0)
#define S5PC100_CLKDIV0_APLL_SHIFT		(0)
#define S5PC100_CLKDIV0_ARM_MASK		(0x7<<4)
#define S5PC100_CLKDIV0_ARM_SHIFT		(4)
#define S5PC100_CLKDIV0_D0_MASK		(0x7<<8)
#define S5PC100_CLKDIV0_D0_SHIFT		(8)
#define S5PC100_CLKDIV0_PCLKD0_MASK		(0x7<<12)
#define S5PC100_CLKDIV0_PCLKD0_SHIFT	(12)
#define S5PC100_CLKDIV0_SECSS_MASK		(0x7<<16)
#define S5PC100_CLKDIV0_SECSS_SHIFT		(16)

/* CLKDIV1 (OneNAND clock only used in one place, removed) */
#define S5PC100_CLKDIV1_APLL2_MASK		(0x7<<0)
#define S5PC100_CLKDIV1_APLL2_SHIFT		(0)
#define S5PC100_CLKDIV1_MPLL_MASK		(0x3<<4)
#define S5PC100_CLKDIV1_MPLL_SHIFT		(4)
#define S5PC100_CLKDIV1_MPLL2_MASK		(0x1<<8)
#define S5PC100_CLKDIV1_MPLL2_SHIFT		(8)
#define S5PC100_CLKDIV1_D1_MASK		(0x7<<12)
#define S5PC100_CLKDIV1_D1_SHIFT		(12)
#define S5PC100_CLKDIV1_PCLKD1_MASK		(0x7<<16)
#define S5PC100_CLKDIV1_PCLKD1_SHIFT	(16)
#define S5PC100_CLKDIV1_CAM_MASK		(0x1F<<24)
#define S5PC100_CLKDIV1_CAM_SHIFT		(24)

/* CLKDIV2 => removed in clksrc update */
/* CLKDIV3 => removed in clksrc update, or not needed */
/* CLKDIV4 => removed in clksrc update, or not needed */

/* HCLKD0/PCLKD0 Clock Gate 0 Registers */
#define S5PC100_CLKGATE_D00_INTC		(1<<0)
#define S5PC100_CLKGATE_D00_TZIC		(1<<1)
#define S5PC100_CLKGATE_D00_CFCON		(1<<2)
#define S5PC100_CLKGATE_D00_MDMA		(1<<3)
#define S5PC100_CLKGATE_D00_G2D		(1<<4)
#define S5PC100_CLKGATE_D00_SECSS		(1<<5)
#define S5PC100_CLKGATE_D00_CSSYS		(1<<6)

/* HCLKD0/PCLKD0 Clock Gate 1 Registers */
#define S5PC100_CLKGATE_D01_DMC		(1<<0)
#define S5PC100_CLKGATE_D01_SROMC		(1<<1)
#define S5PC100_CLKGATE_D01_ONENAND		(1<<2)
#define S5PC100_CLKGATE_D01_NFCON		(1<<3)
#define S5PC100_CLKGATE_D01_INTMEM		(1<<4)
#define S5PC100_CLKGATE_D01_EBI		(1<<5)

/* PCLKD0 Clock Gate 2 Registers */
#define S5PC100_CLKGATE_D02_SECKEY		(1<<1)
#define S5PC100_CLKGATE_D02_SDM		(1<<2)

/* HCLKD1/PCLKD1 Clock Gate 0 Registers */
#define S5PC100_CLKGATE_D10_PDMA0		(1<<0)
#define S5PC100_CLKGATE_D10_PDMA1		(1<<1)
#define S5PC100_CLKGATE_D10_USBHOST		(1<<2)
#define S5PC100_CLKGATE_D10_USBOTG		(1<<3)
#define S5PC100_CLKGATE_D10_MODEMIF		(1<<4)
#define S5PC100_CLKGATE_D10_HSMMC0		(1<<5)
#define S5PC100_CLKGATE_D10_HSMMC1		(1<<6)
#define S5PC100_CLKGATE_D10_HSMMC2		(1<<7)

/* HCLKD1/PCLKD1 Clock Gate 1 Registers */
#define S5PC100_CLKGATE_D11_LCD		(1<<0)
#define S5PC100_CLKGATE_D11_ROTATOR		(1<<1)
#define S5PC100_CLKGATE_D11_FIMC0		(1<<2)
#define S5PC100_CLKGATE_D11_FIMC1		(1<<3)
#define S5PC100_CLKGATE_D11_FIMC2		(1<<4)
#define S5PC100_CLKGATE_D11_JPEG		(1<<5)
#define S5PC100_CLKGATE_D11_DSI		(1<<6)
#define S5PC100_CLKGATE_D11_CSI		(1<<7)
#define S5PC100_CLKGATE_D11_G3D		(1<<8)

/* HCLKD1/PCLKD1 Clock Gate 2 Registers */
#define S5PC100_CLKGATE_D12_TV		(1<<0)
#define S5PC100_CLKGATE_D12_VP		(1<<1)
#define S5PC100_CLKGATE_D12_MIXER		(1<<2)
#define S5PC100_CLKGATE_D12_HDMI		(1<<3)
#define S5PC100_CLKGATE_D12_MFC		(1<<4)

/* HCLKD1/PCLKD1 Clock Gate 3 Registers */
#define S5PC100_CLKGATE_D13_CHIPID		(1<<0)
#define S5PC100_CLKGATE_D13_GPIO		(1<<1)
#define S5PC100_CLKGATE_D13_APC		(1<<2)
#define S5PC100_CLKGATE_D13_IEC		(1<<3)
#define S5PC100_CLKGATE_D13_PWM		(1<<6)
#define S5PC100_CLKGATE_D13_SYSTIMER	(1<<7)
#define S5PC100_CLKGATE_D13_WDT		(1<<8)
#define S5PC100_CLKGATE_D13_RTC		(1<<9)

/* HCLKD1/PCLKD1 Clock Gate 4 Registers */
#define S5PC100_CLKGATE_D14_UART0		(1<<0)
#define S5PC100_CLKGATE_D14_UART1		(1<<1)
#define S5PC100_CLKGATE_D14_UART2		(1<<2)
#define S5PC100_CLKGATE_D14_UART3		(1<<3)
#define S5PC100_CLKGATE_D14_IIC		(1<<4)
#define S5PC100_CLKGATE_D14_HDMI_IIC	(1<<5)
#define S5PC100_CLKGATE_D14_SPI0		(1<<6)
#define S5PC100_CLKGATE_D14_SPI1		(1<<7)
#define S5PC100_CLKGATE_D14_SPI2		(1<<8)
#define S5PC100_CLKGATE_D14_IRDA		(1<<9)
#define S5PC100_CLKGATE_D14_CCAN0		(1<<10)
#define S5PC100_CLKGATE_D14_CCAN1		(1<<11)
#define S5PC100_CLKGATE_D14_HSITX		(1<<12)
#define S5PC100_CLKGATE_D14_HSIRX		(1<<13)

/* HCLKD1/PCLKD1 Clock Gate 5 Registers */
#define S5PC100_CLKGATE_D15_IIS0		(1<<0)
#define S5PC100_CLKGATE_D15_IIS1		(1<<1)
#define S5PC100_CLKGATE_D15_IIS2		(1<<2)
#define S5PC100_CLKGATE_D15_AC97		(1<<3)
#define S5PC100_CLKGATE_D15_PCM0		(1<<4)
#define S5PC100_CLKGATE_D15_PCM1		(1<<5)
#define S5PC100_CLKGATE_D15_SPDIF		(1<<6)
#define S5PC100_CLKGATE_D15_TSADC		(1<<7)
#define S5PC100_CLKGATE_D15_KEYIF		(1<<8)
#define S5PC100_CLKGATE_D15_CG		(1<<9)

/* HCLKD2 Clock Gate 0 Registers */
#define S5PC100_CLKGATE_D20_HCLKD2		(1<<0)
#define S5PC100_CLKGATE_D20_I2SD2		(1<<1)

/* Special Clock Gate 0 Registers */
#define	S5PC100_CLKGATE_SCLK0_HPM		(1<<0)
#define	S5PC100_CLKGATE_SCLK0_PWI		(1<<1)
#define	S5PC100_CLKGATE_SCLK0_ONENAND	(1<<2)
#define	S5PC100_CLKGATE_SCLK0_UART		(1<<3)
#define	S5PC100_CLKGATE_SCLK0_SPI0		(1<<4)
#define	S5PC100_CLKGATE_SCLK0_SPI1		(1<<5)
#define	S5PC100_CLKGATE_SCLK0_SPI2		(1<<6)
#define	S5PC100_CLKGATE_SCLK0_SPI0_48	(1<<7)
#define	S5PC100_CLKGATE_SCLK0_SPI1_48	(1<<8)
#define	S5PC100_CLKGATE_SCLK0_SPI2_48	(1<<9)
#define	S5PC100_CLKGATE_SCLK0_IRDA		(1<<10)
#define	S5PC100_CLKGATE_SCLK0_USBHOST	(1<<11)
#define	S5PC100_CLKGATE_SCLK0_MMC0		(1<<12)
#define	S5PC100_CLKGATE_SCLK0_MMC1		(1<<13)
#define	S5PC100_CLKGATE_SCLK0_MMC2		(1<<14)
#define	S5PC100_CLKGATE_SCLK0_MMC0_48	(1<<15)
#define	S5PC100_CLKGATE_SCLK0_MMC1_48	(1<<16)
#define	S5PC100_CLKGATE_SCLK0_MMC2_48	(1<<17)

/* Special Clock Gate 1 Registers */
#define	S5PC100_CLKGATE_SCLK1_LCD		(1<<0)
#define	S5PC100_CLKGATE_SCLK1_FIMC0		(1<<1)
#define	S5PC100_CLKGATE_SCLK1_FIMC1		(1<<2)
#define	S5PC100_CLKGATE_SCLK1_FIMC2		(1<<3)
#define	S5PC100_CLKGATE_SCLK1_TV54		(1<<4)
#define	S5PC100_CLKGATE_SCLK1_VDAC54	(1<<5)
#define	S5PC100_CLKGATE_SCLK1_MIXER		(1<<6)
#define	S5PC100_CLKGATE_SCLK1_HDMI		(1<<7)
#define	S5PC100_CLKGATE_SCLK1_AUDIO0	(1<<8)
#define	S5PC100_CLKGATE_SCLK1_AUDIO1	(1<<9)
#define	S5PC100_CLKGATE_SCLK1_AUDIO2	(1<<10)
#define	S5PC100_CLKGATE_SCLK1_SPDIF		(1<<11)
#define	S5PC100_CLKGATE_SCLK1_CAM		(1<<12)

#define S5PC100_SWRESET		S5PC100_CLKREG_OTHER(0x000)
#define S5PC100_OND_SWRESET	S5PC100_CLKREG_OTHER(0x008)
#define S5PC100_GEN_CTRL	S5PC100_CLKREG_OTHER(0x100)
#define S5PC100_GEN_STATUS	S5PC100_CLKREG_OTHER(0x104)
#define S5PC100_MEM_SYS_CFG	S5PC100_CLKREG_OTHER(0x200)
#define S5PC100_CAM_MUX_SEL	S5PC100_CLKREG_OTHER(0x300)
#define S5PC100_MIXER_OUT_SEL	S5PC100_CLKREG_OTHER(0x304)
#define S5PC100_LPMP_MODE_SEL	S5PC100_CLKREG_OTHER(0x308)
#define S5PC100_MIPI_PHY_CON0	S5PC100_CLKREG_OTHER(0x400)
#define S5PC100_MIPI_PHY_CON1	S5PC100_CLKREG_OTHER(0x414)
#define S5PC100_HDMI_PHY_CON0	S5PC100_CLKREG_OTHER(0x420)

#define S5PC100_SWRESET_RESETVAL	0xc100
#define S5PC100_OTHER_SYS_INT	24
#define S5PC100_OTHER_STA_TYPE	23
#define STA_TYPE_EXPON		0
#define STA_TYPE_SFR		1

#define S5PC100_SLEEP_CFG_OSC_EN	0

/* OTHERS Resgister */
#define S5PC100_OTHERS_USB_SIG_MASK	(1 << 16)
#define S5PC100_OTHERS_MIPI_DPHY_EN		(1 << 28)

/* MIPI D-PHY Control Register 0 */
#define S5PC100_MIPI_PHY_CON0_M_RESETN	(1 << 1)
#define S5PC100_MIPI_PHY_CON0_S_RESETN	(1 << 0)

#endif /* _PLAT_REGS_CLOCK_H */