aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/CodingStyle42
-rw-r--r--Documentation/DocBook/procfs-guide.tmpl4
-rw-r--r--Documentation/accounting/delay-accounting.txt11
-rw-r--r--Documentation/accounting/getdelays.c8
-rw-r--r--Documentation/accounting/taskstats-struct.txt7
-rw-r--r--Documentation/bt8xxgpio.txt67
-rw-r--r--Documentation/controllers/memory.txt3
-rw-r--r--Documentation/edac.txt151
-rw-r--r--Documentation/feature-removal-schedule.txt18
-rw-r--r--Documentation/filesystems/vfat.txt8
-rw-r--r--Documentation/gpio.txt135
-rw-r--r--Documentation/kernel-parameters.txt7
-rw-r--r--Documentation/moxa-smartio392
-rw-r--r--Documentation/powerpc/booting-without-of.txt57
-rw-r--r--Documentation/unaligned-memory-access.txt32
16 files changed, 661 insertions, 283 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 1977fab38656..6de71308a906 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -361,8 +361,6 @@ telephony/
361 - directory with info on telephony (e.g. voice over IP) support. 361 - directory with info on telephony (e.g. voice over IP) support.
362time_interpolators.txt 362time_interpolators.txt
363 - info on time interpolators. 363 - info on time interpolators.
364tipar.txt
365 - information about Parallel link cable for Texas Instruments handhelds.
366tty.txt 364tty.txt
367 - guide to the locking policies of the tty layer. 365 - guide to the locking policies of the tty layer.
368uml/ 366uml/
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index 6caa14615578..1875e502f872 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -474,25 +474,29 @@ make a good program).
474So, you can either get rid of GNU emacs, or change it to use saner 474So, you can either get rid of GNU emacs, or change it to use saner
475values. To do the latter, you can stick the following in your .emacs file: 475values. To do the latter, you can stick the following in your .emacs file:
476 476
477(defun linux-c-mode () 477(defun c-lineup-arglist-tabs-only (ignored)
478 "C mode with adjusted defaults for use with the Linux kernel." 478 "Line up argument lists by tabs, not spaces"
479 (interactive) 479 (let* ((anchor (c-langelem-pos c-syntactic-element))
480 (c-mode) 480 (column (c-langelem-2nd-pos c-syntactic-element))
481 (c-set-style "K&R") 481 (offset (- (1+ column) anchor))
482 (setq tab-width 8) 482 (steps (floor offset c-basic-offset)))
483 (setq indent-tabs-mode t) 483 (* (max steps 1)
484 (setq c-basic-offset 8)) 484 c-basic-offset)))
485 485
486This will define the M-x linux-c-mode command. When hacking on a 486(add-hook 'c-mode-hook
487module, if you put the string -*- linux-c -*- somewhere on the first 487 (lambda ()
488two lines, this mode will be automatically invoked. Also, you may want 488 (let ((filename (buffer-file-name)))
489to add 489 ;; Enable kernel mode for the appropriate files
490 490 (when (and filename
491(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode) 491 (string-match "~/src/linux-trees" filename))
492 auto-mode-alist)) 492 (setq indent-tabs-mode t)
493 493 (c-set-style "linux")
494to your .emacs file if you want to have linux-c-mode switched on 494 (c-set-offset 'arglist-cont-nonempty
495automagically when you edit source files under /usr/src/linux. 495 '(c-lineup-gcc-asm-reg
496 c-lineup-arglist-tabs-only))))))
497
498This will make emacs go better with the kernel coding style for C
499files below ~/src/linux-trees.
496 500
497But even if you fail in getting emacs to do sane formatting, not 501But even if you fail in getting emacs to do sane formatting, not
498everything is lost: use "indent". 502everything is lost: use "indent".
diff --git a/Documentation/DocBook/procfs-guide.tmpl b/Documentation/DocBook/procfs-guide.tmpl
index 1fd6a1ec7591..8a5dc6e021ff 100644
--- a/Documentation/DocBook/procfs-guide.tmpl
+++ b/Documentation/DocBook/procfs-guide.tmpl
@@ -29,12 +29,12 @@
29 29
30 <revhistory> 30 <revhistory>
31 <revision> 31 <revision>
32 <revnumber>1.0&nbsp;</revnumber> 32 <revnumber>1.0</revnumber>
33 <date>May 30, 2001</date> 33 <date>May 30, 2001</date>
34 <revremark>Initial revision posted to linux-kernel</revremark> 34 <revremark>Initial revision posted to linux-kernel</revremark>
35 </revision> 35 </revision>
36 <revision> 36 <revision>
37 <revnumber>1.1&nbsp;</revnumber> 37 <revnumber>1.1</revnumber>
38 <date>June 3, 2001</date> 38 <date>June 3, 2001</date>
39 <revremark>Revised after comments from linux-kernel</revremark> 39 <revremark>Revised after comments from linux-kernel</revremark>
40 </revision> 40 </revision>
diff --git a/Documentation/accounting/delay-accounting.txt b/Documentation/accounting/delay-accounting.txt
index 1443cd71d263..8a12f0730c94 100644
--- a/Documentation/accounting/delay-accounting.txt
+++ b/Documentation/accounting/delay-accounting.txt
@@ -11,6 +11,7 @@ the delays experienced by a task while
11a) waiting for a CPU (while being runnable) 11a) waiting for a CPU (while being runnable)
12b) completion of synchronous block I/O initiated by the task 12b) completion of synchronous block I/O initiated by the task
13c) swapping in pages 13c) swapping in pages
14d) memory reclaim
14 15
15and makes these statistics available to userspace through 16and makes these statistics available to userspace through
16the taskstats interface. 17the taskstats interface.
@@ -41,7 +42,7 @@ this structure. See
41 include/linux/taskstats.h 42 include/linux/taskstats.h
42for a description of the fields pertaining to delay accounting. 43for a description of the fields pertaining to delay accounting.
43It will generally be in the form of counters returning the cumulative 44It will generally be in the form of counters returning the cumulative
44delay seen for cpu, sync block I/O, swapin etc. 45delay seen for cpu, sync block I/O, swapin, memory reclaim etc.
45 46
46Taking the difference of two successive readings of a given 47Taking the difference of two successive readings of a given
47counter (say cpu_delay_total) for a task will give the delay 48counter (say cpu_delay_total) for a task will give the delay
@@ -94,7 +95,9 @@ CPU count real total virtual total delay total
94 7876 92005750 100000000 24001500 95 7876 92005750 100000000 24001500
95IO count delay total 96IO count delay total
96 0 0 97 0 0
97MEM count delay total 98SWAP count delay total
99 0 0
100RECLAIM count delay total
98 0 0 101 0 0
99 102
100Get delays seen in executing a given simple command 103Get delays seen in executing a given simple command
@@ -108,5 +111,7 @@ CPU count real total virtual total delay total
108 6 4000250 4000000 0 111 6 4000250 4000000 0
109IO count delay total 112IO count delay total
110 0 0 113 0 0
111MEM count delay total 114SWAP count delay total
115 0 0
116RECLAIM count delay total
112 0 0 117 0 0
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index 40121b5cca14..3f7755f3963f 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -196,14 +196,18 @@ void print_delayacct(struct taskstats *t)
196 " %15llu%15llu%15llu%15llu\n" 196 " %15llu%15llu%15llu%15llu\n"
197 "IO %15s%15s\n" 197 "IO %15s%15s\n"
198 " %15llu%15llu\n" 198 " %15llu%15llu\n"
199 "MEM %15s%15s\n" 199 "SWAP %15s%15s\n"
200 " %15llu%15llu\n"
201 "RECLAIM %12s%15s\n"
200 " %15llu%15llu\n", 202 " %15llu%15llu\n",
201 "count", "real total", "virtual total", "delay total", 203 "count", "real total", "virtual total", "delay total",
202 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total, 204 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
203 t->cpu_delay_total, 205 t->cpu_delay_total,
204 "count", "delay total", 206 "count", "delay total",
205 t->blkio_count, t->blkio_delay_total, 207 t->blkio_count, t->blkio_delay_total,
206 "count", "delay total", t->swapin_count, t->swapin_delay_total); 208 "count", "delay total", t->swapin_count, t->swapin_delay_total,
209 "count", "delay total",
210 t->freepages_count, t->freepages_delay_total);
207} 211}
208 212
209void task_context_switch_counts(struct taskstats *t) 213void task_context_switch_counts(struct taskstats *t)
diff --git a/Documentation/accounting/taskstats-struct.txt b/Documentation/accounting/taskstats-struct.txt
index cd784f46bf8a..b988d110db59 100644
--- a/Documentation/accounting/taskstats-struct.txt
+++ b/Documentation/accounting/taskstats-struct.txt
@@ -26,6 +26,8 @@ There are three different groups of fields in the struct taskstats:
26 26
275) Time accounting for SMT machines 275) Time accounting for SMT machines
28 28
296) Extended delay accounting fields for memory reclaim
30
29Future extension should add fields to the end of the taskstats struct, and 31Future extension should add fields to the end of the taskstats struct, and
30should not change the relative position of each field within the struct. 32should not change the relative position of each field within the struct.
31 33
@@ -170,4 +172,9 @@ struct taskstats {
170 __u64 ac_utimescaled; /* utime scaled on frequency etc */ 172 __u64 ac_utimescaled; /* utime scaled on frequency etc */
171 __u64 ac_stimescaled; /* stime scaled on frequency etc */ 173 __u64 ac_stimescaled; /* stime scaled on frequency etc */
172 __u64 cpu_scaled_run_real_total; /* scaled cpu_run_real_total */ 174 __u64 cpu_scaled_run_real_total; /* scaled cpu_run_real_total */
175
1766) Extended delay accounting fields for memory reclaim
177 /* Delay waiting for memory reclaim */
178 __u64 freepages_count;
179 __u64 freepages_delay_total;
173} 180}
diff --git a/Documentation/bt8xxgpio.txt b/Documentation/bt8xxgpio.txt
new file mode 100644
index 000000000000..d8297e4ebd26
--- /dev/null
+++ b/Documentation/bt8xxgpio.txt
@@ -0,0 +1,67 @@
1===============================================================
2== BT8XXGPIO driver ==
3== ==
4== A driver for a selfmade cheap BT8xx based PCI GPIO-card ==
5== ==
6== For advanced documentation, see ==
7== http://www.bu3sch.de/btgpio.php ==
8===============================================================
9
10
11A generic digital 24-port PCI GPIO card can be built out of an ordinary
12Brooktree bt848, bt849, bt878 or bt879 based analog TV tuner card. The
13Brooktree chip is used in old analog Hauppauge WinTV PCI cards. You can easily
14find them used for low prices on the net.
15
16The bt8xx chip does have 24 digital GPIO ports.
17These ports are accessible via 24 pins on the SMD chip package.
18
19
20==============================================
21== How to physically access the GPIO pins ==
22==============================================
23
24The are several ways to access these pins. One might unsolder the whole chip
25and put it on a custom PCI board, or one might only unsolder each individual
26GPIO pin and solder that to some tiny wire. As the chip package really is tiny
27there are some advanced soldering skills needed in any case.
28
29The physical pinouts are drawn in the following ASCII art.
30The GPIO pins are marked with G00-G23
31
32 G G G G G G G G G G G G G G G G G G
33 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
34 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
35 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
36 ---------------------------------------------------------------------------
37 --| ^ ^ |--
38 --| pin 86 pin 67 |--
39 --| |--
40 --| pin 61 > |-- G18
41 --| |-- G19
42 --| |-- G20
43 --| |-- G21
44 --| |-- G22
45 --| pin 56 > |-- G23
46 --| |--
47 --| Brooktree 878/879 |--
48 --| |--
49 --| |--
50 --| |--
51 --| |--
52 --| |--
53 --| |--
54 --| |--
55 --| |--
56 --| |--
57 --| |--
58 --| |--
59 --| |--
60 --| |--
61 --| O |--
62 --| |--
63 ---------------------------------------------------------------------------
64 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
65 ^
66 This is pin 1
67
diff --git a/Documentation/controllers/memory.txt b/Documentation/controllers/memory.txt
index 866b9cd9a959..9b53d5827361 100644
--- a/Documentation/controllers/memory.txt
+++ b/Documentation/controllers/memory.txt
@@ -242,8 +242,7 @@ rmdir() if there are no tasks.
2421. Add support for accounting huge pages (as a separate controller) 2421. Add support for accounting huge pages (as a separate controller)
2432. Make per-cgroup scanner reclaim not-shared pages first 2432. Make per-cgroup scanner reclaim not-shared pages first
2443. Teach controller to account for shared-pages 2443. Teach controller to account for shared-pages
2454. Start reclamation when the limit is lowered 2454. Start reclamation in the background when the limit is
2465. Start reclamation in the background when the limit is
247 not yet hit but the usage is getting closer 246 not yet hit but the usage is getting closer
248 247
249Summary 248Summary
diff --git a/Documentation/edac.txt b/Documentation/edac.txt
index a5c36842ecef..ced527388001 100644
--- a/Documentation/edac.txt
+++ b/Documentation/edac.txt
@@ -222,74 +222,9 @@ both csrow2 and csrow3 are populated, this indicates a dual ranked
222set of DIMMs for channels 0 and 1. 222set of DIMMs for channels 0 and 1.
223 223
224 224
225Within each of the 'mc','mcX' and 'csrowX' directories are several 225Within each of the 'mcX' and 'csrowX' directories are several
226EDAC control and attribute files. 226EDAC control and attribute files.
227 227
228
229============================================================================
230DIRECTORY 'mc'
231
232In directory 'mc' are EDAC system overall control and attribute files:
233
234
235Panic on UE control file:
236
237 'edac_mc_panic_on_ue'
238
239 An uncorrectable error will cause a machine panic. This is usually
240 desirable. It is a bad idea to continue when an uncorrectable error
241 occurs - it is indeterminate what was uncorrected and the operating
242 system context might be so mangled that continuing will lead to further
243 corruption. If the kernel has MCE configured, then EDAC will never
244 notice the UE.
245
246 LOAD TIME: module/kernel parameter: panic_on_ue=[0|1]
247
248 RUN TIME: echo "1" >/sys/devices/system/edac/mc/edac_mc_panic_on_ue
249
250
251Log UE control file:
252
253 'edac_mc_log_ue'
254
255 Generate kernel messages describing uncorrectable errors. These errors
256 are reported through the system message log system. UE statistics
257 will be accumulated even when UE logging is disabled.
258
259 LOAD TIME: module/kernel parameter: log_ue=[0|1]
260
261 RUN TIME: echo "1" >/sys/devices/system/edac/mc/edac_mc_log_ue
262
263
264Log CE control file:
265
266 'edac_mc_log_ce'
267
268 Generate kernel messages describing correctable errors. These
269 errors are reported through the system message log system.
270 CE statistics will be accumulated even when CE logging is disabled.
271
272 LOAD TIME: module/kernel parameter: log_ce=[0|1]
273
274 RUN TIME: echo "1" >/sys/devices/system/edac/mc/edac_mc_log_ce
275
276
277Polling period control file:
278
279 'edac_mc_poll_msec'
280
281 The time period, in milliseconds, for polling for error information.
282 Too small a value wastes resources. Too large a value might delay
283 necessary handling of errors and might loose valuable information for
284 locating the error. 1000 milliseconds (once each second) is the current
285 default. Systems which require all the bandwidth they can get, may
286 increase this.
287
288 LOAD TIME: module/kernel parameter: poll_msec=[0|1]
289
290 RUN TIME: echo "1000" >/sys/devices/system/edac/mc/edac_mc_poll_msec
291
292
293============================================================================ 228============================================================================
294'mcX' DIRECTORIES 229'mcX' DIRECTORIES
295 230
@@ -537,7 +472,6 @@ Channel 1 DIMM Label control file:
537 motherboard specific and determination of this information 472 motherboard specific and determination of this information
538 must occur in userland at this time. 473 must occur in userland at this time.
539 474
540
541============================================================================ 475============================================================================
542SYSTEM LOGGING 476SYSTEM LOGGING
543 477
@@ -570,7 +504,6 @@ error type, a notice of "no info" and then an optional,
570driver-specific error message. 504driver-specific error message.
571 505
572 506
573
574============================================================================ 507============================================================================
575PCI Bus Parity Detection 508PCI Bus Parity Detection
576 509
@@ -604,6 +537,74 @@ Enable/Disable PCI Parity checking control file:
604 echo "0" >/sys/devices/system/edac/pci/check_pci_parity 537 echo "0" >/sys/devices/system/edac/pci/check_pci_parity
605 538
606 539
540Parity Count:
541
542 'pci_parity_count'
543
544 This attribute file will display the number of parity errors that
545 have been detected.
546
547
548============================================================================
549MODULE PARAMETERS
550
551Panic on UE control file:
552
553 'edac_mc_panic_on_ue'
554
555 An uncorrectable error will cause a machine panic. This is usually
556 desirable. It is a bad idea to continue when an uncorrectable error
557 occurs - it is indeterminate what was uncorrected and the operating
558 system context might be so mangled that continuing will lead to further
559 corruption. If the kernel has MCE configured, then EDAC will never
560 notice the UE.
561
562 LOAD TIME: module/kernel parameter: edac_mc_panic_on_ue=[0|1]
563
564 RUN TIME: echo "1" > /sys/module/edac_core/parameters/edac_mc_panic_on_ue
565
566
567Log UE control file:
568
569 'edac_mc_log_ue'
570
571 Generate kernel messages describing uncorrectable errors. These errors
572 are reported through the system message log system. UE statistics
573 will be accumulated even when UE logging is disabled.
574
575 LOAD TIME: module/kernel parameter: edac_mc_log_ue=[0|1]
576
577 RUN TIME: echo "1" > /sys/module/edac_core/parameters/edac_mc_log_ue
578
579
580Log CE control file:
581
582 'edac_mc_log_ce'
583
584 Generate kernel messages describing correctable errors. These
585 errors are reported through the system message log system.
586 CE statistics will be accumulated even when CE logging is disabled.
587
588 LOAD TIME: module/kernel parameter: edac_mc_log_ce=[0|1]
589
590 RUN TIME: echo "1" > /sys/module/edac_core/parameters/edac_mc_log_ce
591
592
593Polling period control file:
594
595 'edac_mc_poll_msec'
596
597 The time period, in milliseconds, for polling for error information.
598 Too small a value wastes resources. Too large a value might delay
599 necessary handling of errors and might loose valuable information for
600 locating the error. 1000 milliseconds (once each second) is the current
601 default. Systems which require all the bandwidth they can get, may
602 increase this.
603
604 LOAD TIME: module/kernel parameter: edac_mc_poll_msec=[0|1]
605
606 RUN TIME: echo "1000" > /sys/module/edac_core/parameters/edac_mc_poll_msec
607
607 608
608Panic on PCI PARITY Error: 609Panic on PCI PARITY Error:
609 610
@@ -614,21 +615,13 @@ Panic on PCI PARITY Error:
614 error has been detected. 615 error has been detected.
615 616
616 617
617 module/kernel parameter: panic_on_pci_parity=[0|1] 618 module/kernel parameter: edac_panic_on_pci_pe=[0|1]
618 619
619 Enable: 620 Enable:
620 echo "1" >/sys/devices/system/edac/pci/panic_on_pci_parity 621 echo "1" > /sys/module/edac_core/parameters/edac_panic_on_pci_pe
621 622
622 Disable: 623 Disable:
623 echo "0" >/sys/devices/system/edac/pci/panic_on_pci_parity 624 echo "0" > /sys/module/edac_core/parameters/edac_panic_on_pci_pe
624
625
626Parity Count:
627
628 'pci_parity_count'
629
630 This attribute file will display the number of parity errors that
631 have been detected.
632 625
633 626
634 627
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 09c4a1efb8e3..721c71b86e06 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -138,24 +138,6 @@ Who: Kay Sievers <kay.sievers@suse.de>
138 138
139--------------------------- 139---------------------------
140 140
141What: find_task_by_pid
142When: 2.6.26
143Why: With pid namespaces, calling this funciton will return the
144 wrong task when called from inside a namespace.
145
146 The best way to save a task pid and find a task by this
147 pid later, is to find this task's struct pid pointer (or get
148 it directly from the task) and call pid_task() later.
149
150 If someone really needs to get a task by its pid_t, then
151 he most likely needs the find_task_by_vpid() to get the
152 task from the same namespace as the current task is in, but
153 this may be not so in general.
154
155Who: Pavel Emelyanov <xemul@openvz.org>
156
157---------------------------
158
159What: ACPI procfs interface 141What: ACPI procfs interface
160When: July 2008 142When: July 2008
161Why: ACPI sysfs conversion should be finished by January 2008. 143Why: ACPI sysfs conversion should be finished by January 2008.
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index 2d5e1e582e13..bbac4f1d9056 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -96,6 +96,14 @@ shortname=lower|win95|winnt|mixed
96 emulate the Windows 95 rule for create. 96 emulate the Windows 95 rule for create.
97 Default setting is `lower'. 97 Default setting is `lower'.
98 98
99tz=UTC -- Interpret timestamps as UTC rather than local time.
100 This option disables the conversion of timestamps
101 between local time (as used by Windows on FAT) and UTC
102 (which Linux uses internally). This is particuluarly
103 useful when mounting devices (like digital cameras)
104 that are set to UTC in order to avoid the pitfalls of
105 local time.
106
99<bool>: 0,1,yes,no,true,false 107<bool>: 0,1,yes,no,true,false
100 108
101TODO 109TODO
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
index c35ca9e40d4c..18022e249c53 100644
--- a/Documentation/gpio.txt
+++ b/Documentation/gpio.txt
@@ -347,15 +347,12 @@ necessarily be nonportable.
347Dynamic definition of GPIOs is not currently standard; for example, as 347Dynamic definition of GPIOs is not currently standard; for example, as
348a side effect of configuring an add-on board with some GPIO expanders. 348a side effect of configuring an add-on board with some GPIO expanders.
349 349
350These calls are purely for kernel space, but a userspace API could be built
351on top of them.
352
353 350
354GPIO implementor's framework (OPTIONAL) 351GPIO implementor's framework (OPTIONAL)
355======================================= 352=======================================
356As noted earlier, there is an optional implementation framework making it 353As noted earlier, there is an optional implementation framework making it
357easier for platforms to support different kinds of GPIO controller using 354easier for platforms to support different kinds of GPIO controller using
358the same programming interface. 355the same programming interface. This framework is called "gpiolib".
359 356
360As a debugging aid, if debugfs is available a /sys/kernel/debug/gpio file 357As a debugging aid, if debugfs is available a /sys/kernel/debug/gpio file
361will be found there. That will list all the controllers registered through 358will be found there. That will list all the controllers registered through
@@ -392,11 +389,21 @@ either NULL or the label associated with that GPIO when it was requested.
392 389
393Platform Support 390Platform Support
394---------------- 391----------------
395To support this framework, a platform's Kconfig will "select HAVE_GPIO_LIB" 392To support this framework, a platform's Kconfig will "select" either
393ARCH_REQUIRE_GPIOLIB or ARCH_WANT_OPTIONAL_GPIOLIB
396and arrange that its <asm/gpio.h> includes <asm-generic/gpio.h> and defines 394and arrange that its <asm/gpio.h> includes <asm-generic/gpio.h> and defines
397three functions: gpio_get_value(), gpio_set_value(), and gpio_cansleep(). 395three functions: gpio_get_value(), gpio_set_value(), and gpio_cansleep().
398They may also want to provide a custom value for ARCH_NR_GPIOS. 396They may also want to provide a custom value for ARCH_NR_GPIOS.
399 397
398ARCH_REQUIRE_GPIOLIB means that the gpio-lib code will always get compiled
399into the kernel on that architecture.
400
401ARCH_WANT_OPTIONAL_GPIOLIB means the gpio-lib code defaults to off and the user
402can enable it and build it into the kernel optionally.
403
404If neither of these options are selected, the platform does not support
405GPIOs through GPIO-lib and the code cannot be enabled by the user.
406
400Trivial implementations of those functions can directly use framework 407Trivial implementations of those functions can directly use framework
401code, which always dispatches through the gpio_chip: 408code, which always dispatches through the gpio_chip:
402 409
@@ -439,4 +446,120 @@ becomes available. That may mean the device should not be registered until
439calls for that GPIO can work. One way to address such dependencies is for 446calls for that GPIO can work. One way to address such dependencies is for
440such gpio_chip controllers to provide setup() and teardown() callbacks to 447such gpio_chip controllers to provide setup() and teardown() callbacks to
441board specific code; those board specific callbacks would register devices 448board specific code; those board specific callbacks would register devices
442once all the necessary resources are available. 449once all the necessary resources are available, and remove them later when
450the GPIO controller device becomes unavailable.
451
452
453Sysfs Interface for Userspace (OPTIONAL)
454========================================
455Platforms which use the "gpiolib" implementors framework may choose to
456configure a sysfs user interface to GPIOs. This is different from the
457debugfs interface, since it provides control over GPIO direction and
458value instead of just showing a gpio state summary. Plus, it could be
459present on production systems without debugging support.
460
461Given approprate hardware documentation for the system, userspace could
462know for example that GPIO #23 controls the write protect line used to
463protect boot loader segments in flash memory. System upgrade procedures
464may need to temporarily remove that protection, first importing a GPIO,
465then changing its output state, then updating the code before re-enabling
466the write protection. In normal use, GPIO #23 would never be touched,
467and the kernel would have no need to know about it.
468
469Again depending on appropriate hardware documentation, on some systems
470userspace GPIO can be used to determine system configuration data that
471standard kernels won't know about. And for some tasks, simple userspace
472GPIO drivers could be all that the system really needs.
473
474Note that standard kernel drivers exist for common "LEDs and Buttons"
475GPIO tasks: "leds-gpio" and "gpio_keys", respectively. Use those
476instead of talking directly to the GPIOs; they integrate with kernel
477frameworks better than your userspace code could.
478
479
480Paths in Sysfs
481--------------
482There are three kinds of entry in /sys/class/gpio:
483
484 - Control interfaces used to get userspace control over GPIOs;
485
486 - GPIOs themselves; and
487
488 - GPIO controllers ("gpio_chip" instances).
489
490That's in addition to standard files including the "device" symlink.
491
492The control interfaces are write-only:
493
494 /sys/class/gpio/
495
496 "export" ... Userspace may ask the kernel to export control of
497 a GPIO to userspace by writing its number to this file.
498
499 Example: "echo 19 > export" will create a "gpio19" node
500 for GPIO #19, if that's not requested by kernel code.
501
502 "unexport" ... Reverses the effect of exporting to userspace.
503
504 Example: "echo 19 > unexport" will remove a "gpio19"
505 node exported using the "export" file.
506
507GPIO signals have paths like /sys/class/gpio/gpio42/ (for GPIO #42)
508and have the following read/write attributes:
509
510 /sys/class/gpio/gpioN/
511
512 "direction" ... reads as either "in" or "out". This value may
513 normally be written. Writing as "out" defaults to
514 initializing the value as low. To ensure glitch free
515 operation, values "low" and "high" may be written to
516 configure the GPIO as an output with that initial value.
517
518 Note that this attribute *will not exist* if the kernel
519 doesn't support changing the direction of a GPIO, or
520 it was exported by kernel code that didn't explicitly
521 allow userspace to reconfigure this GPIO's direction.
522
523 "value" ... reads as either 0 (low) or 1 (high). If the GPIO
524 is configured as an output, this value may be written;
525 any nonzero value is treated as high.
526
527GPIO controllers have paths like /sys/class/gpio/chipchip42/ (for the
528controller implementing GPIOs starting at #42) and have the following
529read-only attributes:
530
531 /sys/class/gpio/gpiochipN/
532
533 "base" ... same as N, the first GPIO managed by this chip
534
535 "label" ... provided for diagnostics (not always unique)
536
537 "ngpio" ... how many GPIOs this manges (N to N + ngpio - 1)
538
539Board documentation should in most cases cover what GPIOs are used for
540what purposes. However, those numbers are not always stable; GPIOs on
541a daughtercard might be different depending on the base board being used,
542or other cards in the stack. In such cases, you may need to use the
543gpiochip nodes (possibly in conjunction with schematics) to determine
544the correct GPIO number to use for a given signal.
545
546
547Exporting from Kernel code
548--------------------------
549Kernel code can explicitly manage exports of GPIOs which have already been
550requested using gpio_request():
551
552 /* export the GPIO to userspace */
553 int gpio_export(unsigned gpio, bool direction_may_change);
554
555 /* reverse gpio_export() */
556 void gpio_unexport();
557
558After a kernel driver requests a GPIO, it may only be made available in
559the sysfs interface by gpio_export(). The driver can control whether the
560signal direction may change. This helps drivers prevent userspace code
561from accidentally clobbering important system state.
562
563This explicit exporting can help with debugging (by making some kinds
564of experiments easier), or can provide an always-there interface that's
565suitable for documenting as part of a board support package.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 4328307a875c..0f130a4f9ba3 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2165,13 +2165,6 @@ and is between 256 and 4096 characters. It is defined in the file
2165 <deci-seconds>: poll all this frequency 2165 <deci-seconds>: poll all this frequency
2166 0: no polling (default) 2166 0: no polling (default)
2167 2167
2168 tipar.timeout= [HW,PPT]
2169 Set communications timeout in tenths of a second
2170 (default 15).
2171
2172 tipar.delay= [HW,PPT]
2173 Set inter-bit delay in microseconds (default 10).
2174
2175 tmscsim= [HW,SCSI] 2168 tmscsim= [HW,SCSI]
2176 See comment before function dc390_setup() in 2169 See comment before function dc390_setup() in
2177 drivers/scsi/tmscsim.c. 2170 drivers/scsi/tmscsim.c.
diff --git a/Documentation/moxa-smartio b/Documentation/moxa-smartio
index fe24ecc6372e..5337e80a5b96 100644
--- a/Documentation/moxa-smartio
+++ b/Documentation/moxa-smartio
@@ -1,14 +1,22 @@
1============================================================================= 1=============================================================================
2 2 MOXA Smartio/Industio Family Device Driver Installation Guide
3 MOXA Smartio Family Device Driver Ver 1.1 Installation Guide 3 for Linux Kernel 2.4.x, 2.6.x
4 for Linux Kernel 2.2.x and 2.0.3x 4 Copyright (C) 2008, Moxa Inc.
5 Copyright (C) 1999, Moxa Technologies Co, Ltd.
6============================================================================= 5=============================================================================
6Date: 01/21/2008
7
7Content 8Content
8 9
91. Introduction 101. Introduction
102. System Requirement 112. System Requirement
113. Installation 123. Installation
13 3.1 Hardware installation
14 3.2 Driver files
15 3.3 Device naming convention
16 3.4 Module driver configuration
17 3.5 Static driver configuration for Linux kernel 2.4.x and 2.6.x.
18 3.6 Custom configuration
19 3.7 Verify driver installation
124. Utilities 204. Utilities
135. Setserial 215. Setserial
146. Troubleshooting 226. Troubleshooting
@@ -16,27 +24,48 @@ Content
16----------------------------------------------------------------------------- 24-----------------------------------------------------------------------------
171. Introduction 251. Introduction
18 26
19 The Smartio family Linux driver, Ver. 1.1, supports following multiport 27 The Smartio/Industio/UPCI family Linux driver supports following multiport
20 boards. 28 boards.
21 29
22 -C104P/H/HS, C104H/PCI, C104HS/PCI, CI-104J 4 port multiport board. 30 - 2 ports multiport board
23 -C168P/H/HS, C168H/PCI 8 port multiport board. 31 CP-102U, CP-102UL, CP-102UF
24 32 CP-132U-I, CP-132UL,
25 This driver has been modified a little and cleaned up from the Moxa 33 CP-132, CP-132I, CP132S, CP-132IS,
26 contributed driver code and merged into Linux 2.2.14pre. In particular 34 CI-132, CI-132I, CI-132IS,
27 official major/minor numbers have been assigned which are different to 35 (C102H, C102HI, C102HIS, C102P, CP-102, CP-102S)
28 those the original Moxa supplied driver used. 36
37 - 4 ports multiport board
38 CP-104EL,
39 CP-104UL, CP-104JU,
40 CP-134U, CP-134U-I,
41 C104H/PCI, C104HS/PCI,
42 CP-114, CP-114I, CP-114S, CP-114IS, CP-114UL,
43 C104H, C104HS,
44 CI-104J, CI-104JS,
45 CI-134, CI-134I, CI-134IS,
46 (C114HI, CT-114I, C104P)
47 POS-104UL,
48 CB-114,
49 CB-134I
50
51 - 8 ports multiport board
52 CP-118EL, CP-168EL,
53 CP-118U, CP-168U,
54 C168H/PCI,
55 C168H, C168HS,
56 (C168P),
57 CB-108
29 58
30 This driver and installation procedure have been developed upon Linux Kernel 59 This driver and installation procedure have been developed upon Linux Kernel
31 2.2.5 and backward compatible to 2.0.3x. This driver supports Intel x86 and 60 2.4.x and 2.6.x. This driver supports Intel x86 hardware platform. In order
32 Alpha hardware platform. In order to maintain compatibility, this version 61 to maintain compatibility, this version has also been properly tested with
33 has also been properly tested with RedHat, OpenLinux, TurboLinux and 62 RedHat, Mandrake, Fedora and S.u.S.E Linux. However, if compatibility problem
34 S.u.S.E Linux. However, if compatibility problem occurs, please contact 63 occurs, please contact Moxa at support@moxa.com.tw.
35 Moxa at support@moxa.com.tw.
36 64
37 In addition to device driver, useful utilities are also provided in this 65 In addition to device driver, useful utilities are also provided in this
38 version. They are 66 version. They are
39 - msdiag Diagnostic program for detecting installed Moxa Smartio boards. 67 - msdiag Diagnostic program for displaying installed Moxa
68 Smartio/Industio boards.
40 - msmon Monitor program to observe data count and line status signals. 69 - msmon Monitor program to observe data count and line status signals.
41 - msterm A simple terminal program which is useful in testing serial 70 - msterm A simple terminal program which is useful in testing serial
42 ports. 71 ports.
@@ -47,8 +76,7 @@ Content
47 GNU General Public License in this version. Please refer to GNU General 76 GNU General Public License in this version. Please refer to GNU General
48 Public License announcement in each source code file for more detail. 77 Public License announcement in each source code file for more detail.
49 78
50 In Moxa's ftp sites, you may always find latest driver at 79 In Moxa's Web sites, you may always find latest driver at http://web.moxa.com.
51 ftp://ftp.moxa.com or ftp://ftp.moxa.com.tw.
52 80
53 This version of driver can be installed as Loadable Module (Module driver) 81 This version of driver can be installed as Loadable Module (Module driver)
54 or built-in into kernel (Static driver). You may refer to following 82 or built-in into kernel (Static driver). You may refer to following
@@ -61,8 +89,8 @@ Content
61 89
62----------------------------------------------------------------------------- 90-----------------------------------------------------------------------------
632. System Requirement 912. System Requirement
64 - Hardware platform: Intel x86 or Alpha machine 92 - Hardware platform: Intel x86 machine
65 - Kernel version: 2.0.3x or 2.2.x 93 - Kernel version: 2.4.x or 2.6.x
66 - gcc version 2.72 or later 94 - gcc version 2.72 or later
67 - Maximum 4 boards can be installed in combination 95 - Maximum 4 boards can be installed in combination
68 96
@@ -70,9 +98,18 @@ Content
703. Installation 983. Installation
71 99
72 3.1 Hardware installation 100 3.1 Hardware installation
101 3.2 Driver files
102 3.3 Device naming convention
103 3.4 Module driver configuration
104 3.5 Static driver configuration for Linux kernel 2.4.x, 2.6.x.
105 3.6 Custom configuration
106 3.7 Verify driver installation
107
108
109 3.1 Hardware installation
73 110
74 There are two types of buses, ISA and PCI, for Smartio family multiport 111 There are two types of buses, ISA and PCI, for Smartio/Industio
75 board. 112 family multiport board.
76 113
77 ISA board 114 ISA board
78 --------- 115 ---------
@@ -81,47 +118,57 @@ Content
81 installation procedure in User's Manual before proceed any further. 118 installation procedure in User's Manual before proceed any further.
82 Please make sure the JP1 is open after the ISA board is set properly. 119 Please make sure the JP1 is open after the ISA board is set properly.
83 120
84 PCI board 121 PCI/UPCI board
85 --------- 122 --------------
86 You may need to adjust IRQ usage in BIOS to avoid from IRQ conflict 123 You may need to adjust IRQ usage in BIOS to avoid from IRQ conflict
87 with other ISA devices. Please refer to hardware installation 124 with other ISA devices. Please refer to hardware installation
88 procedure in User's Manual in advance. 125 procedure in User's Manual in advance.
89 126
90 IRQ Sharing 127 PCI IRQ Sharing
91 ----------- 128 -----------
92 Each port within the same multiport board shares the same IRQ. Up to 129 Each port within the same multiport board shares the same IRQ. Up to
93 4 Moxa Smartio Family multiport boards can be installed together on 130 4 Moxa Smartio/Industio PCI Family multiport boards can be installed
94 one system and they can share the same IRQ. 131 together on one system and they can share the same IRQ.
132
95 133
96 3.2 Driver files and device naming convention 134 3.2 Driver files
97 135
98 The driver file may be obtained from ftp, CD-ROM or floppy disk. The 136 The driver file may be obtained from ftp, CD-ROM or floppy disk. The
99 first step, anyway, is to copy driver file "mxser.tgz" into specified 137 first step, anyway, is to copy driver file "mxser.tgz" into specified
100 directory. e.g. /moxa. The execute commands as below. 138 directory. e.g. /moxa. The execute commands as below.
101 139
140 # cd /
141 # mkdir moxa
102 # cd /moxa 142 # cd /moxa
103 # tar xvf /dev/fd0 143 # tar xvf /dev/fd0
144
104 or 145 or
146
147 # cd /
148 # mkdir moxa
105 # cd /moxa 149 # cd /moxa
106 # cp /mnt/cdrom/<driver directory>/mxser.tgz . 150 # cp /mnt/cdrom/<driver directory>/mxser.tgz .
107 # tar xvfz mxser.tgz 151 # tar xvfz mxser.tgz
108 152
153
154 3.3 Device naming convention
155
109 You may find all the driver and utilities files in /moxa/mxser. 156 You may find all the driver and utilities files in /moxa/mxser.
110 Following installation procedure depends on the model you'd like to 157 Following installation procedure depends on the model you'd like to
111 run the driver. If you prefer module driver, please refer to 3.3. 158 run the driver. If you prefer module driver, please refer to 3.4.
112 If static driver is required, please refer to 3.4. 159 If static driver is required, please refer to 3.5.
113 160
114 Dialin and callout port 161 Dialin and callout port
115 ----------------------- 162 -----------------------
116 This driver remains traditional serial device properties. There're 163 This driver remains traditional serial device properties. There are
117 two special file name for each serial port. One is dial-in port 164 two special file name for each serial port. One is dial-in port
118 which is named "ttyMxx". For callout port, the naming convention 165 which is named "ttyMxx". For callout port, the naming convention
119 is "cumxx". 166 is "cumxx".
120 167
121 Device naming when more than 2 boards installed 168 Device naming when more than 2 boards installed
122 ----------------------------------------------- 169 -----------------------------------------------
123 Naming convention for each Smartio multiport board is pre-defined 170 Naming convention for each Smartio/Industio multiport board is
124 as below. 171 pre-defined as below.
125 172
126 Board Num. Dial-in Port Callout port 173 Board Num. Dial-in Port Callout port
127 1st board ttyM0 - ttyM7 cum0 - cum7 174 1st board ttyM0 - ttyM7 cum0 - cum7
@@ -129,6 +176,12 @@ Content
129 3rd board ttyM16 - ttyM23 cum16 - cum23 176 3rd board ttyM16 - ttyM23 cum16 - cum23
130 4th board ttyM24 - ttym31 cum24 - cum31 177 4th board ttyM24 - ttym31 cum24 - cum31
131 178
179
180 !!!!!!!!!!!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
181 Under Kernel 2.6 the cum Device is Obsolete. So use ttyM*
182 device instead.
183 !!!!!!!!!!!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
184
132 Board sequence 185 Board sequence
133 -------------- 186 --------------
134 This driver will activate ISA boards according to the parameter set 187 This driver will activate ISA boards according to the parameter set
@@ -138,69 +191,131 @@ Content
138 For PCI boards, their sequence will be after ISA boards and C168H/PCI 191 For PCI boards, their sequence will be after ISA boards and C168H/PCI
139 has higher priority than C104H/PCI boards. 192 has higher priority than C104H/PCI boards.
140 193
141 3.3 Module driver configuration 194 3.4 Module driver configuration
142 Module driver is easiest way to install. If you prefer static driver 195 Module driver is easiest way to install. If you prefer static driver
143 installation, please skip this paragraph. 196 installation, please skip this paragraph.
144 1. Find "Makefile" in /moxa/mxser, then run
145 197
146 # make install 198
199 ------------- Prepare to use the MOXA driver--------------------
200 3.4.1 Create tty device with correct major number
201 Before using MOXA driver, your system must have the tty devices
202 which are created with driver's major number. We offer one shell
203 script "msmknod" to simplify the procedure.
204 This step is only needed to be executed once. But you still
205 need to do this procedure when:
206 a. You change the driver's major number. Please refer the "3.7"
207 section.
208 b. Your total installed MOXA boards number is changed. Maybe you
209 add/delete one MOXA board.
210 c. You want to change the tty name. This needs to modify the
211 shell script "msmknod"
212
213 The procedure is:
214 # cd /moxa/mxser/driver
215 # ./msmknod
216
217 This shell script will require the major number for dial-in
218 device and callout device to create tty device. You also need
219 to specify the total installed MOXA board number. Default major
220 numbers for dial-in device and callout device are 30, 35. If
221 you need to change to other number, please refer section "3.7"
222 for more detailed procedure.
223 Msmknod will delete any special files occupying the same device
224 naming.
225
226 3.4.2 Build the MOXA driver and utilities
227 Before using the MOXA driver and utilities, you need compile the
228 all the source code. This step is only need to be executed once.
229 But you still re-compile the source code if you modify the source
230 code. For example, if you change the driver's major number (see
231 "3.7" section), then you need to do this step again.
232
233 Find "Makefile" in /moxa/mxser, then run
234
235 # make clean; make install
236
237 !!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!
238 For Red Hat 9, Red Hat Enterprise Linux AS3/ES3/WS3 & Fedora Core1:
239 # make clean; make installsp1
240
241 For Red Hat Enterprise Linux AS4/ES4/WS4:
242 # make clean; make installsp2
243 !!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!
147 244
148 The driver files "mxser.o" and utilities will be properly compiled 245 The driver files "mxser.o" and utilities will be properly compiled
149 and copied to system directories respectively.Then run 246 and copied to system directories respectively.
150 247
151 # insmod mxser 248 ------------- Load MOXA driver--------------------
249 3.4.3 Load the MOXA driver
152 250
153 to activate the modular driver. You may run "lsmod" to check 251 # modprobe mxser <argument>
154 if "mxser.o" is activated.
155 252
156 2. Create special files by executing "msmknod". 253 will activate the module driver. You may run "lsmod" to check
157 # cd /moxa/mxser/driver 254 if "mxser" is activated. If the MOXA board is ISA board, the
158 # ./msmknod 255 <argument> is needed. Please refer to section "3.4.5" for more
256 information.
257
258
259 ------------- Load MOXA driver on boot --------------------
260 3.4.4 For the above description, you may manually execute
261 "modprobe mxser" to activate this driver and run
262 "rmmod mxser" to remove it.
263 However, it's better to have a boot time configuration to
264 eliminate manual operation. Boot time configuration can be
265 achieved by rc file. We offer one "rc.mxser" file to simplify
266 the procedure under "moxa/mxser/driver".
159 267
160 Default major numbers for dial-in device and callout device are 268 But if you use ISA board, please modify the "modprobe ..." command
161 174, 175. Msmknod will delete any special files occupying the same 269 to add the argument (see "3.4.5" section). After modifying the
162 device naming. 270 rc.mxser, please try to execute "/moxa/mxser/driver/rc.mxser"
271 manually to make sure the modification is ok. If any error
272 encountered, please try to modify again. If the modification is
273 completed, follow the below step.
163 274
164 3. Up to now, you may manually execute "insmod mxser" to activate 275 Run following command for setting rc files.
165 this driver and run "rmmod mxser" to remove it. However, it's
166 better to have a boot time configuration to eliminate manual
167 operation.
168 Boot time configuration can be achieved by rc file. Run following
169 command for setting rc files.
170 276
171 # cd /moxa/mxser/driver 277 # cd /moxa/mxser/driver
172 # cp ./rc.mxser /etc/rc.d 278 # cp ./rc.mxser /etc/rc.d
173 # cd /etc/rc.d 279 # cd /etc/rc.d
174 280
175 You may have to modify part of the content in rc.mxser to specify 281 Check "rc.serial" is existed or not. If "rc.serial" doesn't exist,
176 parameters for ISA board. Please refer to rc.mxser for more detail. 282 create it by vi, run "chmod 755 rc.serial" to change the permission.
177 Find "rc.serial". If "rc.serial" doesn't exist, create it by vi. 283 Add "/etc/rc.d/rc.mxser" in last line,
178 Add "rc.mxser" in last line. Next, open rc.local by vi
179 and append following content.
180 284
181 if [ -f /etc/rc.d/rc.serial ]; then 285 Reboot and check if moxa.o activated by "lsmod" command.
182 sh /etc/rc.d/rc.serial
183 fi
184 286
185 4. Reboot and check if mxser.o activated by "lsmod" command. 287 3.4.5. If you'd like to drive Smartio/Industio ISA boards in the system,
186 5. If you'd like to drive Smartio ISA boards in the system, you'll 288 you'll have to add parameter to specify CAP address of given
187 have to add parameter to specify CAP address of given board while 289 board while activating "mxser.o". The format for parameters are
188 activating "mxser.o". The format for parameters are as follows. 290 as follows.
189 291
190 insmod mxser ioaddr=0x???,0x???,0x???,0x??? 292 modprobe mxser ioaddr=0x???,0x???,0x???,0x???
191 | | | | 293 | | | |
192 | | | +- 4th ISA board 294 | | | +- 4th ISA board
193 | | +------ 3rd ISA board 295 | | +------ 3rd ISA board
194 | +------------ 2nd ISA board 296 | +------------ 2nd ISA board
195 +------------------- 1st ISA board 297 +------------------- 1st ISA board
196 298
197 3.4 Static driver configuration 299 3.5 Static driver configuration for Linux kernel 2.4.x and 2.6.x
300
301 Note: To use static driver, you must install the linux kernel
302 source package.
303
304 3.5.1 Backup the built-in driver in the kernel.
305 # cd /usr/src/linux/drivers/char
306 # mv mxser.c mxser.c.old
307
308 For Red Hat 7.x user, you need to create link:
309 # cd /usr/src
310 # ln -s linux-2.4 linux
198 311
199 1. Create link 312 3.5.2 Create link
200 # cd /usr/src/linux/drivers/char 313 # cd /usr/src/linux/drivers/char
201 # ln -s /moxa/mxser/driver/mxser.c mxser.c 314 # ln -s /moxa/mxser/driver/mxser.c mxser.c
202 315
203 2. Add CAP address list for ISA boards 316 3.5.3 Add CAP address list for ISA boards. For PCI boards user,
317 please skip this step.
318
204 In module mode, the CAP address for ISA board is given by 319 In module mode, the CAP address for ISA board is given by
205 parameter. In static driver configuration, you'll have to 320 parameter. In static driver configuration, you'll have to
206 assign it within driver's source code. If you will not 321 assign it within driver's source code. If you will not
@@ -222,73 +337,55 @@ Content
222 static int mxserBoardCAP[] 337 static int mxserBoardCAP[]
223 = {0x280, 0x180, 0x00, 0x00}; 338 = {0x280, 0x180, 0x00, 0x00};
224 339
225 3. Modify tty_io.c 340 3.5.4 Setup kernel configuration
226 # cd /usr/src/linux/drivers/char/
227 # vi tty_io.c
228 Find pty_init(), insert "mxser_init()" as
229 341
230 pty_init(); 342 Configure the kernel:
231 mxser_init();
232 343
233 4. Modify tty.h 344 # cd /usr/src/linux
234 # cd /usr/src/linux/include/linux 345 # make menuconfig
235 # vi tty.h
236 Find extern int tty_init(void), insert "mxser_init()" as
237 346
238 extern int tty_init(void); 347 You will go into a menu-driven system. Please select [Character
239 extern int mxser_init(void); 348 devices][Non-standard serial port support], enable the [Moxa
240 349 SmartIO support] driver with "[*]" for built-in (not "[M]"), then
241 5. Modify Makefile 350 select [Exit] to exit this program.
242 # cd /usr/src/linux/drivers/char
243 # vi Makefile
244 Find L_OBJS := tty_io.o ...... random.o, add
245 "mxser.o" at last of this line as
246 L_OBJS := tty_io.o ....... mxser.o
247 351
248 6. Rebuild kernel 352 3.5.5 Rebuild kernel
249 The following are for Linux kernel rebuilding,for your reference only. 353 The following are for Linux kernel rebuilding, for your
354 reference only.
250 For appropriate details, please refer to the Linux document. 355 For appropriate details, please refer to the Linux document.
251 356
252 If 'lilo' utility is installed, please use 'make zlilo' to rebuild
253 kernel. If 'lilo' is not installed, please follow the following steps.
254
255 a. cd /usr/src/linux 357 a. cd /usr/src/linux
256 b. make clean /* take a few minutes */ 358 b. make clean /* take a few minutes */
257 c. make bzImage /* take probably 10-20 minutes */ 359 c. make dep /* take a few minutes */
258 d. Backup original boot kernel. /* optional step */ 360 d. make bzImage /* take probably 10-20 minutes */
259 e. cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz 361 e. make install /* copy boot image to correct position */
260 f. Please make sure the boot kernel (vmlinuz) is in the 362 f. Please make sure the boot kernel (vmlinuz) is in the
261 correct position. If you use 'lilo' utility, you should 363 correct position.
262 check /etc/lilo.conf 'image' item specified the path 364 g. If you use 'lilo' utility, you should check /etc/lilo.conf
263 which is the 'vmlinuz' path, or you will load wrong 365 'image' item specified the path which is the 'vmlinuz' path,
264 (or old) boot kernel image (vmlinuz). 366 or you will load wrong (or old) boot kernel image (vmlinuz).
265 g. chmod 400 /vmlinuz 367 After checking /etc/lilo.conf, please run "lilo".
266 h. lilo 368
267 i. rdev -R /vmlinuz 1 369 Note that if the result of "make bzImage" is ERROR, then you have to
268 j. sync 370 go back to Linux configuration Setup. Type "make menuconfig" in
269 371 directory /usr/src/linux.
270 Note that if the result of "make zImage" is ERROR, then you have to 372
271 go back to Linux configuration Setup. Type "make config" in directory 373
272 /usr/src/linux or "setup". 374 3.5.6 Make tty device and special file
273
274 Since system include file, /usr/src/linux/include/linux/interrupt.h,
275 is modified each time the MOXA driver is installed, kernel rebuilding
276 is inevitable. And it takes about 10 to 20 minutes depends on the
277 machine.
278
279 7. Make utility
280 # cd /moxa/mxser/utility
281 # make install
282
283 8. Make special file
284 # cd /moxa/mxser/driver 375 # cd /moxa/mxser/driver
285 # ./msmknod 376 # ./msmknod
286 377
287 9. Reboot 378 3.5.7 Make utility
379 # cd /moxa/mxser/utility
380 # make clean; make install
381
382 3.5.8 Reboot
288 383
289 3.5 Custom configuration 384
385
386 3.6 Custom configuration
290 Although this driver already provides you default configuration, you 387 Although this driver already provides you default configuration, you
291 still can change the device name and major number.The instruction to 388 still can change the device name and major number. The instruction to
292 change these parameters are shown as below. 389 change these parameters are shown as below.
293 390
294 Change Device name 391 Change Device name
@@ -306,33 +403,37 @@ Content
306 2 free major numbers for this driver. There are 3 steps to change 403 2 free major numbers for this driver. There are 3 steps to change
307 major numbers. 404 major numbers.
308 405
309 1. Find free major numbers 406 3.6.1 Find free major numbers
310 In /proc/devices, you may find all the major numbers occupied 407 In /proc/devices, you may find all the major numbers occupied
311 in the system. Please select 2 major numbers that are available. 408 in the system. Please select 2 major numbers that are available.
312 e.g. 40, 45. 409 e.g. 40, 45.
313 2. Create special files 410 3.6.2 Create special files
314 Run /moxa/mxser/driver/msmknod to create special files with 411 Run /moxa/mxser/driver/msmknod to create special files with
315 specified major numbers. 412 specified major numbers.
316 3. Modify driver with new major number 413 3.6.3 Modify driver with new major number
317 Run vi to open /moxa/mxser/driver/mxser.c. Locate the line 414 Run vi to open /moxa/mxser/driver/mxser.c. Locate the line
318 contains "MXSERMAJOR". Change the content as below. 415 contains "MXSERMAJOR". Change the content as below.
319 #define MXSERMAJOR 40 416 #define MXSERMAJOR 40
320 #define MXSERCUMAJOR 45 417 #define MXSERCUMAJOR 45
321 4. Run # make install in /moxa/mxser/driver. 418 3.6.4 Run "make clean; make install" in /moxa/mxser/driver.
322 419
323 3.6 Verify driver installation 420 3.7 Verify driver installation
324 You may refer to /var/log/messages to check the latest status 421 You may refer to /var/log/messages to check the latest status
325 log reported by this driver whenever it's activated. 422 log reported by this driver whenever it's activated.
423
326----------------------------------------------------------------------------- 424-----------------------------------------------------------------------------
3274. Utilities 4254. Utilities
328 There are 3 utilities contained in this driver. They are msdiag, msmon and 426 There are 3 utilities contained in this driver. They are msdiag, msmon and
329 msterm. These 3 utilities are released in form of source code. They should 427 msterm. These 3 utilities are released in form of source code. They should
330 be compiled into executable file and copied into /usr/bin. 428 be compiled into executable file and copied into /usr/bin.
331 429
430 Before using these utilities, please load driver (refer 3.4 & 3.5) and
431 make sure you had run the "msmknod" utility.
432
332 msdiag - Diagnostic 433 msdiag - Diagnostic
333 -------------------- 434 --------------------
334 This utility provides the function to detect what Moxa Smartio multiport 435 This utility provides the function to display what Moxa Smartio/Industio
335 board exists in the system. 436 board found by driver in the system.
336 437
337 msmon - Port Monitoring 438 msmon - Port Monitoring
338 ----------------------- 439 -----------------------
@@ -353,12 +454,13 @@ Content
353 application, for example, sending AT command to a modem connected to the 454 application, for example, sending AT command to a modem connected to the
354 port or used as a terminal for login purpose. Note that this is only a 455 port or used as a terminal for login purpose. Note that this is only a
355 dumb terminal emulation without handling full screen operation. 456 dumb terminal emulation without handling full screen operation.
457
356----------------------------------------------------------------------------- 458-----------------------------------------------------------------------------
3575. Setserial 4595. Setserial
358 460
359 Supported Setserial parameters are listed as below. 461 Supported Setserial parameters are listed as below.
360 462
361 uart set UART type(16450-->disable FIFO, 16550A-->enable FIFO) 463 uart set UART type(16450-->disable FIFO, 16550A-->enable FIFO)
362 close_delay set the amount of time(in 1/100 of a second) that DTR 464 close_delay set the amount of time(in 1/100 of a second) that DTR
363 should be kept low while being closed. 465 should be kept low while being closed.
364 closing_wait set the amount of time(in 1/100 of a second) that the 466 closing_wait set the amount of time(in 1/100 of a second) that the
@@ -366,7 +468,13 @@ Content
366 being closed, before the receiver is disable. 468 being closed, before the receiver is disable.
367 spd_hi Use 57.6kb when the application requests 38.4kb. 469 spd_hi Use 57.6kb when the application requests 38.4kb.
368 spd_vhi Use 115.2kb when the application requests 38.4kb. 470 spd_vhi Use 115.2kb when the application requests 38.4kb.
471 spd_shi Use 230.4kb when the application requests 38.4kb.
472 spd_warp Use 460.8kb when the application requests 38.4kb.
369 spd_normal Use 38.4kb when the application requests 38.4kb. 473 spd_normal Use 38.4kb when the application requests 38.4kb.
474 spd_cust Use the custom divisor to set the speed when the
475 application requests 38.4kb.
476 divisor This option set the custom divison.
477 baud_base This option set the base baud rate.
370 478
371----------------------------------------------------------------------------- 479-----------------------------------------------------------------------------
3726. Troubleshooting 4806. Troubleshooting
@@ -375,8 +483,9 @@ Content
375 possible. If all the possible solutions fail, please contact our technical 483 possible. If all the possible solutions fail, please contact our technical
376 support team to get more help. 484 support team to get more help.
377 485
378 Error msg: More than 4 Moxa Smartio family boards found. Fifth board and 486
379 after are ignored. 487 Error msg: More than 4 Moxa Smartio/Industio family boards found. Fifth board
488 and after are ignored.
380 Solution: 489 Solution:
381 To avoid this problem, please unplug fifth and after board, because Moxa 490 To avoid this problem, please unplug fifth and after board, because Moxa
382 driver supports up to 4 boards. 491 driver supports up to 4 boards.
@@ -384,7 +493,7 @@ Content
384 Error msg: Request_irq fail, IRQ(?) may be conflict with another device. 493 Error msg: Request_irq fail, IRQ(?) may be conflict with another device.
385 Solution: 494 Solution:
386 Other PCI or ISA devices occupy the assigned IRQ. If you are not sure 495 Other PCI or ISA devices occupy the assigned IRQ. If you are not sure
387 which device causes the situation,please check /proc/interrupts to find 496 which device causes the situation, please check /proc/interrupts to find
388 free IRQ and simply change another free IRQ for Moxa board. 497 free IRQ and simply change another free IRQ for Moxa board.
389 498
390 Error msg: Board #: C1xx Series(CAP=xxx) interrupt number invalid. 499 Error msg: Board #: C1xx Series(CAP=xxx) interrupt number invalid.
@@ -397,15 +506,18 @@ Content
397 Moxa ISA board needs an interrupt vector.Please refer to user's manual 506 Moxa ISA board needs an interrupt vector.Please refer to user's manual
398 "Hardware Installation" chapter to set interrupt vector. 507 "Hardware Installation" chapter to set interrupt vector.
399 508
400 Error msg: Couldn't install MOXA Smartio family driver! 509 Error msg: Couldn't install MOXA Smartio/Industio family driver!
401 Solution: 510 Solution:
402 Load Moxa driver fail, the major number may conflict with other devices. 511 Load Moxa driver fail, the major number may conflict with other devices.
403 Please refer to previous section 3.5 to change a free major number for 512 Please refer to previous section 3.7 to change a free major number for
404 Moxa driver. 513 Moxa driver.
405 514
406 Error msg: Couldn't install MOXA Smartio family callout driver! 515 Error msg: Couldn't install MOXA Smartio/Industio family callout driver!
407 Solution: 516 Solution:
408 Load Moxa callout driver fail, the callout device major number may 517 Load Moxa callout driver fail, the callout device major number may
409 conflict with other devices. Please refer to previous section 3.5 to 518 conflict with other devices. Please refer to previous section 3.7 to
410 change a free callout device major number for Moxa driver. 519 change a free callout device major number for Moxa driver.
520
521
411----------------------------------------------------------------------------- 522-----------------------------------------------------------------------------
523
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index ea1b70b35793..99514ced82c5 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -59,6 +59,7 @@ Table of Contents
59 p) Freescale Synchronous Serial Interface 59 p) Freescale Synchronous Serial Interface
60 q) USB EHCI controllers 60 q) USB EHCI controllers
61 r) MDIO on GPIOs 61 r) MDIO on GPIOs
62 s) SPI busses
62 63
63 VII - Marvell Discovery mv64[345]6x System Controller chips 64 VII - Marvell Discovery mv64[345]6x System Controller chips
64 1) The /system-controller node 65 1) The /system-controller node
@@ -1883,6 +1884,62 @@ platforms are moved over to use the flattened-device-tree model.
1883 &qe_pio_c 6>; 1884 &qe_pio_c 6>;
1884 }; 1885 };
1885 1886
1887 s) SPI (Serial Peripheral Interface) busses
1888
1889 SPI busses can be described with a node for the SPI master device
1890 and a set of child nodes for each SPI slave on the bus. For this
1891 discussion, it is assumed that the system's SPI controller is in
1892 SPI master mode. This binding does not describe SPI controllers
1893 in slave mode.
1894
1895 The SPI master node requires the following properties:
1896 - #address-cells - number of cells required to define a chip select
1897 address on the SPI bus.
1898 - #size-cells - should be zero.
1899 - compatible - name of SPI bus controller following generic names
1900 recommended practice.
1901 No other properties are required in the SPI bus node. It is assumed
1902 that a driver for an SPI bus device will understand that it is an SPI bus.
1903 However, the binding does not attempt to define the specific method for
1904 assigning chip select numbers. Since SPI chip select configuration is
1905 flexible and non-standardized, it is left out of this binding with the
1906 assumption that board specific platform code will be used to manage
1907 chip selects. Individual drivers can define additional properties to
1908 support describing the chip select layout.
1909
1910 SPI slave nodes must be children of the SPI master node and can
1911 contain the following properties.
1912 - reg - (required) chip select address of device.
1913 - compatible - (required) name of SPI device following generic names
1914 recommended practice
1915 - spi-max-frequency - (required) Maximum SPI clocking speed of device in Hz
1916 - spi-cpol - (optional) Empty property indicating device requires
1917 inverse clock polarity (CPOL) mode
1918 - spi-cpha - (optional) Empty property indicating device requires
1919 shifted clock phase (CPHA) mode
1920
1921 SPI example for an MPC5200 SPI bus:
1922 spi@f00 {
1923 #address-cells = <1>;
1924 #size-cells = <0>;
1925 compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
1926 reg = <0xf00 0x20>;
1927 interrupts = <2 13 0 2 14 0>;
1928 interrupt-parent = <&mpc5200_pic>;
1929
1930 ethernet-switch@0 {
1931 compatible = "micrel,ks8995m";
1932 spi-max-frequency = <1000000>;
1933 reg = <0>;
1934 };
1935
1936 codec@1 {
1937 compatible = "ti,tlv320aic26";
1938 spi-max-frequency = <100000>;
1939 reg = <1>;
1940 };
1941 };
1942
1886VII - Marvell Discovery mv64[345]6x System Controller chips 1943VII - Marvell Discovery mv64[345]6x System Controller chips
1887=========================================================== 1944===========================================================
1888 1945
diff --git a/Documentation/unaligned-memory-access.txt b/Documentation/unaligned-memory-access.txt
index b0472ac5226a..f866c72291bf 100644
--- a/Documentation/unaligned-memory-access.txt
+++ b/Documentation/unaligned-memory-access.txt
@@ -218,9 +218,35 @@ If use of such macros is not convenient, another option is to use memcpy(),
218where the source or destination (or both) are of type u8* or unsigned char*. 218where the source or destination (or both) are of type u8* or unsigned char*.
219Due to the byte-wise nature of this operation, unaligned accesses are avoided. 219Due to the byte-wise nature of this operation, unaligned accesses are avoided.
220 220
221
222Alignment vs. Networking
223========================
224
225On architectures that require aligned loads, networking requires that the IP
226header is aligned on a four-byte boundary to optimise the IP stack. For
227regular ethernet hardware, the constant NET_IP_ALIGN is used. On most
228architectures this constant has the value 2 because the normal ethernet
229header is 14 bytes long, so in order to get proper alignment one needs to
230DMA to an address which can be expressed as 4*n + 2. One notable exception
231here is powerpc which defines NET_IP_ALIGN to 0 because DMA to unaligned
232addresses can be very expensive and dwarf the cost of unaligned loads.
233
234For some ethernet hardware that cannot DMA to unaligned addresses like
2354*n+2 or non-ethernet hardware, this can be a problem, and it is then
236required to copy the incoming frame into an aligned buffer. Because this is
237unnecessary on architectures that can do unaligned accesses, the code can be
238made dependent on CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS like so:
239
240#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
241 skb = original skb
242#else
243 skb = copy skb
244#endif
245
221-- 246--
222Author: Daniel Drake <dsd@gentoo.org> 247Authors: Daniel Drake <dsd@gentoo.org>,
248 Johannes Berg <johannes@sipsolutions.net>
223With help from: Alan Cox, Avuton Olrich, Heikki Orsila, Jan Engelhardt, 249With help from: Alan Cox, Avuton Olrich, Heikki Orsila, Jan Engelhardt,
224Johannes Berg, Kyle McMartin, Kyle Moffett, Randy Dunlap, Robert Hancock, 250Kyle McMartin, Kyle Moffett, Randy Dunlap, Robert Hancock, Uli Kunitz,
225Uli Kunitz, Vadim Lobanov 251Vadim Lobanov
226 252