]>
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 BD |
10 | by the 's3c2410' architecture of ARM Linux. Currently the S3C2410, |
11 | S3C2440 and S3C2442 devices are supported. | |
1da177e4 | 12 | |
a08ceff2 BD |
13 | Support for the S3C2400 series is in progress. |
14 | ||
f964c303 BD |
15 | Support for the S3C2412 and S3C2413 CPUs is being merged. |
16 | ||
1da177e4 LT |
17 | |
18 | Configuration | |
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 | ||
29 | Machines | |
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 | ||
a08ceff2 BD |
39 | Simtec Electronics IM2440D20 (Osiris) |
40 | ||
41 | CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash | |
42 | and a PCMCIA controller. | |
43 | ||
1da177e4 LT |
44 | Samsung SMDK2410 |
45 | ||
46 | Samsung's own development board, geared for PDA work. | |
47 | ||
f964c303 BD |
48 | 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 | ||
1da177e4 LT |
56 | Samsung/Meritech SMDK2440 |
57 | ||
f964c303 BD |
58 | The S3C2440 compatible version of the SMDK2440, which has the |
59 | option of an S3C2440 or S3C2442 CPU module. | |
1da177e4 LT |
60 | |
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 | ||
79 | ||
80 | Adding New Machines | |
81 | ------------------- | |
82 | ||
3f6dee9b | 83 | The architecture has been designed to support as many machines as can |
1da177e4 LT |
84 | be configured for it in one kernel build, and any future additions |
85 | should keep this in mind before altering items outside of their own | |
86 | machine files. | |
87 | ||
88 | Machine definitions should be kept in linux/arch/arm/mach-s3c2410, | |
89 | and there are a number of examples that can be looked at. | |
90 | ||
91 | Read the kernel patch submission policies as well as the | |
92 | Documentation/arm directory before submitting patches. The | |
93 | ARM kernel series is managed by Russell King, and has a patch system | |
94 | located at http://www.arm.linux.org.uk/developer/patches/ | |
95 | as well as mailing lists that can be found from the same site. | |
96 | ||
97 | As a courtesy, please notify <ben-linux@fluff.org> of any new | |
98 | machines or other modifications. | |
99 | ||
100 | Any large scale modifications, or new drivers should be discussed | |
101 | on the ARM kernel mailing list (linux-arm-kernel) before being | |
6ff8f59f BD |
102 | attempted. See http://www.arm.linux.org.uk/mailinglists/ for the |
103 | mailing list information. | |
1da177e4 LT |
104 | |
105 | ||
a08ceff2 BD |
106 | I2C |
107 | --- | |
108 | ||
109 | The hardware I2C core in the CPU is supported in single master | |
110 | mode, and can be configured via platform data. | |
111 | ||
112 | ||
113 | RTC | |
114 | --- | |
115 | ||
116 | Support for the onboard RTC unit, including alarm function. | |
117 | ||
118 | ||
119 | Watchdog | |
120 | -------- | |
121 | ||
122 | The onchip watchdog is available via the standard watchdog | |
123 | interface. | |
124 | ||
125 | ||
1da177e4 LT |
126 | NAND |
127 | ---- | |
128 | ||
129 | The current kernels now have support for the s3c2410 NAND | |
130 | controller. If there are any problems the latest linux-mtd | |
131 | CVS can be found from http://www.linux-mtd.infradead.org/ | |
132 | ||
133 | ||
134 | Serial | |
135 | ------ | |
136 | ||
137 | The s3c2410 serial driver provides support for the internal | |
138 | serial ports. These devices appear as /dev/ttySAC0 through 3. | |
139 | ||
140 | To create device nodes for these, use the following commands | |
141 | ||
142 | mknod ttySAC0 c 204 64 | |
143 | mknod ttySAC1 c 204 65 | |
144 | mknod ttySAC2 c 204 66 | |
145 | ||
146 | ||
147 | GPIO | |
148 | ---- | |
149 | ||
150 | The core contains support for manipulating the GPIO, see the | |
151 | documentation in GPIO.txt in the same directory as this file. | |
152 | ||
153 | ||
154 | Clock Management | |
155 | ---------------- | |
156 | ||
157 | The core provides the interface defined in the header file | |
158 | include/asm-arm/hardware/clock.h, to allow control over the | |
159 | various clock units | |
160 | ||
161 | ||
a08ceff2 BD |
162 | Suspend to RAM |
163 | -------------- | |
164 | ||
165 | For boards that provide support for suspend to RAM, the | |
166 | system can be placed into low power suspend. | |
167 | ||
168 | See Suspend.txt for more information. | |
169 | ||
170 | ||
6ff8f59f BD |
171 | Platform Data |
172 | ------------- | |
173 | ||
174 | Whenever a device has platform specific data that is specified | |
175 | on a per-machine basis, care should be taken to ensure the | |
176 | following: | |
177 | ||
178 | 1) that default data is not left in the device to confuse the | |
179 | driver if a machine does not set it at startup | |
180 | ||
181 | 2) the data should (if possible) be marked as __initdata, | |
182 | to ensure that the data is thrown away if the machine is | |
183 | not the one currently in use. | |
184 | ||
185 | The best way of doing this is to make a function that | |
186 | kmalloc()s an area of memory, and copies the __initdata | |
187 | and then sets the relevant device's platform data. Making | |
188 | the function `__init` takes care of ensuring it is discarded | |
189 | with the rest of the initialisation code | |
190 | ||
191 | static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd) | |
192 | { | |
193 | struct s3c2410_xxx_mach_info *npd; | |
194 | ||
195 | npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL); | |
196 | if (npd) { | |
197 | memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info)); | |
198 | s3c_device_xxx.dev.platform_data = npd; | |
199 | } else { | |
200 | printk(KERN_ERR "no memory for xxx platform data\n"); | |
201 | } | |
202 | } | |
203 | ||
204 | Note, since the code is marked as __init, it should not be | |
205 | exported outside arch/arm/mach-s3c2410/, or exported to | |
206 | modules via EXPORT_SYMBOL() and related functions. | |
207 | ||
a08ceff2 | 208 | |
1da177e4 LT |
209 | Port Contributors |
210 | ----------------- | |
211 | ||
212 | Ben Dooks (BJD) | |
213 | Vincent Sanders | |
214 | Herbert Potzl | |
215 | Arnaud Patard (RTP) | |
216 | Roc Wu | |
217 | Klaus Fetscher | |
218 | Dimitry Andric | |
219 | Shannon Holland | |
220 | Guillaume Gourat (NexVision) | |
221 | Christer Weinigel (wingel) (Acer N30) | |
222 | Lucas Correia Villa Real (S3C2400 port) | |
223 | ||
224 | ||
1da177e4 LT |
225 | Document Author |
226 | --------------- | |
227 | ||
a08ceff2 | 228 | Ben Dooks, (c) 2004-2005,2006 Simtec Electronics |