1 S3C24XX ARM Linux Overview
2 ==========================
9 The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported
10 by the 's3c2410' architecture of ARM Linux. Currently the S3C2410,
11 S3C2412, S3C2413, S3C2440 and S3C2442 devices are supported.
13 Support for the S3C2400 series is in progress.
18 A generic S3C2410 configuration is provided, and can be used as the
19 default by `make s3c2410_defconfig`. This configuration has support
20 for all the machines, and the commonly used features on them.
22 Certain machines may have their own default configurations as well,
23 please check the machine specific documentation.
29 The currently supported machines are as follows:
31 Simtec Electronics EB2410ITX (BAST)
33 A general purpose development board, see EB2410ITX.txt for further
36 Simtec Electronics IM2440D20 (Osiris)
38 CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
39 and a PCMCIA controller.
43 Samsung's own development board, geared for PDA work.
47 The S3C2412 version of the SMDK2440.
51 The S3C2412 version of the SMDK2440.
53 Samsung/Meritech SMDK2440
55 The S3C2440 compatible version of the SMDK2440, which has the
56 option of an S3C2440 or S3C2442 CPU module.
64 Handheld (IPAQ), available in several varieties
68 S3C2440 based IPAQ, with a number of variations depending on
73 A S3C2410 based PDA from Acer. There is a Wiki page at
74 http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
78 American Microsystems' M5900
83 Two machines by Nex Vision
89 The architecture has been designed to support as many machines as can
90 be configured for it in one kernel build, and any future additions
91 should keep this in mind before altering items outside of their own
94 Machine definitions should be kept in linux/arch/arm/mach-s3c2410,
95 and there are a number of examples that can be looked at.
97 Read the kernel patch submission policies as well as the
98 Documentation/arm directory before submitting patches. The
99 ARM kernel series is managed by Russell King, and has a patch system
100 located at http://www.arm.linux.org.uk/developer/patches/
101 as well as mailing lists that can be found from the same site.
103 As a courtesy, please notify <ben-linux@fluff.org> of any new
104 machines or other modifications.
106 Any large scale modifications, or new drivers should be discussed
107 on the ARM kernel mailing list (linux-arm-kernel) before being
108 attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
109 mailing list information.
115 The hardware I2C core in the CPU is supported in single master
116 mode, and can be configured via platform data.
122 Support for the onboard RTC unit, including alarm function.
124 This has recently been upgraded to use the new RTC core,
125 and the module has been renamed to rtc-s3c to fit in with
126 the new rtc naming scheme.
132 The onchip watchdog is available via the standard watchdog
139 The current kernels now have support for the s3c2410 NAND
140 controller. If there are any problems the latest linux-mtd
141 code can be found from http://www.linux-mtd.infradead.org/
147 The s3c2410 serial driver provides support for the internal
148 serial ports. These devices appear as /dev/ttySAC0 through 3.
150 To create device nodes for these, use the following commands
152 mknod ttySAC0 c 204 64
153 mknod ttySAC1 c 204 65
154 mknod ttySAC2 c 204 66
160 The core contains support for manipulating the GPIO, see the
161 documentation in GPIO.txt in the same directory as this file.
167 The core provides the interface defined in the header file
168 include/asm-arm/hardware/clock.h, to allow control over the
175 For boards that provide support for suspend to RAM, the
176 system can be placed into low power suspend.
178 See Suspend.txt for more information.
184 SPI drivers are available for both the in-built hardware
185 (although there is no DMA support yet) and a generic
192 There is support for GPIO based LEDs via a platform driver
193 in the LED subsystem.
199 Whenever a device has platform specific data that is specified
200 on a per-machine basis, care should be taken to ensure the
203 1) that default data is not left in the device to confuse the
204 driver if a machine does not set it at startup
206 2) the data should (if possible) be marked as __initdata,
207 to ensure that the data is thrown away if the machine is
208 not the one currently in use.
210 The best way of doing this is to make a function that
211 kmalloc()s an area of memory, and copies the __initdata
212 and then sets the relevant device's platform data. Making
213 the function `__init` takes care of ensuring it is discarded
214 with the rest of the initialisation code
216 static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
218 struct s3c2410_xxx_mach_info *npd;
220 npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
222 memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
223 s3c_device_xxx.dev.platform_data = npd;
225 printk(KERN_ERR "no memory for xxx platform data\n");
229 Note, since the code is marked as __init, it should not be
230 exported outside arch/arm/mach-s3c2410/, or exported to
231 modules via EXPORT_SYMBOL() and related functions.
245 Guillaume Gourat (NexVision)
246 Christer Weinigel (wingel) (Acer N30)
247 Lucas Correia Villa Real (S3C2400 port)
253 Ben Dooks, (c) 2004-2005,2006 Simtec Electronics