blob: f42347162c1c8fc9b8f7ea1c7f1579aa64dace72 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001 S3C24XX ARM Linux Overview
2 ==========================
3
4
5
6Introduction
7------------
8
9 The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported
Ben Dooksf964c302006-06-26 22:51:08 +010010 by the 's3c2410' architecture of ARM Linux. Currently the S3C2410,
Ben Dooks9e2ad152007-02-13 13:20:08 +010011 S3C2412, S3C2413, S3C2440 and S3C2442 devices are supported.
Linus Torvalds1da177e2005-04-16 15:20:36 -070012
Ben Dooksa08ceff2006-03-20 17:10:07 +000013 Support for the S3C2400 series is in progress.
14
Linus Torvalds1da177e2005-04-16 15:20:36 -070015Configuration
16-------------
17
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.
21
22 Certain machines may have their own default configurations as well,
23 please check the machine specific documentation.
24
25
26Machines
27--------
28
29 The currently supported machines are as follows:
30
31 Simtec Electronics EB2410ITX (BAST)
32
33 A general purpose development board, see EB2410ITX.txt for further
34 details
35
Ben Dooksa08ceff2006-03-20 17:10:07 +000036 Simtec Electronics IM2440D20 (Osiris)
37
38 CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
39 and a PCMCIA controller.
40
Linus Torvalds1da177e2005-04-16 15:20:36 -070041 Samsung SMDK2410
42
43 Samsung's own development board, geared for PDA work.
44
Ben Dooksf964c302006-06-26 22:51:08 +010045 Samsung/Aiji SMDK2412
46
47 The S3C2412 version of the SMDK2440.
48
49 Samsung/Aiji SMDK2413
50
51 The S3C2412 version of the SMDK2440.
52
Linus Torvalds1da177e2005-04-16 15:20:36 -070053 Samsung/Meritech SMDK2440
54
Ben Dooksf964c302006-06-26 22:51:08 +010055 The S3C2440 compatible version of the SMDK2440, which has the
56 option of an S3C2440 or S3C2442 CPU module.
Linus Torvalds1da177e2005-04-16 15:20:36 -070057
58 Thorcom VR1000
59
60 Custom embedded board
61
62 HP IPAQ 1940
63
64 Handheld (IPAQ), available in several varieties
65
66 HP iPAQ rx3715
67
68 S3C2440 based IPAQ, with a number of variations depending on
69 features shipped.
70
71 Acer N30
72
73 A S3C2410 based PDA from Acer. There is a Wiki page at
74 http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
75
Ben Dookseb3b4782006-12-24 10:08:09 +010076 AML M5900
77
78 American Microsystems' M5900
79
80 Nex Vision Nexcoder
81 Nex Vision Otom
82
83 Two machines by Nex Vision
84
Linus Torvalds1da177e2005-04-16 15:20:36 -070085
86Adding New Machines
87-------------------
88
Matt LaPlante3f6dee92006-10-03 22:45:33 +020089 The architecture has been designed to support as many machines as can
Linus Torvalds1da177e2005-04-16 15:20:36 -070090 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
92 machine files.
93
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.
96
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.
102
103 As a courtesy, please notify <ben-linux@fluff.org> of any new
104 machines or other modifications.
105
106 Any large scale modifications, or new drivers should be discussed
107 on the ARM kernel mailing list (linux-arm-kernel) before being
Ben Dooks6ff8f592005-11-01 19:44:29 +0000108 attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
109 mailing list information.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700110
111
Ben Dooksa08ceff2006-03-20 17:10:07 +0000112I2C
113---
114
115 The hardware I2C core in the CPU is supported in single master
116 mode, and can be configured via platform data.
117
118
119RTC
120---
121
122 Support for the onboard RTC unit, including alarm function.
123
Ben Dookseb3b4782006-12-24 10:08:09 +0100124 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.
127
Ben Dooksa08ceff2006-03-20 17:10:07 +0000128
129Watchdog
130--------
131
132 The onchip watchdog is available via the standard watchdog
133 interface.
134
135
Linus Torvalds1da177e2005-04-16 15:20:36 -0700136NAND
137----
138
139 The current kernels now have support for the s3c2410 NAND
140 controller. If there are any problems the latest linux-mtd
Ben Dookseb3b4782006-12-24 10:08:09 +0100141 code can be found from http://www.linux-mtd.infradead.org/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700142
143
144Serial
145------
146
147 The s3c2410 serial driver provides support for the internal
148 serial ports. These devices appear as /dev/ttySAC0 through 3.
149
150 To create device nodes for these, use the following commands
151
152 mknod ttySAC0 c 204 64
153 mknod ttySAC1 c 204 65
154 mknod ttySAC2 c 204 66
155
156
157GPIO
158----
159
160 The core contains support for manipulating the GPIO, see the
161 documentation in GPIO.txt in the same directory as this file.
162
163
164Clock Management
165----------------
166
167 The core provides the interface defined in the header file
168 include/asm-arm/hardware/clock.h, to allow control over the
169 various clock units
170
171
Ben Dooksa08ceff2006-03-20 17:10:07 +0000172Suspend to RAM
173--------------
174
175 For boards that provide support for suspend to RAM, the
176 system can be placed into low power suspend.
177
178 See Suspend.txt for more information.
179
180
Ben Dookseb3b4782006-12-24 10:08:09 +0100181SPI
182---
183
184 SPI drivers are available for both the in-built hardware
185 (although there is no DMA support yet) and a generic
186 GPIO based solution.
187
188
189LEDs
190----
191
192 There is support for GPIO based LEDs via a platform driver
193 in the LED subsystem.
194
195
Ben Dooks6ff8f592005-11-01 19:44:29 +0000196Platform Data
197-------------
198
199 Whenever a device has platform specific data that is specified
200 on a per-machine basis, care should be taken to ensure the
201 following:
202
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
205
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.
209
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
215
216 static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
217 {
218 struct s3c2410_xxx_mach_info *npd;
219
220 npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
221 if (npd) {
222 memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
223 s3c_device_xxx.dev.platform_data = npd;
224 } else {
225 printk(KERN_ERR "no memory for xxx platform data\n");
226 }
227 }
228
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.
232
Ben Dooksa08ceff2006-03-20 17:10:07 +0000233
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234Port Contributors
235-----------------
236
237 Ben Dooks (BJD)
238 Vincent Sanders
239 Herbert Potzl
240 Arnaud Patard (RTP)
241 Roc Wu
242 Klaus Fetscher
243 Dimitry Andric
244 Shannon Holland
245 Guillaume Gourat (NexVision)
246 Christer Weinigel (wingel) (Acer N30)
247 Lucas Correia Villa Real (S3C2400 port)
248
249
Linus Torvalds1da177e2005-04-16 15:20:36 -0700250Document Author
251---------------
252
Ben Dooksa08ceff2006-03-20 17:10:07 +0000253Ben Dooks, (c) 2004-2005,2006 Simtec Electronics