blob: 28d014714ab8930fbfb9c3c65fb0f85644b807b4 [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,
11 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
Ben Dooksf964c302006-06-26 22:51:08 +010015 Support for the S3C2412 and S3C2413 CPUs is being merged.
16
Linus Torvalds1da177e2005-04-16 15:20:36 -070017
18Configuration
19-------------
20
21 A generic S3C2410 configuration is provided, and can be used as the
22 default by `make s3c2410_defconfig`. This configuration has support
23 for all the machines, and the commonly used features on them.
24
25 Certain machines may have their own default configurations as well,
26 please check the machine specific documentation.
27
28
29Machines
30--------
31
32 The currently supported machines are as follows:
33
34 Simtec Electronics EB2410ITX (BAST)
35
36 A general purpose development board, see EB2410ITX.txt for further
37 details
38
Ben Dooksa08ceff2006-03-20 17:10:07 +000039 Simtec Electronics IM2440D20 (Osiris)
40
41 CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
42 and a PCMCIA controller.
43
Linus Torvalds1da177e2005-04-16 15:20:36 -070044 Samsung SMDK2410
45
46 Samsung's own development board, geared for PDA work.
47
Ben Dooksf964c302006-06-26 22:51:08 +010048 Samsung/Aiji SMDK2412
49
50 The S3C2412 version of the SMDK2440.
51
52 Samsung/Aiji SMDK2413
53
54 The S3C2412 version of the SMDK2440.
55
Linus Torvalds1da177e2005-04-16 15:20:36 -070056 Samsung/Meritech SMDK2440
57
Ben Dooksf964c302006-06-26 22:51:08 +010058 The S3C2440 compatible version of the SMDK2440, which has the
59 option of an S3C2440 or S3C2442 CPU module.
Linus Torvalds1da177e2005-04-16 15:20:36 -070060
61 Thorcom VR1000
62
63 Custom embedded board
64
65 HP IPAQ 1940
66
67 Handheld (IPAQ), available in several varieties
68
69 HP iPAQ rx3715
70
71 S3C2440 based IPAQ, with a number of variations depending on
72 features shipped.
73
74 Acer N30
75
76 A S3C2410 based PDA from Acer. There is a Wiki page at
77 http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
78
Ben Dookseb3b4782006-12-24 10:08:09 +010079 AML M5900
80
81 American Microsystems' M5900
82
83 Nex Vision Nexcoder
84 Nex Vision Otom
85
86 Two machines by Nex Vision
87
Linus Torvalds1da177e2005-04-16 15:20:36 -070088
89Adding New Machines
90-------------------
91
Matt LaPlante3f6dee92006-10-03 22:45:33 +020092 The architecture has been designed to support as many machines as can
Linus Torvalds1da177e2005-04-16 15:20:36 -070093 be configured for it in one kernel build, and any future additions
94 should keep this in mind before altering items outside of their own
95 machine files.
96
97 Machine definitions should be kept in linux/arch/arm/mach-s3c2410,
98 and there are a number of examples that can be looked at.
99
100 Read the kernel patch submission policies as well as the
101 Documentation/arm directory before submitting patches. The
102 ARM kernel series is managed by Russell King, and has a patch system
103 located at http://www.arm.linux.org.uk/developer/patches/
104 as well as mailing lists that can be found from the same site.
105
106 As a courtesy, please notify <ben-linux@fluff.org> of any new
107 machines or other modifications.
108
109 Any large scale modifications, or new drivers should be discussed
110 on the ARM kernel mailing list (linux-arm-kernel) before being
Ben Dooks6ff8f592005-11-01 19:44:29 +0000111 attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
112 mailing list information.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113
114
Ben Dooksa08ceff2006-03-20 17:10:07 +0000115I2C
116---
117
118 The hardware I2C core in the CPU is supported in single master
119 mode, and can be configured via platform data.
120
121
122RTC
123---
124
125 Support for the onboard RTC unit, including alarm function.
126
Ben Dookseb3b4782006-12-24 10:08:09 +0100127 This has recently been upgraded to use the new RTC core,
128 and the module has been renamed to rtc-s3c to fit in with
129 the new rtc naming scheme.
130
Ben Dooksa08ceff2006-03-20 17:10:07 +0000131
132Watchdog
133--------
134
135 The onchip watchdog is available via the standard watchdog
136 interface.
137
138
Linus Torvalds1da177e2005-04-16 15:20:36 -0700139NAND
140----
141
142 The current kernels now have support for the s3c2410 NAND
143 controller. If there are any problems the latest linux-mtd
Ben Dookseb3b4782006-12-24 10:08:09 +0100144 code can be found from http://www.linux-mtd.infradead.org/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700145
146
147Serial
148------
149
150 The s3c2410 serial driver provides support for the internal
151 serial ports. These devices appear as /dev/ttySAC0 through 3.
152
153 To create device nodes for these, use the following commands
154
155 mknod ttySAC0 c 204 64
156 mknod ttySAC1 c 204 65
157 mknod ttySAC2 c 204 66
158
159
160GPIO
161----
162
163 The core contains support for manipulating the GPIO, see the
164 documentation in GPIO.txt in the same directory as this file.
165
166
167Clock Management
168----------------
169
170 The core provides the interface defined in the header file
171 include/asm-arm/hardware/clock.h, to allow control over the
172 various clock units
173
174
Ben Dooksa08ceff2006-03-20 17:10:07 +0000175Suspend to RAM
176--------------
177
178 For boards that provide support for suspend to RAM, the
179 system can be placed into low power suspend.
180
181 See Suspend.txt for more information.
182
183
Ben Dookseb3b4782006-12-24 10:08:09 +0100184SPI
185---
186
187 SPI drivers are available for both the in-built hardware
188 (although there is no DMA support yet) and a generic
189 GPIO based solution.
190
191
192LEDs
193----
194
195 There is support for GPIO based LEDs via a platform driver
196 in the LED subsystem.
197
198
Ben Dooks6ff8f592005-11-01 19:44:29 +0000199Platform Data
200-------------
201
202 Whenever a device has platform specific data that is specified
203 on a per-machine basis, care should be taken to ensure the
204 following:
205
206 1) that default data is not left in the device to confuse the
207 driver if a machine does not set it at startup
208
209 2) the data should (if possible) be marked as __initdata,
210 to ensure that the data is thrown away if the machine is
211 not the one currently in use.
212
213 The best way of doing this is to make a function that
214 kmalloc()s an area of memory, and copies the __initdata
215 and then sets the relevant device's platform data. Making
216 the function `__init` takes care of ensuring it is discarded
217 with the rest of the initialisation code
218
219 static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
220 {
221 struct s3c2410_xxx_mach_info *npd;
222
223 npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
224 if (npd) {
225 memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
226 s3c_device_xxx.dev.platform_data = npd;
227 } else {
228 printk(KERN_ERR "no memory for xxx platform data\n");
229 }
230 }
231
232 Note, since the code is marked as __init, it should not be
233 exported outside arch/arm/mach-s3c2410/, or exported to
234 modules via EXPORT_SYMBOL() and related functions.
235
Ben Dooksa08ceff2006-03-20 17:10:07 +0000236
Linus Torvalds1da177e2005-04-16 15:20:36 -0700237Port Contributors
238-----------------
239
240 Ben Dooks (BJD)
241 Vincent Sanders
242 Herbert Potzl
243 Arnaud Patard (RTP)
244 Roc Wu
245 Klaus Fetscher
246 Dimitry Andric
247 Shannon Holland
248 Guillaume Gourat (NexVision)
249 Christer Weinigel (wingel) (Acer N30)
250 Lucas Correia Villa Real (S3C2400 port)
251
252
Linus Torvalds1da177e2005-04-16 15:20:36 -0700253Document Author
254---------------
255
Ben Dooksa08ceff2006-03-20 17:10:07 +0000256Ben Dooks, (c) 2004-2005,2006 Simtec Electronics