Home | History | Annotate | Download | only in isapnp
History log of /src/sys/dev/isapnp/isapnp.c
RevisionDateAuthorComments
 1.64  08-Sep-2024  rillig fix a/an grammar in obvious cases
 1.63  25-Sep-2022  thorpej branches: 1.63.10;
Incremental malloc(9) -> kmem(9)
 1.62  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.61  24-Apr-2021  thorpej branches: 1.61.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.60  10-Nov-2019  chs branches: 1.60.10;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.59  23-Aug-2009  jmcneill branches: 1.59.64;
Drop the string 'ISA Plug 'n Play device support', it's not something to
brag about anymore.
 1.58  28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.57  30-Mar-2008  ad branches: 1.57.2; 1.57.4;
The isapnp probe is very slow, and there's not much we can do to speed it
up safely. Skip it if the system is known to have no ISA compatible expansion
slots.
 1.56  15-Mar-2008  cube Split device_t and softc for isapnp(4). Use proper types, ansify when
appropriate.
 1.55  09-Dec-2007  jmcneill branches: 1.55.6; 1.55.10;
Merge jmcneill-pm branch.
 1.54  01-Dec-2007  ad branches: 1.54.2; 1.54.4;
Noisy printfs.
 1.53  19-Oct-2007  ad branches: 1.53.2;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.52  16-Nov-2006  christos branches: 1.52.8; 1.52.22; 1.52.24; 1.52.28;
__unused removal on arguments; approved by core.
 1.51  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.50  29-Mar-2006  thorpej branches: 1.50.8; 1.50.10;
Use device_private().
 1.49  24-Dec-2005  perry branches: 1.49.4; 1.49.6; 1.49.8; 1.49.10; 1.49.12;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.48  11-Dec-2005  christos merge ktrace-lwp.
 1.47  26-Aug-2005  drochner s/locdesc_t/int/g
 1.46  17-May-2005  christos branches: 1.46.2;
Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
 1.45  27-Feb-2005  perry nuke trailing whitespace
 1.44  04-Feb-2005  perry de-__P
 1.43  13-Sep-2004  drochner branches: 1.43.4; 1.43.6;
a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"
 1.42  04-Dec-2003  keihan netbsd.org -> NetBSD.org

This was the last commit of this kind to src/sys, which is now totally
"NetBSD.org clean". Thanks for the patiance, and sorry for all the commits.
 1.41  01-Jan-2003  thorpej branches: 1.41.2;
Use aprint_normal() in cfprint routines.
 1.40  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.39  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.38  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.37  27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.36  07-Jan-2002  thorpej Overhaul of the ISA autoconfiguration code to support direct
configuration of devices logically attached to the ISA bus:

* Change the isa_attach_args to have arrays of io, mem, irq, drq
resources.
* Add a "pnpnames" and a linked list of "pnpcompatnames" to the
isa_attach_args. If either of these members are non-NULL,
direct configuration of the bus is being performed. Add an
ISA_DIRECT_CONFIG() macro to test for this.
* Drivers are not allowed to modify the isa_attach_args unless
direct configuration is not being performed and the probe fucntion
is returning success.
* Adapt device drivers -- currently, all driver probe routines return
"no match" if ISA_DIRECT_CONFIG() evaluates to true.
 1.35  13-Nov-2001  lukem add RCSID
 1.34  12-Apr-1999  mjl branches: 1.34.14; 1.34.16;
Enable workaround for isapnp assigning already used interrupts to pnp
cards by masking them out with a "options ISAPNP_ALLOC_INTR_MASK=..."
in kernel config.
 1.33  22-Mar-1999  mycroft branches: 1.33.4;
