[ARM] 3076/1: S3C2410 - updated documentation for platfrom data init
[linux-3.10.git] / Documentation / arm / Samsung-S3C24XX / Overview.txt
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
10   by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and
11   the S3C2440 are supported CPUs.
12
13
14 Configuration
15 -------------
16
17   A generic S3C2410 configuration is provided, and can be used as the
18   default by `make s3c2410_defconfig`. This configuration has support
19   for all the machines, and the commonly used features on them.
20
21   Certain machines may have their own default configurations as well,
22   please check the machine specific documentation.
23
24
25 Machines
26 --------
27
28   The currently supported machines are as follows:
29
30   Simtec Electronics EB2410ITX (BAST)
31
32     A general purpose development board, see EB2410ITX.txt for further
33     details
34
35   Samsung SMDK2410
36
37     Samsung's own development board, geared for PDA work.
38
39   Samsung/Meritech SMDK2440
40
41     The S3C2440 compatible version of the SMDK2440
42
43   Thorcom VR1000
44
45     Custom embedded board
46
47   HP IPAQ 1940
48
49     Handheld (IPAQ), available in several varieties
50
51   HP iPAQ rx3715
52
53     S3C2440 based IPAQ, with a number of variations depending on
54     features shipped.
55
56   Acer N30
57
58     A S3C2410 based PDA from Acer.  There is a Wiki page at
59     http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
60
61
62 Adding New Machines
63 -------------------
64
65   The archicture has been designed to support as many machines as can
66   be configured for it in one kernel build, and any future additions
67   should keep this in mind before altering items outside of their own
68   machine files.
69
70   Machine definitions should be kept in linux/arch/arm/mach-s3c2410,
71   and there are a number of examples that can be looked at.
72
73   Read the kernel patch submission policies as well as the
74   Documentation/arm directory before submitting patches. The
75   ARM kernel series is managed by Russell King, and has a patch system
76   located at http://www.arm.linux.org.uk/developer/patches/
77   as well as mailing lists that can be found from the same site.
78
79   As a courtesy, please notify <ben-linux@fluff.org> of any new
80   machines or other modifications.
81
82   Any large scale modifications, or new drivers should be discussed
83   on the ARM kernel mailing list (linux-arm-kernel) before being
84   attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
85   mailing list information.
86
87
88 NAND
89 ----
90
91   The current kernels now have support for the s3c2410 NAND
92   controller. If there are any problems the latest linux-mtd
93   CVS can be found from http://www.linux-mtd.infradead.org/
94
95
96 Serial
97 ------
98
99   The s3c2410 serial driver provides support for the internal
100   serial ports. These devices appear as /dev/ttySAC0 through 3.
101
102   To create device nodes for these, use the following commands
103
104     mknod ttySAC0 c 204 64
105     mknod ttySAC1 c 204 65
106     mknod ttySAC2 c 204 66
107
108
109 GPIO
110 ----
111
112   The core contains support for manipulating the GPIO, see the
113   documentation in GPIO.txt in the same directory as this file.
114
115
116 Clock Management
117 ----------------
118
119   The core provides the interface defined in the header file
120   include/asm-arm/hardware/clock.h, to allow control over the
121   various clock units
122
123
124 Platform Data
125 -------------
126
127   Whenever a device has platform specific data that is specified
128   on a per-machine basis, care should be taken to ensure the
129   following:
130
131     1) that default data is not left in the device to confuse the
132        driver if a machine does not set it at startup
133
134     2) the data should (if possible) be marked as __initdata,
135        to ensure that the data is thrown away if the machine is
136        not the one currently in use.
137
138        The best way of doing this is to make a function that
139        kmalloc()s an area of memory, and copies the __initdata
140        and then sets the relevant device's platform data. Making
141        the function `__init` takes care of ensuring it is discarded
142        with the rest of the initialisation code
143
144        static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
145        {
146            struct s3c2410_xxx_mach_info *npd;
147
148            npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
149            if (npd) {
150               memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
151               s3c_device_xxx.dev.platform_data = npd;
152            } else {
153               printk(KERN_ERR "no memory for xxx platform data\n");
154            }
155         }
156
157         Note, since the code is marked as __init, it should not be
158         exported outside arch/arm/mach-s3c2410/, or exported to
159         modules via EXPORT_SYMBOL() and related functions.
160
161 Port Contributors
162 -----------------
163
164   Ben Dooks (BJD)
165   Vincent Sanders
166   Herbert Potzl
167   Arnaud Patard (RTP)
168   Roc Wu
169   Klaus Fetscher
170   Dimitry Andric
171   Shannon Holland
172   Guillaume Gourat (NexVision)
173   Christer Weinigel (wingel) (Acer N30)
174   Lucas Correia Villa Real (S3C2400 port)
175
176
177 Document Changes
178 ----------------
179
180   05 Sep 2004 - BJD - Added Document Changes section
181   05 Sep 2004 - BJD - Added Klaus Fetscher to list of contributors
182   25 Oct 2004 - BJD - Added Dimitry Andric to list of contributors
183   25 Oct 2004 - BJD - Updated the MTD from the 2.6.9 merge
184   21 Jan 2005 - BJD - Added rx3715, added Shannon to contributors
185   10 Feb 2005 - BJD - Added Guillaume Gourat to contributors
186   02 Mar 2005 - BJD - Added SMDK2440 to list of machines
187   06 Mar 2005 - BJD - Added Christer Weinigel
188   08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction
189   08 Mar 2005 - BJD - Added section on adding machines
190   09 Sep 2005 - BJD - Added section on platform data
191
192 Document Author
193 ---------------
194
195 Ben Dooks, (c) 2004-2005 Simtec Electronics