diff options
Diffstat (limited to 'arch/arm/mach-s3c2410')
28 files changed, 151 insertions, 498 deletions
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig index 99fdc736698c..63a30d1dd425 100644 --- a/arch/arm/mach-s3c2410/Kconfig +++ b/arch/arm/mach-s3c2410/Kconfig | |||
@@ -7,6 +7,7 @@ | |||
7 | config CPU_S3C2410 | 7 | config CPU_S3C2410 |
8 | bool | 8 | bool |
9 | depends on ARCH_S3C2410 | 9 | depends on ARCH_S3C2410 |
10 | select CPU_ARM920T | ||
10 | select S3C2410_CLOCK | 11 | select S3C2410_CLOCK |
11 | select S3C2410_GPIO | 12 | select S3C2410_GPIO |
12 | select CPU_LLSERIAL_S3C2410 | 13 | select CPU_LLSERIAL_S3C2410 |
@@ -32,11 +33,6 @@ config S3C2410_GPIO | |||
32 | help | 33 | help |
33 | GPIO code for S3C2410 and similar processors | 34 | GPIO code for S3C2410 and similar processors |
34 | 35 | ||
35 | config S3C2410_CLOCK | ||
36 | bool | ||
37 | help | ||
38 | Clock code for the S3C2410, and similar processors | ||
39 | |||
40 | config SIMTEC_NOR | 36 | config SIMTEC_NOR |
41 | bool | 37 | bool |
42 | help | 38 | help |
@@ -84,6 +80,7 @@ config ARCH_BAST | |||
84 | select PM_SIMTEC if PM | 80 | select PM_SIMTEC if PM |
85 | select SIMTEC_NOR | 81 | select SIMTEC_NOR |
86 | select MACH_BAST_IDE | 82 | select MACH_BAST_IDE |
83 | select S3C24XX_DCLK | ||
87 | select ISA | 84 | select ISA |
88 | help | 85 | help |
89 | Say Y here if you are using the Simtec Electronics EB2410ITX | 86 | Say Y here if you are using the Simtec Electronics EB2410ITX |
@@ -121,6 +118,7 @@ config MACH_TCT_HAMMER | |||
121 | config MACH_VR1000 | 118 | config MACH_VR1000 |
122 | bool "Thorcom VR1000" | 119 | bool "Thorcom VR1000" |
123 | select PM_SIMTEC if PM | 120 | select PM_SIMTEC if PM |
121 | select S3C24XX_DCLK | ||
124 | select SIMTEC_NOR | 122 | select SIMTEC_NOR |
125 | select MACH_BAST_IDE | 123 | select MACH_BAST_IDE |
126 | select CPU_S3C2410 | 124 | select CPU_S3C2410 |
diff --git a/arch/arm/mach-s3c2410/Makefile b/arch/arm/mach-s3c2410/Makefile index 00f31f8c4e78..fca02f82711c 100644 --- a/arch/arm/mach-s3c2410/Makefile +++ b/arch/arm/mach-s3c2410/Makefile | |||
@@ -15,7 +15,6 @@ obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o | |||
15 | obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o | 15 | obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o |
16 | obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o | 16 | obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o |
17 | obj-$(CONFIG_S3C2410_GPIO) += gpio.o | 17 | obj-$(CONFIG_S3C2410_GPIO) += gpio.o |
18 | obj-$(CONFIG_S3C2410_CLOCK) += clock.o | ||
19 | 18 | ||
20 | # Machine support | 19 | # Machine support |
21 | 20 | ||
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c deleted file mode 100644 index 4e07943c1e29..000000000000 --- a/arch/arm/mach-s3c2410/clock.c +++ /dev/null | |||
@@ -1,276 +0,0 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/clock.c | ||
2 | * | ||
3 | * Copyright (c) 2006 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C2410,S3C2440,S3C2442 Clock control support | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #include <linux/init.h> | ||
24 | #include <linux/module.h> | ||
25 | #include <linux/kernel.h> | ||
26 | #include <linux/list.h> | ||
27 | #include <linux/errno.h> | ||
28 | #include <linux/err.h> | ||
29 | #include <linux/sysdev.h> | ||
30 | #include <linux/clk.h> | ||
31 | #include <linux/mutex.h> | ||
32 | #include <linux/delay.h> | ||
33 | #include <linux/serial_core.h> | ||
34 | #include <linux/io.h> | ||
35 | |||
36 | #include <asm/mach/map.h> | ||
37 | |||
38 | #include <mach/hardware.h> | ||
39 | |||
40 | #include <plat/regs-serial.h> | ||
41 | #include <mach/regs-clock.h> | ||
42 | #include <mach/regs-gpio.h> | ||
43 | |||
44 | #include <plat/s3c2410.h> | ||
45 | #include <plat/clock.h> | ||
46 | #include <plat/cpu.h> | ||
47 | |||
48 | int s3c2410_clkcon_enable(struct clk *clk, int enable) | ||
49 | { | ||
50 | unsigned int clocks = clk->ctrlbit; | ||
51 | unsigned long clkcon; | ||
52 | |||
53 | clkcon = __raw_readl(S3C2410_CLKCON); | ||
54 | |||
55 | if (enable) | ||
56 | clkcon |= clocks; | ||
57 | else | ||
58 | clkcon &= ~clocks; | ||
59 | |||
60 | /* ensure none of the special function bits set */ | ||
61 | clkcon &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER); | ||
62 | |||
63 | __raw_writel(clkcon, S3C2410_CLKCON); | ||
64 | |||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | static int s3c2410_upll_enable(struct clk *clk, int enable) | ||
69 | { | ||
70 | unsigned long clkslow = __raw_readl(S3C2410_CLKSLOW); | ||
71 | unsigned long orig = clkslow; | ||
72 | |||
73 | if (enable) | ||
74 | clkslow &= ~S3C2410_CLKSLOW_UCLK_OFF; | ||
75 | else | ||
76 | clkslow |= S3C2410_CLKSLOW_UCLK_OFF; | ||
77 | |||
78 | __raw_writel(clkslow, S3C2410_CLKSLOW); | ||
79 | |||
80 | /* if we started the UPLL, then allow to settle */ | ||
81 | |||
82 | if (enable && (orig & S3C2410_CLKSLOW_UCLK_OFF)) | ||
83 | udelay(200); | ||
84 | |||
85 | return 0; | ||
86 | } | ||
87 | |||
88 | /* standard clock definitions */ | ||
89 | |||
90 | static struct clk init_clocks_disable[] = { | ||
91 | { | ||
92 | .name = "nand", | ||
93 | .id = -1, | ||
94 | .parent = &clk_h, | ||
95 | .enable = s3c2410_clkcon_enable, | ||
96 | .ctrlbit = S3C2410_CLKCON_NAND, | ||
97 | }, { | ||
98 | .name = "sdi", | ||
99 | .id = -1, | ||
100 | .parent = &clk_p, | ||
101 | .enable = s3c2410_clkcon_enable, | ||
102 | .ctrlbit = S3C2410_CLKCON_SDI, | ||
103 | }, { | ||
104 | .name = "adc", | ||
105 | .id = -1, | ||
106 | .parent = &clk_p, | ||
107 | .enable = s3c2410_clkcon_enable, | ||
108 | .ctrlbit = S3C2410_CLKCON_ADC, | ||
109 | }, { | ||
110 | .name = "i2c", | ||
111 | .id = -1, | ||
112 | .parent = &clk_p, | ||
113 | .enable = s3c2410_clkcon_enable, | ||
114 | .ctrlbit = S3C2410_CLKCON_IIC, | ||
115 | }, { | ||
116 | .name = "iis", | ||
117 | .id = -1, | ||
118 | .parent = &clk_p, | ||
119 | .enable = s3c2410_clkcon_enable, | ||
120 | .ctrlbit = S3C2410_CLKCON_IIS, | ||
121 | }, { | ||
122 | .name = "spi", | ||
123 | .id = -1, | ||
124 | .parent = &clk_p, | ||
125 | .enable = s3c2410_clkcon_enable, | ||
126 | .ctrlbit = S3C2410_CLKCON_SPI, | ||
127 | } | ||
128 | }; | ||
129 | |||
130 | static struct clk init_clocks[] = { | ||
131 | { | ||
132 | .name = "lcd", | ||
133 | .id = -1, | ||
134 | .parent = &clk_h, | ||
135 | .enable = s3c2410_clkcon_enable, | ||
136 | .ctrlbit = S3C2410_CLKCON_LCDC, | ||
137 | }, { | ||
138 | .name = "gpio", | ||
139 | .id = -1, | ||
140 | .parent = &clk_p, | ||
141 | .enable = s3c2410_clkcon_enable, | ||
142 | .ctrlbit = S3C2410_CLKCON_GPIO, | ||
143 | }, { | ||
144 | .name = "usb-host", | ||
145 | .id = -1, | ||
146 | .parent = &clk_h, | ||
147 | .enable = s3c2410_clkcon_enable, | ||
148 | .ctrlbit = S3C2410_CLKCON_USBH, | ||
149 | }, { | ||
150 | .name = "usb-device", | ||
151 | .id = -1, | ||
152 | .parent = &clk_h, | ||
153 | .enable = s3c2410_clkcon_enable, | ||
154 | .ctrlbit = S3C2410_CLKCON_USBD, | ||
155 | }, { | ||
156 | .name = "timers", | ||
157 | .id = -1, | ||
158 | .parent = &clk_p, | ||
159 | .enable = s3c2410_clkcon_enable, | ||
160 | .ctrlbit = S3C2410_CLKCON_PWMT, | ||
161 | }, { | ||
162 | .name = "uart", | ||
163 | .id = 0, | ||
164 | .parent = &clk_p, | ||
165 | .enable = s3c2410_clkcon_enable, | ||
166 | .ctrlbit = S3C2410_CLKCON_UART0, | ||
167 | }, { | ||
168 | .name = "uart", | ||
169 | .id = 1, | ||
170 | .parent = &clk_p, | ||
171 | .enable = s3c2410_clkcon_enable, | ||
172 | .ctrlbit = S3C2410_CLKCON_UART1, | ||
173 | }, { | ||
174 | .name = "uart", | ||
175 | .id = 2, | ||
176 | .parent = &clk_p, | ||
177 | .enable = s3c2410_clkcon_enable, | ||
178 | .ctrlbit = S3C2410_CLKCON_UART2, | ||
179 | }, { | ||
180 | .name = "rtc", | ||
181 | .id = -1, | ||
182 | .parent = &clk_p, | ||
183 | .enable = s3c2410_clkcon_enable, | ||
184 | .ctrlbit = S3C2410_CLKCON_RTC, | ||
185 | }, { | ||
186 | .name = "watchdog", | ||
187 | .id = -1, | ||
188 | .parent = &clk_p, | ||
189 | .ctrlbit = 0, | ||
190 | }, { | ||
191 | .name = "usb-bus-host", | ||
192 | .id = -1, | ||
193 | .parent = &clk_usb_bus, | ||
194 | }, { | ||
195 | .name = "usb-bus-gadget", | ||
196 | .id = -1, | ||
197 | .parent = &clk_usb_bus, | ||
198 | }, | ||
199 | }; | ||
200 | |||
201 | /* s3c2410_baseclk_add() | ||
202 | * | ||
203 | * Add all the clocks used by the s3c2410 or compatible CPUs | ||
204 | * such as the S3C2440 and S3C2442. | ||
205 | * | ||
206 | * We cannot use a system device as we are needed before any | ||
207 | * of the init-calls that initialise the devices are actually | ||
208 | * done. | ||
209 | */ | ||
210 | |||
211 | int __init s3c2410_baseclk_add(void) | ||
212 | { | ||
213 | unsigned long clkslow = __raw_readl(S3C2410_CLKSLOW); | ||
214 | unsigned long clkcon = __raw_readl(S3C2410_CLKCON); | ||
215 | struct clk *clkp; | ||
216 | struct clk *xtal; | ||
217 | int ret; | ||
218 | int ptr; | ||
219 | |||
220 | clk_upll.enable = s3c2410_upll_enable; | ||
221 | |||
222 | if (s3c24xx_register_clock(&clk_usb_bus) < 0) | ||
223 | printk(KERN_ERR "failed to register usb bus clock\n"); | ||
224 | |||
225 | /* register clocks from clock array */ | ||
226 | |||
227 | clkp = init_clocks; | ||
228 | for (ptr = 0; ptr < ARRAY_SIZE(init_clocks); ptr++, clkp++) { | ||
229 | /* ensure that we note the clock state */ | ||
230 | |||
231 | clkp->usage = clkcon & clkp->ctrlbit ? 1 : 0; | ||
232 | |||
233 | ret = s3c24xx_register_clock(clkp); | ||
234 | if (ret < 0) { | ||
235 | printk(KERN_ERR "Failed to register clock %s (%d)\n", | ||
236 | clkp->name, ret); | ||
237 | } | ||
238 | } | ||
239 | |||
240 | /* We must be careful disabling the clocks we are not intending to | ||
241 | * be using at boot time, as subsystems such as the LCD which do | ||
242 | * their own DMA requests to the bus can cause the system to lockup | ||
243 | * if they where in the middle of requesting bus access. | ||
244 | * | ||
245 | * Disabling the LCD clock if the LCD is active is very dangerous, | ||
246 | * and therefore the bootloader should be careful to not enable | ||
247 | * the LCD clock if it is not needed. | ||
248 | */ | ||
249 | |||
250 | /* install (and disable) the clocks we do not need immediately */ | ||
251 | |||
252 | clkp = init_clocks_disable; | ||
253 | for (ptr = 0; ptr < ARRAY_SIZE(init_clocks_disable); ptr++, clkp++) { | ||
254 | |||
255 | ret = s3c24xx_register_clock(clkp); | ||
256 | if (ret < 0) { | ||
257 | printk(KERN_ERR "Failed to register clock %s (%d)\n", | ||
258 | clkp->name, ret); | ||
259 | } | ||
260 | |||
261 | s3c2410_clkcon_enable(clkp, 0); | ||
262 | } | ||
263 | |||
264 | /* show the clock-slow value */ | ||
265 | |||
266 | xtal = clk_get(NULL, "xtal"); | ||
267 | |||
268 | printk("CLOCK: Slow mode (%ld.%ld MHz), %s, MPLL %s, UPLL %s\n", | ||
269 | print_mhz(clk_get_rate(xtal) / | ||
270 | ( 2 * S3C2410_CLKSLOW_GET_SLOWVAL(clkslow))), | ||
271 | (clkslow & S3C2410_CLKSLOW_SLOW) ? "slow" : "fast", | ||
272 | (clkslow & S3C2410_CLKSLOW_MPLL_OFF) ? "off" : "on", | ||
273 | (clkslow & S3C2410_CLKSLOW_UCLK_OFF) ? "off" : "on"); | ||
274 | |||
275 | return 0; | ||
276 | } | ||
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index 7d914a470b6c..552b4c778fdc 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/sysdev.h> | 17 | #include <linux/sysdev.h> |
18 | #include <linux/serial_core.h> | 18 | #include <linux/serial_core.h> |
19 | 19 | ||
20 | #include <asm/dma.h> | ||
21 | #include <mach/dma.h> | 20 | #include <mach/dma.h> |
22 | 21 | ||
23 | #include <plat/cpu.h> | 22 | #include <plat/cpu.h> |
@@ -25,12 +24,12 @@ | |||
25 | 24 | ||
26 | #include <plat/regs-serial.h> | 25 | #include <plat/regs-serial.h> |
27 | #include <mach/regs-gpio.h> | 26 | #include <mach/regs-gpio.h> |
28 | #include <asm/plat-s3c/regs-ac97.h> | 27 | #include <plat/regs-ac97.h> |
29 | #include <mach/regs-mem.h> | 28 | #include <mach/regs-mem.h> |
30 | #include <mach/regs-lcd.h> | 29 | #include <mach/regs-lcd.h> |
31 | #include <mach/regs-sdi.h> | 30 | #include <mach/regs-sdi.h> |
32 | #include <asm/plat-s3c24xx/regs-iis.h> | 31 | #include <asm/plat-s3c24xx/regs-iis.h> |
33 | #include <asm/plat-s3c24xx/regs-spi.h> | 32 | #include <plat/regs-spi.h> |
34 | 33 | ||
35 | static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = { | 34 | static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = { |
36 | [DMACH_XD0] = { | 35 | [DMACH_XD0] = { |
diff --git a/arch/arm/mach-s3c2410/include/mach/dma.h b/arch/arm/mach-s3c2410/include/mach/dma.h index 891b53cd69b8..13358ce2128c 100644 --- a/arch/arm/mach-s3c2410/include/mach/dma.h +++ b/arch/arm/mach-s3c2410/include/mach/dma.h | |||
@@ -16,11 +16,6 @@ | |||
16 | #include <linux/sysdev.h> | 16 | #include <linux/sysdev.h> |
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | /* | ||
20 | * This is the maximum DMA address(physical address) that can be DMAd to. | ||
21 | * | ||
22 | */ | ||
23 | #define MAX_DMA_ADDRESS 0x40000000 | ||
24 | #define MAX_DMA_TRANSFER_SIZE 0x100000 /* Data Unit is half word */ | 19 | #define MAX_DMA_TRANSFER_SIZE 0x100000 /* Data Unit is half word */ |
25 | 20 | ||
26 | /* We use `virtual` dma channels to hide the fact we have only a limited | 21 | /* We use `virtual` dma channels to hide the fact we have only a limited |
@@ -254,7 +249,7 @@ typedef unsigned long dma_device_t; | |||
254 | * request a dma channel exclusivley | 249 | * request a dma channel exclusivley |
255 | */ | 250 | */ |
256 | 251 | ||
257 | extern int s3c2410_dma_request(dmach_t channel, | 252 | extern int s3c2410_dma_request(unsigned int channel, |
258 | struct s3c2410_dma_client *, void *dev); | 253 | struct s3c2410_dma_client *, void *dev); |
259 | 254 | ||
260 | 255 | ||
@@ -263,14 +258,14 @@ extern int s3c2410_dma_request(dmach_t channel, | |||
263 | * change the state of the dma channel | 258 | * change the state of the dma channel |
264 | */ | 259 | */ |
265 | 260 | ||
266 | extern int s3c2410_dma_ctrl(dmach_t channel, enum s3c2410_chan_op op); | 261 | extern int s3c2410_dma_ctrl(unsigned int channel, enum s3c2410_chan_op op); |
267 | 262 | ||
268 | /* s3c2410_dma_setflags | 263 | /* s3c2410_dma_setflags |
269 | * | 264 | * |
270 | * set the channel's flags to a given state | 265 | * set the channel's flags to a given state |
271 | */ | 266 | */ |
272 | 267 | ||
273 | extern int s3c2410_dma_setflags(dmach_t channel, | 268 | extern int s3c2410_dma_setflags(unsigned int channel, |
274 | unsigned int flags); | 269 | unsigned int flags); |
275 | 270 | ||
276 | /* s3c2410_dma_free | 271 | /* s3c2410_dma_free |
@@ -278,7 +273,7 @@ extern int s3c2410_dma_setflags(dmach_t channel, | |||
278 | * free the dma channel (will also abort any outstanding operations) | 273 | * free the dma channel (will also abort any outstanding operations) |
279 | */ | 274 | */ |
280 | 275 | ||
281 | extern int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *); | 276 | extern int s3c2410_dma_free(unsigned int channel, struct s3c2410_dma_client *); |
282 | 277 | ||
283 | /* s3c2410_dma_enqueue | 278 | /* s3c2410_dma_enqueue |
284 | * | 279 | * |
@@ -287,7 +282,7 @@ extern int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *); | |||
287 | * drained before the buffer is given to the DMA system. | 282 | * drained before the buffer is given to the DMA system. |
288 | */ | 283 | */ |
289 | 284 | ||
290 | extern int s3c2410_dma_enqueue(dmach_t channel, void *id, | 285 | extern int s3c2410_dma_enqueue(unsigned int channel, void *id, |
291 | dma_addr_t data, int size); | 286 | dma_addr_t data, int size); |
292 | 287 | ||
293 | /* s3c2410_dma_config | 288 | /* s3c2410_dma_config |
@@ -295,7 +290,7 @@ extern int s3c2410_dma_enqueue(dmach_t channel, void *id, | |||
295 | * configure the dma channel | 290 | * configure the dma channel |
296 | */ | 291 | */ |
297 | 292 | ||
298 | extern int s3c2410_dma_config(dmach_t channel, int xferunit, int dcon); | 293 | extern int s3c2410_dma_config(unsigned int channel, int xferunit, int dcon); |
299 | 294 | ||
300 | /* s3c2410_dma_devconfig | 295 | /* s3c2410_dma_devconfig |
301 | * | 296 | * |
@@ -310,11 +305,11 @@ extern int s3c2410_dma_devconfig(int channel, enum s3c2410_dmasrc source, | |||
310 | * get the position that the dma transfer is currently at | 305 | * get the position that the dma transfer is currently at |
311 | */ | 306 | */ |
312 | 307 | ||
313 | extern int s3c2410_dma_getposition(dmach_t channel, | 308 | extern int s3c2410_dma_getposition(unsigned int channel, |
314 | dma_addr_t *src, dma_addr_t *dest); | 309 | dma_addr_t *src, dma_addr_t *dest); |
315 | 310 | ||
316 | extern int s3c2410_dma_set_opfn(dmach_t, s3c2410_dma_opfn_t rtn); | 311 | extern int s3c2410_dma_set_opfn(unsigned int, s3c2410_dma_opfn_t rtn); |
317 | extern int s3c2410_dma_set_buffdone_fn(dmach_t, s3c2410_dma_cbfn_t rtn); | 312 | extern int s3c2410_dma_set_buffdone_fn(unsigned int, s3c2410_dma_cbfn_t rtn); |
318 | 313 | ||
319 | /* DMA Register definitions */ | 314 | /* DMA Register definitions */ |
320 | 315 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/gpio-core.h b/arch/arm/mach-s3c2410/include/mach/gpio-core.h new file mode 100644 index 000000000000..6c9fbb99ef14 --- /dev/null +++ b/arch/arm/mach-s3c2410/include/mach/gpio-core.h | |||
@@ -0,0 +1,34 @@ | |||
1 | /* arch/arm/mach-s3c24100/include/mach/gpio-core.h | ||
2 | * | ||
3 | * Copyright 2008 Openmoko, Inc. | ||
4 | * Copyright 2008 Simtec Electronics | ||
5 | * Ben Dooks <ben@simtec.co.uk> | ||
6 | * http://armlinux.simtec.co.uk/ | ||
7 | * | ||
8 | * S3C2410 - GPIO core support | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #ifndef __ASM_ARCH_GPIO_CORE_H | ||
16 | #define __ASM_ARCH_GPIO_CORE_H __FILE__ | ||
17 | |||
18 | #include <plat/gpio-core.h> | ||
19 | #include <mach/regs-gpio.h> | ||
20 | |||
21 | extern struct s3c_gpio_chip s3c24xx_gpios[]; | ||
22 | |||
23 | static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) | ||
24 | { | ||
25 | struct s3c_gpio_chip *chip; | ||
26 | |||
27 | if (pin > S3C2410_GPG10) | ||
28 | return NULL; | ||
29 | |||
30 | chip = &s3c24xx_gpios[pin/32]; | ||
31 | return (S3C2410_GPIO_OFFSET(pin) > chip->chip.ngpio) ? chip : NULL; | ||
32 | } | ||
33 | |||
34 | #endif /* __ASM_ARCH_GPIO_CORE_H */ | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/gpio.h b/arch/arm/mach-s3c2410/include/mach/gpio.h index 3b52b86498a6..e0349af8a483 100644 --- a/arch/arm/mach-s3c2410/include/mach/gpio.h +++ b/arch/arm/mach-s3c2410/include/mach/gpio.h | |||
@@ -15,4 +15,10 @@ | |||
15 | #define gpio_set_value __gpio_set_value | 15 | #define gpio_set_value __gpio_set_value |
16 | #define gpio_cansleep __gpio_cansleep | 16 | #define gpio_cansleep __gpio_cansleep |
17 | 17 | ||
18 | /* some boards require extra gpio capacity to support external | ||
19 | * devices that need GPIO. | ||
20 | */ | ||
21 | |||
22 | #define ARCH_NR_GPIOS (256 + CONFIG_S3C24XX_GPIO_EXTRA) | ||
23 | |||
18 | #include <asm-generic/gpio.h> | 24 | #include <asm-generic/gpio.h> |
diff --git a/arch/arm/mach-s3c2410/include/mach/irqs.h b/arch/arm/mach-s3c2410/include/mach/irqs.h index 950c71bf1489..9565903d490b 100644 --- a/arch/arm/mach-s3c2410/include/mach/irqs.h +++ b/arch/arm/mach-s3c2410/include/mach/irqs.h | |||
@@ -134,6 +134,8 @@ | |||
134 | #define IRQ_S3C2443_HSMMC S3C2410_IRQ(20) /* IRQ_SDI */ | 134 | #define IRQ_S3C2443_HSMMC S3C2410_IRQ(20) /* IRQ_SDI */ |
135 | #define IRQ_S3C2443_NAND S3C2410_IRQ(24) /* reserved */ | 135 | #define IRQ_S3C2443_NAND S3C2410_IRQ(24) /* reserved */ |
136 | 136 | ||
137 | #define IRQ_HSMMC0 IRQ_S3C2443_HSMMC | ||
138 | |||
137 | #define IRQ_S3C2443_LCD1 S3C2410_IRQSUB(14) | 139 | #define IRQ_S3C2443_LCD1 S3C2410_IRQSUB(14) |
138 | #define IRQ_S3C2443_LCD2 S3C2410_IRQSUB(15) | 140 | #define IRQ_S3C2443_LCD2 S3C2410_IRQSUB(15) |
139 | #define IRQ_S3C2443_LCD3 S3C2410_IRQSUB(16) | 141 | #define IRQ_S3C2443_LCD3 S3C2410_IRQSUB(16) |
@@ -160,6 +162,12 @@ | |||
160 | #define NR_IRQS (IRQ_S3C2440_AC97+1) | 162 | #define NR_IRQS (IRQ_S3C2440_AC97+1) |
161 | #endif | 163 | #endif |
162 | 164 | ||
165 | /* compatibility define. */ | ||
166 | #define IRQ_UART3 IRQ_S3C2443_UART3 | ||
167 | #define IRQ_S3CUART_RX3 IRQ_S3C2443_RX3 | ||
168 | #define IRQ_S3CUART_TX3 IRQ_S3C2443_TX3 | ||
169 | #define IRQ_S3CUART_ERR3 IRQ_S3C2443_ERR3 | ||
170 | |||
163 | /* Our FIQs are routable from IRQ_EINT0 to IRQ_ADCPARENT */ | 171 | /* Our FIQs are routable from IRQ_EINT0 to IRQ_ADCPARENT */ |
164 | #define FIQ_START IRQ_EINT0 | 172 | #define FIQ_START IRQ_EINT0 |
165 | 173 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/map.h b/arch/arm/mach-s3c2410/include/mach/map.h index 23c470c2e5b1..255fdfeaf957 100644 --- a/arch/arm/mach-s3c2410/include/mach/map.h +++ b/arch/arm/mach-s3c2410/include/mach/map.h | |||
@@ -13,34 +13,20 @@ | |||
13 | #ifndef __ASM_ARCH_MAP_H | 13 | #ifndef __ASM_ARCH_MAP_H |
14 | #define __ASM_ARCH_MAP_H | 14 | #define __ASM_ARCH_MAP_H |
15 | 15 | ||
16 | #include <plat/map-base.h> | ||
16 | #include <plat/map.h> | 17 | #include <plat/map.h> |
17 | 18 | ||
18 | #define S3C2410_ADDR(x) S3C_ADDR(x) | 19 | #define S3C2410_ADDR(x) S3C_ADDR(x) |
19 | 20 | ||
20 | /* interrupt controller is the first thing we put in, to make | ||
21 | * the assembly code for the irq detection easier | ||
22 | */ | ||
23 | #define S3C24XX_VA_IRQ S3C_VA_IRQ | ||
24 | #define S3C2410_PA_IRQ (0x4A000000) | ||
25 | #define S3C24XX_SZ_IRQ SZ_1M | ||
26 | |||
27 | /* memory controller registers */ | ||
28 | #define S3C24XX_VA_MEMCTRL S3C_VA_MEM | ||
29 | #define S3C2410_PA_MEMCTRL (0x48000000) | ||
30 | #define S3C24XX_SZ_MEMCTRL SZ_1M | ||
31 | |||
32 | /* USB host controller */ | 21 | /* USB host controller */ |
33 | #define S3C2410_PA_USBHOST (0x49000000) | 22 | #define S3C2410_PA_USBHOST (0x49000000) |
34 | #define S3C24XX_SZ_USBHOST SZ_1M | ||
35 | 23 | ||
36 | /* DMA controller */ | 24 | /* DMA controller */ |
37 | #define S3C2410_PA_DMA (0x4B000000) | 25 | #define S3C2410_PA_DMA (0x4B000000) |
38 | #define S3C24XX_SZ_DMA SZ_1M | 26 | #define S3C24XX_SZ_DMA SZ_1M |
39 | 27 | ||
40 | /* Clock and Power management */ | 28 | /* Clock and Power management */ |
41 | #define S3C24XX_VA_CLKPWR S3C_VA_SYS | ||
42 | #define S3C2410_PA_CLKPWR (0x4C000000) | 29 | #define S3C2410_PA_CLKPWR (0x4C000000) |
43 | #define S3C24XX_SZ_CLKPWR SZ_1M | ||
44 | 30 | ||
45 | /* LCD controller */ | 31 | /* LCD controller */ |
46 | #define S3C2410_PA_LCD (0x4D000000) | 32 | #define S3C2410_PA_LCD (0x4D000000) |
@@ -48,48 +34,12 @@ | |||
48 | 34 | ||
49 | /* NAND flash controller */ | 35 | /* NAND flash controller */ |
50 | #define S3C2410_PA_NAND (0x4E000000) | 36 | #define S3C2410_PA_NAND (0x4E000000) |
51 | #define S3C24XX_SZ_NAND SZ_1M | ||
52 | |||
53 | /* UARTs */ | ||
54 | #define S3C24XX_VA_UART S3C_VA_UART | ||
55 | #define S3C2410_PA_UART (0x50000000) | ||
56 | #define S3C24XX_SZ_UART SZ_1M | ||
57 | |||
58 | /* Timers */ | ||
59 | #define S3C24XX_VA_TIMER S3C_VA_TIMER | ||
60 | #define S3C2410_PA_TIMER (0x51000000) | ||
61 | #define S3C24XX_SZ_TIMER SZ_1M | ||
62 | |||
63 | /* USB Device port */ | ||
64 | #define S3C2410_PA_USBDEV (0x52000000) | ||
65 | #define S3C24XX_SZ_USBDEV SZ_1M | ||
66 | |||
67 | /* Watchdog */ | ||
68 | #define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG | ||
69 | #define S3C2410_PA_WATCHDOG (0x53000000) | ||
70 | #define S3C24XX_SZ_WATCHDOG SZ_1M | ||
71 | 37 | ||
72 | /* IIC hardware controller */ | 38 | /* IIC hardware controller */ |
73 | #define S3C2410_PA_IIC (0x54000000) | 39 | #define S3C2410_PA_IIC (0x54000000) |
74 | #define S3C24XX_SZ_IIC SZ_1M | ||
75 | 40 | ||
76 | /* IIS controller */ | 41 | /* IIS controller */ |
77 | #define S3C2410_PA_IIS (0x55000000) | 42 | #define S3C2410_PA_IIS (0x55000000) |
78 | #define S3C24XX_SZ_IIS SZ_1M | ||
79 | |||
80 | /* GPIO ports */ | ||
81 | |||
82 | /* the calculation for the VA of this must ensure that | ||
83 | * it is the same distance apart from the UART in the | ||
84 | * phsyical address space, as the initial mapping for the IO | ||
85 | * is done as a 1:1 maping. This puts it (currently) at | ||
86 | * 0xFA800000, which is not in the way of any current mapping | ||
87 | * by the base system. | ||
88 | */ | ||
89 | |||
90 | #define S3C2410_PA_GPIO (0x56000000) | ||
91 | #define S3C24XX_VA_GPIO ((S3C2410_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART) | ||
92 | #define S3C24XX_SZ_GPIO SZ_1M | ||
93 | 43 | ||
94 | /* RTC */ | 44 | /* RTC */ |
95 | #define S3C2410_PA_RTC (0x57000000) | 45 | #define S3C2410_PA_RTC (0x57000000) |
@@ -97,15 +47,12 @@ | |||
97 | 47 | ||
98 | /* ADC */ | 48 | /* ADC */ |
99 | #define S3C2410_PA_ADC (0x58000000) | 49 | #define S3C2410_PA_ADC (0x58000000) |
100 | #define S3C24XX_SZ_ADC SZ_1M | ||
101 | 50 | ||
102 | /* SPI */ | 51 | /* SPI */ |
103 | #define S3C2410_PA_SPI (0x59000000) | 52 | #define S3C2410_PA_SPI (0x59000000) |
104 | #define S3C24XX_SZ_SPI SZ_1M | ||
105 | 53 | ||
106 | /* SDI */ | 54 | /* SDI */ |
107 | #define S3C2410_PA_SDI (0x5A000000) | 55 | #define S3C2410_PA_SDI (0x5A000000) |
108 | #define S3C24XX_SZ_SDI SZ_1M | ||
109 | 56 | ||
110 | /* CAMIF */ | 57 | /* CAMIF */ |
111 | #define S3C2440_PA_CAMIF (0x4F000000) | 58 | #define S3C2440_PA_CAMIF (0x4F000000) |
@@ -120,13 +67,6 @@ | |||
120 | #define S3C2443_PA_HSMMC (0x4A800000) | 67 | #define S3C2443_PA_HSMMC (0x4A800000) |
121 | #define S3C2443_SZ_HSMMC (256) | 68 | #define S3C2443_SZ_HSMMC (256) |
122 | 69 | ||
123 | /* ISA style IO, for each machine to sort out mappings for, if it | ||
124 | * implements it. We reserve two 16M regions for ISA. | ||
125 | */ | ||
126 | |||
127 | #define S3C24XX_VA_ISA_WORD S3C2410_ADDR(0x02000000) | ||
128 | #define S3C24XX_VA_ISA_BYTE S3C2410_ADDR(0x03000000) | ||
129 | |||
130 | /* physical addresses of all the chip-select areas */ | 70 | /* physical addresses of all the chip-select areas */ |
131 | 71 | ||
132 | #define S3C2410_CS0 (0x00000000) | 72 | #define S3C2410_CS0 (0x00000000) |
@@ -152,27 +92,16 @@ | |||
152 | #define S3C24XX_PA_TIMER S3C2410_PA_TIMER | 92 | #define S3C24XX_PA_TIMER S3C2410_PA_TIMER |
153 | #define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV | 93 | #define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV |
154 | #define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG | 94 | #define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG |
155 | #define S3C24XX_PA_IIC S3C2410_PA_IIC | ||
156 | #define S3C24XX_PA_IIS S3C2410_PA_IIS | 95 | #define S3C24XX_PA_IIS S3C2410_PA_IIS |
157 | #define S3C24XX_PA_GPIO S3C2410_PA_GPIO | 96 | #define S3C24XX_PA_GPIO S3C2410_PA_GPIO |
158 | #define S3C24XX_PA_RTC S3C2410_PA_RTC | 97 | #define S3C24XX_PA_RTC S3C2410_PA_RTC |
159 | #define S3C24XX_PA_ADC S3C2410_PA_ADC | 98 | #define S3C24XX_PA_ADC S3C2410_PA_ADC |
160 | #define S3C24XX_PA_SPI S3C2410_PA_SPI | 99 | #define S3C24XX_PA_SPI S3C2410_PA_SPI |
100 | #define S3C24XX_PA_SDI S3C2410_PA_SDI | ||
101 | #define S3C24XX_PA_NAND S3C2410_PA_NAND | ||
161 | 102 | ||
162 | /* deal with the registers that move under the 2412/2413 */ | 103 | #define S3C_PA_IIC S3C2410_PA_IIC |
163 | 104 | #define S3C_PA_UART S3C24XX_PA_UART | |
164 | #if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413) | 105 | #define S3C_PA_HSMMC0 S3C2443_PA_HSMMC |
165 | #ifndef __ASSEMBLY__ | ||
166 | extern void __iomem *s3c24xx_va_gpio2; | ||
167 | #endif | ||
168 | #ifdef CONFIG_CPU_S3C2412_ONLY | ||
169 | #define S3C24XX_VA_GPIO2 (S3C24XX_VA_GPIO + 0x10) | ||
170 | #else | ||
171 | #define S3C24XX_VA_GPIO2 s3c24xx_va_gpio2 | ||
172 | #endif | ||
173 | #else | ||
174 | #define s3c24xx_va_gpio2 S3C24XX_VA_GPIO | ||
175 | #define S3C24XX_VA_GPIO2 S3C24XX_VA_GPIO | ||
176 | #endif | ||
177 | 106 | ||
178 | #endif /* __ASM_ARCH_MAP_H */ | 107 | #endif /* __ASM_ARCH_MAP_H */ |
diff --git a/arch/arm/mach-s3c2410/include/mach/memory.h b/arch/arm/mach-s3c2410/include/mach/memory.h index 93782628a786..6f1e5871ae4b 100644 --- a/arch/arm/mach-s3c2410/include/mach/memory.h +++ b/arch/arm/mach-s3c2410/include/mach/memory.h | |||
@@ -13,7 +13,4 @@ | |||
13 | 13 | ||
14 | #define PHYS_OFFSET UL(0x30000000) | 14 | #define PHYS_OFFSET UL(0x30000000) |
15 | 15 | ||
16 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
17 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
18 | |||
19 | #endif | 16 | #endif |
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-clock.h b/arch/arm/mach-s3c2410/include/mach/regs-clock.h index b3f90aa78076..2a5d90e957fb 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-clock.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-clock.h | |||
@@ -42,13 +42,6 @@ | |||
42 | #define S3C2410_CLKCON_IIS (1<<17) | 42 | #define S3C2410_CLKCON_IIS (1<<17) |
43 | #define S3C2410_CLKCON_SPI (1<<18) | 43 | #define S3C2410_CLKCON_SPI (1<<18) |
44 | 44 | ||
45 | #define S3C2410_PLLCON_MDIVSHIFT 12 | ||
46 | #define S3C2410_PLLCON_PDIVSHIFT 4 | ||
47 | #define S3C2410_PLLCON_SDIVSHIFT 0 | ||
48 | #define S3C2410_PLLCON_MDIVMASK ((1<<(1+(19-12)))-1) | ||
49 | #define S3C2410_PLLCON_PDIVMASK ((1<<5)-1) | ||
50 | #define S3C2410_PLLCON_SDIVMASK 3 | ||
51 | |||
52 | /* DCLKCON register addresses in gpio.h */ | 45 | /* DCLKCON register addresses in gpio.h */ |
53 | 46 | ||
54 | #define S3C2410_DCLKCON_DCLK0EN (1<<0) | 47 | #define S3C2410_DCLKCON_DCLK0EN (1<<0) |
@@ -76,32 +69,6 @@ | |||
76 | #define S3C2410_CLKSLOW_SLOWVAL(x) (x) | 69 | #define S3C2410_CLKSLOW_SLOWVAL(x) (x) |
77 | #define S3C2410_CLKSLOW_GET_SLOWVAL(x) ((x) & 7) | 70 | #define S3C2410_CLKSLOW_GET_SLOWVAL(x) ((x) & 7) |
78 | 71 | ||
79 | #ifndef __ASSEMBLY__ | ||
80 | |||
81 | #include <asm/div64.h> | ||
82 | |||
83 | static inline unsigned int | ||
84 | s3c2410_get_pll(unsigned int pllval, unsigned int baseclk) | ||
85 | { | ||
86 | unsigned int mdiv, pdiv, sdiv; | ||
87 | uint64_t fvco; | ||
88 | |||
89 | mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT; | ||
90 | pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT; | ||
91 | sdiv = pllval >> S3C2410_PLLCON_SDIVSHIFT; | ||
92 | |||
93 | mdiv &= S3C2410_PLLCON_MDIVMASK; | ||
94 | pdiv &= S3C2410_PLLCON_PDIVMASK; | ||
95 | sdiv &= S3C2410_PLLCON_SDIVMASK; | ||
96 | |||
97 | fvco = (uint64_t)baseclk * (mdiv + 8); | ||
98 | do_div(fvco, (pdiv + 2) << sdiv); | ||
99 | |||
100 | return (unsigned int)fvco; | ||
101 | } | ||
102 | |||
103 | #endif /* __ASSEMBLY__ */ | ||
104 | |||
105 | #if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442) | 72 | #if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442) |
106 | 73 | ||
107 | /* extra registers */ | 74 | /* extra registers */ |
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h index 528080ceac44..321077613067 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h | |||
@@ -1053,13 +1053,6 @@ | |||
1053 | #define S3C24XX_EXTINT1 S3C24XX_GPIOREG2(0x8C) | 1053 | #define S3C24XX_EXTINT1 S3C24XX_GPIOREG2(0x8C) |
1054 | #define S3C24XX_EXTINT2 S3C24XX_GPIOREG2(0x90) | 1054 | #define S3C24XX_EXTINT2 S3C24XX_GPIOREG2(0x90) |
1055 | 1055 | ||
1056 | /* values for S3C2410_EXTINT0/1/2 */ | ||
1057 | #define S3C2410_EXTINT_LOWLEV (0x00) | ||
1058 | #define S3C2410_EXTINT_HILEV (0x01) | ||
1059 | #define S3C2410_EXTINT_FALLEDGE (0x02) | ||
1060 | #define S3C2410_EXTINT_RISEEDGE (0x04) | ||
1061 | #define S3C2410_EXTINT_BOTHEDGE (0x06) | ||
1062 | |||
1063 | /* interrupt filtering conrrol for EINT16..EINT23 */ | 1056 | /* interrupt filtering conrrol for EINT16..EINT23 */ |
1064 | #define S3C2410_EINFLT0 S3C2410_GPIOREG(0x94) | 1057 | #define S3C2410_EINFLT0 S3C2410_GPIOREG(0x94) |
1065 | #define S3C2410_EINFLT1 S3C2410_GPIOREG(0x98) | 1058 | #define S3C2410_EINFLT1 S3C2410_GPIOREG(0x98) |
diff --git a/arch/arm/mach-s3c2410/include/mach/spi.h b/arch/arm/mach-s3c2410/include/mach/spi.h index 46d46f5b99f2..774f3adfe8ad 100644 --- a/arch/arm/mach-s3c2410/include/mach/spi.h +++ b/arch/arm/mach-s3c2410/include/mach/spi.h | |||
@@ -22,5 +22,12 @@ struct s3c2410_spi_info { | |||
22 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 22 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
23 | }; | 23 | }; |
24 | 24 | ||
25 | /* Standard setup / suspend routines for SPI GPIO pins. */ | ||
26 | |||
27 | extern void s3c24xx_spi_gpiocfg_bus0_gpe11_12_13(struct s3c2410_spi_info *spi, | ||
28 | int enable); | ||
29 | |||
30 | extern void s3c24xx_spi_gpiocfg_bus1_gpg5_6_7(struct s3c2410_spi_info *spi, | ||
31 | int enable); | ||
25 | 32 | ||
26 | #endif /* __ASM_ARCH_SPI_H */ | 33 | #endif /* __ASM_ARCH_SPI_H */ |
diff --git a/arch/arm/mach-s3c2410/include/mach/system-reset.h b/arch/arm/mach-s3c2410/include/mach/system-reset.h index 43535a0e7186..7613d0a384ba 100644 --- a/arch/arm/mach-s3c2410/include/mach/system-reset.h +++ b/arch/arm/mach-s3c2410/include/mach/system-reset.h | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | 15 | ||
16 | #include <asm/plat-s3c/regs-watchdog.h> | 16 | #include <plat/regs-watchdog.h> |
17 | #include <mach/regs-clock.h> | 17 | #include <mach/regs-clock.h> |
18 | 18 | ||
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
diff --git a/arch/arm/mach-s3c2410/include/mach/tick.h b/arch/arm/mach-s3c2410/include/mach/tick.h new file mode 100644 index 000000000000..544da41979db --- /dev/null +++ b/arch/arm/mach-s3c2410/include/mach/tick.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/include/mach/tick.h | ||
2 | * | ||
3 | * Copyright 2008 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * http://armlinux.simtec.co.uk/ | ||
6 | * | ||
7 | * S3C2410 - timer tick support | ||
8 | */ | ||
9 | |||
10 | #define SRCPND_TIMER4 (1<<(IRQ_TIMER4 - IRQ_EINT0)) | ||
11 | |||
12 | static inline int s3c24xx_ostimer_pending(void) | ||
13 | { | ||
14 | return __raw_readl(S3C2410_SRCPND) & SRCPND_TIMER4; | ||
15 | } | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/timex.h b/arch/arm/mach-s3c2410/include/mach/timex.h deleted file mode 100644 index 2a425ed0a7e0..000000000000 --- a/arch/arm/mach-s3c2410/include/mach/timex.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* arch/arm/mach-s3c2410/include/mach/timex.h | ||
2 | * | ||
3 | * Copyright (c) 2003-2005 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C2410 - time parameters | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_TIMEX_H | ||
14 | #define __ASM_ARCH_TIMEX_H | ||
15 | |||
16 | /* CLOCK_TICK_RATE needs to be evaluatable by the cpp, so making it | ||
17 | * a variable is useless. It seems as long as we make our timers an | ||
18 | * exact multiple of HZ, any value that makes a 1->1 correspondence | ||
19 | * for the time conversion functions to/from jiffies is acceptable. | ||
20 | */ | ||
21 | |||
22 | |||
23 | #define CLOCK_TICK_RATE 12000000 | ||
24 | |||
25 | |||
26 | #endif /* __ASM_ARCH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/uncompress.h b/arch/arm/mach-s3c2410/include/mach/uncompress.h index ab39491beee2..c9432103750d 100644 --- a/arch/arm/mach-s3c2410/include/mach/uncompress.h +++ b/arch/arm/mach-s3c2410/include/mach/uncompress.h | |||
@@ -1,3 +1,4 @@ | |||
1 | |||
1 | /* arch/arm/mach-s3c2410/include/mach/uncompress.h | 2 | /* arch/arm/mach-s3c2410/include/mach/uncompress.h |
2 | * | 3 | * |
3 | * Copyright (c) 2003, 2007 Simtec Electronics | 4 | * Copyright (c) 2003, 2007 Simtec Electronics |
diff --git a/arch/arm/mach-s3c2410/include/mach/vmalloc.h b/arch/arm/mach-s3c2410/include/mach/vmalloc.h deleted file mode 100644 index 315b0078a34d..000000000000 --- a/arch/arm/mach-s3c2410/include/mach/vmalloc.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* arch/arm/mach-s3c2410/include/mach/vmalloc.h | ||
2 | * | ||
3 | * from arch/arm/mach-iop3xx/include/mach/vmalloc.h | ||
4 | * | ||
5 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | ||
6 | * http://www.simtec.co.uk/products/SWLINUX/ | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | * S3C2410 vmalloc definition | ||
13 | */ | ||
14 | |||
15 | #ifndef __ASM_ARCH_VMALLOC_H | ||
16 | #define __ASM_ARCH_VMALLOC_H | ||
17 | |||
18 | #define VMALLOC_END (0xE0000000) | ||
19 | |||
20 | #endif /* __ASM_ARCH_VMALLOC_H */ | ||
diff --git a/arch/arm/mach-s3c2410/mach-amlm5900.c b/arch/arm/mach-s3c2410/mach-amlm5900.c index d061fea01900..6d6995afeb43 100644 --- a/arch/arm/mach-s3c2410/mach-amlm5900.c +++ b/arch/arm/mach-s3c2410/mach-amlm5900.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include <mach/regs-lcd.h> | 52 | #include <mach/regs-lcd.h> |
53 | #include <mach/regs-gpio.h> | 53 | #include <mach/regs-gpio.h> |
54 | 54 | ||
55 | #include <plat/iic.h> | ||
55 | #include <plat/devs.h> | 56 | #include <plat/devs.h> |
56 | #include <plat/cpu.h> | 57 | #include <plat/cpu.h> |
57 | 58 | ||
@@ -150,7 +151,7 @@ static struct platform_device *amlm5900_devices[] __initdata = { | |||
150 | #endif | 151 | #endif |
151 | &s3c_device_adc, | 152 | &s3c_device_adc, |
152 | &s3c_device_wdt, | 153 | &s3c_device_wdt, |
153 | &s3c_device_i2c, | 154 | &s3c_device_i2c0, |
154 | &s3c_device_usb, | 155 | &s3c_device_usb, |
155 | &s3c_device_rtc, | 156 | &s3c_device_rtc, |
156 | &s3c_device_usbgadget, | 157 | &s3c_device_usbgadget, |
@@ -233,6 +234,7 @@ static void __init amlm5900_init(void) | |||
233 | #ifdef CONFIG_FB_S3C2410 | 234 | #ifdef CONFIG_FB_S3C2410 |
234 | s3c24xx_fb_set_platdata(&amlm5900_fb_info); | 235 | s3c24xx_fb_set_platdata(&amlm5900_fb_info); |
235 | #endif | 236 | #endif |
237 | s3c_i2c0_set_platdata(NULL); | ||
236 | platform_add_devices(amlm5900_devices, ARRAY_SIZE(amlm5900_devices)); | 238 | platform_add_devices(amlm5900_devices, ARRAY_SIZE(amlm5900_devices)); |
237 | } | 239 | } |
238 | 240 | ||
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 8db9c700e3c2..01bd76725b92 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -44,8 +44,8 @@ | |||
44 | #include <mach/regs-mem.h> | 44 | #include <mach/regs-mem.h> |
45 | #include <mach/regs-lcd.h> | 45 | #include <mach/regs-lcd.h> |
46 | 46 | ||
47 | #include <asm/plat-s3c/nand.h> | 47 | #include <plat/nand.h> |
48 | #include <asm/plat-s3c/iic.h> | 48 | #include <plat/iic.h> |
49 | #include <mach/fb.h> | 49 | #include <mach/fb.h> |
50 | 50 | ||
51 | #include <linux/mtd/mtd.h> | 51 | #include <linux/mtd/mtd.h> |
@@ -406,7 +406,7 @@ static struct platform_device bast_sio = { | |||
406 | * standard 100KHz i2c bus frequency | 406 | * standard 100KHz i2c bus frequency |
407 | */ | 407 | */ |
408 | 408 | ||
409 | static struct s3c2410_platform_i2c bast_i2c_info = { | 409 | static struct s3c2410_platform_i2c __initdata bast_i2c_info = { |
410 | .flags = 0, | 410 | .flags = 0, |
411 | .slave_addr = 0x10, | 411 | .slave_addr = 0x10, |
412 | .bus_freq = 100*1000, | 412 | .bus_freq = 100*1000, |
@@ -553,7 +553,7 @@ static struct platform_device *bast_devices[] __initdata = { | |||
553 | &s3c_device_usb, | 553 | &s3c_device_usb, |
554 | &s3c_device_lcd, | 554 | &s3c_device_lcd, |
555 | &s3c_device_wdt, | 555 | &s3c_device_wdt, |
556 | &s3c_device_i2c, | 556 | &s3c_device_i2c0, |
557 | &s3c_device_rtc, | 557 | &s3c_device_rtc, |
558 | &s3c_device_nand, | 558 | &s3c_device_nand, |
559 | &bast_device_dm9k, | 559 | &bast_device_dm9k, |
@@ -588,7 +588,8 @@ static void __init bast_map_io(void) | |||
588 | s3c24xx_register_clocks(bast_clocks, ARRAY_SIZE(bast_clocks)); | 588 | s3c24xx_register_clocks(bast_clocks, ARRAY_SIZE(bast_clocks)); |
589 | 589 | ||
590 | s3c_device_nand.dev.platform_data = &bast_nand_info; | 590 | s3c_device_nand.dev.platform_data = &bast_nand_info; |
591 | s3c_device_i2c.dev.platform_data = &bast_i2c_info; | 591 | |
592 | s3c_i2c0_set_platdata(&bast_i2c_info); | ||
592 | 593 | ||
593 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); | 594 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); |
594 | s3c24xx_init_clocks(0); | 595 | s3c24xx_init_clocks(0); |
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 98716d0108e9..821a1668c3ac 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -38,11 +38,13 @@ | |||
38 | #include <mach/h1940.h> | 38 | #include <mach/h1940.h> |
39 | #include <mach/h1940-latch.h> | 39 | #include <mach/h1940-latch.h> |
40 | #include <mach/fb.h> | 40 | #include <mach/fb.h> |
41 | #include <asm/plat-s3c24xx/udc.h> | 41 | #include <plat/udc.h> |
42 | #include <plat/iic.h> | ||
42 | 43 | ||
43 | #include <plat/clock.h> | 44 | #include <plat/clock.h> |
44 | #include <plat/devs.h> | 45 | #include <plat/devs.h> |
45 | #include <plat/cpu.h> | 46 | #include <plat/cpu.h> |
47 | #include <plat/pll.h> | ||
46 | #include <plat/pm.h> | 48 | #include <plat/pm.h> |
47 | 49 | ||
48 | static struct map_desc h1940_iodesc[] __initdata = { | 50 | static struct map_desc h1940_iodesc[] __initdata = { |
@@ -183,7 +185,7 @@ static struct platform_device *h1940_devices[] __initdata = { | |||
183 | &s3c_device_usb, | 185 | &s3c_device_usb, |
184 | &s3c_device_lcd, | 186 | &s3c_device_lcd, |
185 | &s3c_device_wdt, | 187 | &s3c_device_wdt, |
186 | &s3c_device_i2c, | 188 | &s3c_device_i2c0, |
187 | &s3c_device_iis, | 189 | &s3c_device_iis, |
188 | &s3c_device_usbgadget, | 190 | &s3c_device_usbgadget, |
189 | &s3c_device_leds, | 191 | &s3c_device_leds, |
@@ -215,6 +217,7 @@ static void __init h1940_init(void) | |||
215 | 217 | ||
216 | s3c24xx_fb_set_platdata(&h1940_fb_info); | 218 | s3c24xx_fb_set_platdata(&h1940_fb_info); |
217 | s3c24xx_udc_set_platdata(&h1940_udc_cfg); | 219 | s3c24xx_udc_set_platdata(&h1940_udc_cfg); |
220 | s3c_i2c0_set_platdata(NULL); | ||
218 | 221 | ||
219 | /* Turn off suspend on both USB ports, and switch the | 222 | /* Turn off suspend on both USB ports, and switch the |
220 | * selectable USB port to USB device mode. */ | 223 | * selectable USB port to USB device mode. */ |
@@ -223,10 +226,9 @@ static void __init h1940_init(void) | |||
223 | S3C2410_MISCCR_USBSUSPND0 | | 226 | S3C2410_MISCCR_USBSUSPND0 | |
224 | S3C2410_MISCCR_USBSUSPND1, 0x0); | 227 | S3C2410_MISCCR_USBSUSPND1, 0x0); |
225 | 228 | ||
226 | tmp = ( | 229 | tmp = (0x78 << S3C24XX_PLLCON_MDIVSHIFT) |
227 | 0x78 << S3C2410_PLLCON_MDIVSHIFT) | 230 | | (0x02 << S3C24XX_PLLCON_PDIVSHIFT) |
228 | | (0x02 << S3C2410_PLLCON_PDIVSHIFT) | 231 | | (0x03 << S3C24XX_PLLCON_SDIVSHIFT); |
229 | | (0x03 << S3C2410_PLLCON_SDIVSHIFT); | ||
230 | writel(tmp, S3C2410_UPLLCON); | 232 | writel(tmp, S3C2410_UPLLCON); |
231 | 233 | ||
232 | platform_add_devices(h1940_devices, ARRAY_SIZE(h1940_devices)); | 234 | platform_add_devices(h1940_devices, ARRAY_SIZE(h1940_devices)); |
diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c index 82505517846c..05a5e877b49b 100644 --- a/arch/arm/mach-s3c2410/mach-n30.c +++ b/arch/arm/mach-s3c2410/mach-n30.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | 19 | ||
20 | #include <linux/delay.h> | ||
21 | #include <linux/gpio_keys.h> | 20 | #include <linux/gpio_keys.h> |
22 | #include <linux/init.h> | 21 | #include <linux/init.h> |
23 | #include <linux/input.h> | 22 | #include <linux/input.h> |
@@ -40,14 +39,14 @@ | |||
40 | #include <asm/mach/irq.h> | 39 | #include <asm/mach/irq.h> |
41 | #include <asm/mach/map.h> | 40 | #include <asm/mach/map.h> |
42 | 41 | ||
43 | #include <asm/plat-s3c/iic.h> | 42 | #include <plat/iic.h> |
44 | #include <plat/regs-serial.h> | 43 | #include <plat/regs-serial.h> |
45 | 44 | ||
46 | #include <plat/clock.h> | 45 | #include <plat/clock.h> |
47 | #include <plat/cpu.h> | 46 | #include <plat/cpu.h> |
48 | #include <plat/devs.h> | 47 | #include <plat/devs.h> |
49 | #include <plat/s3c2410.h> | 48 | #include <plat/s3c2410.h> |
50 | #include <asm/plat-s3c24xx/udc.h> | 49 | #include <plat/udc.h> |
51 | 50 | ||
52 | static struct map_desc n30_iodesc[] __initdata = { | 51 | static struct map_desc n30_iodesc[] __initdata = { |
53 | /* nothing here yet */ | 52 | /* nothing here yet */ |
@@ -320,7 +319,7 @@ static struct s3c2410fb_mach_info n30_fb_info __initdata = { | |||
320 | static struct platform_device *n30_devices[] __initdata = { | 319 | static struct platform_device *n30_devices[] __initdata = { |
321 | &s3c_device_lcd, | 320 | &s3c_device_lcd, |
322 | &s3c_device_wdt, | 321 | &s3c_device_wdt, |
323 | &s3c_device_i2c, | 322 | &s3c_device_i2c0, |
324 | &s3c_device_iis, | 323 | &s3c_device_iis, |
325 | &s3c_device_usb, | 324 | &s3c_device_usb, |
326 | &s3c_device_usbgadget, | 325 | &s3c_device_usbgadget, |
@@ -332,7 +331,7 @@ static struct platform_device *n30_devices[] __initdata = { | |||
332 | static struct platform_device *n35_devices[] __initdata = { | 331 | static struct platform_device *n35_devices[] __initdata = { |
333 | &s3c_device_lcd, | 332 | &s3c_device_lcd, |
334 | &s3c_device_wdt, | 333 | &s3c_device_wdt, |
335 | &s3c_device_i2c, | 334 | &s3c_device_i2c0, |
336 | &s3c_device_iis, | 335 | &s3c_device_iis, |
337 | &s3c_device_usbgadget, | 336 | &s3c_device_usbgadget, |
338 | &n35_button_device, | 337 | &n35_button_device, |
@@ -501,7 +500,7 @@ static void __init n30_init_irq(void) | |||
501 | static void __init n30_init(void) | 500 | static void __init n30_init(void) |
502 | { | 501 | { |
503 | s3c24xx_fb_set_platdata(&n30_fb_info); | 502 | s3c24xx_fb_set_platdata(&n30_fb_info); |
504 | s3c_device_i2c.dev.platform_data = &n30_i2ccfg; | 503 | s3c_device_i2c0.dev.platform_data = &n30_i2ccfg; |
505 | s3c24xx_udc_set_platdata(&n30_udc_cfg); | 504 | s3c24xx_udc_set_platdata(&n30_udc_cfg); |
506 | 505 | ||
507 | /* Turn off suspend on both USB ports, and switch the | 506 | /* Turn off suspend on both USB ports, and switch the |
diff --git a/arch/arm/mach-s3c2410/mach-otom.c b/arch/arm/mach-s3c2410/mach-otom.c index d8255cf87e44..f6c7261a4a12 100644 --- a/arch/arm/mach-s3c2410/mach-otom.c +++ b/arch/arm/mach-s3c2410/mach-otom.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <plat/s3c2410.h> | 35 | #include <plat/s3c2410.h> |
36 | #include <plat/clock.h> | 36 | #include <plat/clock.h> |
37 | #include <plat/devs.h> | 37 | #include <plat/devs.h> |
38 | #include <plat/iic.h> | ||
38 | #include <plat/cpu.h> | 39 | #include <plat/cpu.h> |
39 | 40 | ||
40 | static struct map_desc otom11_iodesc[] __initdata = { | 41 | static struct map_desc otom11_iodesc[] __initdata = { |
@@ -94,7 +95,7 @@ static struct platform_device *otom11_devices[] __initdata = { | |||
94 | &s3c_device_usb, | 95 | &s3c_device_usb, |
95 | &s3c_device_lcd, | 96 | &s3c_device_lcd, |
96 | &s3c_device_wdt, | 97 | &s3c_device_wdt, |
97 | &s3c_device_i2c, | 98 | &s3c_device_i2c0, |
98 | &s3c_device_iis, | 99 | &s3c_device_iis, |
99 | &s3c_device_rtc, | 100 | &s3c_device_rtc, |
100 | &otom_device_nor, | 101 | &otom_device_nor, |
@@ -109,6 +110,7 @@ static void __init otom11_map_io(void) | |||
109 | 110 | ||
110 | static void __init otom11_init(void) | 111 | static void __init otom11_init(void) |
111 | { | 112 | { |
113 | s3c_i2c0_set_platdata(NULL); | ||
112 | platform_add_devices(otom11_devices, ARRAY_SIZE(otom11_devices)); | 114 | platform_add_devices(otom11_devices, ARRAY_SIZE(otom11_devices)); |
113 | } | 115 | } |
114 | 116 | ||
diff --git a/arch/arm/mach-s3c2410/mach-qt2410.c b/arch/arm/mach-s3c2410/mach-qt2410.c index 661807e14e8a..9678a53ceeb1 100644 --- a/arch/arm/mach-s3c2410/mach-qt2410.c +++ b/arch/arm/mach-s3c2410/mach-qt2410.c | |||
@@ -50,10 +50,11 @@ | |||
50 | #include <mach/leds-gpio.h> | 50 | #include <mach/leds-gpio.h> |
51 | #include <plat/regs-serial.h> | 51 | #include <plat/regs-serial.h> |
52 | #include <mach/fb.h> | 52 | #include <mach/fb.h> |
53 | #include <asm/plat-s3c/nand.h> | 53 | #include <plat/nand.h> |
54 | #include <asm/plat-s3c24xx/udc.h> | 54 | #include <plat/udc.h> |
55 | #include <mach/spi.h> | 55 | #include <mach/spi.h> |
56 | #include <mach/spi-gpio.h> | 56 | #include <mach/spi-gpio.h> |
57 | #include <plat/iic.h> | ||
57 | 58 | ||
58 | #include <plat/common-smdk.h> | 59 | #include <plat/common-smdk.h> |
59 | #include <plat/devs.h> | 60 | #include <plat/devs.h> |
@@ -247,7 +248,7 @@ static struct platform_device *qt2410_devices[] __initdata = { | |||
247 | &s3c_device_usb, | 248 | &s3c_device_usb, |
248 | &s3c_device_lcd, | 249 | &s3c_device_lcd, |
249 | &s3c_device_wdt, | 250 | &s3c_device_wdt, |
250 | &s3c_device_i2c, | 251 | &s3c_device_i2c0, |
251 | &s3c_device_iis, | 252 | &s3c_device_iis, |
252 | &s3c_device_sdi, | 253 | &s3c_device_sdi, |
253 | &s3c_device_usbgadget, | 254 | &s3c_device_usbgadget, |
@@ -349,6 +350,7 @@ static void __init qt2410_machine_init(void) | |||
349 | s3c2410_gpio_setpin(S3C2410_GPB0, 1); | 350 | s3c2410_gpio_setpin(S3C2410_GPB0, 1); |
350 | 351 | ||
351 | s3c24xx_udc_set_platdata(&qt2410_udc_cfg); | 352 | s3c24xx_udc_set_platdata(&qt2410_udc_cfg); |
353 | s3c_i2c0_set_platdata(NULL); | ||
352 | 354 | ||
353 | s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPIO_OUTPUT); | 355 | s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPIO_OUTPUT); |
354 | 356 | ||
diff --git a/arch/arm/mach-s3c2410/mach-smdk2410.c b/arch/arm/mach-s3c2410/mach-smdk2410.c index 152527bb2872..c49126ccb1d5 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2410.c +++ b/arch/arm/mach-s3c2410/mach-smdk2410.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <asm/mach-types.h> | 47 | #include <asm/mach-types.h> |
48 | 48 | ||
49 | #include <plat/regs-serial.h> | 49 | #include <plat/regs-serial.h> |
50 | #include <plat/iic.h> | ||
50 | 51 | ||
51 | #include <plat/devs.h> | 52 | #include <plat/devs.h> |
52 | #include <plat/cpu.h> | 53 | #include <plat/cpu.h> |
@@ -89,7 +90,7 @@ static struct platform_device *smdk2410_devices[] __initdata = { | |||
89 | &s3c_device_usb, | 90 | &s3c_device_usb, |
90 | &s3c_device_lcd, | 91 | &s3c_device_lcd, |
91 | &s3c_device_wdt, | 92 | &s3c_device_wdt, |
92 | &s3c_device_i2c, | 93 | &s3c_device_i2c0, |
93 | &s3c_device_iis, | 94 | &s3c_device_iis, |
94 | }; | 95 | }; |
95 | 96 | ||
@@ -102,6 +103,7 @@ static void __init smdk2410_map_io(void) | |||
102 | 103 | ||
103 | static void __init smdk2410_init(void) | 104 | static void __init smdk2410_init(void) |
104 | { | 105 | { |
106 | s3c_i2c0_set_platdata(NULL); | ||
105 | platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices)); | 107 | platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices)); |
106 | smdk_machine_init(); | 108 | smdk_machine_init(); |
107 | } | 109 | } |
diff --git a/arch/arm/mach-s3c2410/mach-tct_hammer.c b/arch/arm/mach-s3c2410/mach-tct_hammer.c index 309dcf4c870a..8fdb0430bd48 100644 --- a/arch/arm/mach-s3c2410/mach-tct_hammer.c +++ b/arch/arm/mach-s3c2410/mach-tct_hammer.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <asm/mach-types.h> | 45 | #include <asm/mach-types.h> |
46 | 46 | ||
47 | #include <plat/regs-serial.h> | 47 | #include <plat/regs-serial.h> |
48 | #include <plat/iic.h> | ||
48 | #include <plat/devs.h> | 49 | #include <plat/devs.h> |
49 | #include <plat/cpu.h> | 50 | #include <plat/cpu.h> |
50 | 51 | ||
@@ -127,7 +128,7 @@ static struct s3c2410_uartcfg tct_hammer_uartcfgs[] = { | |||
127 | static struct platform_device *tct_hammer_devices[] __initdata = { | 128 | static struct platform_device *tct_hammer_devices[] __initdata = { |
128 | &s3c_device_adc, | 129 | &s3c_device_adc, |
129 | &s3c_device_wdt, | 130 | &s3c_device_wdt, |
130 | &s3c_device_i2c, | 131 | &s3c_device_i2c0, |
131 | &s3c_device_usb, | 132 | &s3c_device_usb, |
132 | &s3c_device_rtc, | 133 | &s3c_device_rtc, |
133 | &s3c_device_usbgadget, | 134 | &s3c_device_usbgadget, |
@@ -146,6 +147,7 @@ static void __init tct_hammer_map_io(void) | |||
146 | 147 | ||
147 | static void __init tct_hammer_init(void) | 148 | static void __init tct_hammer_init(void) |
148 | { | 149 | { |
150 | s3c_i2c0_set_platdata(NULL); | ||
149 | platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices)); | 151 | platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices)); |
150 | } | 152 | } |
151 | 153 | ||
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index 941353af16dc..61a1ea9c5c5c 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <plat/clock.h> | 47 | #include <plat/clock.h> |
48 | #include <plat/devs.h> | 48 | #include <plat/devs.h> |
49 | #include <plat/cpu.h> | 49 | #include <plat/cpu.h> |
50 | #include <plat/iic.h> | ||
50 | 51 | ||
51 | #include "usb-simtec.h" | 52 | #include "usb-simtec.h" |
52 | #include "nor-simtec.h" | 53 | #include "nor-simtec.h" |
@@ -334,7 +335,7 @@ static struct platform_device *vr1000_devices[] __initdata = { | |||
334 | &s3c_device_usb, | 335 | &s3c_device_usb, |
335 | &s3c_device_lcd, | 336 | &s3c_device_lcd, |
336 | &s3c_device_wdt, | 337 | &s3c_device_wdt, |
337 | &s3c_device_i2c, | 338 | &s3c_device_i2c0, |
338 | &s3c_device_adc, | 339 | &s3c_device_adc, |
339 | &serial_device, | 340 | &serial_device, |
340 | &vr1000_dm9k0, | 341 | &vr1000_dm9k0, |
@@ -384,6 +385,7 @@ static void __init vr1000_map_io(void) | |||
384 | 385 | ||
385 | static void __init vr1000_init(void) | 386 | static void __init vr1000_init(void) |
386 | { | 387 | { |
388 | s3c_i2c0_set_platdata(NULL); | ||
387 | platform_add_devices(vr1000_devices, ARRAY_SIZE(vr1000_devices)); | 389 | platform_add_devices(vr1000_devices, ARRAY_SIZE(vr1000_devices)); |
388 | 390 | ||
389 | i2c_register_board_info(0, vr1000_i2c_devs, | 391 | i2c_register_board_info(0, vr1000_i2c_devs, |
diff --git a/arch/arm/mach-s3c2410/s3c2410.c b/arch/arm/mach-s3c2410/s3c2410.c index ac79b536c4c3..feb141b1f915 100644 --- a/arch/arm/mach-s3c2410/s3c2410.c +++ b/arch/arm/mach-s3c2410/s3c2410.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/clk.h> | ||
19 | #include <linux/sysdev.h> | 20 | #include <linux/sysdev.h> |
20 | #include <linux/serial_core.h> | 21 | #include <linux/serial_core.h> |
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
@@ -28,6 +29,8 @@ | |||
28 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
30 | 31 | ||
32 | #include <plat/cpu-freq.h> | ||
33 | |||
31 | #include <mach/regs-clock.h> | 34 | #include <mach/regs-clock.h> |
32 | #include <plat/regs-serial.h> | 35 | #include <plat/regs-serial.h> |
33 | 36 | ||
@@ -35,6 +38,7 @@ | |||
35 | #include <plat/cpu.h> | 38 | #include <plat/cpu.h> |
36 | #include <plat/devs.h> | 39 | #include <plat/devs.h> |
37 | #include <plat/clock.h> | 40 | #include <plat/clock.h> |
41 | #include <plat/pll.h> | ||
38 | 42 | ||
39 | /* Initial IO mappings */ | 43 | /* Initial IO mappings */ |
40 | 44 | ||
@@ -59,25 +63,28 @@ void __init s3c2410_init_uarts(struct s3c2410_uartcfg *cfg, int no) | |||
59 | * machine specific initialisation. | 63 | * machine specific initialisation. |
60 | */ | 64 | */ |
61 | 65 | ||
62 | void __init s3c2410_map_io(struct map_desc *mach_desc, int mach_size) | 66 | void __init s3c2410_map_io(void) |
63 | { | 67 | { |
64 | /* register our io-tables */ | ||
65 | |||
66 | iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc)); | 68 | iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc)); |
67 | iotable_init(mach_desc, mach_size); | ||
68 | } | 69 | } |
69 | 70 | ||
70 | void __init s3c2410_init_clocks(int xtal) | 71 | void __init_or_cpufreq s3c2410_setup_clocks(void) |
71 | { | 72 | { |
73 | struct clk *xtal_clk; | ||
72 | unsigned long tmp; | 74 | unsigned long tmp; |
75 | unsigned long xtal; | ||
73 | unsigned long fclk; | 76 | unsigned long fclk; |
74 | unsigned long hclk; | 77 | unsigned long hclk; |
75 | unsigned long pclk; | 78 | unsigned long pclk; |
76 | 79 | ||
80 | xtal_clk = clk_get(NULL, "xtal"); | ||
81 | xtal = clk_get_rate(xtal_clk); | ||
82 | clk_put(xtal_clk); | ||
83 | |||
77 | /* now we've got our machine bits initialised, work out what | 84 | /* now we've got our machine bits initialised, work out what |
78 | * clocks we've got */ | 85 | * clocks we've got */ |
79 | 86 | ||
80 | fclk = s3c2410_get_pll(__raw_readl(S3C2410_MPLLCON), xtal); | 87 | fclk = s3c24xx_get_pll(__raw_readl(S3C2410_MPLLCON), xtal); |
81 | 88 | ||
82 | tmp = __raw_readl(S3C2410_CLKDIVN); | 89 | tmp = __raw_readl(S3C2410_CLKDIVN); |
83 | 90 | ||
@@ -95,7 +102,13 @@ void __init s3c2410_init_clocks(int xtal) | |||
95 | * console to use them | 102 | * console to use them |
96 | */ | 103 | */ |
97 | 104 | ||
98 | s3c24xx_setup_clocks(xtal, fclk, hclk, pclk); | 105 | s3c24xx_setup_clocks(fclk, hclk, pclk); |
106 | } | ||
107 | |||
108 | void __init s3c2410_init_clocks(int xtal) | ||
109 | { | ||
110 | s3c24xx_register_baseclocks(xtal); | ||
111 | s3c2410_setup_clocks(); | ||
99 | s3c2410_baseclk_add(); | 112 | s3c2410_baseclk_add(); |
100 | } | 113 | } |
101 | 114 | ||