~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/parport.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/parport.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/parport.rst (Version linux-6.9.12)


  1 Parport                                             1 Parport
  2 +++++++                                             2 +++++++
  3                                                     3 
  4 The ``parport`` code provides parallel-port su      4 The ``parport`` code provides parallel-port support under Linux.  This
  5 includes the ability to share one port between      5 includes the ability to share one port between multiple device
  6 drivers.                                            6 drivers.
  7                                                     7 
  8 You can pass parameters to the ``parport`` cod      8 You can pass parameters to the ``parport`` code to override its automatic
  9 detection of your hardware.  This is particula      9 detection of your hardware.  This is particularly useful if you want
 10 to use IRQs, since in general these can't be a     10 to use IRQs, since in general these can't be autoprobed successfully.
 11 By default IRQs are not used even if they **ca     11 By default IRQs are not used even if they **can** be probed.  This is
 12 because there are a lot of people using the sa     12 because there are a lot of people using the same IRQ for their
 13 parallel port and a sound card or network card     13 parallel port and a sound card or network card.
 14                                                    14 
 15 The ``parport`` code is split into two parts:      15 The ``parport`` code is split into two parts: generic (which deals with
 16 port-sharing) and architecture-dependent (whic     16 port-sharing) and architecture-dependent (which deals with actually
 17 using the port).                                   17 using the port).
 18                                                    18 
 19                                                    19 
 20 Parport as modules                                 20 Parport as modules
 21 ==================                                 21 ==================
 22                                                    22 
 23 If you load the `parport`` code as a module, s     23 If you load the `parport`` code as a module, say::
 24                                                    24 
 25         # insmod parport                           25         # insmod parport
 26                                                    26 
 27 to load the generic ``parport`` code.  You the     27 to load the generic ``parport`` code.  You then must load the
 28 architecture-dependent code with (for example)     28 architecture-dependent code with (for example)::
 29                                                    29 
 30         # insmod parport_pc io=0x3bc,0x378,0x2     30         # insmod parport_pc io=0x3bc,0x378,0x278 irq=none,7,auto
 31                                                    31 
 32 to tell the ``parport`` code that you want thr     32 to tell the ``parport`` code that you want three PC-style ports, one at
 33 0x3bc with no IRQ, one at 0x378 using IRQ 7, a     33 0x3bc with no IRQ, one at 0x378 using IRQ 7, and one at 0x278 with an
 34 auto-detected IRQ.  Currently, PC-style (``par     34 auto-detected IRQ.  Currently, PC-style (``parport_pc``), Sun ``bpp``,
 35 Amiga, Atari, and MFC3 hardware is supported.      35 Amiga, Atari, and MFC3 hardware is supported.
 36                                                    36 
 37 PCI parallel I/O card support comes from ``par     37 PCI parallel I/O card support comes from ``parport_pc``.  Base I/O
 38 addresses should not be specified for supporte     38 addresses should not be specified for supported PCI cards since they
 39 are automatically detected.                        39 are automatically detected.
 40                                                    40 
 41                                                    41 
 42 modprobe                                           42 modprobe
 43 --------                                           43 --------
 44                                                    44 
 45 If you use modprobe , you will find it useful      45 If you use modprobe , you will find it useful to add lines as below to a
 46 configuration file in /etc/modprobe.d/ directo     46 configuration file in /etc/modprobe.d/ directory::
 47                                                    47 
 48         alias parport_lowlevel parport_pc          48         alias parport_lowlevel parport_pc
 49         options parport_pc io=0x378,0x278 irq=     49         options parport_pc io=0x378,0x278 irq=7,auto
 50                                                    50 
 51 modprobe will load ``parport_pc`` (with the op     51 modprobe will load ``parport_pc`` (with the options ``io=0x378,0x278 irq=7,auto``)
 52 whenever a parallel port device driver (such a     52 whenever a parallel port device driver (such as ``lp``) is loaded.
 53                                                    53 
 54 Note that these are example lines only!  You s     54 Note that these are example lines only!  You shouldn't in general need
 55 to specify any options to ``parport_pc`` in or     55 to specify any options to ``parport_pc`` in order to be able to use a
 56 parallel port.                                     56 parallel port.
 57                                                    57 
 58                                                    58 
 59 Parport probe [optional]                           59 Parport probe [optional]
 60 ------------------------                           60 ------------------------
 61                                                    61 
 62 In 2.2 kernels there was a module called ``par     62 In 2.2 kernels there was a module called ``parport_probe``, which was used
 63 for collecting IEEE 1284 device ID information     63 for collecting IEEE 1284 device ID information.  This has now been
 64 enhanced and now lives with the IEEE 1284 supp     64 enhanced and now lives with the IEEE 1284 support.  When a parallel
 65 port is detected, the devices that are connect     65 port is detected, the devices that are connected to it are analysed,
 66 and information is logged like this::              66 and information is logged like this::
 67                                                    67 
 68         parport0: Printer, BJC-210 (Canon)         68         parport0: Printer, BJC-210 (Canon)
 69                                                    69 
 70 The probe information is available from files      70 The probe information is available from files in ``/proc/sys/dev/parport/``.
 71                                                    71 
 72                                                    72 
 73 Parport linked into the kernel statically          73 Parport linked into the kernel statically
 74 =========================================          74 =========================================
 75                                                    75 
 76 If you compile the ``parport`` code into the k     76 If you compile the ``parport`` code into the kernel, then you can use
 77 kernel boot parameters to get the same effect.     77 kernel boot parameters to get the same effect.  Add something like the
 78 following to your LILO command line::              78 following to your LILO command line::
 79                                                    79 
 80         parport=0x3bc parport=0x378,7 parport=     80         parport=0x3bc parport=0x378,7 parport=0x278,auto,nofifo
 81                                                    81 
 82 You can have many ``parport=...`` statements,      82 You can have many ``parport=...`` statements, one for each port you want
 83 to add.  Adding ``parport=0`` to the kernel co     83 to add.  Adding ``parport=0`` to the kernel command-line will disable
 84 parport support entirely.  Adding ``parport=au     84 parport support entirely.  Adding ``parport=auto`` to the kernel
 85 command-line will make ``parport`` use any IRQ     85 command-line will make ``parport`` use any IRQ lines or DMA channels that
 86 it auto-detects.                                   86 it auto-detects.
 87                                                    87 
 88                                                    88 
 89 Files in /proc                                     89 Files in /proc
 90 ==============                                     90 ==============
 91                                                    91 
 92 If you have configured the ``/proc`` filesyste     92 If you have configured the ``/proc`` filesystem into your kernel, you will
 93 see a new directory entry: ``/proc/sys/dev/par     93 see a new directory entry: ``/proc/sys/dev/parport``.  In there will be a
 94 directory entry for each parallel port for whi     94 directory entry for each parallel port for which parport is
 95 configured.  In each of those directories are      95 configured.  In each of those directories are a collection of files
 96 describing that parallel port.                     96 describing that parallel port.
 97                                                    97 
 98 The ``/proc/sys/dev/parport`` directory tree l     98 The ``/proc/sys/dev/parport`` directory tree looks like::
 99                                                    99 
100         parport                                   100         parport
101         |-- default                               101         |-- default
102         |   |-- spintime                          102         |   |-- spintime
103         |   `-- timeslice                         103         |   `-- timeslice
104         |-- parport0                              104         |-- parport0
105         |   |-- autoprobe                         105         |   |-- autoprobe
106         |   |-- autoprobe0                        106         |   |-- autoprobe0
107         |   |-- autoprobe1                        107         |   |-- autoprobe1
108         |   |-- autoprobe2                        108         |   |-- autoprobe2
109         |   |-- autoprobe3                        109         |   |-- autoprobe3
110         |   |-- devices                           110         |   |-- devices
111         |   |   |-- active                        111         |   |   |-- active
112         |   |   `-- lp                            112         |   |   `-- lp
113         |   |       `-- timeslice                 113         |   |       `-- timeslice
114         |   |-- base-addr                         114         |   |-- base-addr
115         |   |-- irq                               115         |   |-- irq
116         |   |-- dma                               116         |   |-- dma
117         |   |-- modes                             117         |   |-- modes
118         |   `-- spintime                          118         |   `-- spintime
119         `-- parport1                              119         `-- parport1
120         |-- autoprobe                             120         |-- autoprobe
121         |-- autoprobe0                            121         |-- autoprobe0
122         |-- autoprobe1                            122         |-- autoprobe1
123         |-- autoprobe2                            123         |-- autoprobe2
124         |-- autoprobe3                            124         |-- autoprobe3
125         |-- devices                               125         |-- devices
126         |   |-- active                            126         |   |-- active
127         |   `-- ppa                               127         |   `-- ppa
128         |       `-- timeslice                     128         |       `-- timeslice
129         |-- base-addr                             129         |-- base-addr
130         |-- irq                                   130         |-- irq
131         |-- dma                                   131         |-- dma
132         |-- modes                                 132         |-- modes
133         `-- spintime                              133         `-- spintime
134                                                   134 
135 .. tabularcolumns:: |p{4.0cm}|p{13.5cm}|          135 .. tabularcolumns:: |p{4.0cm}|p{13.5cm}|
136                                                   136 
137 ======================= ======================    137 ======================= =======================================================
138 File                    Contents                  138 File                    Contents
139 ======================= ======================    139 ======================= =======================================================
140 ``devices/active``      A list of the device d    140 ``devices/active``      A list of the device drivers using that port.  A "+"
141                         will appear by the nam    141                         will appear by the name of the device currently using
142                         the port (it might not    142                         the port (it might not appear against any).  The
143                         string "none" means th    143                         string "none" means that there are no device drivers
144                         using that port.          144                         using that port.
145                                                   145 
146 ``base-addr``           Parallel port's base a    146 ``base-addr``           Parallel port's base address, or addresses if the port
147                         has more than one in w    147                         has more than one in which case they are separated
148                         with tabs.  These valu    148                         with tabs.  These values might not have any sensible
149                         meaning for some ports    149                         meaning for some ports.
150                                                   150 
151 ``irq``                 Parallel port's IRQ, o    151 ``irq``                 Parallel port's IRQ, or -1 if none is being used.
152                                                   152 
153 ``dma``                 Parallel port's DMA ch    153 ``dma``                 Parallel port's DMA channel, or -1 if none is being
154                         used.                     154                         used.
155                                                   155 
156 ``modes``               Parallel port's hardwa    156 ``modes``               Parallel port's hardware modes, comma-separated,
157                         meaning:                  157                         meaning:
158                                                   158 
159                         - PCSPP                   159                         - PCSPP
160                                 PC-style SPP r    160                                 PC-style SPP registers are available.
161                                                   161 
162                         - TRISTATE                162                         - TRISTATE
163                                 Port is bidire    163                                 Port is bidirectional.
164                                                   164 
165                         - COMPAT                  165                         - COMPAT
166                                 Hardware accel    166                                 Hardware acceleration for printers is
167                                 available and     167                                 available and will be used.
168                                                   168 
169                         - EPP                     169                         - EPP
170                                 Hardware accel    170                                 Hardware acceleration for EPP protocol
171                                 is available a    171                                 is available and will be used.
172                                                   172 
173                         - ECP                     173                         - ECP
174                                 Hardware accel    174                                 Hardware acceleration for ECP protocol
175                                 is available a    175                                 is available and will be used.
176                                                   176 
177                         - DMA                     177                         - DMA
178                                 DMA is availab    178                                 DMA is available and will be used.
179                                                   179 
180                         Note that the current     180                         Note that the current implementation will only take
181                         advantage of COMPAT an    181                         advantage of COMPAT and ECP modes if it has an IRQ
182                         line to use.              182                         line to use.
183                                                   183 
184 ``autoprobe``           Any IEEE-1284 device I    184 ``autoprobe``           Any IEEE-1284 device ID information that has been
185                         acquired from the (non    185                         acquired from the (non-IEEE 1284.3) device.
186                                                   186 
187 ``autoprobe[0-3]``      IEEE 1284 device ID in    187 ``autoprobe[0-3]``      IEEE 1284 device ID information retrieved from
188                         daisy-chain devices th    188                         daisy-chain devices that conform to IEEE 1284.3.
189                                                   189 
190 ``spintime``            The number of microsec    190 ``spintime``            The number of microseconds to busy-loop while waiting
191                         for the peripheral to     191                         for the peripheral to respond.  You might find that
192                         adjusting this improve    192                         adjusting this improves performance, depending on your
193                         peripherals.  This is     193                         peripherals.  This is a port-wide setting, i.e. it
194                         applies to all devices    194                         applies to all devices on a particular port.
195                                                   195 
196 ``timeslice``           The number of millisec    196 ``timeslice``           The number of milliseconds that a device driver is
197                         allowed to keep a port    197                         allowed to keep a port claimed for.  This is advisory,
198                         and driver can ignore     198                         and driver can ignore it if it must.
199                                                   199 
200 ``default/*``           The defaults for spint    200 ``default/*``           The defaults for spintime and timeslice. When a new
201                         port is registered, it    201                         port is registered, it picks up the default spintime.
202                         When a new device is r    202                         When a new device is registered, it picks up the
203                         default timeslice.        203                         default timeslice.
204 ======================= ======================    204 ======================= =======================================================
205                                                   205 
206 Device drivers                                    206 Device drivers
207 ==============                                    207 ==============
208                                                   208 
209 Once the parport code is initialised, you can     209 Once the parport code is initialised, you can attach device drivers to
210 specific ports.  Normally this happens automat    210 specific ports.  Normally this happens automatically; if the lp driver
211 is loaded it will create one lp device for eac    211 is loaded it will create one lp device for each port found.  You can
212 override this, though, by using parameters eit    212 override this, though, by using parameters either when you load the lp
213 driver::                                          213 driver::
214                                                   214 
215         # insmod lp parport=0,2                   215         # insmod lp parport=0,2
216                                                   216 
217 or on the LILO command line::                     217 or on the LILO command line::
218                                                   218 
219         lp=parport0 lp=parport2                   219         lp=parport0 lp=parport2
220                                                   220 
221 Both the above examples would inform lp that y    221 Both the above examples would inform lp that you want ``/dev/lp0`` to be
222 the first parallel port, and /dev/lp1 to be th    222 the first parallel port, and /dev/lp1 to be the **third** parallel port,
223 with no lp device associated with the second p    223 with no lp device associated with the second port (parport1).  Note
224 that this is different to the way older kernel    224 that this is different to the way older kernels worked; there used to
225 be a static association between the I/O port a    225 be a static association between the I/O port address and the device
226 name, so ``/dev/lp0`` was always the port at 0    226 name, so ``/dev/lp0`` was always the port at 0x3bc.  This is no longer the
227 case - if you only have one port, it will defa    227 case - if you only have one port, it will default to being ``/dev/lp0``,
228 regardless of base address.                       228 regardless of base address.
229                                                   229 
230 Also:                                             230 Also:
231                                                   231 
232  * If you selected the IEEE 1284 support at co    232  * If you selected the IEEE 1284 support at compile time, you can say
233    ``lp=auto`` on the kernel command line, and    233    ``lp=auto`` on the kernel command line, and lp will create devices
234    only for those ports that seem to have prin    234    only for those ports that seem to have printers attached.
235                                                   235 
236  * If you give PLIP the ``timid`` parameter, e    236  * If you give PLIP the ``timid`` parameter, either with ``plip=timid`` on
237    the command line, or with ``insmod plip tim    237    the command line, or with ``insmod plip timid=1`` when using modules,
238    it will avoid any ports that seem to be in     238    it will avoid any ports that seem to be in use by other devices.
239                                                   239 
240  * IRQ autoprobing works only for a few port t    240  * IRQ autoprobing works only for a few port types at the moment.
241                                                   241 
242 Reporting printer problems with parport           242 Reporting printer problems with parport
243 =======================================           243 =======================================
244                                                   244 
245 If you are having problems printing, please go    245 If you are having problems printing, please go through these steps to
246 try to narrow down where the problem area is.     246 try to narrow down where the problem area is.
247                                                   247 
248 When reporting problems with parport, really y    248 When reporting problems with parport, really you need to give all of
249 the messages that ``parport_pc`` spits out whe    249 the messages that ``parport_pc`` spits out when it initialises.  There are
250 several code paths:                               250 several code paths:
251                                                   251 
252 - polling                                         252 - polling
253 - interrupt-driven, protocol in software          253 - interrupt-driven, protocol in software
254 - interrupt-driven, protocol in hardware using    254 - interrupt-driven, protocol in hardware using PIO
255 - interrupt-driven, protocol in hardware using    255 - interrupt-driven, protocol in hardware using DMA
256                                                   256 
257 The kernel messages that ``parport_pc`` logs g    257 The kernel messages that ``parport_pc`` logs give an indication of which
258 code path is being used. (They could be a lot     258 code path is being used. (They could be a lot better actually..)
259                                                   259 
260 For normal printer protocol, having IEEE 1284     260 For normal printer protocol, having IEEE 1284 modes enabled or not
261 should not make a difference.                     261 should not make a difference.
262                                                   262 
263 To turn off the 'protocol in hardware' code pa    263 To turn off the 'protocol in hardware' code paths, disable
264 ``CONFIG_PARPORT_PC_FIFO``.  Note that when th    264 ``CONFIG_PARPORT_PC_FIFO``.  Note that when they are enabled they are not
265 necessarily **used**; it depends on whether th    265 necessarily **used**; it depends on whether the hardware is available,
266 enabled by the BIOS, and detected by the drive    266 enabled by the BIOS, and detected by the driver.
267                                                   267 
268 So, to start with, disable ``CONFIG_PARPORT_PC    268 So, to start with, disable ``CONFIG_PARPORT_PC_FIFO``, and load ``parport_pc``
269 with ``irq=none``. See if printing works then.    269 with ``irq=none``. See if printing works then.  It really should,
270 because this is the simplest code path.           270 because this is the simplest code path.
271                                                   271 
272 If that works fine, try with ``io=0x378 irq=7`    272 If that works fine, try with ``io=0x378 irq=7`` (adjust for your
273 hardware), to make it use interrupt-driven in-    273 hardware), to make it use interrupt-driven in-software protocol.
274                                                   274 
275 If **that** works fine, then one of the hardwa    275 If **that** works fine, then one of the hardware modes isn't working
276 right.  Enable ``CONFIG_FIFO`` (no, it isn't a    276 right.  Enable ``CONFIG_FIFO`` (no, it isn't a module option,
277 and yes, it should be), set the port to ECP mo    277 and yes, it should be), set the port to ECP mode in the BIOS and note
278 the DMA channel, and try with::                   278 the DMA channel, and try with::
279                                                   279 
280     io=0x378 irq=7 dma=none (for PIO)             280     io=0x378 irq=7 dma=none (for PIO)
281     io=0x378 irq=7 dma=3 (for DMA)                281     io=0x378 irq=7 dma=3 (for DMA)
282                                                   282 
283 ----------                                        283 ----------
284                                                   284 
285 philb@gnu.org                                     285 philb@gnu.org
286 tim@cyberelk.net                                  286 tim@cyberelk.net
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php