diff options
| author | Ben Dooks <ben-linux@fluff.org> | 2006-06-24 16:21:35 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-06-24 16:21:35 -0400 |
| commit | 66c594098db1ee885f486a684b66937e28e792b1 (patch) | |
| tree | 9be95a4fe527d163cee085162e5ffeaec5e6cc50 | |
| parent | 44cc7c9c15124c4506da96304e5f9eb88200fc35 (diff) | |
[ARM] 3642/1: S3C24XX: Add machine SMDK2413
Patch from Ben Dooks
Add basic support for the Samsung/Aiji SMDK2413
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| -rw-r--r-- | arch/arm/mach-s3c2410/Kconfig | 6 | ||||
| -rw-r--r-- | arch/arm/mach-s3c2410/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/mach-s3c2410/mach-smdk2413.c | 126 |
3 files changed, 133 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig index b61af3a6a414..f5d9cd498a5f 100644 --- a/arch/arm/mach-s3c2410/Kconfig +++ b/arch/arm/mach-s3c2410/Kconfig | |||
| @@ -81,6 +81,12 @@ config SMDK2440_CPU2442 | |||
| 81 | depends on ARCH_S3C2440 | 81 | depends on ARCH_S3C2440 |
| 82 | select CPU_S3C2442 | 82 | select CPU_S3C2442 |
| 83 | 83 | ||
| 84 | config MACH_SMDK2413 | ||
| 85 | bool "SMDK2413" | ||
| 86 | select CPU_S3C2412 | ||
| 87 | select MACH_SMDK | ||
| 88 | help | ||
| 89 | Say Y here if you are using an SMDK2413 | ||
| 84 | 90 | ||
| 85 | config MACH_VR1000 | 91 | config MACH_VR1000 |
| 86 | bool "Thorcom VR1000" | 92 | bool "Thorcom VR1000" |
diff --git a/arch/arm/mach-s3c2410/Makefile b/arch/arm/mach-s3c2410/Makefile index d934a89179aa..0c7938645df6 100644 --- a/arch/arm/mach-s3c2410/Makefile +++ b/arch/arm/mach-s3c2410/Makefile | |||
| @@ -62,6 +62,7 @@ obj-$(CONFIG_ARCH_BAST) += mach-bast.o usb-simtec.o | |||
| 62 | obj-$(CONFIG_ARCH_H1940) += mach-h1940.o | 62 | obj-$(CONFIG_ARCH_H1940) += mach-h1940.o |
| 63 | obj-$(CONFIG_MACH_N30) += mach-n30.o | 63 | obj-$(CONFIG_MACH_N30) += mach-n30.o |
| 64 | obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o | 64 | obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o |
| 65 | obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.o | ||
| 65 | obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o | 66 | obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o |
| 66 | obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o usb-simtec.o | 67 | obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o usb-simtec.o |
| 67 | obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o | 68 | obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2413.c b/arch/arm/mach-s3c2410/mach-smdk2413.c new file mode 100644 index 000000000000..b7ef7d3c54a9 --- /dev/null +++ b/arch/arm/mach-s3c2410/mach-smdk2413.c | |||
| @@ -0,0 +1,126 @@ | |||
| 1 | /* linux/arch/arm/mach-s3c2410/mach-smdk2413.c | ||
| 2 | * | ||
| 3 | * Copyright (c) 2006 Simtec Electronics | ||
| 4 | * Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * | ||
| 6 | * Thanks to Dimity Andric (TomTom) and Steven Ryu (Samsung) for the | ||
| 7 | * loans of SMDK2413 to work with. | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/types.h> | ||
| 16 | #include <linux/interrupt.h> | ||
| 17 | #include <linux/list.h> | ||
| 18 | #include <linux/timer.h> | ||
| 19 | #include <linux/init.h> | ||
| 20 | #include <linux/platform_device.h> | ||
| 21 | |||
| 22 | #include <asm/mach/arch.h> | ||
| 23 | #include <asm/mach/map.h> | ||
| 24 | #include <asm/mach/irq.h> | ||
| 25 | |||
| 26 | #include <asm/hardware.h> | ||
| 27 | #include <asm/hardware/iomd.h> | ||
| 28 | #include <asm/setup.h> | ||
| 29 | #include <asm/io.h> | ||
| 30 | #include <asm/irq.h> | ||
| 31 | #include <asm/mach-types.h> | ||
| 32 | |||
| 33 | //#include <asm/debug-ll.h> | ||
| 34 | #include <asm/arch/regs-serial.h> | ||
| 35 | #include <asm/arch/regs-gpio.h> | ||
| 36 | #include <asm/arch/regs-lcd.h> | ||
| 37 | |||
| 38 | #include <asm/arch/idle.h> | ||
| 39 | #include <asm/arch/fb.h> | ||
| 40 | |||
| 41 | #include "s3c2410.h" | ||
| 42 | #include "s3c2412.h" | ||
| 43 | #include "clock.h" | ||
| 44 | #include "devs.h" | ||
| 45 | #include "cpu.h" | ||
| 46 | |||
| 47 | #include "common-smdk.h" | ||
| 48 | |||
| 49 | static struct map_desc smdk2413_iodesc[] __initdata = { | ||
| 50 | }; | ||
| 51 | |||
| 52 | static struct s3c2410_uartcfg smdk2413_uartcfgs[] __initdata = { | ||
| 53 | [0] = { | ||
| 54 | .hwport = 0, | ||
| 55 | .flags = 0, | ||
| 56 | .ucon = 0x3c5, | ||
| 57 | .ulcon = 0x03, | ||
| 58 | .ufcon = 0x51, | ||
| 59 | }, | ||
| 60 | [1] = { | ||
| 61 | .hwport = 1, | ||
| 62 | .flags = 0, | ||
| 63 | .ucon = 0x3c5, | ||
| 64 | .ulcon = 0x03, | ||
| 65 | .ufcon = 0x51, | ||
| 66 | }, | ||
| 67 | /* IR port */ | ||
| 68 | [2] = { | ||
| 69 | .hwport = 2, | ||
| 70 | .flags = 0, | ||
| 71 | .ucon = 0x3c5, | ||
| 72 | .ulcon = 0x43, | ||
| 73 | .ufcon = 0x51, | ||
| 74 | } | ||
| 75 | }; | ||
| 76 | |||
| 77 | static struct platform_device *smdk2413_devices[] __initdata = { | ||
| 78 | &s3c_device_usb, | ||
| 79 | //&s3c_device_lcd, | ||
| 80 | &s3c_device_wdt, | ||
| 81 | &s3c_device_i2c, | ||
| 82 | &s3c_device_iis, | ||
| 83 | }; | ||
| 84 | |||
| 85 | static struct s3c24xx_board smdk2413_board __initdata = { | ||
| 86 | .devices = smdk2413_devices, | ||
| 87 | .devices_count = ARRAY_SIZE(smdk2413_devices) | ||
| 88 | }; | ||
| 89 | |||
| 90 | static void __init smdk2413_fixup(struct machine_desc *desc, | ||
| 91 | struct tag *tags, char **cmdline, | ||
| 92 | struct meminfo *mi) | ||
| 93 | { | ||
| 94 | if (tags != phys_to_virt(S3C2410_SDRAM_PA + 0x100)) { | ||
| 95 | mi->nr_banks=1; | ||
| 96 | mi->bank[0].start = 0x30000000; | ||
| 97 | mi->bank[0].size = SZ_64M; | ||
| 98 | mi->bank[0].node = 0; | ||
| 99 | } | ||
| 100 | } | ||
| 101 | |||
| 102 | static void __init smdk2413_map_io(void) | ||
| 103 | { | ||
| 104 | s3c24xx_init_io(smdk2413_iodesc, ARRAY_SIZE(smdk2413_iodesc)); | ||
| 105 | s3c24xx_init_clocks(12000000); | ||
| 106 | s3c24xx_init_uarts(smdk2413_uartcfgs, ARRAY_SIZE(smdk2413_uartcfgs)); | ||
| 107 | s3c24xx_set_board(&smdk2413_board); | ||
| 108 | } | ||
| 109 | |||
| 110 | static void __init smdk2413_machine_init(void) | ||
| 111 | { | ||
| 112 | smdk_machine_init(); | ||
| 113 | } | ||
| 114 | |||
| 115 | MACHINE_START(S3C2413, "SMDK2413") | ||
| 116 | /* Maintainer: Ben Dooks <ben@fluff.org> */ | ||
| 117 | .phys_io = S3C2410_PA_UART, | ||
| 118 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | ||
| 119 | .boot_params = S3C2410_SDRAM_PA + 0x100, | ||
| 120 | |||
| 121 | .fixup = smdk2413_fixup, | ||
| 122 | .init_irq = s3c24xx_init_irq, | ||
| 123 | .map_io = smdk2413_map_io, | ||
| 124 | .init_machine = smdk2413_machine_init, | ||
| 125 | .timer = &s3c24xx_timer, | ||
| 126 | MACHINE_END | ||
