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