Add a `variant number' to the tables, so we can handle slight variations in
the chipset without doing something substantially more gross.
 1.32  22-Mar-1999  mycroft Add a kluge to ignore I/O and memory ranges with a size of zero, so we don't
blow up in bus_space_{map,unmap}(). At least one card uses this to `disable'
a logical device.
(XXX There's probably a better way to do this.)
 1.31  10-Jan-1999  augustss XXX Add a disgusting hack to make the CS sound chips work in PnP mode.
XXX Read about it in isapnp.c.
 1.30  21-Nov-1998  fvdl Avoid looping forever with cards that can only use one I/O address,
and specify a 0 alignment.
 1.29  10-Oct-1998  hannken Fix last commit -- NISADMA is either 0 or 1.
 1.28  08-Oct-1998  thorpej If ISA DMA is not present in the kernel (i.e. no ISA DMA-using devices
configured in), don't call ISA DMA functions to check for DRQs being
free. Just return EINVAL in this case. Fixes PR #6187, from Herb Peyerl.
 1.27  05-Sep-1998  christos Assign copyright to TNF.
 1.26  31-Jul-1998  thorpej Change one word to be consistent w/ a previous message.
 1.25  31-Jul-1998  thorpej Oops, unused variable.
 1.24  31-Jul-1998  thorpej Rearrange isapnp_callback() slightly.
 1.23  31-Jul-1998  thorpej Ensure we're probed only once per ISA bus.
 1.22  31-Jul-1998  thorpej Use config_defer() to scan for ISA PnP cards.
 1.21  30-Jul-1998  christos Add a hook that resets the bios configuration from the pnp devices
thus making them invisible to isa probes [from OpenBSD]
 1.20  23-Jul-1998  christos branches: 1.20.2;
Create a master list of pnp logical and compatibility device codes instead
of hard-coding it into each driver and use a centralized probe function.
 1.19  09-Jun-1998  thorpej Nuke __BROKEN_INDIRECT_CONFIG.
 1.18  09-Jun-1998  thorpej Adjust for the changes to the ISA DMA API.
 1.17  19-Apr-1998  thorpej Fix a fencepost in last change.
 1.16  15-Apr-1998  thorpej Don't reference functions defined in isadma.c if we don't have to,
since we might not have any ISA DMA-using devices configured, thus
isadma.c won't be compiled. Fixes a problem reported by Kevin Lahey.

Also, since there are only 8 DMA channels, don't bother checking
DRQs 8 - 15.
 1.15  12-Jan-1998  thorpej Adjust for config changes.
 1.14  01-Dec-1997  mjacob fixme: still need a __BROKEN_INDIRECT_CONFIG case
 1.13  30-Nov-1997  drochner make it compile without "__BROKEN_INDIRECT_CONFIG"
 1.12  28-Oct-1997  christos DTRT with level and edge interrupts:
- add a type field to the isapnp_pin struct and set to IST_EDGE or
IST_LEVEL depending on the card configuration data.
- use the irq type field in all the drivers instead of hardcoding it.
 1.11  27-Oct-1997  thorpej In isapnp_alloc_irq(), use isa_intr_alloc(), since it performs resource
conflict checking.
 1.10  27-Oct-1997  thorpej Make sure we don't allocate a conflicting DRQ. From Christos.
 1.9  12-Aug-1997  mikel branches: 1.9.4;
don't forget to unmap read port in match routine, if successful; also
ensure sc_ncards is initialized
short-circuit probing for cards once first is found in match routine
add support for !__BROKEN_INDIRECT_CONFIG
 1.8  06-Aug-1997  mikel don't clobber bus_space_{,un}map macros
 1.7  03-Aug-1997  mikel add support for compatible device IDs
 1.6  08-Jun-1997  thorpej branches: 1.6.4;
Fix a (fatal) typo in the bus dma changes. From Bill Coldwell
<billc@warped.com>
 1.5  06-Jun-1997  thorpej Pull thorpej-bus-dma branch into mainline.
 1.4  24-Feb-1997  christos branches: 1.4.2;
Fix PR/3251; also don't assign the checksum every time around the loop.
 1.3  09-Feb-1997  christos Add a break; in the irq/drq allocation loop so we take the first one instead
of the last one.
 1.2  24-Jan-1997  christos branches: 1.2.2;
- increase string space for device class names
- fix the parser so that non-compliant isapnp devices work, and we
give up when there are too many errors (some on-board pnp sound/atapi/game
soundblaster compatible card). reported by chuck cranor
- fix the parser so that configuration tags that come after the
end-dependencies tag or before the begin-dependencies tag are merged
in properly (gravis ultrasound). reported by gary duzan
We now build a tree of card -> logical-dev -> conf, and in the end we
convert it to a list of conf...
 1.1  16-Jan-1997  christos Plug and Play support.
 1.2.2.1  12-Mar-1997  is Merge in changes from Trunk
 1.4.2.1  13-May-1997  thorpej Pass the bus dma tag to children.
 1.6.4.1  23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.9.4.4  24-Nov-1998  cgd pull up rev 1.30 from trunk (fvdl)
 1.9.4.3  29-Oct-1997  thorpej Pull up from trunk: DTRT with level and edge interrupts.
 1.9.4.2  27-Oct-1997  thorpej Pull up from trunk:

In isapnp_alloc_irq(), use isa_intr_alloc(), since it performs resource
conflict checking.
 1.9.4.1  27-Oct-1997  thorpej Pull up from trunk:

Make sure we don't allocate a conflicting DRQ. From Christos.
 1.20.2.1  08-Aug-1998  eeh Revert cdevsw mmap routines to return int.
 1.33.4.1  21-Jun-1999  thorpej Sync w/ -current.
 1.34.16.2  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.34.16.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.34.14.5  03-Jan-2003  thorpej Sync with HEAD.
 1.34.14.4  18-Oct-2002  nathanw Catch up to -current.
 1.34.14.3  28-Feb-2002  nathanw Catch up to -current.
 1.34.14.2  11-Jan-2002  nathanw More catchup.
 1.34.14.1  14-Nov-2001  nathanw Catch up to -current.
 1.41.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.41.2.5  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.41.2.4  04-Feb-2005  skrll Sync with HEAD.
 1.41.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.41.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.41.2.1  03-Aug-2004  skrll Sync with HEAD
 1.43.6.2  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.43.6.1  12-Feb-2005  yamt sync with head.
 1.43.4.1  29-Apr-2005  kent sync with -current
 1.46.2.6  17-Mar-2008  yamt sync with head.
 1.46.2.5  21-Jan-2008  yamt sync with head
 1.46.2.4  07-Dec-2007  yamt sync with head
 1.46.2.3  27-Oct-2007  yamt sync with head.
 1.46.2.2  30-Dec-2006  yamt sync with head.
 1.46.2.1  21-Jun-2006  yamt sync with head.
 1.49.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.49.10.1  19-Apr-2006  elad sync with head.
 1.49.8.1  01-Apr-2006  yamt sync with head.
 1.49.6.1  22-Apr-2006  simonb Sync with head.
 1.49.4.1  09-Sep-2006  rpaulo sync with head
 1.50.10.2  10-Dec-2006  yamt sync with head.
 1.50.10.1  22-Oct-2006  yamt sync with head
 1.50.8.1  18-Nov-2006  ad Sync with head.
 1.52.28.1  25-Oct-2007  bouyer Sync with HEAD.
 1.52.24.3  23-Mar-2008  matt sync with HEAD
 1.52.24.2  09-Jan-2008  matt sync with HEAD
 1.52.24.1  06-Nov-2007  matt sync with HEAD
 1.52.22.5  08-Dec-2007  jmcneill Rename pnp(9) -> pmf(9), as requested by many.
 1.52.22.4  03-Dec-2007  joerg Sync with HEAD.
 1.52.22.3  06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.52.22.2  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.52.22.1  07-Aug-2007  jmcneill Use pnp_generic_power
 1.52.8.1  23-Oct-2007  ad Sync with head.
 1.53.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.53.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.54.4.1  11-Dec-2007  yamt sync with head.
 1.54.2.1  26-Dec-2007  ad Sync with head.
 1.55.10.2  02-Jun-2008  mjf Sync with HEAD.
 1.55.10.1  03-Apr-2008  mjf Sync with HEAD.
 1.55.6.1  24-Mar-2008  keiichi sync with head.
 1.57.4.2  16-Sep-2009  yamt sync with head
 1.57.4.1  16-May-2008  yamt sync with head.
 1.57.2.1  18-May-2008  yamt sync with head.
 1.59.64.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.60.10.2  22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.60.10.1  22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.61.8.1  04-Aug-2021  thorpej Adapt to CFARGS().
 1.63.10.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed