aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-23 20:34:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-23 20:34:48 -0400
commitf1d2c07d331f717da79a42952be7dc1c0d35f846 (patch)
tree5bc98d2d63a37b688b40a4641855c512b385d0ae /arch/arm/mach-exynos
parenta17f29a5e98c0a32a900a773083c719e27f4bc0e (diff)
parentd003e09891fdc0c170b99328eba7ed004809ef5a (diff)
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc board specific updates from Arnd Bergmann: "These changes are all for individual board files. In the long run, those files will largely go away, and the amount of changes appears to be continuously decreasing, which is a good sign. This time around, changes are focused on tegra, omap and samsung." Fix conflicts in arch/arm/mach-{omap2/common-board-devices.c,tegra/Makefile.boot} as per the 'for-linus' branch. * tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (39 commits) ARM: EXYNOS: Add leds status1 and status2 on Origen board ARM: S3C64XX: Mark most Cragganmore initdata devinitdata ARM: EXYNOS: Add missing .reserve field to SMDKC210 ARM: EXYNOS: Add DRM device to SMDK4X12 board ARM: S3C64XX: Clean up after SPI driver platform data updates ARM: SAMSUNG: no need to set the value for clk_xusbxti when it is 24Mhz ARM: EXYNOS: Add framebuffer support for SMDK4X12 ARM: EXYNOS: Add HSOTG support to SMDK4X12 ARM: S5PV210: Add audio platform device in Goni board ARM: S5PV210: Add audio platform device in Aquila board ARM: EXYNOS: Add audio platform device in SMDKV310 board ARM: S3C64XX: Don't specify an irq_base for WM1192-EV1 board ARM: OMAP3: Fix omap3evm randconfig error introduced by VBUS support ARM: OMAP: board-omap4panda: MUX configuration for sys_nirq2 ARM: OMAP: board-4430sdp: MUX configuration for sys_nirq2 ARM: OMAP3530evm: set pendown_state and debounce time for ads7846 ARM: omap3evm: enable VBUS switch for EHCI tranceiver ARM: OMAP3EVM: Adding USB internal LDOs board file ARM: OMAP3EVM: Add NAND flash definition ARM: OMAP3: cm-t35: add tvp5150 decoder support ...
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r--arch/arm/mach-exynos/Kconfig7
-rw-r--r--arch/arm/mach-exynos/mach-nuri.c3
-rw-r--r--arch/arm/mach-exynos/mach-origen.c39
-rw-r--r--arch/arm/mach-exynos/mach-smdk4x12.c83
-rw-r--r--arch/arm/mach-exynos/mach-smdkv310.c17
-rw-r--r--arch/arm/mach-exynos/mach-universal_c210.c3
6 files changed, 138 insertions, 14 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 6f6d13f91e4c..b5b4c8c9db11 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -207,6 +207,7 @@ config MACH_SMDKV310
207 select S3C_DEV_HSMMC1 207 select S3C_DEV_HSMMC1
208 select S3C_DEV_HSMMC2 208 select S3C_DEV_HSMMC2
209 select S3C_DEV_HSMMC3 209 select S3C_DEV_HSMMC3
210 select S3C_DEV_USB_HSOTG
210 select SAMSUNG_DEV_BACKLIGHT 211 select SAMSUNG_DEV_BACKLIGHT
211 select EXYNOS_DEV_DRM 212 select EXYNOS_DEV_DRM
212 select EXYNOS_DEV_SYSMMU 213 select EXYNOS_DEV_SYSMMU
@@ -326,6 +327,7 @@ config MACH_ORIGEN
326 select S3C_DEV_WDT 327 select S3C_DEV_WDT
327 select S3C_DEV_HSMMC 328 select S3C_DEV_HSMMC
328 select S3C_DEV_HSMMC2 329 select S3C_DEV_HSMMC2
330 select S3C_DEV_USB_HSOTG
329 select S5P_DEV_FIMC0 331 select S5P_DEV_FIMC0
330 select S5P_DEV_FIMC1 332 select S5P_DEV_FIMC1
331 select S5P_DEV_FIMC2 333 select S5P_DEV_FIMC2
@@ -360,22 +362,27 @@ config MACH_SMDK4212
360 select S3C_DEV_I2C3 362 select S3C_DEV_I2C3
361 select S3C_DEV_I2C7 363 select S3C_DEV_I2C7
362 select S3C_DEV_RTC 364 select S3C_DEV_RTC
365 select S3C_DEV_USB_HSOTG
363 select S3C_DEV_WDT 366 select S3C_DEV_WDT
364 select S5P_DEV_FIMC0 367 select S5P_DEV_FIMC0
365 select S5P_DEV_FIMC1 368 select S5P_DEV_FIMC1
366 select S5P_DEV_FIMC2 369 select S5P_DEV_FIMC2
367 select S5P_DEV_FIMC3 370 select S5P_DEV_FIMC3
371 select S5P_DEV_FIMD0
368 select S5P_DEV_MFC 372 select S5P_DEV_MFC
369 select SAMSUNG_DEV_BACKLIGHT 373 select SAMSUNG_DEV_BACKLIGHT
370 select SAMSUNG_DEV_KEYPAD 374 select SAMSUNG_DEV_KEYPAD
371 select SAMSUNG_DEV_PWM 375 select SAMSUNG_DEV_PWM
372 select EXYNOS_DEV_SYSMMU 376 select EXYNOS_DEV_SYSMMU
373 select EXYNOS_DEV_DMA 377 select EXYNOS_DEV_DMA
378 select EXYNOS_DEV_DRM
379 select EXYNOS4_SETUP_FIMD0
374 select EXYNOS4_SETUP_I2C1 380 select EXYNOS4_SETUP_I2C1
375 select EXYNOS4_SETUP_I2C3 381 select EXYNOS4_SETUP_I2C3
376 select EXYNOS4_SETUP_I2C7 382 select EXYNOS4_SETUP_I2C7
377 select EXYNOS4_SETUP_KEYPAD 383 select EXYNOS4_SETUP_KEYPAD
378 select EXYNOS4_SETUP_SDHCI 384 select EXYNOS4_SETUP_SDHCI
385 select EXYNOS4_SETUP_USB_PHY
379 help 386 help
380 Machine support for Samsung SMDK4212 387 Machine support for Samsung SMDK4212
381 388
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c
index f3b328d0aff6..f98a83a81ce7 100644
--- a/arch/arm/mach-exynos/mach-nuri.c
+++ b/arch/arm/mach-exynos/mach-nuri.c
@@ -1341,9 +1341,8 @@ static struct platform_device *nuri_devices[] __initdata = {
1341 1341
1342static void __init nuri_map_io(void) 1342static void __init nuri_map_io(void)
1343{ 1343{
1344 clk_xusbxti.rate = 24000000;
1345 exynos_init_io(NULL, 0); 1344 exynos_init_io(NULL, 0);
1346 s3c24xx_init_clocks(24000000); 1345 s3c24xx_init_clocks(clk_xusbxti.rate);
1347 s3c24xx_init_uarts(nuri_uartcfgs, ARRAY_SIZE(nuri_uartcfgs)); 1346 s3c24xx_init_uarts(nuri_uartcfgs, ARRAY_SIZE(nuri_uartcfgs));
1348} 1347}
1349 1348
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
index 873c708fd340..5a12dc26f496 100644
--- a/arch/arm/mach-exynos/mach-origen.c
+++ b/arch/arm/mach-exynos/mach-origen.c
@@ -9,6 +9,7 @@
9*/ 9*/
10 10
11#include <linux/serial_core.h> 11#include <linux/serial_core.h>
12#include <linux/leds.h>
12#include <linux/gpio.h> 13#include <linux/gpio.h>
13#include <linux/mmc/host.h> 14#include <linux/mmc/host.h>
14#include <linux/platform_device.h> 15#include <linux/platform_device.h>
@@ -21,6 +22,7 @@
21#include <linux/mfd/max8997.h> 22#include <linux/mfd/max8997.h>
22#include <linux/lcd.h> 23#include <linux/lcd.h>
23#include <linux/rfkill-gpio.h> 24#include <linux/rfkill-gpio.h>
25#include <linux/platform_data/s3c-hsotg.h>
24 26
25#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
26#include <asm/hardware/gic.h> 28#include <asm/hardware/gic.h>
@@ -498,6 +500,37 @@ static void __init origen_ohci_init(void)
498 exynos4_ohci_set_platdata(pdata); 500 exynos4_ohci_set_platdata(pdata);
499} 501}
500 502
503/* USB OTG */
504static struct s3c_hsotg_plat origen_hsotg_pdata;
505
506static struct gpio_led origen_gpio_leds[] = {
507 {
508 .name = "origen::status1",
509 .default_trigger = "heartbeat",
510 .gpio = EXYNOS4_GPX1(3),
511 .active_low = 1,
512 },
513 {
514 .name = "origen::status2",
515 .default_trigger = "mmc0",
516 .gpio = EXYNOS4_GPX1(4),
517 .active_low = 1,
518 },
519};
520
521static struct gpio_led_platform_data origen_gpio_led_info = {
522 .leds = origen_gpio_leds,
523 .num_leds = ARRAY_SIZE(origen_gpio_leds),
524};
525
526static struct platform_device origen_leds_gpio = {
527 .name = "leds-gpio",
528 .id = -1,
529 .dev = {
530 .platform_data = &origen_gpio_led_info,
531 },
532};
533
501static struct gpio_keys_button origen_gpio_keys_table[] = { 534static struct gpio_keys_button origen_gpio_keys_table[] = {
502 { 535 {
503 .code = KEY_MENU, 536 .code = KEY_MENU,
@@ -654,6 +687,7 @@ static struct platform_device *origen_devices[] __initdata = {
654 &s3c_device_hsmmc0, 687 &s3c_device_hsmmc0,
655 &s3c_device_i2c0, 688 &s3c_device_i2c0,
656 &s3c_device_rtc, 689 &s3c_device_rtc,
690 &s3c_device_usb_hsotg,
657 &s3c_device_wdt, 691 &s3c_device_wdt,
658 &s5p_device_ehci, 692 &s5p_device_ehci,
659 &s5p_device_fimc0, 693 &s5p_device_fimc0,
@@ -676,6 +710,7 @@ static struct platform_device *origen_devices[] __initdata = {
676 &exynos4_device_ohci, 710 &exynos4_device_ohci,
677 &origen_device_gpiokeys, 711 &origen_device_gpiokeys,
678 &origen_lcd_hv070wsa, 712 &origen_lcd_hv070wsa,
713 &origen_leds_gpio,
679 &origen_device_bluetooth, 714 &origen_device_bluetooth,
680}; 715};
681 716
@@ -711,7 +746,7 @@ static void s5p_tv_setup(void)
711static void __init origen_map_io(void) 746static void __init origen_map_io(void)
712{ 747{
713 exynos_init_io(NULL, 0); 748 exynos_init_io(NULL, 0);
714 s3c24xx_init_clocks(24000000); 749 s3c24xx_init_clocks(clk_xusbxti.rate);
715 s3c24xx_init_uarts(origen_uartcfgs, ARRAY_SIZE(origen_uartcfgs)); 750 s3c24xx_init_uarts(origen_uartcfgs, ARRAY_SIZE(origen_uartcfgs));
716} 751}
717 752
@@ -743,7 +778,7 @@ static void __init origen_machine_init(void)
743 778
744 origen_ehci_init(); 779 origen_ehci_init();
745 origen_ohci_init(); 780 origen_ohci_init();
746 clk_xusbxti.rate = 24000000; 781 s3c_hsotg_set_platdata(&origen_hsotg_pdata);
747 782
748 s5p_tv_setup(); 783 s5p_tv_setup();
749 s5p_i2c_hdmiphy_set_platdata(NULL); 784 s5p_i2c_hdmiphy_set_platdata(NULL);
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c
index fb09c70e195a..b26beb13ebef 100644
--- a/arch/arm/mach-exynos/mach-smdk4x12.c
+++ b/arch/arm/mach-exynos/mach-smdk4x12.c
@@ -13,12 +13,14 @@
13#include <linux/i2c.h> 13#include <linux/i2c.h>
14#include <linux/input.h> 14#include <linux/input.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/lcd.h>
16#include <linux/mfd/max8997.h> 17#include <linux/mfd/max8997.h>
17#include <linux/mmc/host.h> 18#include <linux/mmc/host.h>
18#include <linux/platform_device.h> 19#include <linux/platform_device.h>
19#include <linux/pwm_backlight.h> 20#include <linux/pwm_backlight.h>
20#include <linux/regulator/machine.h> 21#include <linux/regulator/machine.h>
21#include <linux/serial_core.h> 22#include <linux/serial_core.h>
23#include <linux/platform_data/s3c-hsotg.h>
22 24
23#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
24#include <asm/hardware/gic.h> 26#include <asm/hardware/gic.h>
@@ -28,15 +30,18 @@
28#include <plat/clock.h> 30#include <plat/clock.h>
29#include <plat/cpu.h> 31#include <plat/cpu.h>
30#include <plat/devs.h> 32#include <plat/devs.h>
33#include <plat/fb.h>
31#include <plat/gpio-cfg.h> 34#include <plat/gpio-cfg.h>
32#include <plat/iic.h> 35#include <plat/iic.h>
33#include <plat/keypad.h> 36#include <plat/keypad.h>
34#include <plat/mfc.h> 37#include <plat/mfc.h>
38#include <plat/regs-fb.h>
35#include <plat/regs-serial.h> 39#include <plat/regs-serial.h>
36#include <plat/sdhci.h> 40#include <plat/sdhci.h>
37 41
38#include <mach/map.h> 42#include <mach/map.h>
39 43
44#include <drm/exynos_drm.h>
40#include "common.h" 45#include "common.h"
41 46
42/* Following are default values for UCON, ULCON and UFCON UART registers */ 47/* Following are default values for UCON, ULCON and UFCON UART registers */
@@ -219,8 +224,10 @@ static struct platform_pwm_backlight_data smdk4x12_bl_data = {
219 224
220static uint32_t smdk4x12_keymap[] __initdata = { 225static uint32_t smdk4x12_keymap[] __initdata = {
221 /* KEY(row, col, keycode) */ 226 /* KEY(row, col, keycode) */
222 KEY(1, 0, KEY_D), KEY(1, 1, KEY_A), KEY(1, 2, KEY_B), 227 KEY(1, 3, KEY_1), KEY(1, 4, KEY_2), KEY(1, 5, KEY_3),
223 KEY(1, 3, KEY_E), KEY(1, 4, KEY_C) 228 KEY(1, 6, KEY_4), KEY(1, 7, KEY_5),
229 KEY(2, 5, KEY_D), KEY(2, 6, KEY_A), KEY(2, 7, KEY_B),
230 KEY(0, 7, KEY_E), KEY(0, 5, KEY_C)
224}; 231};
225 232
226static struct matrix_keymap_data smdk4x12_keymap_data __initdata = { 233static struct matrix_keymap_data smdk4x12_keymap_data __initdata = {
@@ -230,10 +237,62 @@ static struct matrix_keymap_data smdk4x12_keymap_data __initdata = {
230 237
231static struct samsung_keypad_platdata smdk4x12_keypad_data __initdata = { 238static struct samsung_keypad_platdata smdk4x12_keypad_data __initdata = {
232 .keymap_data = &smdk4x12_keymap_data, 239 .keymap_data = &smdk4x12_keymap_data,
233 .rows = 2, 240 .rows = 3,
234 .cols = 5, 241 .cols = 8,
235}; 242};
236 243
244#ifdef CONFIG_DRM_EXYNOS
245static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
246 .panel = {
247 .timing = {
248 .left_margin = 8,
249 .right_margin = 8,
250 .upper_margin = 6,
251 .lower_margin = 6,
252 .hsync_len = 6,
253 .vsync_len = 4,
254 .xres = 480,
255 .yres = 800,
256 },
257 },
258 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
259 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
260 .default_win = 0,
261 .bpp = 32,
262};
263#else
264static struct s3c_fb_pd_win smdk4x12_fb_win0 = {
265 .xres = 480,
266 .yres = 800,
267 .virtual_x = 480,
268 .virtual_y = 800 * 2,
269 .max_bpp = 32,
270 .default_bpp = 24,
271};
272
273static struct fb_videomode smdk4x12_lcd_timing = {
274 .left_margin = 8,
275 .right_margin = 8,
276 .upper_margin = 6,
277 .lower_margin = 6,
278 .hsync_len = 6,
279 .vsync_len = 4,
280 .xres = 480,
281 .yres = 800,
282};
283
284static struct s3c_fb_platdata smdk4x12_lcd_pdata __initdata = {
285 .win[0] = &smdk4x12_fb_win0,
286 .vtiming = &smdk4x12_lcd_timing,
287 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
288 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
289 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
290};
291#endif
292
293/* USB OTG */
294static struct s3c_hsotg_plat smdk4x12_hsotg_pdata;
295
237static struct platform_device *smdk4x12_devices[] __initdata = { 296static struct platform_device *smdk4x12_devices[] __initdata = {
238 &s3c_device_hsmmc2, 297 &s3c_device_hsmmc2,
239 &s3c_device_hsmmc3, 298 &s3c_device_hsmmc3,
@@ -242,22 +301,25 @@ static struct platform_device *smdk4x12_devices[] __initdata = {
242 &s3c_device_i2c3, 301 &s3c_device_i2c3,
243 &s3c_device_i2c7, 302 &s3c_device_i2c7,
244 &s3c_device_rtc, 303 &s3c_device_rtc,
304 &s3c_device_usb_hsotg,
245 &s3c_device_wdt, 305 &s3c_device_wdt,
246 &s5p_device_fimc0, 306 &s5p_device_fimc0,
247 &s5p_device_fimc1, 307 &s5p_device_fimc1,
248 &s5p_device_fimc2, 308 &s5p_device_fimc2,
249 &s5p_device_fimc3, 309 &s5p_device_fimc3,
250 &s5p_device_fimc_md, 310 &s5p_device_fimc_md,
311 &s5p_device_fimd0,
251 &s5p_device_mfc, 312 &s5p_device_mfc,
252 &s5p_device_mfc_l, 313 &s5p_device_mfc_l,
253 &s5p_device_mfc_r, 314 &s5p_device_mfc_r,
315#ifdef CONFIG_DRM_EXYNOS
316 &exynos_device_drm,
317#endif
254 &samsung_device_keypad, 318 &samsung_device_keypad,
255}; 319};
256 320
257static void __init smdk4x12_map_io(void) 321static void __init smdk4x12_map_io(void)
258{ 322{
259 clk_xusbxti.rate = 24000000;
260
261 exynos_init_io(NULL, 0); 323 exynos_init_io(NULL, 0);
262 s3c24xx_init_clocks(clk_xusbxti.rate); 324 s3c24xx_init_clocks(clk_xusbxti.rate);
263 s3c24xx_init_uarts(smdk4x12_uartcfgs, ARRAY_SIZE(smdk4x12_uartcfgs)); 325 s3c24xx_init_uarts(smdk4x12_uartcfgs, ARRAY_SIZE(smdk4x12_uartcfgs));
@@ -293,6 +355,15 @@ static void __init smdk4x12_machine_init(void)
293 s3c_sdhci2_set_platdata(&smdk4x12_hsmmc2_pdata); 355 s3c_sdhci2_set_platdata(&smdk4x12_hsmmc2_pdata);
294 s3c_sdhci3_set_platdata(&smdk4x12_hsmmc3_pdata); 356 s3c_sdhci3_set_platdata(&smdk4x12_hsmmc3_pdata);
295 357
358 s3c_hsotg_set_platdata(&smdk4x12_hsotg_pdata);
359
360#ifdef CONFIG_DRM_EXYNOS
361 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
362 exynos4_fimd0_gpio_setup_24bpp();
363#else
364 s5p_fimd0_set_platdata(&smdk4x12_lcd_pdata);
365#endif
366
296 platform_add_devices(smdk4x12_devices, ARRAY_SIZE(smdk4x12_devices)); 367 platform_add_devices(smdk4x12_devices, ARRAY_SIZE(smdk4x12_devices));
297} 368}
298 369
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
index 5fb209c4a594..3cfa688d274a 100644
--- a/arch/arm/mach-exynos/mach-smdkv310.c
+++ b/arch/arm/mach-exynos/mach-smdkv310.c
@@ -19,6 +19,7 @@
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <linux/input.h> 20#include <linux/input.h>
21#include <linux/pwm_backlight.h> 21#include <linux/pwm_backlight.h>
22#include <linux/platform_data/s3c-hsotg.h>
22 23
23#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
24#include <asm/hardware/gic.h> 25#include <asm/hardware/gic.h>
@@ -270,6 +271,15 @@ static void __init smdkv310_ohci_init(void)
270 exynos4_ohci_set_platdata(pdata); 271 exynos4_ohci_set_platdata(pdata);
271} 272}
272 273
274/* USB OTG */
275static struct s3c_hsotg_plat smdkv310_hsotg_pdata;
276
277/* Audio device */
278static struct platform_device smdkv310_device_audio = {
279 .name = "smdk-audio",
280 .id = -1,
281};
282
273static struct platform_device *smdkv310_devices[] __initdata = { 283static struct platform_device *smdkv310_devices[] __initdata = {
274 &s3c_device_hsmmc0, 284 &s3c_device_hsmmc0,
275 &s3c_device_hsmmc1, 285 &s3c_device_hsmmc1,
@@ -278,6 +288,7 @@ static struct platform_device *smdkv310_devices[] __initdata = {
278 &s3c_device_i2c1, 288 &s3c_device_i2c1,
279 &s5p_device_i2c_hdmiphy, 289 &s5p_device_i2c_hdmiphy,
280 &s3c_device_rtc, 290 &s3c_device_rtc,
291 &s3c_device_usb_hsotg,
281 &s3c_device_wdt, 292 &s3c_device_wdt,
282 &s5p_device_ehci, 293 &s5p_device_ehci,
283 &s5p_device_fimc0, 294 &s5p_device_fimc0,
@@ -301,6 +312,7 @@ static struct platform_device *smdkv310_devices[] __initdata = {
301 &samsung_asoc_dma, 312 &samsung_asoc_dma,
302 &samsung_asoc_idma, 313 &samsung_asoc_idma,
303 &s5p_device_fimd0, 314 &s5p_device_fimd0,
315 &smdkv310_device_audio,
304 &smdkv310_lcd_lte480wv, 316 &smdkv310_lcd_lte480wv,
305 &smdkv310_smsc911x, 317 &smdkv310_smsc911x,
306 &exynos4_device_ahci, 318 &exynos4_device_ahci,
@@ -353,7 +365,7 @@ static void s5p_tv_setup(void)
353static void __init smdkv310_map_io(void) 365static void __init smdkv310_map_io(void)
354{ 366{
355 exynos_init_io(NULL, 0); 367 exynos_init_io(NULL, 0);
356 s3c24xx_init_clocks(24000000); 368 s3c24xx_init_clocks(clk_xusbxti.rate);
357 s3c24xx_init_uarts(smdkv310_uartcfgs, ARRAY_SIZE(smdkv310_uartcfgs)); 369 s3c24xx_init_uarts(smdkv310_uartcfgs, ARRAY_SIZE(smdkv310_uartcfgs));
358} 370}
359 371
@@ -389,7 +401,7 @@ static void __init smdkv310_machine_init(void)
389 401
390 smdkv310_ehci_init(); 402 smdkv310_ehci_init();
391 smdkv310_ohci_init(); 403 smdkv310_ohci_init();
392 clk_xusbxti.rate = 24000000; 404 s3c_hsotg_set_platdata(&smdkv310_hsotg_pdata);
393 405
394 platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices)); 406 platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));
395} 407}
@@ -416,5 +428,6 @@ MACHINE_START(SMDKC210, "SMDKC210")
416 .init_machine = smdkv310_machine_init, 428 .init_machine = smdkv310_machine_init,
417 .init_late = exynos_init_late, 429 .init_late = exynos_init_late,
418 .timer = &exynos4_timer, 430 .timer = &exynos4_timer,
431 .reserve = &smdkv310_reserve,
419 .restart = exynos4_restart, 432 .restart = exynos4_restart,
420MACHINE_END 433MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c
index 68719f57dcea..4d1f40d44ed1 100644
--- a/arch/arm/mach-exynos/mach-universal_c210.c
+++ b/arch/arm/mach-exynos/mach-universal_c210.c
@@ -1099,9 +1099,8 @@ static struct platform_device *universal_devices[] __initdata = {
1099 1099
1100static void __init universal_map_io(void) 1100static void __init universal_map_io(void)
1101{ 1101{
1102 clk_xusbxti.rate = 24000000;
1103 exynos_init_io(NULL, 0); 1102 exynos_init_io(NULL, 0);
1104 s3c24xx_init_clocks(24000000); 1103 s3c24xx_init_clocks(clk_xusbxti.rate);
1105 s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); 1104 s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));
1106 s5p_set_timer_source(S5P_PWM2, S5P_PWM4); 1105 s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
1107} 1106}