127495372SJohn-Mark Gurney.\" pnp(4) - manual page for the scanner device driver `asc' 227495372SJohn-Mark Gurney.\" 327495372SJohn-Mark Gurney.\" 427495372SJohn-Mark Gurney.\" Copyright (c) 1997 Luigi Rizzo 527495372SJohn-Mark Gurney.\" 627495372SJohn-Mark Gurney.\" Redistribution and use in source and binary forms, with or without 727495372SJohn-Mark Gurney.\" modification, are permitted provided that the following conditions 827495372SJohn-Mark Gurney.\" are met: 927495372SJohn-Mark Gurney.\" 1. Redistributions of source code must retain the above copyright 1027495372SJohn-Mark Gurney.\" notice, this list of conditions and the following disclaimer. 1127495372SJohn-Mark Gurney.\" 2. Redistributions in binary form must reproduce the above copyright 1227495372SJohn-Mark Gurney.\" notice, this list of conditions and the following disclaimer in the 1327495372SJohn-Mark Gurney.\" documentation and/or other materials provided with the distribution. 1427495372SJohn-Mark Gurney.\" 3. All advertising materials mentioning features or use of this software 1527495372SJohn-Mark Gurney.\" must display the following acknowledgements: 1627495372SJohn-Mark Gurney.\" This product includes software developed by Luigi Rizzo. 1727495372SJohn-Mark Gurney.\" 4. The name of the author may not be used to endorse or promote products 1827495372SJohn-Mark Gurney.\" derived from this software without specific prior written permission. 1927495372SJohn-Mark Gurney.\" 2027495372SJohn-Mark Gurney.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2127495372SJohn-Mark Gurney.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2227495372SJohn-Mark Gurney.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2327495372SJohn-Mark Gurney.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2427495372SJohn-Mark Gurney.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2527495372SJohn-Mark Gurney.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2627495372SJohn-Mark Gurney.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2727495372SJohn-Mark Gurney.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2827495372SJohn-Mark Gurney.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2927495372SJohn-Mark Gurney.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3027495372SJohn-Mark Gurney.\" 317f3dea24SPeter Wemm.\" $FreeBSD$ 3227495372SJohn-Mark Gurney.\" 3327495372SJohn-Mark Gurney.Dd September 7, 1997 3427495372SJohn-Mark Gurney.Dt PNP 4 i386 353d45e180SRuslan Ermilov.Os 3627495372SJohn-Mark Gurney.Sh NAME 3727495372SJohn-Mark Gurney.Nm pnp 3827495372SJohn-Mark Gurney.Nd support for PnP devices 3927495372SJohn-Mark Gurney.Sh SYNOPSIS 4027495372SJohn-Mark Gurney.Cd controller pnp0 4127495372SJohn-Mark Gurney.Sh DESCRIPTION 42b5c508fbSRuslan ErmilovSupport for PnP devices in 43b5c508fbSRuslan Ermilov.Fx 44b5c508fbSRuslan Ermilovallows the user to override the 4527495372SJohn-Mark Gurneyconfiguration of PnP cards, and device drivers to fetch/modify 4627495372SJohn-Mark Gurneyparameters in the card's configuration space. 4727495372SJohn-Mark Gurney.Pp 4827495372SJohn-Mark GurneyThe manual override mechanism requires the kernel to be compiled with 4927495372SJohn-Mark Gurney.Cd options USERCONFIG . 5027495372SJohn-Mark GurneyIn this case, the kernel keeps a table of fixed size (20 entries as a 514e86fcacSSheldon Hearndefault) where configuration data are held for PnP devices. 524e86fcacSSheldon HearnEach 5327495372SJohn-Mark GurneyPnP card can contain several independent devices (5 or 6 is not 5427495372SJohn-Mark Gurneyunusual). 5527495372SJohn-Mark Gurney.Pp 5627495372SJohn-Mark GurneyBy booting the kernel with the 5727495372SJohn-Mark Gurney.Dq Fl c 5827495372SJohn-Mark Gurneyflag, commands are available to 594e86fcacSSheldon Hearnmodify the configuration of PnP cards. 604e86fcacSSheldon HearnCommands start with the 6127495372SJohn-Mark Gurneysequence: 6227495372SJohn-Mark Gurney.Dl pnp CSN LDN 6327495372SJohn-Mark Gurneywhere CSN and LDN are the Card Select Number and Logical Device Number 644e86fcacSSheldon Hearnassociated to the device. 654e86fcacSSheldon HearnFollowing this sequence any combination of 6627495372SJohn-Mark Gurneythe following commands can be used: 6727495372SJohn-Mark Gurney.Bl -tag -width "mmmmmmmmmm"" 6827495372SJohn-Mark Gurney.It Dv irqN line 694e86fcacSSheldon HearnSets the irq line for interrupt 0 or 1 on the card. 704e86fcacSSheldon HearnLine=0 means the line 7127495372SJohn-Mark Gurneyis unused. 7227495372SJohn-Mark Gurney.It Dv drqN n 734e86fcacSSheldon HearnSets the drq channel used for DMA 0 or 1 on the card. 744e86fcacSSheldon HearnChannel=4 means 7527495372SJohn-Mark Gurneythe channel is unused. 7627495372SJohn-Mark Gurney.It Dv portN address 7727495372SJohn-Mark GurneySets the base address for the N-th port's range (N=0..7). address=0 7827495372SJohn-Mark Gurneymeans that the port is not used. 7927495372SJohn-Mark Gurney.It Dv memN address 8027495372SJohn-Mark GurneySets the base address for the N-th memory's range (N=0..3). address=0 8127495372SJohn-Mark Gurneymeans that the memory range is not used. 8227495372SJohn-Mark Gurney.It Dv bios 834e86fcacSSheldon HearnMakes the PnP device use the configuration set by the BIOS. 844e86fcacSSheldon HearnThis 8527495372SJohn-Mark Gurneyis the default, and is generally ok if your BIOS has PnP support. 8627495372SJohn-Mark GurneyIf BIOS is used, then other parameters are ignored except "flags". 8727495372SJohn-Mark Gurney.It Dv os 8827495372SJohn-Mark GurneyMakes the PnP device to use the configuration specified in this entry. 8927495372SJohn-Mark Gurney.It Dv enable 9027495372SJohn-Mark GurneyEnables the PnP device. 9127495372SJohn-Mark Gurney.It Dv disable 9227495372SJohn-Mark GurneyDisables the PnP device. 9327495372SJohn-Mark Gurney.It Dv delete 9427495372SJohn-Mark GurneyFrees the entry used for the device, so that it can be used for 9527495372SJohn-Mark Gurneyanother device with a different CSN/LDN pair. 9627495372SJohn-Mark Gurney.It Dv flags 9727495372SJohn-Mark GurneySets the value of a 32-bit flags entry which is passed to the device 984e86fcacSSheldon Hearndriver. 994e86fcacSSheldon HearnThis can be used to set special operation modes (e.g. SB vs. WSS 10027495372SJohn-Mark Gurneyemulation on some sound cards, etc.). 10127495372SJohn-Mark Gurney.El 10227495372SJohn-Mark Gurney.Pp 10327495372SJohn-Mark GurneyThe current content of the table can be printed using the 10427495372SJohn-Mark Gurney.Ic ls 1054e86fcacSSheldon Hearncommand in userconfig. 1064e86fcacSSheldon HearnIn addition to modifications done by the user, 10727495372SJohn-Mark Gurneythe table contains an entry for 10827495372SJohn-Mark Gurneyall logical devices accessed by a PnP device driver. 10927495372SJohn-Mark Gurney.Pp 11027495372SJohn-Mark GurneyModifications to 11127495372SJohn-Mark Gurneythe table will be saved to the boot image on the filesystem by the 11250711a4dSJoseph Koshy.Xr kget 8 11327495372SJohn-Mark Gurneycommand. 11427495372SJohn-Mark Gurney.Sh DEVICE DRIVER SUPPORT FOR PnP 11527495372SJohn-Mark GurneyPnP devices are automatically recognized and configured by the kernel. 11627495372SJohn-Mark GurneyA PnP device is identified by the following data structure: 11727495372SJohn-Mark Gurney.Bd -literal 11827495372SJohn-Mark Gurneystruct pnp_device { 11927495372SJohn-Mark Gurney char *pd_name; 12027495372SJohn-Mark Gurney char *(*pd_probe ) (u_long csn, u_long vendor_id); 12127495372SJohn-Mark Gurney void (*pd_attach ) (u_long csn, u_long vend_id, char * name, 12227495372SJohn-Mark Gurney struct isa_device *dev); 12327495372SJohn-Mark Gurney u_long *pd_count; 12427495372SJohn-Mark Gurney u_int *imask; 12527495372SJohn-Mark Gurney struct isa_device dev; 12627495372SJohn-Mark Gurney}; 12727495372SJohn-Mark Gurney.Ed 12827495372SJohn-Mark Gurney.Pp 12927495372SJohn-Mark GurneyThe probe routine must check that the vendor_id passed is a 13027495372SJohn-Mark Gurneyrecognized one, that any necessary devices on the card are enabled, 13127495372SJohn-Mark Gurneyand returns a NULL value in case of failure or a non-NULL value 13227495372SJohn-Mark Gurney(generally a pointer to the device name) unpon success. In the probe 13327495372SJohn-Mark Gurneyroutine, the function 13427495372SJohn-Mark Gurney.Fn read_pnp_parms 13527495372SJohn-Mark Gurneycan be used to check that the logical devices are enabled. 13627495372SJohn-Mark Gurney.Pp 13727495372SJohn-Mark GurneyThe attach routine should do all the necessary initialization, enable 13827495372SJohn-Mark Gurneythe PnP card to ISA accesses, fetch the configuration, and call the ISA 13927495372SJohn-Mark Gurneydriver for the device. 14027495372SJohn-Mark Gurney.Pp 14127495372SJohn-Mark GurneyThe following routines and data structures can be used: 14227495372SJohn-Mark Gurney.Bl -tag -width "xxxxxxxxxx" 14327495372SJohn-Mark Gurney.It Dv struct pnp_cinfo 14427495372SJohn-Mark GurneyThis data structure (defined in /sys/i386/isa/pnp.h) contains all 14527495372SJohn-Mark Gurneyinformations related to a PnP logical device. 14627495372SJohn-Mark Gurney.It Fn read_pnp_parms "struct pnp_cinfo *d" "int ldn" 14727495372SJohn-Mark GurneyThis function returns the configuration of the requested 1484e86fcacSSheldon Hearnlogical device. 1494e86fcacSSheldon HearnIt is not possible to specify a CSN since this function 15027495372SJohn-Mark Gurneyis only meant to be used during probe and attach routines 15127495372SJohn-Mark Gurney.It Fn write_pnp_parms "struct pnp_cinfo *d" "int ldn" 1524e86fcacSSheldon HearnThis function sets the parameters of the requested logical device. 1534e86fcacSSheldon HearnAt 15427495372SJohn-Mark Gurneythe same time, it updates the entry in the kernel override table. 15527495372SJohn-Mark GurneyDevice drivers in general should 15627495372SJohn-Mark Gurney.Em not 15727495372SJohn-Mark Gurneymodify the configuration of a device, since either the BIOS or the user 1584e86fcacSSheldon Hearn(through userconfig) should know better what to do. 1594e86fcacSSheldon HearnIn particular, 16027495372SJohn-Mark Gurneydevice driver 16127495372SJohn-Mark Gurney.Em should not enable 16227495372SJohn-Mark Gurneya logical device which has 16327495372SJohn-Mark Gurneybeen found disabled, 16427495372SJohn-Mark Gurneysince this would defeat the override mechanism in userconfig. 16527495372SJohn-Mark GurneyDevice 16627495372SJohn-Mark Gurneydrivers may disable a logical device, or a port range, etc, but should 16727495372SJohn-Mark Gurneydo so only that particular device or parameter is known to cause 16827495372SJohn-Mark Gurneytroubles. 16927495372SJohn-Mark Gurney.It Fn enable_pnp_card void 17027495372SJohn-Mark GurneyThis function 17127495372SJohn-Mark Gurney.Em must 17227495372SJohn-Mark Gurneybe used in the attach routine 17327495372SJohn-Mark Gurney.Em only , 17427495372SJohn-Mark Gurneybefore accessing the card's ISA ports/memory address ranges. 17527495372SJohn-Mark Gurney.El 17627495372SJohn-Mark Gurney.Sh SEE ALSO 17750711a4dSJoseph Koshy.Xr kget 8 17827495372SJohn-Mark Gurney.Sh BUGS 17927495372SJohn-Mark GurneyThere is no support for visual configuration of PnP devices. 18027495372SJohn-Mark GurneyIt would be nice to have commands in userconfig to fetch the 18127495372SJohn-Mark Gurneyconfiguration of PnP devices. 182aaf1f16eSPhilippe Charnier.Sh AUTHORS 183f4d874a1SRuslan Ermilov.An -nosplit 184aaf1f16eSPhilippe CharnierPnP support was written by 185aaf1f16eSPhilippe Charnier.An Luigi Rizzo , 186aaf1f16eSPhilippe Charnierbased on initial work done by 187aaf1f16eSPhilippe Charnier.An Sujal Patel . 18827495372SJohn-Mark Gurney.Sh HISTORY 18927495372SJohn-Mark GurneyThe 19027495372SJohn-Mark Gurney.Nm 19127495372SJohn-Mark Gurneydriver first appeared in 19227495372SJohn-Mark Gurney.Fx 2.2.5 . 193