diff options
Diffstat (limited to 'Documentation/arm')
-rw-r--r-- | Documentation/arm/OMAP/DSS | 317 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/CPUfreq.txt | 4 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/GPIO.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/Overview.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/S3C2412.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/S3C2413.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/Suspend.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/USB-Host.txt | 2 | ||||
-rw-r--r-- | Documentation/arm/Samsung/Overview.txt | 86 | ||||
-rwxr-xr-x | Documentation/arm/Samsung/clksrc-change-registers.awk | 167 | ||||
-rw-r--r-- | Documentation/arm/memory.txt | 6 |
12 files changed, 584 insertions, 10 deletions
diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS new file mode 100644 index 000000000000..0af0e9eed5d6 --- /dev/null +++ b/Documentation/arm/OMAP/DSS | |||
@@ -0,0 +1,317 @@ | |||
1 | OMAP2/3 Display Subsystem | ||
2 | ------------------------- | ||
3 | |||
4 | This is an almost total rewrite of the OMAP FB driver in drivers/video/omap | ||
5 | (let's call it DSS1). The main differences between DSS1 and DSS2 are DSI, | ||
6 | TV-out and multiple display support, but there are lots of small improvements | ||
7 | also. | ||
8 | |||
9 | The DSS2 driver (omapdss module) is in arch/arm/plat-omap/dss/, and the FB, | ||
10 | panel and controller drivers are in drivers/video/omap2/. DSS1 and DSS2 live | ||
11 | currently side by side, you can choose which one to use. | ||
12 | |||
13 | Features | ||
14 | -------- | ||
15 | |||
16 | Working and tested features include: | ||
17 | |||
18 | - MIPI DPI (parallel) output | ||
19 | - MIPI DSI output in command mode | ||
20 | - MIPI DBI (RFBI) output | ||
21 | - SDI output | ||
22 | - TV output | ||
23 | - All pieces can be compiled as a module or inside kernel | ||
24 | - Use DISPC to update any of the outputs | ||
25 | - Use CPU to update RFBI or DSI output | ||
26 | - OMAP DISPC planes | ||
27 | - RGB16, RGB24 packed, RGB24 unpacked | ||
28 | - YUV2, UYVY | ||
29 | - Scaling | ||
30 | - Adjusting DSS FCK to find a good pixel clock | ||
31 | - Use DSI DPLL to create DSS FCK | ||
32 | |||
33 | Tested boards include: | ||
34 | - OMAP3 SDP board | ||
35 | - Beagle board | ||
36 | - N810 | ||
37 | |||
38 | omapdss driver | ||
39 | -------------- | ||
40 | |||
41 | The DSS driver does not itself have any support for Linux framebuffer, V4L or | ||
42 | such like the current ones, but it has an internal kernel API that upper level | ||
43 | drivers can use. | ||
44 | |||
45 | The DSS driver models OMAP's overlays, overlay managers and displays in a | ||
46 | flexible way to enable non-common multi-display configuration. In addition to | ||
47 | modelling the hardware overlays, omapdss supports virtual overlays and overlay | ||
48 | managers. These can be used when updating a display with CPU or system DMA. | ||
49 | |||
50 | Panel and controller drivers | ||
51 | ---------------------------- | ||
52 | |||
53 | The drivers implement panel or controller specific functionality and are not | ||
54 | usually visible to users except through omapfb driver. They register | ||
55 | themselves to the DSS driver. | ||
56 | |||
57 | omapfb driver | ||
58 | ------------- | ||
59 | |||
60 | The omapfb driver implements arbitrary number of standard linux framebuffers. | ||
61 | These framebuffers can be routed flexibly to any overlays, thus allowing very | ||
62 | dynamic display architecture. | ||
63 | |||
64 | The driver exports some omapfb specific ioctls, which are compatible with the | ||
65 | ioctls in the old driver. | ||
66 | |||
67 | The rest of the non standard features are exported via sysfs. Whether the final | ||
68 | implementation will use sysfs, or ioctls, is still open. | ||
69 | |||
70 | V4L2 drivers | ||
71 | ------------ | ||
72 | |||
73 | V4L2 is being implemented in TI. | ||
74 | |||
75 | From omapdss point of view the V4L2 drivers should be similar to framebuffer | ||
76 | driver. | ||
77 | |||
78 | Architecture | ||
79 | -------------------- | ||
80 | |||
81 | Some clarification what the different components do: | ||
82 | |||
83 | - Framebuffer is a memory area inside OMAP's SRAM/SDRAM that contains the | ||
84 | pixel data for the image. Framebuffer has width and height and color | ||
85 | depth. | ||
86 | - Overlay defines where the pixels are read from and where they go on the | ||
87 | screen. The overlay may be smaller than framebuffer, thus displaying only | ||
88 | part of the framebuffer. The position of the overlay may be changed if | ||
89 | the overlay is smaller than the display. | ||
90 | - Overlay manager combines the overlays in to one image and feeds them to | ||
91 | display. | ||
92 | - Display is the actual physical display device. | ||
93 | |||
94 | A framebuffer can be connected to multiple overlays to show the same pixel data | ||
95 | on all of the overlays. Note that in this case the overlay input sizes must be | ||
96 | the same, but, in case of video overlays, the output size can be different. Any | ||
97 | framebuffer can be connected to any overlay. | ||
98 | |||
99 | An overlay can be connected to one overlay manager. Also DISPC overlays can be | ||
100 | connected only to DISPC overlay managers, and virtual overlays can be only | ||
101 | connected to virtual overlays. | ||
102 | |||
103 | An overlay manager can be connected to one display. There are certain | ||
104 | restrictions which kinds of displays an overlay manager can be connected: | ||
105 | |||
106 | - DISPC TV overlay manager can be only connected to TV display. | ||
107 | - Virtual overlay managers can only be connected to DBI or DSI displays. | ||
108 | - DISPC LCD overlay manager can be connected to all displays, except TV | ||
109 | display. | ||
110 | |||
111 | Sysfs | ||
112 | ----- | ||
113 | The sysfs interface is mainly used for testing. I don't think sysfs | ||
114 | interface is the best for this in the final version, but I don't quite know | ||
115 | what would be the best interfaces for these things. | ||
116 | |||
117 | The sysfs interface is divided to two parts: DSS and FB. | ||
118 | |||
119 | /sys/class/graphics/fb? directory: | ||
120 | mirror 0=off, 1=on | ||
121 | rotate Rotation 0-3 for 0, 90, 180, 270 degrees | ||
122 | rotate_type 0 = DMA rotation, 1 = VRFB rotation | ||
123 | overlays List of overlay numbers to which framebuffer pixels go | ||
124 | phys_addr Physical address of the framebuffer | ||
125 | virt_addr Virtual address of the framebuffer | ||
126 | size Size of the framebuffer | ||
127 | |||
128 | /sys/devices/platform/omapdss/overlay? directory: | ||
129 | enabled 0=off, 1=on | ||
130 | input_size width,height (ie. the framebuffer size) | ||
131 | manager Destination overlay manager name | ||
132 | name | ||
133 | output_size width,height | ||
134 | position x,y | ||
135 | screen_width width | ||
136 | global_alpha global alpha 0-255 0=transparent 255=opaque | ||
137 | |||
138 | /sys/devices/platform/omapdss/manager? directory: | ||
139 | display Destination display | ||
140 | name | ||
141 | alpha_blending_enabled 0=off, 1=on | ||
142 | trans_key_enabled 0=off, 1=on | ||
143 | trans_key_type gfx-destination, video-source | ||
144 | trans_key_value transparency color key (RGB24) | ||
145 | default_color default background color (RGB24) | ||
146 | |||
147 | /sys/devices/platform/omapdss/display? directory: | ||
148 | ctrl_name Controller name | ||
149 | mirror 0=off, 1=on | ||
150 | update_mode 0=off, 1=auto, 2=manual | ||
151 | enabled 0=off, 1=on | ||
152 | name | ||
153 | rotate Rotation 0-3 for 0, 90, 180, 270 degrees | ||
154 | timings Display timings (pixclock,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw) | ||
155 | When writing, two special timings are accepted for tv-out: | ||
156 | "pal" and "ntsc" | ||
157 | panel_name | ||
158 | tear_elim Tearing elimination 0=off, 1=on | ||
159 | |||
160 | There are also some debugfs files at <debugfs>/omapdss/ which show information | ||
161 | about clocks and registers. | ||
162 | |||
163 | Examples | ||
164 | -------- | ||
165 | |||
166 | The following definitions have been made for the examples below: | ||
167 | |||
168 | ovl0=/sys/devices/platform/omapdss/overlay0 | ||
169 | ovl1=/sys/devices/platform/omapdss/overlay1 | ||
170 | ovl2=/sys/devices/platform/omapdss/overlay2 | ||
171 | |||
172 | mgr0=/sys/devices/platform/omapdss/manager0 | ||
173 | mgr1=/sys/devices/platform/omapdss/manager1 | ||
174 | |||
175 | lcd=/sys/devices/platform/omapdss/display0 | ||
176 | dvi=/sys/devices/platform/omapdss/display1 | ||
177 | tv=/sys/devices/platform/omapdss/display2 | ||
178 | |||
179 | fb0=/sys/class/graphics/fb0 | ||
180 | fb1=/sys/class/graphics/fb1 | ||
181 | fb2=/sys/class/graphics/fb2 | ||
182 | |||
183 | Default setup on OMAP3 SDP | ||
184 | -------------------------- | ||
185 | |||
186 | Here's the default setup on OMAP3 SDP board. All planes go to LCD. DVI | ||
187 | and TV-out are not in use. The columns from left to right are: | ||
188 | framebuffers, overlays, overlay managers, displays. Framebuffers are | ||
189 | handled by omapfb, and the rest by the DSS. | ||
190 | |||
191 | FB0 --- GFX -\ DVI | ||
192 | FB1 --- VID1 --+- LCD ---- LCD | ||
193 | FB2 --- VID2 -/ TV ----- TV | ||
194 | |||
195 | Example: Switch from LCD to DVI | ||
196 | ---------------------- | ||
197 | |||
198 | w=`cat $dvi/timings | cut -d "," -f 2 | cut -d "/" -f 1` | ||
199 | h=`cat $dvi/timings | cut -d "," -f 3 | cut -d "/" -f 1` | ||
200 | |||
201 | echo "0" > $lcd/enabled | ||
202 | echo "" > $mgr0/display | ||
203 | fbset -fb /dev/fb0 -xres $w -yres $h -vxres $w -vyres $h | ||
204 | # at this point you have to switch the dvi/lcd dip-switch from the omap board | ||
205 | echo "dvi" > $mgr0/display | ||
206 | echo "1" > $dvi/enabled | ||
207 | |||
208 | After this the configuration looks like: | ||
209 | |||
210 | FB0 --- GFX -\ -- DVI | ||
211 | FB1 --- VID1 --+- LCD -/ LCD | ||
212 | FB2 --- VID2 -/ TV ----- TV | ||
213 | |||
214 | Example: Clone GFX overlay to LCD and TV | ||
215 | ------------------------------- | ||
216 | |||
217 | w=`cat $tv/timings | cut -d "," -f 2 | cut -d "/" -f 1` | ||
218 | h=`cat $tv/timings | cut -d "," -f 3 | cut -d "/" -f 1` | ||
219 | |||
220 | echo "0" > $ovl0/enabled | ||
221 | echo "0" > $ovl1/enabled | ||
222 | |||
223 | echo "" > $fb1/overlays | ||
224 | echo "0,1" > $fb0/overlays | ||
225 | |||
226 | echo "$w,$h" > $ovl1/output_size | ||
227 | echo "tv" > $ovl1/manager | ||
228 | |||
229 | echo "1" > $ovl0/enabled | ||
230 | echo "1" > $ovl1/enabled | ||
231 | |||
232 | echo "1" > $tv/enabled | ||
233 | |||
234 | After this the configuration looks like (only relevant parts shown): | ||
235 | |||
236 | FB0 +-- GFX ---- LCD ---- LCD | ||
237 | \- VID1 ---- TV ---- TV | ||
238 | |||
239 | Misc notes | ||
240 | ---------- | ||
241 | |||
242 | OMAP FB allocates the framebuffer memory using the OMAP VRAM allocator. | ||
243 | |||
244 | Using DSI DPLL to generate pixel clock it is possible produce the pixel clock | ||
245 | of 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI. | ||
246 | |||
247 | Rotation and mirroring currently only supports RGB565 and RGB8888 modes. VRFB | ||
248 | does not support mirroring. | ||
249 | |||
250 | VRFB rotation requires much more memory than non-rotated framebuffer, so you | ||
251 | probably need to increase your vram setting before using VRFB rotation. Also, | ||
252 | many applications may not work with VRFB if they do not pay attention to all | ||
253 | framebuffer parameters. | ||
254 | |||
255 | Kernel boot arguments | ||
256 | --------------------- | ||
257 | |||
258 | vram=<size> | ||
259 | - Amount of total VRAM to preallocate. For example, "10M". omapfb | ||
260 | allocates memory for framebuffers from VRAM. | ||
261 | |||
262 | omapfb.mode=<display>:<mode>[,...] | ||
263 | - Default video mode for specified displays. For example, | ||
264 | "dvi:800x400MR-24@60". See drivers/video/modedb.c. | ||
265 | There are also two special modes: "pal" and "ntsc" that | ||
266 | can be used to tv out. | ||
267 | |||
268 | omapfb.vram=<fbnum>:<size>[@<physaddr>][,...] | ||
269 | - VRAM allocated for a framebuffer. Normally omapfb allocates vram | ||
270 | depending on the display size. With this you can manually allocate | ||
271 | more or define the physical address of each framebuffer. For example, | ||
272 | "1:4M" to allocate 4M for fb1. | ||
273 | |||
274 | omapfb.debug=<y|n> | ||
275 | - Enable debug printing. You have to have OMAPFB debug support enabled | ||
276 | in kernel config. | ||
277 | |||
278 | omapfb.test=<y|n> | ||
279 | - Draw test pattern to framebuffer whenever framebuffer settings change. | ||
280 | You need to have OMAPFB debug support enabled in kernel config. | ||
281 | |||
282 | omapfb.vrfb=<y|n> | ||
283 | - Use VRFB rotation for all framebuffers. | ||
284 | |||
285 | omapfb.rotate=<angle> | ||
286 | - Default rotation applied to all framebuffers. | ||
287 | 0 - 0 degree rotation | ||
288 | 1 - 90 degree rotation | ||
289 | 2 - 180 degree rotation | ||
290 | 3 - 270 degree rotation | ||
291 | |||
292 | omapfb.mirror=<y|n> | ||
293 | - Default mirror for all framebuffers. Only works with DMA rotation. | ||
294 | |||
295 | omapdss.def_disp=<display> | ||
296 | - Name of default display, to which all overlays will be connected. | ||
297 | Common examples are "lcd" or "tv". | ||
298 | |||
299 | omapdss.debug=<y|n> | ||
300 | - Enable debug printing. You have to have DSS debug support enabled in | ||
301 | kernel config. | ||
302 | |||
303 | TODO | ||
304 | ---- | ||
305 | |||
306 | DSS locking | ||
307 | |||
308 | Error checking | ||
309 | - Lots of checks are missing or implemented just as BUG() | ||
310 | |||
311 | System DMA update for DSI | ||
312 | - Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how | ||
313 | to skip the empty byte?) | ||
314 | |||
315 | OMAP1 support | ||
316 | - Not sure if needed | ||
317 | |||
diff --git a/Documentation/arm/Samsung-S3C24XX/CPUfreq.txt b/Documentation/arm/Samsung-S3C24XX/CPUfreq.txt index 76b3a11e90be..fa968aa99d67 100644 --- a/Documentation/arm/Samsung-S3C24XX/CPUfreq.txt +++ b/Documentation/arm/Samsung-S3C24XX/CPUfreq.txt | |||
@@ -14,8 +14,8 @@ Introduction | |||
14 | how the clocks are arranged. The first implementation used as single | 14 | how the clocks are arranged. The first implementation used as single |
15 | PLL to feed the ARM, memory and peripherals via a series of dividers | 15 | PLL to feed the ARM, memory and peripherals via a series of dividers |
16 | and muxes and this is the implementation that is documented here. A | 16 | and muxes and this is the implementation that is documented here. A |
17 | newer version where there is a seperate PLL and clock divider for the | 17 | newer version where there is a separate PLL and clock divider for the |
18 | ARM core is available as a seperate driver. | 18 | ARM core is available as a separate driver. |
19 | 19 | ||
20 | 20 | ||
21 | Layout | 21 | Layout |
diff --git a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt index 26422f0f9080..b87292e05f2f 100644 --- a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt +++ b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt | |||
@@ -55,4 +55,4 @@ Maintainers | |||
55 | This board is maintained by Simtec Electronics. | 55 | This board is maintained by Simtec Electronics. |
56 | 56 | ||
57 | 57 | ||
58 | (c) 2004 Ben Dooks, Simtec Electronics | 58 | Copyright 2004 Ben Dooks, Simtec Electronics |
diff --git a/Documentation/arm/Samsung-S3C24XX/GPIO.txt b/Documentation/arm/Samsung-S3C24XX/GPIO.txt index 948c8718d967..2af2cf39915f 100644 --- a/Documentation/arm/Samsung-S3C24XX/GPIO.txt +++ b/Documentation/arm/Samsung-S3C24XX/GPIO.txt | |||
@@ -134,4 +134,4 @@ Authour | |||
134 | 134 | ||
135 | 135 | ||
136 | Ben Dooks, 03 October 2004 | 136 | Ben Dooks, 03 October 2004 |
137 | (c) 2004 Ben Dooks, Simtec Electronics | 137 | Copyright 2004 Ben Dooks, Simtec Electronics |
diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt index cff6227b4484..081892df4fda 100644 --- a/Documentation/arm/Samsung-S3C24XX/Overview.txt +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt | |||
@@ -299,4 +299,4 @@ Port Contributors | |||
299 | Document Author | 299 | Document Author |
300 | --------------- | 300 | --------------- |
301 | 301 | ||
302 | Ben Dooks, (c) 2004-2005,2006 Simtec Electronics | 302 | Ben Dooks, Copyright 2004-2006 Simtec Electronics |
diff --git a/Documentation/arm/Samsung-S3C24XX/S3C2412.txt b/Documentation/arm/Samsung-S3C24XX/S3C2412.txt index 295d971a15ed..f057876b920b 100644 --- a/Documentation/arm/Samsung-S3C24XX/S3C2412.txt +++ b/Documentation/arm/Samsung-S3C24XX/S3C2412.txt | |||
@@ -117,4 +117,4 @@ ATA | |||
117 | Document Author | 117 | Document Author |
118 | --------------- | 118 | --------------- |
119 | 119 | ||
120 | Ben Dooks, (c) 2006 Simtec Electronics | 120 | Ben Dooks, Copyright 2006 Simtec Electronics |
diff --git a/Documentation/arm/Samsung-S3C24XX/S3C2413.txt b/Documentation/arm/Samsung-S3C24XX/S3C2413.txt index ab2a88858f12..909bdc7dd7b5 100644 --- a/Documentation/arm/Samsung-S3C24XX/S3C2413.txt +++ b/Documentation/arm/Samsung-S3C24XX/S3C2413.txt | |||
@@ -18,4 +18,4 @@ Camera Interface | |||
18 | Document Author | 18 | Document Author |
19 | --------------- | 19 | --------------- |
20 | 20 | ||
21 | Ben Dooks, (c) 2006 Simtec Electronics | 21 | Ben Dooks, Copyright 2006 Simtec Electronics |
diff --git a/Documentation/arm/Samsung-S3C24XX/Suspend.txt b/Documentation/arm/Samsung-S3C24XX/Suspend.txt index a30fe510572b..7edd0e2e6c5b 100644 --- a/Documentation/arm/Samsung-S3C24XX/Suspend.txt +++ b/Documentation/arm/Samsung-S3C24XX/Suspend.txt | |||
@@ -133,5 +133,5 @@ Configuration | |||
133 | Document Author | 133 | Document Author |
134 | --------------- | 134 | --------------- |
135 | 135 | ||
136 | Ben Dooks, (c) 2004 Simtec Electronics | 136 | Ben Dooks, Copyright 2004 Simtec Electronics |
137 | 137 | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/USB-Host.txt b/Documentation/arm/Samsung-S3C24XX/USB-Host.txt index 67671eba4231..f82b1faefad5 100644 --- a/Documentation/arm/Samsung-S3C24XX/USB-Host.txt +++ b/Documentation/arm/Samsung-S3C24XX/USB-Host.txt | |||
@@ -90,4 +90,4 @@ Platform Data | |||
90 | Document Author | 90 | Document Author |
91 | --------------- | 91 | --------------- |
92 | 92 | ||
93 | Ben Dooks, (c) 2005 Simtec Electronics | 93 | Ben Dooks, Copyright 2005 Simtec Electronics |
diff --git a/Documentation/arm/Samsung/Overview.txt b/Documentation/arm/Samsung/Overview.txt new file mode 100644 index 000000000000..7cced1fea9c3 --- /dev/null +++ b/Documentation/arm/Samsung/Overview.txt | |||
@@ -0,0 +1,86 @@ | |||
1 | Samsung ARM Linux Overview | ||
2 | ========================== | ||
3 | |||
4 | Introduction | ||
5 | ------------ | ||
6 | |||
7 | The Samsung range of ARM SoCs spans many similar devices, from the initial | ||
8 | ARM9 through to the newest ARM cores. This document shows an overview of | ||
9 | the current kernel support, how to use it and where to find the code | ||
10 | that supports this. | ||
11 | |||
12 | The currently supported SoCs are: | ||
13 | |||
14 | - S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list | ||
15 | - S3C64XX: S3C6400 and S3C6410 | ||
16 | - S5PC6440 | ||
17 | |||
18 | S5PC100 and S5PC110 support is currently being merged | ||
19 | |||
20 | |||
21 | S3C24XX Systems | ||
22 | --------------- | ||
23 | |||
24 | There is still documentation in Documnetation/arm/Samsung-S3C24XX/ which | ||
25 | deals with the architecture and drivers specific to these devices. | ||
26 | |||
27 | See Documentation/arm/Samsung-S3C24XX/Overview.txt for more information | ||
28 | on the implementation details and specific support. | ||
29 | |||
30 | |||
31 | Configuration | ||
32 | ------------- | ||
33 | |||
34 | A number of configurations are supplied, as there is no current way of | ||
35 | unifying all the SoCs into one kernel. | ||
36 | |||
37 | s5p6440_defconfig - S5P6440 specific default configuration | ||
38 | s5pc100_defconfig - S5PC100 specific default configuration | ||
39 | |||
40 | |||
41 | Layout | ||
42 | ------ | ||
43 | |||
44 | The directory layout is currently being restructured, and consists of | ||
45 | several platform directories and then the machine specific directories | ||
46 | of the CPUs being built for. | ||
47 | |||
48 | plat-samsung provides the base for all the implementations, and is the | ||
49 | last in the line of include directories that are processed for the build | ||
50 | specific information. It contains the base clock, GPIO and device definitions | ||
51 | to get the system running. | ||
52 | |||
53 | plat-s3c is the s3c24xx/s3c64xx platform directory, although it is currently | ||
54 | involved in other builds this will be phased out once the relevant code is | ||
55 | moved elsewhere. | ||
56 | |||
57 | plat-s3c24xx is for s3c24xx specific builds, see the S3C24XX docs. | ||
58 | |||
59 | plat-s3c64xx is for the s3c64xx specific bits, see the S3C24XX docs. | ||
60 | |||
61 | plat-s5p is for s5p specific builds, more to be added. | ||
62 | |||
63 | |||
64 | [ to finish ] | ||
65 | |||
66 | |||
67 | Port Contributors | ||
68 | ----------------- | ||
69 | |||
70 | Ben Dooks (BJD) | ||
71 | Vincent Sanders | ||
72 | Herbert Potzl | ||
73 | Arnaud Patard (RTP) | ||
74 | Roc Wu | ||
75 | Klaus Fetscher | ||
76 | Dimitry Andric | ||
77 | Shannon Holland | ||
78 | Guillaume Gourat (NexVision) | ||
79 | Christer Weinigel (wingel) (Acer N30) | ||
80 | Lucas Correia Villa Real (S3C2400 port) | ||
81 | |||
82 | |||
83 | Document Author | ||
84 | --------------- | ||
85 | |||
86 | Copyright 2009-2010 Ben Dooks <ben-linux@fluff.org> | ||
diff --git a/Documentation/arm/Samsung/clksrc-change-registers.awk b/Documentation/arm/Samsung/clksrc-change-registers.awk new file mode 100755 index 000000000000..0c50220851fb --- /dev/null +++ b/Documentation/arm/Samsung/clksrc-change-registers.awk | |||
@@ -0,0 +1,167 @@ | |||
1 | #!/usr/bin/awk -f | ||
2 | # | ||
3 | # Copyright 2010 Ben Dooks <ben-linux@fluff.org> | ||
4 | # | ||
5 | # Released under GPLv2 | ||
6 | |||
7 | # example usage | ||
8 | # ./clksrc-change-registers.awk arch/arm/plat-s5pc1xx/include/plat/regs-clock.h < src > dst | ||
9 | |||
10 | function extract_value(s) | ||
11 | { | ||
12 | eqat = index(s, "=") | ||
13 | comat = index(s, ",") | ||
14 | return substr(s, eqat+2, (comat-eqat)-2) | ||
15 | } | ||
16 | |||
17 | function remove_brackets(b) | ||
18 | { | ||
19 | return substr(b, 2, length(b)-2) | ||
20 | } | ||
21 | |||
22 | function splitdefine(l, p) | ||
23 | { | ||
24 | r = split(l, tp) | ||
25 | |||
26 | p[0] = tp[2] | ||
27 | p[1] = remove_brackets(tp[3]) | ||
28 | } | ||
29 | |||
30 | function find_length(f) | ||
31 | { | ||
32 | if (0) | ||
33 | printf "find_length " f "\n" > "/dev/stderr" | ||
34 | |||
35 | if (f ~ /0x1/) | ||
36 | return 1 | ||
37 | else if (f ~ /0x3/) | ||
38 | return 2 | ||
39 | else if (f ~ /0x7/) | ||
40 | return 3 | ||
41 | else if (f ~ /0xf/) | ||
42 | return 4 | ||
43 | |||
44 | printf "unknown legnth " f "\n" > "/dev/stderr" | ||
45 | exit | ||
46 | } | ||
47 | |||
48 | function find_shift(s) | ||
49 | { | ||
50 | id = index(s, "<") | ||
51 | if (id <= 0) { | ||
52 | printf "cannot find shift " s "\n" > "/dev/stderr" | ||
53 | exit | ||
54 | } | ||
55 | |||
56 | return substr(s, id+2) | ||
57 | } | ||
58 | |||
59 | |||
60 | BEGIN { | ||
61 | if (ARGC < 2) { | ||
62 | print "too few arguments" > "/dev/stderr" | ||
63 | exit | ||
64 | } | ||
65 | |||
66 | # read the header file and find the mask values that we will need | ||
67 | # to replace and create an associative array of values | ||
68 | |||
69 | while (getline line < ARGV[1] > 0) { | ||
70 | if (line ~ /\#define.*_MASK/ && | ||
71 | !(line ~ /S5PC100_EPLL_MASK/) && | ||
72 | !(line ~ /USB_SIG_MASK/)) { | ||
73 | splitdefine(line, fields) | ||
74 | name = fields[0] | ||
75 | if (0) | ||
76 | printf "MASK " line "\n" > "/dev/stderr" | ||
77 | dmask[name,0] = find_length(fields[1]) | ||
78 | dmask[name,1] = find_shift(fields[1]) | ||
79 | if (0) | ||
80 | printf "=> '" name "' LENGTH=" dmask[name,0] " SHIFT=" dmask[name,1] "\n" > "/dev/stderr" | ||
81 | } else { | ||
82 | } | ||
83 | } | ||
84 | |||
85 | delete ARGV[1] | ||
86 | } | ||
87 | |||
88 | /clksrc_clk.*=.*{/ { | ||
89 | shift="" | ||
90 | mask="" | ||
91 | divshift="" | ||
92 | reg_div="" | ||
93 | reg_src="" | ||
94 | indent=1 | ||
95 | |||
96 | print $0 | ||
97 | |||
98 | for(; indent >= 1;) { | ||
99 | if ((getline line) <= 0) { | ||
100 | printf "unexpected end of file" > "/dev/stderr" | ||
101 | exit 1; | ||
102 | } | ||
103 | |||
104 | if (line ~ /\.shift/) { | ||
105 | shift = extract_value(line) | ||
106 | } else if (line ~ /\.mask/) { | ||
107 | mask = extract_value(line) | ||
108 | } else if (line ~ /\.reg_divider/) { | ||
109 | reg_div = extract_value(line) | ||
110 | } else if (line ~ /\.reg_source/) { | ||
111 | reg_src = extract_value(line) | ||
112 | } else if (line ~ /\.divider_shift/) { | ||
113 | divshift = extract_value(line) | ||
114 | } else if (line ~ /{/) { | ||
115 | indent++ | ||
116 | print line | ||
117 | } else if (line ~ /}/) { | ||
118 | indent-- | ||
119 | |||
120 | if (indent == 0) { | ||
121 | if (0) { | ||
122 | printf "shift '" shift "' ='" dmask[shift,0] "'\n" > "/dev/stderr" | ||
123 | printf "mask '" mask "'\n" > "/dev/stderr" | ||
124 | printf "dshft '" divshift "'\n" > "/dev/stderr" | ||
125 | printf "rdiv '" reg_div "'\n" > "/dev/stderr" | ||
126 | printf "rsrc '" reg_src "'\n" > "/dev/stderr" | ||
127 | } | ||
128 | |||
129 | generated = mask | ||
130 | sub(reg_src, reg_div, generated) | ||
131 | |||
132 | if (0) { | ||
133 | printf "/* rsrc " reg_src " */\n" | ||
134 | printf "/* rdiv " reg_div " */\n" | ||
135 | printf "/* shift " shift " */\n" | ||
136 | printf "/* mask " mask " */\n" | ||
137 | printf "/* generated " generated " */\n" | ||
138 | } | ||
139 | |||
140 | if (reg_div != "") { | ||
141 | printf "\t.reg_div = { " | ||
142 | printf ".reg = " reg_div ", " | ||
143 | printf ".shift = " dmask[generated,1] ", " | ||
144 | printf ".size = " dmask[generated,0] ", " | ||
145 | printf "},\n" | ||
146 | } | ||
147 | |||
148 | printf "\t.reg_src = { " | ||
149 | printf ".reg = " reg_src ", " | ||
150 | printf ".shift = " dmask[mask,1] ", " | ||
151 | printf ".size = " dmask[mask,0] ", " | ||
152 | |||
153 | printf "},\n" | ||
154 | |||
155 | } | ||
156 | |||
157 | print line | ||
158 | } else { | ||
159 | print line | ||
160 | } | ||
161 | |||
162 | if (0) | ||
163 | printf indent ":" line "\n" > "/dev/stderr" | ||
164 | } | ||
165 | } | ||
166 | |||
167 | // && ! /clksrc_clk.*=.*{/ { print $0 } | ||
diff --git a/Documentation/arm/memory.txt b/Documentation/arm/memory.txt index 9d58c7c5eddd..eb0fae18ffb1 100644 --- a/Documentation/arm/memory.txt +++ b/Documentation/arm/memory.txt | |||
@@ -59,7 +59,11 @@ PAGE_OFFSET high_memory-1 Kernel direct-mapped RAM region. | |||
59 | This maps the platforms RAM, and typically | 59 | This maps the platforms RAM, and typically |
60 | maps all platform RAM in a 1:1 relationship. | 60 | maps all platform RAM in a 1:1 relationship. |
61 | 61 | ||
62 | TASK_SIZE PAGE_OFFSET-1 Kernel module space | 62 | PKMAP_BASE PAGE_OFFSET-1 Permanent kernel mappings |
63 | One way of mapping HIGHMEM pages into kernel | ||
64 | space. | ||
65 | |||
66 | MODULES_VADDR MODULES_END-1 Kernel module space | ||
63 | Kernel modules inserted via insmod are | 67 | Kernel modules inserted via insmod are |
64 | placed here using dynamic mappings. | 68 | placed here using dynamic mappings. |
65 | 69 | ||