Add some missing documentation.

This commit is contained in:
gmcgarry 2001-07-01 04:11:13 +00:00
parent e839d267cd
commit 8752c2315f
15 changed files with 3980 additions and 15 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.353 2001/06/30 21:24:06 tron Exp $
# $NetBSD: mi,v 1.354 2001/07/01 04:11:15 gmcgarry Exp $
./sys comp-sysutil-root
./usr/bin/addr2line comp-debug-bin
./usr/bin/ar comp-util-bin
@ -392,11 +392,11 @@
./usr/include/krb5/hdb_asn1.h comp-c-include
./usr/include/krb5/hdb_err.h comp-c-include
./usr/include/krb5/heim_err.h comp-c-include
./usr/include/krb5/krb5_asn1.h comp-c-include
./usr/include/krb5/krb5-private.h comp-c-include
./usr/include/krb5/krb5-protos.h comp-c-include
./usr/include/krb5/krb5-types.h comp-c-include
./usr/include/krb5/krb5.h comp-c-include
./usr/include/krb5/krb5_asn1.h comp-c-include
./usr/include/krb5/krb5_err.h comp-c-include
./usr/include/krb5/parse_bytes.h comp-c-include
./usr/include/krb5/parse_time.h comp-c-include
@ -2879,6 +2879,16 @@
./usr/share/man/cat8/cvsbug.0 comp-cvs-catman
./usr/share/man/cat8/kgmon.0 comp-sysutil-catman
./usr/share/man/cat8/verify_krb5_conf.0 comp-sysutil-catman
./usr/share/man/cat9/CARDBUS_PRODUCT.0 comp-sys-catman
./usr/share/man/cat9/CARDBUS_VENDOR.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_conf_read.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_conf_write.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_free_tag.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_function_disable.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_function_enable.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_make_tag.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_mapreg_map.0 comp-sys-catman
./usr/share/man/cat9/Cardbus_mapreg_unmap.0 comp-sys-catman
./usr/share/man/cat9/ETHER_FIRST_MULTI.0 comp-sys-catman
./usr/share/man/cat9/ETHER_IS_MULTICAST.0 comp-sys-catman
./usr/share/man/cat9/ETHER_NEXT_MULTI.0 comp-sys-catman
@ -2896,12 +2906,16 @@
./usr/share/man/cat9/M_LEADINGSPACE.0 comp-sys-catman
./usr/share/man/cat9/M_PREPEND.0 comp-sys-catman
./usr/share/man/cat9/M_TRAILINGSPACE.0 comp-sys-catman
./usr/share/man/cat9/PCI_PRODUCT.0 comp-sys-catman
./usr/share/man/cat9/PCI_REVISION.0 comp-sys-catman
./usr/share/man/cat9/PCI_VENDOR.0 comp-sys-catman
./usr/share/man/cat9/access.0 comp-sys-catman
./usr/share/man/cat9/arp.0 comp-sys-catman
./usr/share/man/cat9/arp_ifinit.0 comp-sys-catman
./usr/share/man/cat9/arpintr.0 comp-sys-catman
./usr/share/man/cat9/arpresolve.0 comp-sys-catman
./usr/share/man/cat9/audio.0 comp-sys-catman
./usr/share/man/cat9/autoconf.0 comp-sys-catman
./usr/share/man/cat9/bitmask_snprintf.0 comp-sys-catman
./usr/share/man/cat9/boottime.0 comp-sys-catman
./usr/share/man/cat9/bounds_check_with_label.0 comp-sys-catman
@ -2965,6 +2979,20 @@
./usr/share/man/cat9/callout_pending.0 comp-sys-catman
./usr/share/man/cat9/callout_reset.0 comp-sys-catman
./usr/share/man/cat9/callout_stop.0 comp-sys-catman
./usr/share/man/cat9/cardbus.0 comp-sys-catman
./usr/share/man/cat9/cardbus_attach_card.0 comp-sys-catman
./usr/share/man/cat9/cardbus_conf_read.0 comp-sys-catman
./usr/share/man/cat9/cardbus_conf_write.0 comp-sys-catman
./usr/share/man/cat9/cardbus_detach_card.0 comp-sys-catman
./usr/share/man/cat9/cardbus_free_tag.0 comp-sys-catman
./usr/share/man/cat9/cardbus_function_disable.0 comp-sys-catman
./usr/share/man/cat9/cardbus_function_enable.0 comp-sys-catman
./usr/share/man/cat9/cardbus_get_capability.0 comp-sys-catman
./usr/share/man/cat9/cardbus_intr_disestablish.0 comp-sys-catman
./usr/share/man/cat9/cardbus_intr_establish.0 comp-sys-catman
./usr/share/man/cat9/cardbus_make_tag.0 comp-sys-catman
./usr/share/man/cat9/cardbus_mapreg_map.0 comp-sys-catman
./usr/share/man/cat9/cardbus_mapreg_unmap.0 comp-sys-catman
./usr/share/man/cat9/clock_secs_to_ymdhms.0 comp-sys-catman
./usr/share/man/cat9/clock_ymdhms_to_secs.0 comp-sys-catman
./usr/share/man/cat9/cltom.0 comp-sys-catman
@ -2974,6 +3002,18 @@
./usr/share/man/cat9/cnmagic.0 comp-sys-catman
./usr/share/man/cat9/cnpollc.0 comp-sys-catman
./usr/share/man/cat9/cnputc.0 comp-sys-catman
./usr/share/man/cat9/config.0 comp-sys-catman
./usr/share/man/cat9/config_activate.0 comp-sys-catman
./usr/share/man/cat9/config_attach.0 comp-sys-catman
./usr/share/man/cat9/config_deactivate.0 comp-sys-catman
./usr/share/man/cat9/config_defer.0 comp-sys-catman
./usr/share/man/cat9/config_detach.0 comp-sys-catman
./usr/share/man/cat9/config_found.0 comp-sys-catman
./usr/share/man/cat9/config_found_sm.0 comp-sys-catman
./usr/share/man/cat9/config_interrupts.0 comp-sys-catman
./usr/share/man/cat9/config_pending_decr.0 comp-sys-catman
./usr/share/man/cat9/config_pending_incr.0 comp-sys-catman
./usr/share/man/cat9/config_search.0 comp-sys-catman
./usr/share/man/cat9/cons.0 comp-sys-catman
./usr/share/man/cat9/copy.0 comp-sys-catman
./usr/share/man/cat9/copyin.0 comp-sys-catman
@ -2995,6 +3035,7 @@
./usr/share/man/cat9/disklabel.0 comp-sys-catman
./usr/share/man/cat9/dopowerhooks.0 comp-sys-catman
./usr/share/man/cat9/doshutdownhooks.0 comp-sys-catman
./usr/share/man/cat9/driver.0 comp-sys-catman
./usr/share/man/cat9/ether_addmulti.0 comp-sys-catman
./usr/share/man/cat9/ether_delmulti.0 comp-sys-catman
./usr/share/man/cat9/ether_ifattach.0 comp-sys-catman
@ -3026,15 +3067,50 @@
./usr/share/man/cat9/fuword.0 comp-sys-catman
./usr/share/man/cat9/gsignal.0 comp-sys-catman
./usr/share/man/cat9/humanize_number.0 comp-sys-catman
./usr/share/man/cat9/i386/bios32_service.0 comp-sys-catman
./usr/share/man/cat9/i386/bioscall.0 comp-sys-catman
./usr/share/man/cat9/in4_cksum.0 comp-sys-catman
./usr/share/man/cat9/in6_cksum.0 comp-sys-catman
./usr/share/man/cat9/in_cksum.0 comp-sys-catman
./usr/share/man/cat9/inittodr.0 comp-sys-catman
./usr/share/man/cat9/intro.0 comp-sys-catman
./usr/share/man/cat9/ioasic.0 comp-sys-catman
./usr/share/man/cat9/ioasic_attach_devs.0 comp-sys-catman
./usr/share/man/cat9/ioasic_intr_disestablish.0 comp-sys-catman
./usr/share/man/cat9/ioasic_intr_establish.0 comp-sys-catman
./usr/share/man/cat9/ioasic_intr_evcnt.0 comp-sys-catman
./usr/share/man/cat9/ioasic_submatch.0 comp-sys-catman
./usr/share/man/cat9/ioctl.0 comp-sys-catman
./usr/share/man/cat9/isa.0 comp-sys-catman
./usr/share/man/cat9/isa_dmaabort.0 comp-sys-catman
./usr/share/man/cat9/isa_dmacascade.0 comp-sys-catman
./usr/share/man/cat9/isa_dmacount.0 comp-sys-catman
./usr/share/man/cat9/isa_dmadone.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamap_create.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamap_destroy.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamaxsize.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamem_alloc.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamem_free.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamem_map.0 comp-sys-catman
./usr/share/man/cat9/isa_dmamem_unmap.0 comp-sys-catman
./usr/share/man/cat9/isa_dmastart.0 comp-sys-catman
./usr/share/man/cat9/isa_drq_isfree.0 comp-sys-catman
./usr/share/man/cat9/isa_free.0 comp-sys-catman
./usr/share/man/cat9/isa_intr_alloc.0 comp-sys-catman
./usr/share/man/cat9/isa_intr_disestablish.0 comp-sys-catman
./usr/share/man/cat9/isa_intr_establish.0 comp-sys-catman
./usr/share/man/cat9/isa_intr_evcnt.0 comp-sys-catman
./usr/share/man/cat9/isa_malloc.0 comp-sys-catman
./usr/share/man/cat9/isa_mappage.0 comp-sys-catman
./usr/share/man/cat9/isapnp.0 comp-sys-catman
./usr/share/man/cat9/isapnp_config.0 comp-sys-catman
./usr/share/man/cat9/isapnp_devmatch.0 comp-sys-catman
./usr/share/man/cat9/isapnp_unconfig.0 comp-sys-catman
./usr/share/man/cat9/kernacc.0 comp-sys-catman
./usr/share/man/cat9/kprintf.0 comp-sys-catman
./usr/share/man/cat9/kthread_create.0 comp-sys-catman
./usr/share/man/cat9/kthread_create1.0 comp-sys-catman
./usr/share/man/cat9/kthread_exit.0 comp-sys-catman
./usr/share/man/cat9/linedisc.0 comp-sys-catman
./usr/share/man/cat9/lock.0 comp-sys-catman
./usr/share/man/cat9/lockinit.0 comp-sys-catman
@ -3068,9 +3144,41 @@
./usr/share/man/cat9/mtocl.0 comp-sys-catman
./usr/share/man/cat9/mtod.0 comp-sys-catman
./usr/share/man/cat9/panic.0 comp-sys-catman
./usr/share/man/cat9/pci.0 comp-sys-catman
./usr/share/man/cat9/pci_conf_interrupt.0 comp-sys-catman
./usr/share/man/cat9/pci_conf_print.0 comp-sys-catman
./usr/share/man/cat9/pci_conf_read.0 comp-sys-catman
./usr/share/man/cat9/pci_conf_write.0 comp-sys-catman
./usr/share/man/cat9/pci_configure_bus.0 comp-sys-catman
./usr/share/man/cat9/pci_decompose_tag.0 comp-sys-catman
./usr/share/man/cat9/pci_devinfo.0 comp-sys-catman
./usr/share/man/cat9/pci_findvendor.0 comp-sys-catman
./usr/share/man/cat9/pci_get_capability.0 comp-sys-catman
./usr/share/man/cat9/pci_intr.0 comp-sys-catman
./usr/share/man/cat9/pci_make_tag.0 comp-sys-catman
./usr/share/man/cat9/pci_mapreg_info.0 comp-sys-catman
./usr/share/man/cat9/pci_mapreg_map.0 comp-sys-catman
./usr/share/man/cat9/pci_mapreg_type.0 comp-sys-catman
./usr/share/man/cat9/pcmcia.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_cis_read_1.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_cis_read_2.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_cis_read_3.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_cis_read_4.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_cis_read_n.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_function_disable.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_function_enable.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_function_init.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_intr_disestablish.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_intr_establish.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_io_alloc.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_io_free.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_io_map.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_io_unmap.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_mem_alloc.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_mem_free.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_mem_map.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_mem_unmap.0 comp-sys-catman
./usr/share/man/cat9/pcmcia_scan_cis.0 comp-sys-catman
./usr/share/man/cat9/pfil.0 comp-sys-catman
./usr/share/man/cat9/pfil_add_hook.0 comp-sys-catman
./usr/share/man/cat9/pfil_hook_get.0 comp-sys-catman
@ -3225,6 +3333,21 @@
./usr/share/man/cat9/uvmspace_share.0 comp-sys-catman
./usr/share/man/cat9/uvmspace_unshare.0 comp-sys-catman
./usr/share/man/cat9/uvn_attach.0 comp-sys-catman
./usr/share/man/cat9/vme.0 comp-sys-catman
./usr/share/man/cat9/vme_dmamap_create.0 comp-sys-catman
./usr/share/man/cat9/vme_dmamap_destroy.0 comp-sys-catman
./usr/share/man/cat9/vme_dmamem_alloc.0 comp-sys-catman
./usr/share/man/cat9/vme_dmamem_free.0 comp-sys-catman
./usr/share/man/cat9/vme_intr_disestablish.0 comp-sys-catman
./usr/share/man/cat9/vme_intr_establish.0 comp-sys-catman
./usr/share/man/cat9/vme_intr_evcnt.0 comp-sys-catman
./usr/share/man/cat9/vme_intr_map.0 comp-sys-catman
./usr/share/man/cat9/vme_probe.0 comp-sys-catman
./usr/share/man/cat9/vme_space_alloc.0 comp-sys-catman
./usr/share/man/cat9/vme_space_free.0 comp-sys-catman
./usr/share/man/cat9/vme_space_get.0 comp-sys-catman
./usr/share/man/cat9/vme_space_map.0 comp-sys-catman
./usr/share/man/cat9/vme_space_unmap.0 comp-sys-catman
./usr/share/man/cat9/vprintf.0 comp-sys-catman
./usr/share/man/cat9/vsnprintf.0 comp-sys-catman
./usr/share/man/cat9/vsprintf.0 comp-sys-catman
@ -4860,6 +4983,16 @@
./usr/share/man/man8/cvsbug.8 comp-cvs-man
./usr/share/man/man8/kgmon.8 comp-sysutil-man
./usr/share/man/man8/verify_krb5_conf.8 comp-sysutil-man
./usr/share/man/man9/CARDBUS_PRODUCT.9 comp-sys-man
./usr/share/man/man9/CARDBUS_VENDOR.9 comp-sys-man
./usr/share/man/man9/Cardbus_conf_read.9 comp-sys-man
./usr/share/man/man9/Cardbus_conf_write.9 comp-sys-man
./usr/share/man/man9/Cardbus_free_tag.9 comp-sys-man
./usr/share/man/man9/Cardbus_function_disable.9 comp-sys-man
./usr/share/man/man9/Cardbus_function_enable.9 comp-sys-man
./usr/share/man/man9/Cardbus_make_tag.9 comp-sys-man
./usr/share/man/man9/Cardbus_mapreg_map.9 comp-sys-man
./usr/share/man/man9/Cardbus_mapreg_unmap.9 comp-sys-man
./usr/share/man/man9/ETHER_FIRST_MULTI.9 comp-sys-man
./usr/share/man/man9/ETHER_IS_MULTICAST.9 comp-sys-man
./usr/share/man/man9/ETHER_NEXT_MULTI.9 comp-sys-man
@ -4877,12 +5010,16 @@
./usr/share/man/man9/M_LEADINGSPACE.9 comp-sys-man
./usr/share/man/man9/M_PREPEND.9 comp-sys-man
./usr/share/man/man9/M_TRAILINGSPACE.9 comp-sys-man
./usr/share/man/man9/PCI_PRODUCT.9 comp-sys-man
./usr/share/man/man9/PCI_REVISION.9 comp-sys-man
./usr/share/man/man9/PCI_VENDOR.9 comp-sys-man
./usr/share/man/man9/access.9 comp-sys-man
./usr/share/man/man9/arp.9 comp-sys-man
./usr/share/man/man9/arp_ifinit.9 comp-sys-man
./usr/share/man/man9/arpintr.9 comp-sys-man
./usr/share/man/man9/arpresolve.9 comp-sys-man
./usr/share/man/man9/audio.9 comp-sys-man
./usr/share/man/man9/autoconf.9 comp-sys-man
./usr/share/man/man9/bitmask_snprintf.9 comp-sys-man
./usr/share/man/man9/boottime.9 comp-sys-man
./usr/share/man/man9/bounds_check_with_label.9 comp-sys-man
@ -4946,6 +5083,20 @@
./usr/share/man/man9/callout_pending.9 comp-sys-man
./usr/share/man/man9/callout_reset.9 comp-sys-man
./usr/share/man/man9/callout_stop.9 comp-sys-man
./usr/share/man/man9/cardbus.9 comp-sys-man
./usr/share/man/man9/cardbus_attach_card.9 comp-sys-man
./usr/share/man/man9/cardbus_conf_read.9 comp-sys-man
./usr/share/man/man9/cardbus_conf_write.9 comp-sys-man
./usr/share/man/man9/cardbus_detach_card.9 comp-sys-man
./usr/share/man/man9/cardbus_free_tag.9 comp-sys-man
./usr/share/man/man9/cardbus_function_disable.9 comp-sys-man
./usr/share/man/man9/cardbus_function_enable.9 comp-sys-man
./usr/share/man/man9/cardbus_get_capability.9 comp-sys-man
./usr/share/man/man9/cardbus_intr_disestablish.9 comp-sys-man
./usr/share/man/man9/cardbus_intr_establish.9 comp-sys-man
./usr/share/man/man9/cardbus_make_tag.9 comp-sys-man
./usr/share/man/man9/cardbus_mapreg_map.9 comp-sys-man
./usr/share/man/man9/cardbus_mapreg_unmap.9 comp-sys-man
./usr/share/man/man9/clock_secs_to_ymdhms.9 comp-sys-man
./usr/share/man/man9/clock_ymdhms_to_secs.9 comp-sys-man
./usr/share/man/man9/cltom.9 comp-sys-man
@ -4955,6 +5106,18 @@
./usr/share/man/man9/cnmagic.9 comp-sys-man
./usr/share/man/man9/cnpollc.9 comp-sys-man
./usr/share/man/man9/cnputc.9 comp-sys-man
./usr/share/man/man9/config.9 comp-sys-man
./usr/share/man/man9/config_activate.9 comp-sys-man
./usr/share/man/man9/config_attach.9 comp-sys-man
./usr/share/man/man9/config_deactivate.9 comp-sys-man
./usr/share/man/man9/config_defer.9 comp-sys-man
./usr/share/man/man9/config_detach.9 comp-sys-man
./usr/share/man/man9/config_found.9 comp-sys-man
./usr/share/man/man9/config_found_sm.9 comp-sys-man
./usr/share/man/man9/config_interrupts.9 comp-sys-man
./usr/share/man/man9/config_pending_decr.9 comp-sys-man
./usr/share/man/man9/config_pending_incr.9 comp-sys-man
./usr/share/man/man9/config_search.9 comp-sys-man
./usr/share/man/man9/cons.9 comp-sys-man
./usr/share/man/man9/copy.9 comp-sys-man
./usr/share/man/man9/copyin.9 comp-sys-man
@ -4976,6 +5139,7 @@
./usr/share/man/man9/disklabel.9 comp-sys-man
./usr/share/man/man9/dopowerhooks.9 comp-sys-man
./usr/share/man/man9/doshutdownhooks.9 comp-sys-man
./usr/share/man/man9/driver.9 comp-sys-man
./usr/share/man/man9/ether_addmulti.9 comp-sys-man
./usr/share/man/man9/ether_delmulti.9 comp-sys-man
./usr/share/man/man9/ether_ifattach.9 comp-sys-man
@ -5007,15 +5171,50 @@
./usr/share/man/man9/fuword.9 comp-sys-man
./usr/share/man/man9/gsignal.9 comp-sys-man
./usr/share/man/man9/humanize_number.9 comp-sys-man
./usr/share/man/man9/i386/bios32_service.9 comp-sys-man
./usr/share/man/man9/i386/bioscall.9 comp-sys-man
./usr/share/man/man9/in4_cksum.9 comp-sys-man
./usr/share/man/man9/in6_cksum.9 comp-sys-man
./usr/share/man/man9/in_cksum.9 comp-sys-man
./usr/share/man/man9/inittodr.9 comp-sys-man
./usr/share/man/man9/intro.9 comp-sys-man
./usr/share/man/man9/ioasic.9 comp-sys-man
./usr/share/man/man9/ioasic_attach_devs.9 comp-sys-man
./usr/share/man/man9/ioasic_intr_disestablish.9 comp-sys-man
./usr/share/man/man9/ioasic_intr_establish.9 comp-sys-man
./usr/share/man/man9/ioasic_intr_evcnt.9 comp-sys-man
./usr/share/man/man9/ioasic_submatch.9 comp-sys-man
./usr/share/man/man9/ioctl.9 comp-sys-man
./usr/share/man/man9/isa.9 comp-sys-man
./usr/share/man/man9/isa_dmaabort.9 comp-sys-man
./usr/share/man/man9/isa_dmacascade.9 comp-sys-man
./usr/share/man/man9/isa_dmacount.9 comp-sys-man
./usr/share/man/man9/isa_dmadone.9 comp-sys-man
./usr/share/man/man9/isa_dmamap_create.9 comp-sys-man
./usr/share/man/man9/isa_dmamap_destroy.9 comp-sys-man
./usr/share/man/man9/isa_dmamaxsize.9 comp-sys-man
./usr/share/man/man9/isa_dmamem_alloc.9 comp-sys-man
./usr/share/man/man9/isa_dmamem_free.9 comp-sys-man
./usr/share/man/man9/isa_dmamem_map.9 comp-sys-man
./usr/share/man/man9/isa_dmamem_unmap.9 comp-sys-man
./usr/share/man/man9/isa_dmastart.9 comp-sys-man
./usr/share/man/man9/isa_drq_isfree.9 comp-sys-man
./usr/share/man/man9/isa_free.9 comp-sys-man
./usr/share/man/man9/isa_intr_alloc.9 comp-sys-man
./usr/share/man/man9/isa_intr_disestablish.9 comp-sys-man
./usr/share/man/man9/isa_intr_establish.9 comp-sys-man
./usr/share/man/man9/isa_intr_evcnt.9 comp-sys-man
./usr/share/man/man9/isa_malloc.9 comp-sys-man
./usr/share/man/man9/isa_mappage.9 comp-sys-man
./usr/share/man/man9/isapnp.9 comp-sys-man
./usr/share/man/man9/isapnp_config.9 comp-sys-man
./usr/share/man/man9/isapnp_devmatch.9 comp-sys-man
./usr/share/man/man9/isapnp_unconfig.9 comp-sys-man
./usr/share/man/man9/kernacc.9 comp-sys-man
./usr/share/man/man9/kprintf.9 comp-sys-man
./usr/share/man/man9/kthread_create.9 comp-sys-man
./usr/share/man/man9/kthread_create1.9 comp-sys-man
./usr/share/man/man9/kthread_exit.9 comp-sys-man
./usr/share/man/man9/linedisc.9 comp-sys-man
./usr/share/man/man9/lock.9 comp-sys-man
./usr/share/man/man9/lockinit.9 comp-sys-man
@ -5049,9 +5248,41 @@
./usr/share/man/man9/mtocl.9 comp-sys-man
./usr/share/man/man9/mtod.9 comp-sys-man
./usr/share/man/man9/panic.9 comp-sys-man
./usr/share/man/man9/pci.9 comp-sys-man
./usr/share/man/man9/pci_conf_interrupt.9 comp-sys-man
./usr/share/man/man9/pci_conf_print.9 comp-sys-man
./usr/share/man/man9/pci_conf_read.9 comp-sys-man
./usr/share/man/man9/pci_conf_write.9 comp-sys-man
./usr/share/man/man9/pci_configure_bus.9 comp-sys-man
./usr/share/man/man9/pci_decompose_tag.9 comp-sys-man
./usr/share/man/man9/pci_devinfo.9 comp-sys-man
./usr/share/man/man9/pci_findvendor.9 comp-sys-man
./usr/share/man/man9/pci_get_capability.9 comp-sys-man
./usr/share/man/man9/pci_intr.9 comp-sys-man
./usr/share/man/man9/pci_make_tag.9 comp-sys-man
./usr/share/man/man9/pci_mapreg_info.9 comp-sys-man
./usr/share/man/man9/pci_mapreg_map.9 comp-sys-man
./usr/share/man/man9/pci_mapreg_type.9 comp-sys-man
./usr/share/man/man9/pcmcia.9 comp-sys-man
./usr/share/man/man9/pcmcia_cis_read_1.9 comp-sys-man
./usr/share/man/man9/pcmcia_cis_read_2.9 comp-sys-man
./usr/share/man/man9/pcmcia_cis_read_3.9 comp-sys-man
./usr/share/man/man9/pcmcia_cis_read_4.9 comp-sys-man
./usr/share/man/man9/pcmcia_cis_read_n.9 comp-sys-man
./usr/share/man/man9/pcmcia_function_disable.9 comp-sys-man
./usr/share/man/man9/pcmcia_function_enable.9 comp-sys-man
./usr/share/man/man9/pcmcia_function_init.9 comp-sys-man
./usr/share/man/man9/pcmcia_intr_disestablish.9 comp-sys-man
./usr/share/man/man9/pcmcia_intr_establish.9 comp-sys-man
./usr/share/man/man9/pcmcia_io_alloc.9 comp-sys-man
./usr/share/man/man9/pcmcia_io_free.9 comp-sys-man
./usr/share/man/man9/pcmcia_io_map.9 comp-sys-man
./usr/share/man/man9/pcmcia_io_unmap.9 comp-sys-man
./usr/share/man/man9/pcmcia_mem_alloc.9 comp-sys-man
./usr/share/man/man9/pcmcia_mem_free.9 comp-sys-man
./usr/share/man/man9/pcmcia_mem_map.9 comp-sys-man
./usr/share/man/man9/pcmcia_mem_unmap.9 comp-sys-man
./usr/share/man/man9/pcmcia_scan_cis.9 comp-sys-man
./usr/share/man/man9/pfil.9 comp-sys-man
./usr/share/man/man9/pfil_add_hook.9 comp-sys-man
./usr/share/man/man9/pfil_hook_get.9 comp-sys-man
@ -5206,6 +5437,21 @@
./usr/share/man/man9/uvmspace_share.9 comp-sys-man
./usr/share/man/man9/uvmspace_unshare.9 comp-sys-man
./usr/share/man/man9/uvn_attach.9 comp-sys-man
./usr/share/man/man9/vme.9 comp-sys-man
./usr/share/man/man9/vme_dmamap_create.9 comp-sys-man
./usr/share/man/man9/vme_dmamap_destroy.9 comp-sys-man
./usr/share/man/man9/vme_dmamem_alloc.9 comp-sys-man
./usr/share/man/man9/vme_dmamem_free.9 comp-sys-man
./usr/share/man/man9/vme_intr_disestablish.9 comp-sys-man
./usr/share/man/man9/vme_intr_establish.9 comp-sys-man
./usr/share/man/man9/vme_intr_evcnt.9 comp-sys-man
./usr/share/man/man9/vme_intr_map.9 comp-sys-man
./usr/share/man/man9/vme_probe.9 comp-sys-man
./usr/share/man/man9/vme_space_alloc.9 comp-sys-man
./usr/share/man/man9/vme_space_free.9 comp-sys-man
./usr/share/man/man9/vme_space_get.9 comp-sys-man
./usr/share/man/man9/vme_space_map.9 comp-sys-man
./usr/share/man/man9/vme_space_unmap.9 comp-sys-man
./usr/share/man/man9/vprintf.9 comp-sys-man
./usr/share/man/man9/vsnprintf.9 comp-sys-man
./usr/share/man/man9/vsprintf.9 comp-sys-man

View File

@ -1,21 +1,35 @@
# $NetBSD: Makefile,v 1.83 2001/06/28 23:04:39 itojun Exp $
# $NetBSD: Makefile,v 1.84 2001/07/01 04:11:14 gmcgarry Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
MAN= access.9 arp.9 audio.9 bitmask_snprintf.9 bus_dma.9 bus_space.9 \
callout.9 cnmagic.9 cons.9 copy.9 cpu_reboot.9 ctxsw.9 disk.9 \
disklabel.9 \
dopowerhooks.9 doshutdownhooks.9 ethersubr.9 evcnt.9 \
MAN= access.9 arp.9 audio.9 autoconf.9 bitmask_snprintf.9 \
bus_dma.9 bus_space.9 \
callout.9 cardbus.9 cnmagic.9 config.9 cons.9 copy.9 cpu_reboot.9 \
ctxsw.9 disk.9 disklabel.9 \
dopowerhooks.9 doshutdownhooks.9 driver.9 ethersubr.9 evcnt.9 \
extent.9 fetch.9 fork1.9 humanize_number.9 in4_cksum.9 inittodr.9 \
intro.9 ioctl.9 kprintf.9 linedisc.9 lock.9 log.9 malloc.9 mbuf.9 \
microtime.9 panic.9 pci_configure_bus.9 pci_intr.9 pfil.9 physio.9 \
intro.9 ioasic.9 ioctl.9 isa.9 isapnp.9 kprintf.9 kthread.9 \
linedisc.9 lock.9 log.9 malloc.9 mbuf.9 \
microtime.9 panic.9 pci.9 pci_configure_bus.9 pci_intr.9 \
pcmcia.9 pfil.9 physio.9 \
pmap.9 pool.9 powerhook_establish.9 ppsratecheck.9 psignal.9 \
ratecheck.9 resettodr.9 rnd.9 rt_timer.9 \
scsipi.9 shutdownhook_establish.9 sleep.9 softintr.9 \
spl.9 store.9 time.9 todr.9 uiomove.9 ucom.9 \
spl.9 store.9 time.9 todr.9 uiomove.9 ucom.9 vme.9 \
usbdi.9 uvm.9 wdc.9
MLINKS+=arp.9 arp_ifinit.9 arp.9 arpresolve.9 arp.9 arpintr.9
MLINKS+=access.9 kernacc.9 access.9 useracc.9
MLINKS+=autoconf.9 config_search.9 \
autoconf.9 config_found_sm.9 \
autoconf.9 config_found.9 \
autoconf.9 config_attach.9 \
autoconf.9 config_detach.9 \
autoconf.9 config_activate.9 \
autoconf.9 config_deactivate.9 \
autoconf.9 config_defer.9 \
autoconf.9 config_interrupts.9 \
autoconf.9 config_pending_incr.9 \
autoconf.9 config_pending_decr.9
MLINKS+=bus_space.9 bus_space_alloc.9 bus_space.9 bus_space_barrier.9 \
bus_space.9 bus_space_copy_region_1.9 \
bus_space.9 bus_space_copy_region_2.9 \
@ -58,6 +72,29 @@ MLINKS+=callout.9 callout_init.9 callout.9 callout_reset.9 \
callout.9 callout_stop.9 callout.9 callout_active.9 \
callout.9 callout_pending.9 callout.9 callout_deactivate.9 \
callout.9 timeout.9 callout.9 untimeout.9
MLINKS+=cardbus.9 cardbus_attach_card.9 \
cardbus.9 cardbus_detach_card.9 \
cardbus.9 cardbus_function_enable.9 \
cardbus.9 cardbus_function_disable.9 \
cardbus.9 cardbus_mapreg_map.9 \
cardbus.9 cardbus_mapreg_unmap.9 \
cardbus.9 cardbus_get_capability.9 \
cardbus.9 cardbus_make_tag.9 \
cardbus.9 cardbus_free_tag.9 \
cardbus.9 cardbus_conf_read.9 \
cardbus.9 cardbus_conf_write.9 \
cardbus.9 cardbus_intr_establish.9 \
cardbus.9 cardbus_intr_disestablish.9 \
cardbus.9 CARDBUS_VENDOR.9 \
cardbus.9 CARDBUS_PRODUCT.9 \
cardbus.9 Cardbus_function_enable.9 \
cardbus.9 Cardbus_function_disable.9 \
cardbus.9 Cardbus_mapreg_map.9 \
cardbus.9 Cardbus_mapreg_unmap.9 \
cardbus.9 Cardbus_make_tag.9 \
cardbus.9 Cardbus_free_tag.9 \
cardbus.9 Cardbus_conf_read.9 \
cardbus.9 Cardbus_conf_write.9
MLINKS+=cons.9 cnbell.9 cons.9 cngetc.9 cons.9 cngetsn.9 cons.9 cnpollc.9 \
cons.9 cnputc.9
MLINKS+=copy.9 copyin.9 copy.9 copyout.9 copy.9 copystr.9 \
@ -84,10 +121,41 @@ MLINKS+=fetch.9 fubyte.9 fetch.9 fuibyte.9 fetch.9 fusword.9 \
MLINKS+=humanize_number.9 format_bytes.9
MLINKS+=in4_cksum.9 in_cksum.9 \
in4_cksum.9 in6_cksum.9
MLINKS+=ioasic.9 ioasic_intr_establish.9 \
ioasic.9 ioasic_intr_disestablish.9 \
ioasic.9 ioasic_intr_evcnt.9 \
ioasic.9 ioasic_attach_devs.9 \
ioasic.9 ioasic_submatch.9
MLINKS+=isa.9 isa_intr_alloc.9 \
isa.9 isa_intr_establish.9 \
isa.9 isa_intr_disestablish.9 \
isa.9 isa_intr_evcnt.9 \
isa.9 isa_dmamap_create.9 \
isa.9 isa_dmamap_destroy.9 \
isa.9 isa_dmamem_alloc.9 \
isa.9 isa_dmamem_free.9 \
isa.9 isa_dmamem_map.9 \
isa.9 isa_dmamem_unmap.9 \
isa.9 isa_malloc.9 \
isa.9 isa_free.9 \
isa.9 isa_dmastart.9 \
isa.9 isa_dmaabort.9 \
isa.9 isa_dmacount.9 \
isa.9 isa_dmadone.9 \
isa.9 isa_dmamaxsize.9 \
isa.9 isa_drq_isfree.9 \
isa.9 isa_dmacascade.9 \
isa.9 isa_mappage.9
MLINKS+=isapnp.9 isapnp_devmatch.9 \
isapnp.9 isapnp_config.9 \
isapnp.9 isapnp_unconfig.9
MLINKS+=kprintf.9 printf.9 kprintf.9 sprintf.9 kprintf.9 snprintf.9 \
kprintf.9 vprintf.9 kprintf.9 vsprintf.9 kprintf.9 vsnprintf.9 \
kprintf.9 uprintf.9 kprintf.9 ttyprintf.9 \
kprintf.9 tprintf.9 kprintf.9 tprintf_open.9 kprintf.9 tprintf_close.9
MLINKS+=kthread.9 kthread_exit.9 \
kthread.9 kthread_create.9 \
kthread.9 kthread_create1.9
MLINKS+=lock.9 simple_lock_init.9 lock.9 simple_lock.9 \
lock.9 simple_lock_try.9 lock.9 simple_lock_unlock.9 \
lock.9 simple_lock_freecheck.9 lock.9 simple_lock_dump.9 \
@ -106,7 +174,45 @@ MLINKS+=mbuf.9 m_get.9 mbuf.9 m_getclr.9 mbuf.9 m_gethdr.9 mbuf.9 m_devget.9 \
mbuf.9 M_ALIGN.9 mbuf.9 MH_ALIGN.9 mbuf.9 M_LEADINGSPACE.9 \
mbuf.9 M_TRAILINGSPACE.9 mbuf.9 M_PREPEND.9 mbuf.9 MCHTYPE.9 \
mbuf.9 MEXTREMOVE.9 mbuf.9 MFREE.9
MLINKS+=pci.9 pci_conf_read.9 \
pci.9 pci_conf_write.9 \
pci.9 pci_conf_print.9 \
pci.9 pci_get_capability.9 \
pci.9 pci_mapreg_type.9 \
pci.9 pci_mapreg_map.9 \
pci.9 pci_mapreg_info.9 \
pci.9 pci_intr_map.9 \
pci.9 pci_intr_string.9 \
pci.9 pci_intr_evcnt.9 \
pci.9 pci_intr_establish.9 \
pci.9 pci_intr_disestablish.9 \
pci.9 pci_make_tag.9 \
pci.9 pci_decompose_tag.9 \
pci.9 pci_findvendor.9 \
pci.9 pci_devinfo.9 \
pci.9 PCI_VENDOR.9 \
pci.9 PCI_PRODUCT.9 \
pci.9 PCI_REVISION.9
MLINKS+=pci_configure_bus.9 pci_conf_interrupt.9
MLINKS+=pcmcia.9 pcmcia_function_init.9 \
pcmcia.9 pcmcia_function_enable.9 \
pcmcia.9 pcmcia_function_disable.9 \
pcmcia.9 pcmcia_io_alloc.9 \
pcmcia.9 pcmcia_io_free.9 \
pcmcia.9 pcmcia_io_map.9 \
pcmcia.9 pcmcia_io_unmap.9 \
pcmcia.9 pcmcia_mem_alloc.9 \
pcmcia.9 pcmcia_mem_free.9 \
pcmcia.9 pcmcia_mem_map.9 \
pcmcia.9 pcmcia_mem_unmap.9 \
pcmcia.9 pcmcia_intr_establish.9 \
pcmcia.9 pcmcia_intr_disestablish.9 \
pcmcia.9 pcmcia_cis_read_1.9 \
pcmcia.9 pcmcia_cis_read_2.9 \
pcmcia.9 pcmcia_cis_read_3.9 \
pcmcia.9 pcmcia_cis_read_4.9 \
pcmcia.9 pcmcia_cis_read_n.9 \
pcmcia.9 pcmcia_scan_cis.9
MLINKS+=pool.9 pool_create.9 pool.9 pool_destroy.9 pool.9 pool_get.9 \
pool.9 pool_init.9 pool.9 pool_put.9 pool.9 pool_prime.9 \
pool.9 pool_sethiwat.9 pool.9 pool_setlowat.9
@ -130,6 +236,9 @@ MLINKS+=spl.9 spl0.9 spl.9 splbio.9 spl.9 splclock.9 spl.9 splhigh.9 \
MLINKS+=store.9 subyte.9 store.9 suibyte.9 store.9 susword.9 \
store.9 suswintr.9 store.9 suword.9 store.9 suiword.9
MLINKS+=time.9 boottime.9 time.9 mono_time.9 time.9 runtime.9
MLINKS+=todr.9 todr_gettime.9 todr.9 todr_settime.9 \
todr.9 todr_getcal.9 todr.9 todr_setcal.9 \
todr.9 clock_ymdhms_to_secs.9 todr.9 clock_secs_to_ymdhms.9
MLINKS+=uvm.9 uvm_init.9 uvm.9 uvm_init_limits.9 uvm.9 uvm_setpagesize.9 \
uvm.9 uvm_swap_init.9 uvm.9 uvm_map.9 uvm.9 uvm_map_pageable.9 \
uvm.9 uvm_map_checkprot.9 uvm.9 uvm_map_protect.9 \
@ -148,9 +257,20 @@ MLINKS+=uvm.9 uvm_init.9 uvm.9 uvm_init_limits.9 uvm.9 uvm_setpagesize.9 \
uvm.9 uvm_kernacc.9 uvm.9 uvm_useracc.9 uvm.9 uvm_vslock.9 \
uvm.9 uvm_vsunlock.9 uvm.9 uvm_meter.9 uvm.9 uvm_sysctl.9 \
uvm.9 uvm_fork.9 uvm.9 uvm_grow.9 uvm.9 uvm_coredump.9
MLINKS+=todr.9 todr_gettime.9 todr.9 todr_settime.9 \
todr.9 todr_getcal.9 todr.9 todr_setcal.9 \
todr.9 clock_ymdhms_to_secs.9 todr.9 clock_secs_to_ymdhms.9
MLINKS+=vme.9 vme_probe.9 \
vme.9 vme_space_map.9 \
vme.9 vme_space_unmap.9 \
vme.9 vme_intr_map.9 \
vme.9 vme_intr_establish.9 \
vme.9 vme_intr_disestablish.9 \
vme.9 vme_intr_evcnt.9 \
vme.9 vme_dmamap_create.9 \
vme.9 vme_dmamap_destroy.9 \
vme.9 vme_dmamem_alloc.9 \
vme.9 vme_dmamem_free.9 \
vme.9 vme_space_alloc.9 \
vme.9 vme_space_free.9 \
vme.9 vme_space_get.9 \
SUBDIR= man9.i386 man9.sun3

270
share/man/man9/autoconf.9 Normal file
View File

@ -0,0 +1,270 @@
.\" $NetBSD: autoconf.9,v 1.1 2001/07/01 04:11:13 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 17, 2001
.Dt AUTOCONF 9
.Os
.Sh NAME
.Nm autoconf ,
.Nm config_search ,
.Nm config_found_sm ,
.Nm config_found ,
.Nm config_attach ,
.Nm config_detach ,
.Nm config_activate ,
.Nm config_deactivate ,
.Nm config_defer ,
.Nm config_interrupts ,
.Nm config_pending_incr ,
.Nm config_pending_decr
.Nd autoconfiguration framework
.Sh SYNOPSIS
.Fd #include <sys/param.h>
.Fd #include <sys/device.h>
.Fd #include <sys/error.h>
.Ft struct cfdata *
.Fn config_search "cfmatch_t func" "struct device *parent" "void *aux"
.Ft struct device *
.Fn config_found_sm "struct device *parent" "void *aux" "cfprint_t print" \
"cfmatch_t submatch"
.Ft struct device *
.Fn config_found "struct device *parent" "void *aux" "cfprint_t print"
.Ft struct device *
.Fn config_attach "struct device *parent" "struct cfdata *cf" "void *aux" \
"cprint_t print"
.Ft int
.Fn config_detach "struct device *dev" "int flags"
.Ft int
.Fn config_activate "struct device *dev"
.Ft int
.Fn config_deactivate "struct device *dev"
.Ft int
.Fn config_defer "struct device *dev" "void (*func)(struct device *)"
.Ft void
.Fn config_interrupts "struct device *dev" "void (*func)(struct device *)"
.Ft void
.Fn config_pending_incr
.Ft void
.Fn config_pending_decr
.Sh DESCRIPTION
Autoconfiguration is the process of matching hardware devices with an
appropriate device driver. In its most basic form, autoconfiguration
consists of the recursive process of finding and attaching all devices
on a bus, including other busses.
.Pp
The autoconfiguration framework supports
.Em direct configuration
where the bus driver can determine the devices present. The
autoconfiguration framework also supports
.Em indirect configuration
where the drivers must probe the bus looking the presence of a device.
Direct configuration is preferred since it can find hardware
regardless of the presence of proper drivers.
.Pp
The autoconfiguration process occurs at system bootstrap and is driven
by a table generated from a
.Do
device definition
.Dc
file by
.Xr config 8 .
For a description of the
.Xr config 8
.Do
machine description
.Dc
language, see
.Xr config 9 .
.Pp
Each device must have a name consisting of an alphanumeric string that
ends with a unit number. The unit number identifies an instance of
the driver. Device data structures are allocated dynamically during
autoconfiguration, giving a unique address for each instance.
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn config_search "func" "parent" "aux"
Performs indirect configuration of physical devices.
.Fn config_search
iterates over all potential children, calling the given
function
.Fa func
for each one. If
.Fa func
is NULL,
.Fn config_search
applies each child's match function instead. The argument
.Fa parent
is the pointer to the parent's device structure. The given
.Fa aux
argument describes the device that has been found and is simply passed
on through
.Fa func
to the child.
.Fn config_search
returns a pointer to the best-matched child or NULL otherwise.
.Pp
The role of
.Fa func
is to call
the match function for each device and call
.Fa config_attach
for any positive matches. If
.Fa func
is NULL, then the parent should record the return value from
.Fn config_search
and call
.Fn config_attach
itself.
.Pp
Note that this function is designed so that it can be used to apply an
arbitrary function to all potential children. In this case callers
may choose to ignore the return value.
.It Fn config_found_sm "parent" "aux" "print" "submatch"
Performs direct configuration on a physical device.
.Fn config_found_sm
is called by the parent and in turn calls the
.Fa submatch
function to call the match function as
determined by the configuration table. If
.Fa submatch
is NULL, the driver match functions are called directly. The argument
.Fa parent
is the pointer to the parent's device structure. The given
.Fa aux
argument describes the device that has been found. The
.Em softc
structure for the matched device will be allocated, and the
appropriate driver attach function will be called. If the device is
matched, the system prints the name of the child and parent devices,
and then calls the
.Fa print
function to produce addition information if desired. If no driver
takes a match, the same
.Fa print
function is called to complain. The print function is called with the
.Fa aux
argument and, if the matches failed, the full name (including unit
number) of the parent device, otherwise NULL. The
.Fa print
function must return an integer value.
.Pp
Two special strings,
.Do
not configured
.Dc
and
.Do
unsupported
.Dc
will be appended automatically to non-driver reports if the return
value is UNCONF or UNSUPP respectively; otherwise the function shouuld
return the value QUIET.
.Pp
.Fn config_found_sm
returns 1 if the device get attached, 0 otherwise. Most callers can
ignore this value, since the system will already have printed a
diagnostic.
.It Fn config_found "parent" "aux" "print"
This function is equivalent to calling
.Fn config_found_sm "parent" "aux" "print" "submatch"
and is provided for compatibility with older drivers.
.It Fn config_attach "parent" "cf" "aux" "print"
Attach a found device. Allocates the memory for the
.Em softc
structure and calls the drivers attach function according to the
configuration table.
.It Fn config_detach "dev" "flags"
Called by the parent to detach the child device. The second argument
.Em flags
contains detachment flags. Valid values are DETACH_FORCE (force
detachment (eg. because of hardware removal) and DETACH_QUIET (do not
print a notice).
.Fn config_detach
returns zero if successful and an error code otherwise.
.It Fn config_activate "dev"
Called by the parent to activate the child device
.Fa dev .
.It Fn config_deactivate "dev"
Called by the parent to deactivate the child device
.Fa dev .
.It Fn config_defer "dev" "func"
Called by the child to defer the remainder of its configuration until
all its parent's devices have been attached. At this point, the
function
.Fa func
is called with the argument
.Fa dev .
.It Fn config_interrupts "struct device *dev" "void (*func)(struct device *)"
Called by the child to defer the remainder of its configuration until
interrupts are enabled. At this point, the function
.Fa func
is called with the argument
.Fa dev .
.It Fn config_pending_incr
Increment the
.Va config_pending
semaphore. It is used to account for deferred configurations before
mounting the root filesystem.
.It Fn config_pending_decr
Decrement the
.Va config_pending
semaphore. It is used to account for deferred configurations before
mounting the root filesystem.
.El
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
autoconfiguration framework can be found. All pathnames are relative
to
.Pa /usr/src .
.Pp
The autoconfiguration framework itself is implemented within the file
.Pa sys/kern/subr_autoconf.c .
Data structures and function prototypes for the framework are located in
.Pa sys/sys/device.h .
.Sh SEE ALSO
.Xr config 8 ,
.Xr config 9 ,
.Xr driver 9 .
.Sh HISTORY
Autoconfiguration first appeared in
.Bx 4.1 .
The autoconfiguration framework was completely revised in
.Bx 4.4 .
The detach and activate interfaces appeared in
.Nx 1.5 .

352
share/man/man9/cardbus.9 Normal file
View File

@ -0,0 +1,352 @@
.\" $NetBSD: cardbus.9,v 1.1 2001/07/01 04:11:13 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 20, 2001
.Dt CARDBUS 9
.Os
.Sh NAME
.Nm Cardbus ,
.Nm cardbus_attach_card ,
.Nm cardbus_detach_card ,
.Nm cardbus_function_enable ,
.Nm cardbus_function_disable ,
.Nm cardbus_mapreg_map ,
.Nm cardbus_mapreg_unmap ,
.Nm cardbus_get_capability ,
.Nm cardbus_make_tag ,
.Nm cardbus_free_tag ,
.Nm cardbus_conf_read ,
.Nm cardbus_conf_write ,
.Nm cardbus_intr_establish ,
.Nm cardbus_intr_disestablish ,
.Nm CARDBUS_VENDOR ,
.Nm CARDBUS_PRODUCT ,
.Nm Cardbus_function_enable ,
.Nm Cardbus_function_disable ,
.Nm Cardbus_mapreg_map ,
.Nm Cardbus_mapreg_unmap ,
.Nm Cardbus_make_tag ,
.Nm Cardbus_free_tag ,
.Nm Cardbus_conf_read ,
.Nm Cardbus_conf_write
.Nd support for Cardbus PC-Card devices
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/cardbus/cardbusvar.h>
.Fd #include <dev/cardbus/cardbusdevs.h>
.Ft int
.Fn cardbus_attach_card "struct cardbus_softc *csc"
.Ft void
.Fn cardbus_detach_card "struct cardbus_softc *csc"
.Ft int
.Fn cardbus_function_enable "struct cardbus_softc *csc" "int function"
.Ft int
.Fn cardbus_function_disable "struct cardbus_softc *csc" "int function"
.Ft int
.Fo cardbus_mapreg_map
.Fa "struct cardbus_softc *csc" "int cf" "int reg"
.Fa "cardbusreg_t type" "int busflags" "bus_space_tag_t *tagp"
.Fa "bus_space_handle_t *handlep" "bus_addr_t *basep" "bus_size_t *sizep"
.Fc
.Ft int
.Fn cardbus_mapreg_unmap "struct cardbus_softc *csc" "int cf" \
"int reg" "bus_space_tag_t tag" "bus_space_handle_t handle" \
"bus_size_t size"
.Ft int
.Fn cardbus_get_capability "cardbus_chipset_tag_t cc" \
"cardbus_function_tag_t cf" "cardbustag_t tag" "int capid" \
"int *offsetp" "cardbusreg_t *valuep"
.Ft cardbustag_t
.Fn cardbus_make_tag "cardbus_chipset_tag_t cc" "int cf" "int bus" \
"int device" "int function"
.Ft void
.Fn cardbus_free_tag "cardbus_chipset_tag_t cc" "int cf" \
"cardbustag_t tag"
.Ft cardbusreg_t
.Fn cardbus_conf_read "cardbus_chipset_tag_t cc" "int cf" \
"cardbustag_t tag" "int offs"
.Ft void
.Fn cardbus_conf_write "cardbus_chipset_tag_t cc" "int cf" \
"cardbustag_t tag" "int offs" "busreg_t val"
.Ft void *
.Fn cardbus_intr_establish "cardbus_chipset_tag_t cc" \
"cardbus_function_tag_t cf" "cardbus_intr_handle_t irq" "int level" \
"int (*handler)(void *)" "void *arg"
.Ft void
.Fn cardbus_intr_disestablish "cardbus_chipset_tag_t cc" \
"cardbus_function_tag_t cf" "void *ih"
.Ft int
.Fn CARDBUS_VENDOR "cardbusreg_t id"
.Ft int
.Fn CARDBUS_PRODUCT "cardbusreg_t id"
.Ft int
.Fn Cardbus_function_enable "cardbus_devfunc_t ct"
.Ft int
.Fn Cardbus_function_disable "cardbus_devfunc_t ct"
.Ft int
.Fn Cardbus_mapreg_map "cardbus_devfunc_t ct" "int reg" \
"cardbusreg_t type" "int busflags" "bus_space_tag_t *tagp" \
"bus_space_handle_t *handlep" "bus_addr_t *basep" "bus_size_t *sizep"
.Ft int
.Fn Cardbus_mapreg_unmap "cardbus_devfunc_t ct" \
"int reg" "bus_space_tag_t tag" "bus_space_handle_t handle" \
"bus_size_t size"
.Ft cardbustag_t
.Fn Cardbus_make_tag "cardbus_devfunc_t ct "
.Ft void
.Fn Cardbus_free_tag "cardbus_devfunc_t ct" "cardbustag_t tag"
.Ft cardbusreg_t
.Fn Cardbus_conf_read "cardbus_devfunc_t ct" "cardbustag_t tag" \
"int offs"
.Ft void
.Fn Cardbus_conf_write "cardbus_devfunc_t ct" "cardbustag_t tag" \
"int offs" "busreg_t val"
.Sh DESCRIPTION
The machine-independent
.Nm
subsystem provides support for Cardbus devices.
.Pp
The Cardbus interface is an improvement to the PC-Card interface
supported by
.Xr PCMCIA 9 .
It introduces several new capabilities such as 32-bit addressing,
33MHz operation, busmaster operation and 3.3 volt low-voltage power.
It remains compatible with all features of the PC-Card standard.
.Pp
The Cardbus interface signaling protocol is derived from the PCI
signaling protocol. There are some differences between PCI and
Cardbus, however operations are identical for most functions
implemented. Since a 32-bit Cardbus interface is also defined for
16-bit PC-Cards, the same Card Services client to be used to manage
both Cardbus and PCMCIA PC-Cards. By interrogating the card upon
detection of an insertion event,
.Nx
determines whether the card requires
.Nm
support or not, and then applies the appropriate power and signaling
protocol requirements.
.Sh DATA TYPES
Drivers attached to the Cardbus bus will make use of the following
data types:
.Bl -tag -width compact
.It struct cardbus_attach_args
Devices have their identity recorded in this structure. It contains
the following members:
.Bd -literal
cardbus_devfunc_t ca_ct;
bus_space_tag_t ca_iot; /* Cardbus I/O space tag */
bus_space_tag_t ca_memt; /* Cardbus MEM space tag */
bus_dma_tag_t ca_dmat; /* DMA tag */
u_int ca_device;
cardbustag_t ca_tag;
cardbusreg_t ca_id;
cardbusreg_t ca_class;
cardbus_intr_line_t ca_intrline; /* interrupt info */
struct cardbus_cis_info ca_cis;
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn cardbus_attach_card "csc"
Attaches the card on the slot by turning on the power, read and
analyse the tuple and sets configuration index. This function returns
the number of recognised device functions. If no device functions are
recognised it returns zero.
.It Fn cardbus_detach_card "csc"
Detaches the card on the slot by release resources and turning off the
power. This function must not be called under interrupt context.
.It Fn cardbus_function_enable "csc" "function"
Enables device function
.Fa function
on the card. Power will be applied if it hasn't already.
.It Fn cardbus_function_disable "csc" "function"
Disables device function
.Fa function
on the card. When no device functions are enabled, the turn is turned
off.
.It Fo cardbus_mapreg_map
.Fa "csc" "cf" "reg" "type" "busflags"
.Fa "tagp" "handlep" "basep" "sizep"
.Fc
Maps bus-space on the value of Base Address Register (BAR) indexed by
.Fa reg
for device function
.Fa cf .
The bus-space configuration is returned in
.Fa tagp ,
.Fa handlep ,
.Fa basep ,
and
.Fa sizep .
.It Fn cardbus_mapreg_unmap "csc" "cf" "reg" "tag" "handle" "bus_size_t size"
Releases bus-space region for device function
.Fa cf
specified by
.Fa tag ,
.Fa handle
and
.Fa size .
.Fa reg
is the offset of the BAR register.
.It Fn cardbus_get_capability "cc" "cf" "tag" "capid" "offsetp" "valuep"
Find the PCI capability for the device function
.Fa cf
specified by
.Fa capid .
Returns the capability in
.Fa offsetp
and
.Fa valuep .
.It Fn cardbus_make_tag "cc" "cf" "bus" "device" "function"
Make a tag to access config space of a Cardbus card. It works the
same as
.Fn pci_make_tag .
.It Fn cardbus_free_tag "cc" "cf" "tag"
Release a tag used to access the config space of a Cardbus card. It
works the same as
.Fn pci_free_tag .
.It Fn cardbus_conf_read "cc" "cf" "tag" "offs"
Read the config space of a Cardbus card. It works the same as
.Fn pci_conf_read .
.It Fn cardbus_conf_write "cc" "cf" "tag" "offs" "val"
Write to the config space of a Cardbus card. It works same as
.Fn pci_conf_write .
.It Fn cardbus_intr_establish "cc" "cf" "irq" "level" "handler" "arg"
Establish an interrupt handler for device function
.Fa cf .
The priority of the interrupt is specified by
.Fa level .
When the interrupt occurs the function
.Fa handler
is called with argument
.Fa arg .
The return value is a handle for the interrupt handler.
.Fn cardbus_intr_establish
returns an opaque handle to an event descriptor if it succeeds, and
returns NULL on failure.
.It Fn cardbus_intr_disestablish "cc" "cf" "ih"
Dis-establish the interrupt handler for device function
.Fa cf
with handle
.Fa ih .
The handle was returned from
.Fn cardbus_intr_establish .
.It Fn CARDBUS_VENDOR "id"
Return the Cardbus vendor id for device
.Fa id .
.It Fn CARDBUS_PRODUCT "id"
Return the Cardbus product id for device
.Fa id .
.El
.Pp
The
.Fn Cardbus_*
functions are convenience functions taking a
.Fa cardbus_devfunc_t
argument and perform the same operation as their namesake described
above.
.Sh AUTOCONFIGURATION
During autoconfiguration, a
.Nm
driver will receive a pointer to
.Fa struct isapnp_attach_args
describing the device attaches to the Cardbus bus. Drivers match the
device using the
.Fa ca_id
member using
.Fn CARDBUS_VENDOR
and
.Fn CARDBUS_PRODUCT .
.Pp
During the driver attach step, drivers should initially map the device
I/O and memory resources using
.Fn cardbus_mapreg_map
or
.Fn Cardbus_mapreg_map .
Upon successful allocation of resources, power can be
applied to the device with
.Fn cardbus_function_enable
or
.Fn Cardbus_function_enable .
so that device-specific interrogation can be performed. Finally,
power should be removed from the device using
.Fn cardbus_function_disable
or
.Fn Cardbus_function_disable .
.Pp
Since Cardbus devices support dynamic configuration, drivers should
make use of
.Fn powerhook_establish 9 .
Power can be applied and the interrupt handler should be established
through this interface.
.Sh DMA SUPPORT
No additional support is provided for Cardbus DMA beyond the
facilities provided by the
.Xr bus_dma 9 interface.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent Cardbus subsystem can be found. All pathnames are
relative to
.Pa /usr/src.
.Pp
The Cardbus subsystem itself is implemented within the files
.Pa sys/dev/cardbus/cardbus.c ,
.Pa sys/dev/cardbus/cardbus_map.c
and
.Pa sys/dev/cardbus/cardslot.c .
The database of known devices exists within the file
.Pa sys/dev/cardbus/cardbus_data.h
and is generated automatically from the file
.Pa sys/dev/cardbus/cardbusdevs .
New vendor and product identifiers should be added to this
file. The database can be regenerated using the Makefile
.Pa sys/dev/cardbus/Makefile.cardbusdevs .
.Sh SEE ALSO
.Xr cardbus 4 ,
.Xr pcmcia 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 ,
.Xr pci 9 ,
.Xr pcmcia 9 .
.Sh HISTORY
The machine-independent
.Nm
subsystem appeared in
.Nx 1.5 .

271
share/man/man9/config.9 Normal file
View File

@ -0,0 +1,271 @@
.\" $NetBSD: config.9,v 1.1 2001/07/01 04:11:13 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 17, 2001
.Dt CONFIG 9
.Os
.Sh NAME
.Nm config
.Nd the autoconfiguration framework
.Do
device definition
.Dc
language
.Sh DESCRIPTION
In
.Nx ,
the
.Xr config 8
program reads and verifies a machine description file specifying the
devices to include in the kernel. A table is produced by
.Xr config 8
which is used by the kernel during autoconfiguration (see
.Xr autoconf 9 )
giving needed hints and details on matching hardware devices with
device drivers.
.Pp
Each device in the machine description file has:
.Bl -tag -width xxxxxx
.It A Name
The name is simply an alphanumeric string that ends in a unit number
(eg. "sd0", "sd1", and so forth). These unit numbers identify
particular instances of a base device name; the base name in turn maps
directly to a device driver. Device unit numbers are independent of
hardware features.
.It A Parent
Every device must have a parent. The pairing is denoted by "child at
parent". These pairings form the links in a directed graph. The root
device is the only exception, as it does not have a parent.
.It Locators
Locators are used to augment the parent/child pairings the locate
specific devices. Each locator value is simply an integer that
represents some sort of device address on the parent bus or
controller. This can be a memory address, and I/O port, a driver
number, or any other value. Locators can sometimes be wildcarded on
devices that support direct connection.
.It Attributes
An attribute describes the device's relationship with the code; it
then serves to constrain the device graph. A
.Em plain attribute
describes some attribute of a device. An
.Em interface attribute
describes a kind of
.Do
software interface
.Dc
and declares the devices's ability to support other devices that use
that interface. In addition, an interface attribute usually identifies
additional locators.
.El
.Pp
During autoconfiguration, the directed graph is turned into a tree by
nominating one device as the root node and matching drivers with
devices by doing a depth-first traversal through the graph stating at
this root node.
.Pp
However, there must be constraints on the parent/child pairings that
are possible. These constraints are embedded in the
.Do
device definition
.Dc
files. The remainder of this page describes the
.Do
device definition
.Dc
language and how to use this language to add new functionality to the
.Nx
kernel.
.Sh DEVICE DEFINITION FILES
The device definition files are separated into machine-dependent and
machine-independent files. The machine-dependent file is located in
.Pa sys/arch/<arch>/conf/files.<arch> ,
where <arch> is the name of
.Nx
architecture. The machine-independent file is located in
.Pa sys/conf/files .
It in turn includes files for the machine-independent drivers located
in
.Pa sys/dev/<bus>/files.<bus> ,
where <bus> is the name of the machine-independent bus.
.Pp
These files define all legal device and pseuo-deives. They also
define all attributes and interfaces, establishign the ule that
determine allowable machine descriptions, and list the source files
that make up the kernel.
.Pp
Each device definition file consists of a list of statements,
typically one per line. Comments may be inserted anywhere using the
.Do
#
.Dc
character, and any line that begins with white space continues the
previous line. Valid statements are:
.Bl -tag -width xxxxxx
.It defopt [filename] {options}
The space-separated list of pre-processor macros
.Em options
are defined in file
.Em filename .
If the filename field is not specified, the options are defined on the
commandline invocation of make.
The
.Em option
is case-sensitive.
.It deffs [filename] name
Define a filesystem
.Em name .
.It devclass name
Define a device class
.Em name .
A device class is similar to an attribute.
.It define name [{locators}]
The attribute
.Em name
is defined and device definitions can then refer to it. If the
attribute is an interface attribute and defines optional
.Em locators ,
device attributes that refer to
.Em name
are assumed to share the interface and require the same locators.
.It device name [{locators}]: [attributes]
The device
.Em name
is defined and requires the optional comma-separated list of locators
.Em locators .
The optional
.Em attributes
define attribute dependencies.
.It attach name at interface [with ifname]: [attributes]
The device
.Em name
is defined and supports the interface
.Em interface .
If
.Em ifname
is specified, it is used to specify the interface to the driver for
device
.Em name
(see
.Xr driver 9
for details).
The optional
.Em attributes
define attribute dependencies.
.It defpseudo name: [{locators}]
The pseudo-device
.Em name
is defined. The optional
.Em locators
may be defined, but are largely pointless since no device can attach
to a pseudo-device.
.It file pathname [attributes [flags]] [rule]
The file
.Em pathname
is added to the list of files used to build the kernel. If no
attributes are specific the file is always added to the kernel
compilation. If any of the attributes are specified by other devices
in the machine descripton file, then the file is included in
compilation, otherwise it is omitted. Valid values for the optional
flags are:
.Bl -tag -width xxxxxx
.It needs-count
Specify that config should generate a file for each of the attributes
notifying the driver how many of some particular device or set of
devices are configured are configured in the kernel. This flags
allows drivers to make calculations of driver used at compile time.
This option prevents autoconfiguration cloning.
.It needs-flag
This flag performs the same operation and
.Em needs-count
but only records if the number is nonzero. Since the count is not
extact,
.Em needs-flag
does not prevent autoconfiguration cloning.
.El
.It major major-list
The devices listed in
.Em major-list
are associated with major device numbers, allowing them to be used for
file system roots, swapping and crash dumps. Since major numbers are
machine dependent, they should not appear in the machine-independent
device definition files.
.El
.Pp
To allow locators to be wildcarded in the machine description file,
their default value must be defined in the attribute definition. To
allow locators to be omitted entirely in the machine description file,
enclose the locator in square brackets. This can be used when some
locators do not make sense for some devices, but the software
interface requires them.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
autoconfiguration framework can be found. All pathnames are relative
to
.Pa /usr/src .
.Pp
The device definition files are in
.Pa sys/conf/files ,
.Pa sys/arch/<arch>/conf/files.<arch> ,
and
.Pa sys/dev/<bus>/files.<bus> .
.Pp
The grammar for machine description files can be found in
.Xr config 8 ,
in
.Pa usr.sbin/config/gram.y .
.Sh SEE ALSO
.Rs
.%T "Building 4.4 BSD Systems with Config"
.Re
.Rs
.%A Chris Torek
.%T "Device Configuration in 4.4BSD"
.%D 1992
.Re
.sp
.Xr config 8 ,
.Xr autoconf 9 ,
.Xr driver 9 .
.Sh HISTORY
Autoconfiguration first appeared in
.Bx 4.1 .
The autoconfiguration framework was completely revised in
.Bx 4.4 .
It has been modified within
.Nx
to support bus-independent drivers and bus-dependent attachments.

313
share/man/man9/driver.9 Normal file
View File

@ -0,0 +1,313 @@
.\" $NetBSD: driver.9,v 1.1 2001/07/01 04:11:13 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 16, 2001
.Dt DRIVER 9
.Os
.Sh NAME
.Nm driver
.Nd description of a device driver
.Sh SYNOPSIS
.Fd #include <sys/param.h>
.Fd #include <sys/device.h>
.Fd #include <sys/error.h>
.Ft static int
.Fn foo_match "struct device *parent" "struct cfdata *match" "void *aux"
.Ft static void
.Fn foo_attach "struct device *parent" "struct device *self" "void *aux"
.Ft static int
.Fn foo_detach "struct device *self" "int flags"
.Ft static int
.Fn foo_activate "struct device *self" "enum devact act"
.Sh DESCRIPTION
This page briefly describes the basic
.Nx
autoconfiguration interface utilised by device drivers. For a detailed
overview of the autoconfiguration framework see
.Xr autoconf 9 .
.Pp
Each device driver must present to the system a standard
autoconfiguration interface. This interface is provided by the
.Em cfattach
structure. The interface to the driver is constant and is defined
statically inside the driver. For example, the interface to driver
.Do
foo
.Dc
is defined with:
.Pp
.Bd -literal
struct cfattach foo_ca = {
sizeof(struct foo_softc), /* size of instance data */
foo_match, /* match/probe function */
foo_attach, /* attach function */
foo_detach, /* detach function */
foo_activate /* activate function */
};
.Ed
.Pp
The structure variable must be named
.Va foo_ca
by appending the letters
.Do
_ca
.Dc
to the driver's base name. This convention is mandated by the
autoconfiguration framework.
.Pp
For each device instance controlled by the driver, the
autoconfiguration framework allocates a block of memory to record
device-instance-specific driver variables. The size of this memory
block is specified by the first field in the
.Em cfattach
structure. The memory block is referred to as the driver's
.Em softc
structure. The
.Em softc
structure is only accessed within the driver, so its definition is
local to the driver. Nevertheless, the
.Em softc
structure should adopt the standard
.Nx
configuration and naming conventions. For example, the
.Em softc
structure for driver
.Do
foo
.Dc
is defined with:
.Pp
.Bd -literal
struct foo_softc {
struct device sc_dev; /* generic device info */
/* device-specific state */
};
.Ed
.Pp
The autoconfiguration framework mandates that the first member of the
.Em softc
structure must be the driver-independent
.Em struct device .
Probably its most useful aspect to the driver is that it contains the
device-instance name
.Em dv_xname .
.Pp
During system bootstrap, the autoconfiguration framework searches the
system for devices. For each device driver, its match function
is called
.Po
via its
.Em cfattach
structure
.Pc
to match the driver with a device instance. The match function is
called with three arguments. This first argument
.Fa parent
is a pointer to the driver's parent device structure. The second
argument
.Fa match
is a pointer to a data structure describing the autoconfiguration
framework's understanding of the driver. Both the
.Fa parent
and
.Fa match
arguments are ignored by most drivers. The third argument
.Fa aux
contains a pointer to a structure describing a potential
device-instance. It is passed to the driver from the parent.
The match function would type-cast the
.Fa aux
argument to its appropriate attachment structure and use its contents
to determine whether it supports the device. Depending on the device
hardware, the contents of the attachment structure may contain
.Do
locators
.Dc
to locate the device instance so that the driver can probe it for its
identity. If the probe process identifies additional device
properties, it may modify the members of the attachment structure.
For these devices, the
.Nx
convention is to
call the match routine
.Fn foo_probe
instead of
.Fn foo_match
to make this distinction clear. Either way, the match function
returns a nonzero integer indicating the confidence of supporting this
device and a value of 0 if the driver doesn't support the device.
Generally, only a single driver exists for a device, so the match
function returns 1 for a positive match.
.Pp
The autoconfiguration framework will call the attach function
.Po
via its
.Em cfattach
structure
.Pc
of the driver which returns the highest value from its match function.
The attach function is called with three arguments. The attach
function performs the necessary process to initialise the device for
operation. The first argument
.Fa parent
is a pointer to the driver's parent device structure. The second
argument
.Fa self
is a pointer to the driver's device structure. It is also a pointer
to our
.Em softc
structure since the device structure is its first member. The third
argument
.Fa aux
is a pointer to the attachment structure. The
.Fa parent
and
.Fa aux
arguments are the same as the match function.
.Pp
The driver's attach function is called before system interrupts are
enabled. If interrupts are required during initialisation, then
the attach function should make use of
.Fn config_interrupts
.Po
see
.Xr autoconf 9
.Pc .
.Pp
Some devices can be removed from the system without requiring a system
reboot. The autoconfiguration framework calls the driver's detach
function
.Po
via its
.Em cfattach
structure
.Pc
during device detachment. If the device does not support detachment,
then the driver does not have to provide a detach function. The
detach function is used to relinquish resources allocated to the
driver which are no longer needed. The first argument
.Fa self
is a pointer to the driver's device structure. It is the same
structure as passed to the attach function. The second argument
.Fa flags
contains detachment flags. Valid values are DETACH_FORCE
.Po
force detachment; hardware gone
.Pc and DETACH_QUIET
.Po
do not print a notice
.Pc .
.Pp
The autoconfiguration framework calls the driver's activate function
to notify the driver of a change in the resources that have been
allocated to it. For example, an Ethernet driver has to be notified
if the network stack is being added or removed from the kernel. The
first argument to the activate function
.Fa self
is a pointer to the driver's device structure. It is the same
argument as passed to the attach function. The second argument
.Fa act
describes the action. Valid actions are DVACT_ACTIVATE
.Po
activate the device
.Pc and DVACT_DEACTIVATE
.Po
deactivate the device
.Pc .
If the action is not supported the activate function should return
EOPNOSUPP.
The activate function is called in interrupt context.
.Pp
Most drivers will want to make use of interrupt facilities. Interrupt
locators provided through the attachment structure should be used to
establish interrupts within the system. Generally, an interrupt
interface is provided by the parent. The interface will require a
handler and a driver-specific argument to be specified. This argument
is usually a pointer to the device-instance-specific softc structure.
When a hardware interrupt for the device occurs the handler is called
with the argument. Interrupt handlers should return 0 for
.Do
interrupt not for me
.Dc ,
1 for
.Do
I took care of it
.Dc ,
or -1 for
.Do
I guess it was mine, but I wasn't expecting it
.Dc .
.Pp
For a driver to be compiled into the kernel,
.Xr config 8
must be aware of its existence. This is done by including an entry in
files.<bus> in the directory containing the driver. For example, the
driver
.Do
foo
.Dc
attaching to bus
.Do
bar
.Dc
with dependency on kernel module
.Do
baz
.Dc
has the entry:
.Bd -literal
device foo: baz
attach foo at bar
file dev/bar/foo.c foo
.Ed
.Pp
An entry can now be added to the machine description file:
.Bd -literal
foo* at bar?
.Ed
.Pp
For a detailed description of the machine description file and the
.Do
device definition
.Dc
language see
.Xr config 9 .
.Sh SEE ALSO
.Xr config 8 ,
.Xr autoconf 9 ,
.Xr config 9 ,
.Xr powerhook_establish 9 ,
.Xr shutdownhook_establish 9 .

222
share/man/man9/ioasic.9 Normal file
View File

@ -0,0 +1,222 @@
.\" $NetBSD: ioasic.9,v 1.1 2001/07/01 04:11:13 gmcgarry Exp $
.\"
.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd August 6, 2000
.Dt IOASIC 9
.Os
.Sh NAME
.Nm IOASIC ,
.Nm ioasic_intr_establish ,
.Nm ioasic_intr_disestablish ,
.Nm ioasic_intr_evcnt ,
.Nm ioasic_attach_devs ,
.Nm ioasic_submatch
.Nd baseboard I/O control ASIC for DEC TURBOchannel systems
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/tc/tcvar.h>
.Fd #include <dev/tc/ioasicreg.h>
.Fd #include <dev/tc/ioasicvar.h>
.Ft void
.Fn ioasic_intr_establish "struct device *dev" "void *cookie" "int level" \
"int (*handler)(void *)" "void *arg"
.Ft void
.Fn ioasic_intr_disestablish "struct device *dev" "void *cookie"
.Ft const struct evcnt *
.Fn ioasic_intr_evcnt "struct device *dev" "void *cookie"
.Ft void
.Fn ioasic_attach_devs "struct ioasic_softc *sc" \
"struct ioasic_dev *ioasic_devs" "int ioasic_ndevs"
.Ft int
.Fn ioasic_submatch "struct cfdata *match" "struct ioasicdev_attach_args *ia"
.Sh DESCRIPTION
The
.Nm
device provides support for the DEC proprietary IOCTL ASIC) found on
all DEC TURBOchannel machines with MIPS (DECstation 5000 series,
excluding the 5000/200) and Alpha (3000-series) systems. The
.Nm
is memory-mapped into the TURBOchannel system slot to interface up to
sixteen I/O devices. It connects the TURBOchannel to a 16-bit wide
I/O bus and supplies various control signals to the devices that share
this bus.
.Pp
The
.Nm
provides hardware DMA channels and interrupt support. DMA transfers
are between one and four 32-bit words (16 bytes) in length, depending
on the device. The
.Nm
stores the data in internal data registers. The data is transferred
to and from the registers in 16-bit words to the device. Various
interrupts are signalled on DMA pointer-related conditions.
.Sh DATA TYPES
Drivers for devices attached to the
.Nm
will make use of the following data types:
.Bl -tag -width compact
.It Fa struct ioasicdev_attach_args
A structure used to inform the driver of the
.Nm
device properties. It contains the following members:
.Bd -literal
char iada_modname
tc_offset_t iada_offset
tc_addr_t iada_addr
void *iada_cookie;
.Ed
.It Fa struct ioasic_softc
The parent structure which contains at the following members which are
useful for drivers:
.Bd -literal
bus_space_tag_t sc_bst;
bus_space_handle_t sc_bsh;
bus_dma_tag_t sc_dmat;
.Ed
.It Fa struct ioasic_dev
A structure describing the machine-dependent devices attached to the
.Nm
containing the following members:
.Bd -literal
char *iad_modname;
tc_offset_t iad_offset;
void *iad_cookie;
u_int32_t iad_intrbits;
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn ioasic_intr_establish "dev" "cookie" "level" "handler" "arg"
Establish an interrupt handler with device
.Fa dev
for the interrupt described completely by
.Fa cookie .
The priority of the interrupt is specified by
.Fa level .
When the interrupt occurs the function
.Fa handler
is called with argument
.Fa arg .
.It Fn ioasic_intr_disestablish "dev" "cookie"
Dis-establish the interrupt handler with device
.Fa dev
for the interrupt described complete ly
.Fa cookie .
.It Fn ioasic_intr_evcnt "dev" "cookie"
Do interrupt event counting with device
.Fa dev
for the event described completely by
.Fa cookie .
.It Fn ioasic_attach_devs "sc" "ioasic_devs" "ioasic_ndevs"
Configure each of the
.Fa ioasic_ndevs
devices in
.Fa ioasic_devs .
.It Fn ioasic_submatch "match" "ia"
Check that the device offset is not OASIC_OFFSET_UNKNOWN.
.El
.Pp
The
.Fn ioasic_intr_establish ,
.Fn ioasic_intr_disestablish ,
and
.Fn ioasic_intr_evcnt
functions are likely to used by all
.Nm
device drivers. The
.Fn ioasic_attach_devs
function is used by ioasic driver internally and is of interest to
driver writers because it must be aware of your device for it to be
found during autoconfiguration.
.Sh AUTOCONFIGURATION
The IOASIC is a direct-connection bus. During autoconfiguration,
machine-dependent code will provide an array of
.Fa struct ioasic_devs
describing devices attached to the
.Nm
to be used by the ioasic driver. The ioasic driver will pass this array to
.Fn ioasic_attach_devs
to attach the drivers with the devices.
.Pp
Drivers match the device using
.Fa iada_modname .
.Pp
During attach, all drivers should use the parent's bus_space and
bus_dma resources, and map the appropriate bus_space region using
.Fn bus_space_subregion
with
.Fa iada_offset.
.Sh DMA SUPPORT
No additional support is provided for
.Nm
DMA beyond the facilities provided by the
.Xr bus_dma 9
interface.
.Pp
The
.Nm
provides two pairs of DMA address pointers (transmitting and
receiving) for each DMA-capable device. The pair of address pointers
point to consecutive (but not necesarily contiguous) DMA blocks of
size IOASIC_DMA_BLOCKSIZE. Upon successful transfer of the first
block, DMA continues to the next block and an interrupt is posted to
signal an address pointer update. DMA transfers are enabled and
disabled by bits inside the
.Nm
status (CSR) register.
.Pp
The interrupt handler must update the address pointers to point to the
next block in the DMA transfer. The address pointer update must be
completed before the completion of the second DMA block, otherwise a
DMA overrun error condition will occur.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent IOASIC subsystem can be found. All pathnames are
relative to
.Pa /usr/src.
.Pp
The IOASIC subsystem itself is implemented within the file
.Pa sys/dev/tc/ioasic_subr.c .
Machine-dependent portions can be found in
.Pa sys/arch/<arch>/tc/ioasic.c .
.Sh SEE ALSO
.Xr ioasic 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 .

485
share/man/man9/isa.9 Normal file
View File

@ -0,0 +1,485 @@
.\" $NetBSD: isa.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 19, 2001
.Dt ISA 9
.Os
.Sh NAME
.Nm ISA ,
.Nm isa_intr_alloc ,
.Nm isa_intr_establish ,
.Nm isa_intr_disestablish ,
.Nm isa_intr_evcnt ,
.Nm isa_dmamap_create ,
.Nm isa_dmamap_destroy ,
.Nm isa_dmamem_alloc ,
.Nm isa_dmamem_free ,
.Nm isa_dmamem_map ,
.Nm isa_dmamem_unmap ,
.Nm isa_malloc ,
.Nm isa_free ,
.Nm isa_dmastart ,
.Nm isa_dmaabort ,
.Nm isa_dmacount ,
.Nm isa_dmadone ,
.Nm isa_dmamaxsize ,
.Nm isa_drq_isfree ,
.Nm isa_dmacascade ,
.Nm isa_mappage
.Nd Industry-standard Architecture
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/isa/isareg.h>
.Fd #include <dev/isa/isavar.h>
.Ft int
.Fn isa_intr_alloc "isa_chipset_tag_t ic" "int mask" "int type" \
"int *irq"
.Ft const struct evcnt *
.Fn isa_intr_evcnt "isa_chipset_tag_t ic" "int irq"
.Ft void *
.Fn isa_intr_establish "isa_chipset_tag_t ic" "int irq" "int type" \
"int level" "int (*handler)(void *)" "void *arg"
.Ft void
.Fn isa_intr_disestablish "isa_chipset_tag_t ic" "void *ih"
.Fd #include <dev/isa/isadmareg.h>
.Fd #include <dev/isa/isadmavar.h>
.Ft int
.Fn isa_dmamap_create "isa_chipset_tag_t ic" "int chan" "bus_size_t size" \
"int flags"
.Ft void
.Fn isa_dmamap_destroy "isa_chipset_tag_t ic" "int chan"
.Ft int
.Fn isa_dmamem_alloc "isa_chipset_tag_t ic" "int chan" "bus_size_t size" \
"bus_addr_t *addrp" "int flags"
.Ft void
.Fn isa_dmamem_free "isa_chipset_tag_t ic" "int chan" "bus_addr_t addr" \
"bus_size_t size"
.Ft int
.Fn isa_dmamem_map "isa_chipset_tag_t ic" "int chan" "bus_addr_t addr" \
"bus_size_t size" "caddr_t *kvap" "int flags"
.Ft void
.Fn isa_dmamem_unmap "isa_chipset_tag_t ic" "int chan" "caddr_t kva" \
"size_t size"
.Ft void *
.Fn isa_malloc "isa_chipset_tag_t ic" "int chan" "size_t size" \
"int pool" "int flags"
.Ft void
.Fn isa_free "void *addrp" "int pool"
.Ft int
.Fn isa_dmastart "isa_chipset_tag_t ic" "int chan" "bus_addr_t addr" \
"bus_size_t size" "struct proc *proc" "int flags" "int bf"
.Ft void
.Fn isa_dmaabort "isa_chipset_tag_t ic" "int chan"
.Ft bus_size_t
.Fn isa_dmacount "isa_chipset_tag_t ic" "int chan"
.Ft void
.Fn isa_dmadone "isa_chipset_tag_t ic" "int chan"
.Ft bus_size_t
.Fn isa_dmamaxsize "isa_chipset_tag_t ic" "int chan"
.Ft int
.Fn isa_drq_isfree "isa_chipset_tag_t ic" "int chan"
.Ft int
.Fn isa_dmacascade "isa_chipset_tag_t ic" "int chan"
.Ft paddr_t
.Fn isa_mappage "void *mem" "off_t offset" "int prot"
.Sh DESCRIPTION
The machine-independent
.Nm
subsystem provides support for the ISA bus.
.Pp
The ISA bus was introduced on the IBM PC/AT. It is an extension to
the original bus found on the original IBM PC. The ISA bus is
essentially the host bus of the Intel 80286 processor, however the
widespread acceptance of the bus as a defacto standard has seen it
appear on systems without Intel processors.
.Pp
The ISA bus has a 16-bit data bus, a 24-bit memory address bus, a
10-bit I/O address bus and operates at 8MHz. It provides 15 interrupt
lines and 8 DMA channels supporting DMA transfers of 64KB or 128KB
transfers depending on the width of the channel being used.
.Pp
On newer machines, the ISA bus is no longer connected directly to the
host bus, and is usually connected via a PCI-ISA bridge. Either way,
the bus looks the same to the device driver.
.Sh DATA TYPES
Drivers for devices attached to the
.Nm
bus will make use of the following data types:
.Bl -tag -width compact
.It Fa isa_chipset_tag_t
Chipset tag for the ISA bus.
.It Fa struct isa_attach_args
Location hints for devices are recorded in this structure. It
contains the following members:
.Bd -literal
bus_space_tag_t ia_iot; /* isa i/o space tag */
bus_space_tag_t ia_memt; /* isa mem space tag */
bus_dma_tag_t ia_dmat; /* DMA tag */
isa_chipset_tag_t ia_ic;
int ia_iobase; /* base i/o address */
int ia_iosize; /* span of ports used */
int ia_maddr; /* physical mem addr */
u_int ia_msize; /* size of memory */
int ia_irq; /* interrupt request */
int ia_drq; /* DMA request */
int ia_drq2; /* second DMA request */
void *ia_aux; /* driver specific */
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn isa_intr_alloc "ic" "mask" "type" "irq"
This function is generally not required by device drivers. It is used
by bridges attaching other busses to the ISA bus.
.It Fn isa_intr_evcnt "ic" "irq"
Returns the event counter associated with interrupt line
.Fa irq .
.It Fn isa_intr_establish "ic" "irq" "type" "level" "handler" "arg"
To establish an ISA interrupt handler, a driver calls
.Fn isa_intr_establish
with the interrupt number
.Fa irq ,
type
.Fa type ,
and level
.Fa level .
When the interrupt occurs the function
.Fa handler
is called with argument
.Fa arg .
Valid values for
.Fa type
are:
.Bl -tag -width compact
.It IST_NONE
Reserve interrupt, but don't actually establish.
.It IST_EDGE
Edge-triggered interrupt.
.It IST_LEVEL
Level-triggered interrupt.
.It IST_PULSE
Pulse-triggered interrupt.
.El
.sp
.Fn isa_intr_establish
returns an opaque handle to an event descriptor if it succeeds, and
returns NULL on failure.
.Pp
.It Fn isa_intr_disestablish "ic" "ih"
Dis-establish the interrupt handler with handle
.Fa ih .
The handle was returned from
.Fn isa_intr_establish .
.It Fn isa_dmamap_create "ic" "chan" "size" "flags"
Creates a DMA map for channel
.Fa chan .
It is initialised to accept maximum DMA transfers of size
.Fa size .
Valid values for the
.Fa flags
argument are the same as for
.Fn bus_dmamap_create
(see
.Xr bus_dma 9 ).
This function returns zero on success or an error value on failure.
.It Fn isa_dmamap_destroy "ic" "chan"
Destroy the DMA map for DMA channel
.Fa chan .
.It Fn isa_dmamem_alloc "ic" "chan" "size" "addrp" "flags"
Allocate DMA-safe memory of size
.Fa size
for channel
.Fa chan .
Valid values for the
.Fa flags
argument are the same as for
.Fn bus_dmamem_alloc
(see
.Xr bus_dma 9 ).
The bus-address of the memory is returned in
.Fa addrp .
This function returns zero on success or an error value on failure.
.It Fn isa_dmamem_free "ic" "chan" "addr" "size"
Frees memory previously allocated by
.Fn isa_dmamem_alloc
for channel
.Fa chan .
The bus-address and size of the memory are specified by
.Fa addr
and
.Fa size
respectively.
.It Fn isa_dmamem_map "ic" "chan" "addr" "size" "kvap" "flags"
Maps DMA-safe memory (allocated with
.Fn isa_dmamem_alloc )
specified by bus-address
.Fa addr
and of size
.Fa size
into kernel virtual address space for DMA channel
.Fa chan .
Valid values for the
.Fa flags
argument are the same as for
.Fn bus_dmamem_map
(see
.Xr bus_dma 9 ).
The kernel virtual address is returned in
.Fa kvap .
This function returns zero on success or an error value on failure.
.It Fn isa_dmamem_unmap "ic" "chan" "kva" "size"
Unmaps memory (previously mapped with
.Fn isa_dmamem_map )
of size
.Fa size
for channel
.Fa chan .
The kernel virtual address space used by the mapping is freed.
.It Fn isa_malloc "ic" "chan" "size" "pool" "flags"
This function is a shortcut for allocating and mapping DMA-safe memory
in a single step. The arguments correspond with the arguments to
.Fn isa_dmamem_alloc
and
.Fn isa_dmamem_map .
The argument
.Fa pool
is a pool to record the memory allocation. This function returns
a pointer to the DMA-safe memory.
.It Fn isa_free "addrp" "pool"
This function is a shortcut for unmapping and deallocating DMA-safe
memory in a single step. It replaces
.Fn isa_dmamem_unmap
and
.Fn isa_dmamem_free .
The argument
.Fa addrp
is the pointer to the DMA-safe memory returned by
.Fn isa_malloc .
The argument
.Fa pool
is the same as the value passed to
.Fn isa_malloc .
.It Fn isa_dmastart "ic" "chan" "addr" "size" "proc" "flags" "bf"
Load DMA memory specified by address
.Fa addr
of size
.Fa size
into the DMA controller at channel
.Fa chan
and set it in motion.
The argument
.Fa proc
is used to indicate the address space in which the buffer is located.
If NULL, the buffer is assumed to be in kernel space. Otherwise, the
buffer is assumed to be in process
.Fa proc 's
address space.
The argument
.Fa flags
describes the type of ISA DMA. Valid values are:
.Bl -tag -width compact
.It DMAMODE_WRITE
DMA transfer from host to device.
.It DMAMODE_READ
DMA transfer to host from device.
.It DMAMODE_SINGLE
Transfer buffer once and stop.
.It DMAMODE_DEMAND
Demand mode.
.It DMAMODE_LOOP
Transfer buffer continuously in loop until notified to stop.
.It DMAMODE_LOOPDEMAND
Transfer buffer continuously in loop and demand mode.
.El
.sp
The argument
.Fa bf
is the bus-space flags. Valid values are the same as for
.Fn bus_dmamap_load
(see
.Xr bus_dma 9 ).
.It Fn isa_dmaabort "ic" "chan"
Abort a DMA transfer on channel
.Fa chan .
.It Fn isa_dmacount "ic" "chan"
Returns the offset in the DMA memory of the current DMA transfer on
channel
.Fa chan .
.It Fn isa_dmadone "ic" "chan"
Unloads the DMA memory
on channel
.Fa chan
after a DMA transfer has completed.
.It Fn isa_dmamaxsize "ic" "chan"
Returns the maximum allowable DMA transfer size for channel
.Fa chan .
.It Fn isa_drq_isfree "ic" "chan"
If the
.Fa ia_drq
or
.Fa ia_drq2
members of
.Fa struct isa_attach_args
are wildcarded, then the driver is expected to probe the hardware for
valid DMA channels. In this case, the driver can check to see if the
hardware-supported DMA channel
.Fa chan
is available for use.
.It Fn isa_dmacascade "ic" "chan"
Programs the 8237 DMA controller channel
.Fa chan
to accept external DMA control by the device hardware.
.It Fn isa_mappage "mem" "offset" "prot"
Provides support for user
.Xr mmap 2 'ing
of DMA-safe memory.
.El
.Sh AUTOCONFIGURATION
The ISA bus is an indirect-connection bus. During autoconfiguration
each driver is required to probe the bus for the presence of a device.
An ISA driver will receive a pointer to
.Fa struct isa_attach_args
hinting at "locations" on the ISA bus where the device may be located.
They should use the
.Em ia_iobase ,
.Em ia_iosize ,
.Em ia_maddr ,
and
.Em ia_msize
members. Not all of these hints will be necessary; locators may
be wildcarded with IOBASEUNK and MADDRUNK for
.Em ia_iobase
and
.Em ia_maddr
respectively. If a driver can probe the device for configuration
information at default locations, it may update the members of
.Fa struct isa_attach_args .
The IRQ and DMA locators can also be wildcarded with IRQUNK and DRQUNK
respectively.
.Pp
During the driver attach step, the I/O and memory address spaces
should be mapped (see
.Xr bus_space 9 ).
.Sh DMA SUPPORT
Extensive DMA facilities are provided for the ISA bus. A driver can
use up to two DMA channels simultaneously. The DMA channels allocated
during autoconfiguration are passed to the driver during the driver
attach using the
.Fa ia_drq
and
.Fa ia_drq2
members of
.Fa struct isa_attach_args .
.Pp
Before allocating resources for DMA transfers on the ISA bus, a driver
should check the maximum allowable DMA transfer size for the DMA
channel using
.Fn isa_dmamaxsize .
.Pp
A DMA map should be created first using
.Fn isa_dmamap_create .
A DMA map describes how DMA memory is loaded into the DMA controllers.
Only DMA-safe memory can be used for DMA transfers. DMA-safe memory
is allocated using
.Fn isa_dmamem_alloc .
The memory allocated by
.Fn isa_dmamem_alloc
must now be mapped into kernel virtual address space by
.Fn isa_dmamem_map
so that it can be accessed by the driver.
.Pp
For a DMA transfer from the host to the device, the driver will fill
the DMA memory with the data to be transferred. The DMA-transfer of
the memory is started using
.Fn isa_dmastart
with
.Fa flags
containing DMAMODE_WRITE.
When the DMA transfer is completed, a call to
.Fn isa_dmadone
cleans up the DMA transfer by unloading the memory from the
controller.
.Pp
For a DMA transfer from the device to the host, the DMA-transfer is
started using
.Fn isa_dmastart
with
.Fa flags
containing DMAMODE_READ.
When the DMA transfer is completed, a call to
.Fn isa_dmadone
cleans up the DMA transfer by unloading the memory from the
controller. The memory can now be access by the driver.
.Pp
When the DMA resources are no longer required they should be released
using
.Fn isa_dmamem_unmap ,
.Fn isa_dmamem_free
and
.Fn isa_dmamap_destroy .
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent ISA subsystem can be found. All pathnames are
relative to
.Pa /usr/src.
.Pp
The ISA subsystem itself is implemented within the files
.Pa sys/dev/isa/isa.c
and
.Pa sys/dev/isa/isadma.c .
.Sh SEE ALSO
.Xr isa 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 ,
.Xr isapnp 9 .
.Sh HISTORY
The machine-independent
.Nm
subsystem appeared in
.Nx 1.2 .
.Sh BUGS
The previous behaviour of
.Fn isa_intr_establish
was to invoke
.Fn panic
on failure.
.Fn isa_intr_establish
now returns NULL on failure. Some old drivers written for the former
behaviour discard the return value.

251
share/man/man9/isapnp.9 Normal file
View File

@ -0,0 +1,251 @@
.\" $NetBSD: isapnp.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 19, 2001
.Dt ISAPNP 9
.Os
.Sh NAME
.Nm ISAPNP ,
.Nm isapnp_devmatch ,
.Nm isapnp_config ,
.Nm isapnp_unconfig
.Nd Plug 'n' Play ISA bus
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/isa/isareg.h>
.Fd #include <dev/isa/isavar.h>
.Fd #include <dev/isapnp/isapnpreg.h>
.Fd #include <dev/isapnp/isapnpvar.h>
.Fd #include <dev/isapnp/isapnpdevs.h>
.Ft int
.Fn isapnp_devmatch "const struct isapnp_attach_args *ipa" \
"const struct isapnp_devinfo *dinfo" "int *variant"
.Ft int
.Fn isapnp_config "bus_space_tag_t iot" "bus_space_tag_t memt" \
"struct isapnp_attach_args *ipa"
.Ft void
.Fn isapnp_unconfig "bus_space_tag_t iot" "bus_space_tag_t memt" \
"struct isapnp_attach_args *ipa"
.Sh DESCRIPTION
The machine-independent
.Nm
subsystem provides support for ISAPNP devices. ISAPNP devices were
developed to support "plug and play" connection on the ISA bus. In
all other aspects, the ISAPNP bus is same as the ISA bus (see
.Xr ISA 9 ).
.Pp
Devices on the ISAPNP bus are uniquely identified by a 7-character
string. Resources, such as I/O address space and interrupts, should
be allocated to the devices by the machine firmware. On some machine
the firmware seems doesn't work correctly and
.Nx
will attempt to allocate resources as necessary.
.Sh DATA TYPES
Drivers attached to the ISAPNP bus will make use of the following data
types:
.Bl -tag -width compact
.It Fa struct isapnp_matchinfo
.Nx
kernel contains a database of known ISAPNP devices. Each entry in the
database has a
.Em struct isapnp_matchinfo .
It contains the following members:
.Bd -literal
const char *name; /* device id string */
int variant; /* variant flag */
.Ed
.It Fa struct isapnp_devinfo
Defines the devices supported by a driver. It contains pointer to an
array of supported
.Em struct isapnp_matchinfo
structures and a pointer to another array of compatibility devices.
It contains the following members:
.Bd -literal
struct isapnp_matchinfo *devlogic;
int nlogic;
struct isapnp_matchinfo *devcompat;
int ncompat;
.Ed
.It Fa struct isapnp_region
Describes ISAPNP bus-space regions. It contains the following
members:
.Bd -literal
bus_space_handle_t h;
u_int32_t base;
u_int32_t length;
.Ed
.It Fa struct isapnp_pin
Describes the wiring of interrupts and DMA pins from the ISAPNP bus
onto the host processor. It contains the following members:
.Bd -literal
u_int8_t num;
u_int8_t flags:4;
u_int8_t type:4;
u_int16_t bits;
.Ed
.It Fa struct isapnp_attach_args
A structure used to inform the driver of the device properties. It
contains the following members:
.Bd -literal
bus_space_tag_t ipa_iot; /* isa i/o space tag */
bus_space_tag_t ipa_memt; /* isa mem space tag */
bus_dma_tag_t ipa_dmat; /* isa dma tag */
isa_chipset_tag_t ipa_ic;
struct isapnp_region ipa_io[ISAPNP_NUM_IO];
struct isapnp_region ipa_mem[ISAPNP_NUM_MEM];
struct isapnp_region ipa_mem32[ISAPNP_NUM_MEM32];
struct isapnp_pin ipa_irq[ISAPNP_NUM_IRQ];
struct isapnp_pin ipa_drq[ISAPNP_NUM_DRQ];
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn isapnp_devmatch "ipa" "dinfo" "variant"
Matches the device described by the attachment
.Fa ipa
with the device-match information in
.Fa dinfo .
If the device is matched,
.Fn isapnp_devmatch
returns a non-zero value and variant is the flag describing the device
variant.
.Fn isapnp_devmatch
returns zero if the device is not found.
.It Fn isapnp_config "iot" "memt" "ipa"
Allocate device resources specified by
.Fa ipa .
The device is mapped into the I/O and memory bus spaces specified by
bus-space tags
.Fa iot
and
.Fa memt
respectively. The
.Fa ipa_io ,
.Fa ipa_mem ,
.Fa ipa_mem32 ,
.Fa ipa_irq ,
and
.Fa ipa_drq
members of
.Fa ipa
are updated to reflect the allocated and mapped resources.
.Fn isapnp_config
returns zero on success and non-zero on error.
.It Fn isapnp_unconfig "iot" "memt" "ipa"
Free the resources allocated by
.Fn isapnp_config .
.El
.Sh AUTOCONFIGURATION
During autoconfiguration, an ISAPNP driver will receive a pointer to
.Fa struct isapnp_attach_args
describing the device attached to the ISAPNP bus. Drivers match the
device using
.Fn ispnp_devmatch .
.Pp
During the driver attach step, driver should initially allocate and
map resources using
.Fn isapnp_config .
The I/O (memory) bus-space resources can be accessed using the
bus-space tag
.Fa ipa_iot
.Po
.Fa ipa_memt
.Pc
and the bus-space handle
.Fa ipa_io[0].h
.Po
.Fa ipa_mem[0].h
.Pc
members of
.Fa ipa .
.Pp
Interrupts should be established using
.Fn isa_intr_establish
.Po
see
.Xr ISA 9
.Pc
with the IRQ specified by the
.Fa ipa_irq[0].num
member of
.Fa ipa .
Similarly, the standard
.Xr ISA 9
DMA interface should be used with the
.Fa ipa_drq[0].num
member of
.Fa ipa .
.Sh DMA SUPPORT
Extensive DMA facilities are provided through the
.Xr ISA 9
DMA facilities.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent
.Nm
subsystem can be found. All pathnames are relative to
.Pa /usr/src .
.Pp
The
.Nm
subsystem itself is implemented within the file
.Pa sys/dev/isapnp/isapnp.c .
The database of the known devices exists within the file
.Pa sys/dev/isapnp/isapnpdevs.c
and is generated automatically from the file
.Pa sys/dev/isapnp/isapnpdevs .
New devices should be added to this file. The database can be
regenerated using the Makefile
.Pa sys/dev/isapnp/Makefile.isapnpdevs .
.Sh SEE ALSO
.Rs
.%T "Plug and Play ISA Specification V1.0a"
.%D May 5 1994
.Re
.sp
.Xr isa 4 ,
.Xr isapnp 4 ,
.Xr pnpbios 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 .
.Xr driver 9 ,
.Xr isa 9 .
.Sh HISTORY
The machine-independent ISAPNP subsystem appear in
.Nx 1.3 .

112
share/man/man9/kthread.9 Normal file
View File

@ -0,0 +1,112 @@
.\" $NetBSD: kthread.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd July 9, 2000
.Dt KTHREAD 9
.Os
.Sh NAME
.Nm kthread_create1 ,
.Nm kthread_exit ,
.Nm kthread_create
.Nd kernel threads
.Sh SYNOPSIS
.Fd #include <sys/kthread.h>
.Ft void
.Fn kthread_create "void (*func)(void)" "void *arg"
.Ft void
.Fn kthread_exit "int ecode"
.Ft int
.Fn kthread_create1 "void (*func)(void)" "void *arg" "struct proc **newpp" \
"const char *fmt" "..."
.Sh DESCRIPTION
Kernel threads are light-weight processes which execute entirely
within the kernel. Any process can request the creation of a new
kernel thread. Kernel threads are not swapped out during memory
congestion. The VM space and limits are shaed with proc0 (usually
.Xr init 8 ).
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn kthread_create1 "func" "arg" "newpp" "fmt" "..."
Fork a kernel thread.
.Fa newpp
is a pointer the the new proc structure for the kernel thread.
The function
.Fa func
is called with arguments
.Fa arg
to commence execution.
.Fa fmt
is a string containing format information used to display the kernel
thread name.
.It Fn kthread_create "void (*func)(void)" "void *arg"
Register function
.Fa func
to defer creation of the kernel thread. Deferral of kernel thread
creation is required during system startup when kernel thread resources
are not available.
.It Fn kthread_exit "int ecode"
Exit from a kernel thread.
.El
.Sh RETURN VALUES
Upon successful completion,
.Fn kthread_create1
returns 0. Otherwise, the following error values are returned:
.Bl -tag -width [EAGAIN]
.It Bq Er EAGAIN
The limit on the total number of system processes would be exceeded.
.It Bq Er EAGAIN
The limit
.Dv RLIMIT_NPROC
on the total number of processes under execution by this
user id would be exceeded.
.El
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the kthread
framework can be found. All pathnames are relative to
.Pa /usr/src.
.Pp
The kthread framework itself is implemented within the file
.Pa sys/kern/kern_kthread.c .
Data structures and function prototypes for the framework are located in
.Pa sys/sys/kthread.h .
.Sh SEE ALSO
.Xr fork1 9 ,
.Xr driver 9 .
.Sh HISTORY
The kthread framework appeared in
.Nx 1.4 .

View File

@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.1 1998/10/01 02:33:50 jtk Exp $
# $NetBSD: Makefile,v 1.2 2001/07/01 04:11:15 gmcgarry Exp $
MAN= bioscall.9
MAN= bioscall.9 bios32_service.9
MANSUBDIR=/i386
.include <bsd.man.mk>

View File

@ -0,0 +1,58 @@
.\" $NetBSD: bios32_service.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 17, 2001
.Dt BIOS32_SERVICE 9 i386
.Os
.Sh NAME
.Nm bios32_service
.Nd locate BIOS32 service
.Sh SYNOPSIS
.Fd #include <i386/bios32.h>
.Ft int
.Fn bios32_service "u_int32_t service " "bios32_entry_t e" \
"bios32_entry_info_t ei"
.Sh DESCRIPTION
The
.Fn bios32_service
function calls the BIOS32 to locate the specified BIOS32 service
.Fa service
and fills in the entry point information
.Fa e
and
.Fa ei .
.Sh SEE ALSO
.Xr bioscall 9

460
share/man/man9/pci.9 Normal file
View File

@ -0,0 +1,460 @@
.\" $NetBSD: pci.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 19, 2001
.Dt PCI 9
.Os
.Sh NAME
.Nm PCI ,
.Nm pci_conf_read ,
.Nm pci_conf_write ,
.Nm pci_conf_print ,
.Nm pci_get_capability ,
.Nm pci_mapreg_type ,
.Nm pci_mapreg_map ,
.Nm pci_mapreg_info ,
.Nm pci_intr_map ,
.Nm pci_intr_string ,
.Nm pci_intr_evcnt ,
.Nm pci_intr_establish ,
.Nm pci_intr_disestablish ,
.Nm pci_make_tag ,
.Nm pci_decompose_tag ,
.Nm pci_findvendor ,
.Nm pci_devinfo ,
.Nm PCI_VENDOR ,
.Nm PCI_PRODUCT ,
.Nm PCI_REVISION
.Nd Peripheral Component Interconnect
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/pci/pcivar.h>
.Fd #include <dev/pci/pcireg.h>
.Fd #include <dev/pci/pcidevs.h>
.Ft pcireg_t
.Fn pci_conf_read "pci_chipset_tag_t pc" "pcitag_t tag" "int reg"
.Ft void
.Fn pci_conf_write "pci_chipset_tag_t pc" "pcitag_t tag" "int reg" \
"pcireg_t val"
.Ft void
.Fn pci_conf_print "pci_chipset_tag_t pc" "pcitag_t tag" \
"void (*func)(pci_chipset_tag_t, pcitag_t, const pcireg_t *)"
.Ft int
.Fn pci_get_capability "pci_chipset_tag_t pc" "pcitag_t tag" \
"int capid" "int *offsetp" "pcireg_t *valuep"
.Ft pcireg_t
.Fn pci_mapreg_type "pci_chipset_tag_t pc" "pcitag_t tag" "int reg"
.Ft int
.Fn pci_mapreg_map "struct pci_attach_args *pa" "int reg" \
"pcireg_t type" "int busflags" "bus_space_tag_t *tagp" \
"bus_space_handle_t *handlep" "bus_addr_t *basep" "bus_size_t *sizep"
.Ft int
.Fn pci_mapreg_info "pci_chipset_tag_t pc" "pcitag_t tag" "int reg" \
"pcireg_t type" "bus_addr_t *basep" "bus_size_t *sizep" "int *flagsp"
.Ft int
.Fn pci_intr_map "struct pci_attach_args *pa" "pci_intr_handle_t *ih"
.Ft const char *
.Fn pci_intr_string "pci_chipset_tag_t pc" "pci_intr_handle_t ih"
.Ft const struct evcnt *
.Fn pci_intr_evcnt "pci_chipset_tag_t pc" "pci_intr_handle_t ih"
.Ft void *
.Fn pci_intr_establish "pci_chipset_tag_t pc" "pci_intr_handle_t ih" \
"int level" "int (*handler)(void *)" "void *arg"
.Ft void
.Fn pci_intr_disestablish "pci_chipset_tag_t pc" "void *ih"
.Ft pcitag_t
.Fn pci_make_tag "pci_chipset_tag_t pc" "int bus" "int device" \
"int function"
.Ft void
.Fn pci_decompose_tag "pci_chipset_tag_t pc" "pcitag_t tag" \
"int *busp" "int *devicep" "int *functionp"
.Ft char *
.Fn pci_findvendor "pcireg_t id"
.Ft void
.Fn pci_devinfo "pcireg_t id" "pcireg_t class" "int show" "char *cp"
.Ft int
.Fn PCI_VENDOR "pcireg_t id"
.Ft int
.Fn PCI_PRODUCT "pcireg_t id"
.Ft int
.Fn PCI_REVISION "pcireg_t id"
.Sh DESCRIPTION
The machine-independent
.Nm
subsystem provides support for PCI devices.
.Pp
The PCI bus was initially developed by Intel in the early 1990's to
replace the ISA bus for interfacing to their Pentium processor. The
PCI specification is widely regarded as well designed, and the PCI bus
has found widespread acceptable in machines ranging from Apple's
PowerPC-based machines to Sun's UltraSPARC-based machines.
.Pp
The PCI bus a multiplexed bus, allowing addresses and data on the same
pins for a reduced number of pins. Data transfers can be 8-bit,
16-bit or 32-bit. A 64-bit extended PCI bus is also defined.
Multi-byte transfers are little-endian. The PCI bus operates up to
33MHz and any device on the bus can be the bus master.
.Pp
AGP is a version of PCI optimised for high-throughput data rates,
particularly for accelerated frame buffers.
.Pp
The PCI bus is a "plug and play" bus, in the sense that devices can be
configured dynamically by software. The PCI interface chip on a PCI
device bus presents a small window of registers into the PCI
configuration space. These registers contain information about the
device such as the vendor and a product ID. The configuration
registers can also be written to by software to alter how the device
interfaces to the PCI bus. An important register in the configuration
space is the Base Address Register (BAR). The BAR is written by
software to map the device registers into a window of processor
address space. Once this mapping is done, the device registers can be
accessed relative to the base address.
.Sh DATA TYPES
Drivers for devices attached to the
.Nm
will make use of the following data types:
.Bl -tag -width compact
.It Fa pcireg_t
Configuration space register.
.It Fa pci_chipset_tag_t
Chipset tag for the PCI bus.
.It Fa pcitag_t
Configuration tag describing the location and function of the PCI
device. It contains the tuple
.Ao
bus, device, function
.Ac .
.It Fa pci_intr_handle_t
The opaque handle describing an established interrupt handler.
.It Fa struct pci_attach_args
Devices have their identity recorded in this structure. it contains
the following members:
.Bd -literal
bus_space_tag_t pa_iot; /* pci i/o space tag */
bus_space_tag_t pa_memt; /* pci mem space tag */
bus_dma_tag_t pa_dmat; /* DMA tag */
pci_chipset_tag_t pa_pc;
int pa_flags; /* flags */
pcitag_t pa_tag;
pcireg_t pa_id;
pcireg_t pa_class;
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn pci_conf_read "pc" "tag" "reg"
Read from register
.Fa reg
in PCI configuration space. The argument
.Fa tag
is the PCI tag for the current device attached to PCI chipset
.Fa pc .
.It Fn pci_conf_write "pc" "tag" "reg" "val"
Write to register
.Fa reg
in PCI configuration space. The argument
.Fa tag
is the PCI tag for the current device attached to PCI chipset
.Fa pc .
.It Fn pci_conf_print "pc" "tag" "func"
Print out most of the registers in the PCI configuration for the
device. The argument
.Fa tag
is the PCI tag for the current device attached to PCI chipset
.Fa pc .
The argument
.Fa func
is a function called by
.Fn pci_conf_print
to print the device-dependent registers. This function is only useful
for driver development and is usually wrapped in pre-processor
declarations.
.It Fn pci_get_capability "pc" "tag" "capid" "offsetp" "valuep"
Parse the device capability list in configuration space looking for
capability
.Fa capid .
If
.Fa offsetp
is not NULL, the register offset in configuration space is returned in
.Fa offsetp.
If
.Fa valuep
is not NULL, the value of the capability is returned in
.Fa valuep .
The argument
.Fa tag
is the PCI tag for the current device attached to PCI chipset
.Fa pc .
This function returns 1 if the capability was found. If the
capability was not found, it returns zero, and
.Fa offsetp
and
.Fa valuep
remain unchanged.
.It Fn pci_mapreg_type "pc" "tag" "reg"
Interrogates the Base Address Register (BAR) in configuration space
specified by
.Fa reg
and returns the default (or current) mapping type. Valid returns
values are:
.Bl -tag -width compact
.It PCI_MAPREG_TYPE_IO
The mapping is to I/O address space.
.It PCI_MAPREG_TYPE_MEM
The mapping is to memory address space.
.It PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_64BIT
The mapping is to 64-bit memory address space.
.It PCI_MAPREG_TYPE_ROM
The mapping is to ROM.
.El
.sp
The argument
.Fa tag
is the PCI tag for the current device attached to PCI chipset
.Fa pc .
.It Fo pci_mapreg_map
.Fa "pa" "reg" "type" "busflags" "tagp" "handlep"
.Fa "basep" "sizep"
.Fc
Maps the register windows for the device into kernel virtual address
space. This function is generally only called during the driver
attach step and takes a pointer to the
.Em struct pci_attach_args
in
.Fa pa .
The physical address of the mapping is in the Base Address Register
(BAR) in configuration space specified by
.Fa reg .
Valid values for the type of mapping
.Fa type
are:
.Bl -tag -width compact
.It PCI_MAPREG_TYPE_IO
The mapping should be to I/O address space.
.It PCI_MAPREG_TYPE_MEM
The mapping should be to memory address space.
.It PCI_MAPREG_TYPE_ROM
The mapping is to access ROM.
.El
.sp
The argument
.Fa busflags
are bus-space flags passed to
.Fn bus_space_map
to perform the mapping (see
.Xr bus_space 9 ).
The bus-space tag and handle for the mapped register window are
returned in
.Fa tagp
and
.Fa handlep
respectively. The bus-address and size of the mapping are returned in
.Fa basep
and
.Fa sizep
respectively. If any of
.Fa tagp ,
.Fa handlep ,
.Fa basep ,
or
.Fa sizep
are NULL then
.Fn pci_mapreg_map
does not define their return value. This function returns zero on
success and non-zero on error.
.It Fn pci_mapreg_info "pc" "tag" "reg" "type" "basep" "sizep" "flagsp"
Performs the same operations as
.Fn pci_mapreg_map
but doesn't actually map the register window into kernel virtual
address space. Returns the bus-address, size and bus flags in
.Fa basep ,
.Fa sizep
and
.Fa flagsp
respectively. These return values can be used by
.Fn bus_space_map
to actually map the register window into kernel virtual address space.
This function is useful for setting up the registers in configuration
space and deferring the mapping to a later time, such as in a
bus-independent attachment routine.
.Fa pci_mapreg_info
returns zero on success and non-zero on failure.
.It Fn pci_intr_map "pa" "ih"
See
.Xr pci_intr 9 .
.It Fn pci_intr_string "pc" "ih"
See
.Xr pci_intr 9 .
.It Fn pci_intr_evcnt "pc" "ih"
See
.Xr pci_intr 9 .
.It Fn pci_intr_establish "pc" "ih" "level" "handler" "arg"
See
.Xr pci_intr 9 .
.It Fn pci_intr_disestablish "pc" "ih"
See
.Xr pci_intr 9 .
.It Fn pci_make_tag "pc" "bus" "device" "function"
Create a new PCI tag for the PCI device specified by the tuple
.Ao
bus, device, function
.Ac .
This function is not useful to the usual PCI device driver. It is
generally used by drivers of multi-function devices when attaching
other PCI device drivers to each function.
.It Fn pci_decompose_tag "pc" "tag" "busp" "devicep" "fnp"
Decompose the PCI tag
.Fa tag
generated by
.Fn pci_make_tag
into its
.Ao
bus, device, function
.Ac
tuple.
.It Fn pci_findvendor "id"
Return the string of the vendor name for the device specified by
.Fa id .
.It Fn pci_devinfo "id" "class" "show" "cp"
Returns the description string from the in-kernel PCI database for the
device described by
.Fa id
and
.Fa class .
The description string is returned in
.Fa cp .
The argument
.Fa show
specifies whether the PCI subsystem should report the string to the
console.
.It Fn PCI_VENDOR "id"
Return the PCI vendor id for device
.Fa id .
.It Fn PCI_PRODUCT "id"
Return the PCI product id for device
.Fa id .
.It Fn PCI_REVISION "id"
Return the PCI product revision for device
.Fa id .
.El
.Sh AUTOCONFIGURATION
During autoconfiguration, a
.Nm
driver will receive a pointer to
.Fa struct pci_attach_args
describing the device attaches to the PCI bus. Drivers match the
device using the
.Fa pa_id
member using
.Fn PCI_VENDOR .
.Fn PCI_PRODUCT
and
.Fn PCI_REVISION .
.Pp
During the driver attach step, drivers can read the device
configuration space using
.Fn pci_conf_read .
The meaning attached to registers in the PCI configuration space are
device-dependent, but will usually contain physical addresses of the
device register windows. Device options can also be stored into the
PCI configuration space using
.Fn pci_conf_write .
For example, the driver can request support for bus-mastering DMA by
writing the option to the PCI configuration space.
.Pp
Device capabilities can be queried using
.Fn pci_get_capability ,
and returns device-specific information which can be found in the PCI
configuration space to alter device operation.
.Pp
After reading the physical addresses of the device register windows
from configuration space, these windows must be mapped into kernel
virtual address space using
.Fn pci_mapreg_map .
Device registers can now be accessed using the standard bus-space API
(see
.Xr bus_space 9 ).
.Pp
Details of using PCI interrupts is described in
.Xr pci_intr 9 .
.Sh DMA SUPPORT
The PCI bus supports bus-mastering operations from any device on the
bus. The DMA facilities are accessed through the standard
.Xr bus_dma 9
interface. To support DMA transfers from the device to the host, it
is necessary to enable bus-mastering in the PCI configuration space
for the device.
.Pp
During system shutdown, it is necessary to abort any DMA transfers in
progress by registering a shutdown hook (see
.Xr shutdownhook_establish 9 ).
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent PCI subsystem can be found. All pathnames are
relative to
.Pa /usr/src.
.Pp
The PCI subsystem itself is implemented within the files
.Pa sys/dev/pci/pci.c ,
.Pa sys/dev/pci/pci_subr.c ,
.Pa sys/dev/pci/pci_map.c ,
.Pa sys/dev/pci/pci_quirks.c ,
and
.Pa sys/dev/pci/pciconf.c .
Machine-dependent portions are implemented within the file
.Pa sys/arch/<arch>/pci/pci_machdep.c .
.Pp
The database of known devices exists within the file
.Pa sys/dev/pci/pcidevs_data.h
and is generated automatically from the file
.Pa sys/dev/pci/pcidevs .
New vendor and product identifiers should be added to this
file. The database can be regenerated using the Makefile
.Pa sys/dev/pci/Makefile.pcidevs .
.Sh SEE ALSO
.Xr pci 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 ,
.Xr pci_configure_bus 9 ,
.Xr pci_intr 9 ,
.Xr shutdownhook_establish 9 .
.Sh HISTORY
The machine-independent PCI subsystem appeared in
.Nx 1.2 .

443
share/man/man9/pcmcia.9 Normal file
View File

@ -0,0 +1,443 @@
.\" $NetBSD: pcmcia.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 4, 2001
.Dt PCMCIA 9
.Os
.Sh NAME
.Nm PCMCIA
.Nm pcmcia_function_init ,
.Nm pcmcia_function_enable ,
.Nm pcmcia_function_disable ,
.Nm pcmcia_io_alloc ,
.Nm pcmcia_io_free ,
.Nm pcmcia_io_map ,
.Nm pcmcia_io_unmap ,
.Nm pcmcia_mem_alloc ,
.Nm pcmcia_mem_free ,
.Nm pcmcia_mem_map ,
.Nm pcmcia_mem_unmap ,
.Nm pcmcia_intr_establish ,
.Nm pcmcia_intr_disestablish ,
.Nm pcmcia_cis_read_1 ,
.Nm pcmcia_cis_read_2 ,
.Nm pcmcia_cis_read_3 ,
.Nm pcmcia_cis_read_4 ,
.Nm pcmcia_cis_read_n ,
.Nm pcmcia_scan_cis
.Nd support for PC-Card devices
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/pcmcia/pcmciareg.h>
.Fd #include <dev/pcmcia/pcmciavar.h>
.Fd #include <dev/pcmcia/pcmciadevs.h>
.Ft void
.Fn pcmcia_function_init "struct pcmcia_function *pf" \
"struct pcmcia_config_entry *cfe"
.Ft int
.Fn pcmcia_function_enable "struct pcmcia_function *pf"
.Ft void
.Fn pcmcia_function_disable "struct pcmcia_function *pf"
.Ft int
.Fn pcmcia_io_alloc "struct pcmcia_function *pf" "bus_addr_t start" \
"bus_size_t size" "bus_size_t align" "struct pcmcia_io_handle *pciop"
.Ft void
.Fn pcmcia_io_free "struct pcmcia_function *pf" \
"struct pcmcia_io_handle *pcihp"
.Ft int
.Fn pcmcia_io_map "struct pcmcia_function *pf" "int width" \
"bus_addr_t offset" "bus_size_t size" "struct pcmcia_io_handle *pcihp" \
"int *windowp"
.Ft void
.Fn pcmcia_io_unmap "struct pcmcia_function *pf" "int window"
.Ft int
.Fn pcmcia_mem_alloc "struct pcmcia_function *pf" "bus_size_t size" \
"struct pcmcia_mem_handle *pcmhp"
.Ft void
.Fn pcmcia_mem_free "struct pcmcia_function *pf" \
"struct pcmcia_mem_handle *pcmhp"
.Ft int
.Fn pcmcia_mem_map "struct pcmcia_function *pf" "int width" \
"bus_addr_t card_addr" "bus_size_t size" "struct pcmcia_mem_handle *pcmhp" \
"bus_addr_t *offsetp" "int *windowp"
.Ft void
.Fn pcmcia_mem_unmap "struct pcmcia_function *pf" "int window"
.Ft void *
.Fn pcmcia_intr_establish "struct pcmcia_function *pf" "int level" \
"int (*handler)(void *)" "void *arg"
.Ft void
.Fn pcmcia_intr_disestablish "struct pcmcia_function *pf" "void *ih"
.Ft u_int8_t
.Fn pcmcia_cis_read_1 "struct pcmcia_tuple *tuple" "int index"
.Ft u_int16_t
.Fn pcmcia_cis_read_2 "struct pcmcia_tuple *tuple" "int index"
.Ft u_int32_t
.Fn pcmcia_cis_read_3 "struct pcmcia_tuple *tuple" "int index"
.Ft u_int32_t
.Fn pcmcia_cis_read_4 "struct pcmcia_tuple *tuple" "int index"
.Ft u_int32_t
.Fn pcmcia_cis_read_n "struct pcmcia_tuple *tuple" "int number" "int index"
.Ft int
.Fn pcmcia_scan_cis "struct device *dev" \
"int (*func)(struct pcmcia_tuple *, void *)" "void *arg";
.Sh DESCRIPTION
The machine-independent
.Nm
subsystem provides support for PC-Card devices defined by the Personal
Computer Memory Card International Assocation (PCMCIA). The
.Nn
bus supports insertion and removal of cards while a system is
powered-on (ie, dynamic reconfiguration). The socket must be
powered-off when a card is not present. To the user, this appears as
though the socket is "hot" during insertion and removal events.
.Pp
A PCMCIA controller interfaces the PCMCIA bus with the ISA or PCI
busses on the host system. The controller is responsible for
detecting and enabling devices and for allocating and mapping
resources such as memory and interrupts to devices on the
PCMCIA bus.
.Pp
Each device has a table called the Card Information Structure (CIS)
which contains configuration information. The tuples in the CIS are
used by the controller to uniquely identify the device. Additional
information may be present in the CIS, such as the ethernet MAC
address, that can be accessed and utilised within a device driver.
.Pp
Devices on the PCMCIA bus are uniquely identified by a 32-bit
manufacturer ID and a 32-bit product ID. Additionally, devices can
perform multiple functions (such a ethernet and modem) and these
functions are identified by a function ID.
.Pp
PCMCIA devices do not support DMA, however memory on the device can be
mapped into the address space of the host.
.Sh DATA TYPES
Drivers attached to the
.Nm
bus will make use of the following data types:
.Bl -tag -width compact
.It Fa struct pcmcia_card
Devices (cards) have their identity recorded in this structure. It
contains the following members:
.Bd -literal
char *cis1_info[4];
int32_t manufacturer;
int32_t product;
u_int16_t error;
SIMPLEQ_HEAD(, pcmcia_function) pf_head;
.Ed
.It Fa struct pcmcia_function
Identifies the function of the devices. A device can have multiple
functions. Consider it an opaque type for identifying a particular
function of a device.
.It struct pcmcia_config_entry
Contains information about the resources requested by the device.
It contains the following members:
.Bd -literal
int number;
u_int32_t flags;
int iftype;
int num_iospace;
u_long iomask;
struct {
u_long length;
u_long start;
} iospace[4];
u_int16_t irqmask;
int num_memspace;
struct {
u_long length;
u_long cardaddr;
u_long hostaddr;
} memspace[2];
int maxtwins;
SIMPLEQ_ENTRY(pcmcia_config_entry) cfe_list;
.Ed
.It Fa struct pcmcia_tuple
A handle for identifying an entry in the CIS.
.It Fa struct pcmcia_io_handle
A handle for mapping and allocating I/O address spaces. It contains
the tag and handle for accessing the bus-space.
.It Fa struct pcmcia_mem_handle
A handle for mapping and allocating memory address spaces. It contains
the tag and handle for accessing the bus-space.
.It Fa struct pcmcia_attach_args
A structure used to inform the driver of the
device properties. It contains the following members:
.Bd -literal
int32_t manufacturer;
int32_t product;
struct pcmcia_card *card;
struct pcmcia_function *pf;
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn pcmcia_function_init "pf" "cfe"
Initialise the machine-independent
.Nm
state with the config entry
.Fa cfe .
.It Fn pcmcia_function_enable "pf"
Provide power to the socket containing the device specified by
device function
.Fa pf .
.It Fn pcmcia_function_disable "pf"
Remove power from the socket containing the device specified by
device function
.Fa pf .
.It Fn pcmcia_io_alloc "pf" "start" "size" "align" "pciop"
Request I/O space for device function
.Fa pf
at address
.Fa start
of size
.Fa size .
Alignment is specified by
.Fa align .
A handle for the I/O space is returned in
.Fa pciop .
.It Fn pcmcia_io_free "pf" "pcihp"
Release I/O space with handle
.Fa pcihp
for device function
.Fa pf .
.It Fn pcmcia_io_map "pf" "width" "offset" "size" "pcihp" "windowp"
Map device I/O for device function
.Fa pf
to the I/O space with handle
.Fa pcihp .
An I/O window of size
.Fa size
is mapped at offset
.Fa offset
in the chipset I/O window. The width of data access is specified by
.Fa width .
Valid values for the width are:
.Bl -tag -width PCMCIA_WIDTH_AUTO
.It PCMCIA_WIDTH_AUTO
Use the largest I/O width reported by the device.
.It PCMCIA_WIDTH_IO8
Force 8-bit I/O width.
.It PCMCIA_WIDTH_IO16
Force 16-bit I/O width.
.El
.sp
A handle for the mapped I/O window is returned in
.Fa windowp .
.It Fn pcmcia_io_unmap "pf" "window"
Unmap the I/O window
.Fa window
for device function
.Fa pf .
.It Fn pcmcia_mem_alloc "pf" "size" "pcmhp"
Request memory space for device function
.Fa pf
of size
.Fa size .
A handle for the memory space is returned in
.Fa pcmhp .
.It Fn pcmcia_mem_free "pf" "pcmhp"
Release memory space with handle
.Fa pcmhp
for device function
.Fa pf .
.It Fn pcmcia_mem_map "pf" "width" "card_addr" "size" "pcmhp" "offsetp" \
"windowp"
Map device memory for device function
.Fa pf
to the memory space with handle
.Fa pcmhp .
The address of the device memory starts at
.Fa card_addr
and is size
.Fa size .
The width of data access is specified by
.Fa width .
Valid values for the width are:
.Bl -tag -width PCMCIA_WIDTH_MEM16
.It PCMCIA_WIDTH_MEM8
Force 8-bit memory width.
.It PCMCIA_WIDTH_MEM16
Force 16-bit memory width.
.El
.sp
A handle for the mapped memory window is returned in
.Fa windowp
and a bus-space handle for the memory window is returned in
.Fa offsetp .
.It Fn pcmcia_mem_unmap "pf" "window"
Unmap the memory window
.Fa window
for device function
.Fa pf .
.It Fn pcmcia_intr_establish "pf" "level" "handler" "arg"
Establish an interrupt handler for device function
.Fa pf .
The priority of the interrupt is specified by
.Fa level .
When the interrupt occurs the function
.Fa handler
is called with argument
.Fa arg .
The return value is a handle for the interrupt handler.
.Fn pcmcia_intr_establish
returns an opaque handle to an event descriptor if it succeeds, and
returns NULL on failure.
.It Fn pcmcia_intr_disestablish "pf" "ih"
Dis-establish the interrupt handler for device function
.Fa pf
with handle
.Fa ih .
The handle was returned from
.Fn pcmcia_intr_establish .
.It Fn pcmcia_cis_read_1 "tuple" "index"
Read one byte from tuple
.Fa tuple
at index
.Fa index
in the CIS.
.It Fn pcmcia_cis_read_2 "tuple" "index"
Read two bytes from tuple
.Fa tuple
at index
.Fa index
in the CIS.
.It Fn pcmcia_cis_read_3 "tuple" "index"
Read three bytes from tuple
.Fa tuple
at index
.Fa index
in the CIS.
.It Fn pcmcia_cis_read_4 "tuple" "index"
Read four bytes from tuple
.Fa tuple
at index
.Fa index
in the CIS.
.It Fn pcmcia_cis_read_n "tuple" "number" "index"
Read
.Fa n
bytes from tuple
.Fa tuple
at index
.Fa index
in the CIS.
.It Fn pcmcia_scan_cis "dev" "func" "arg"
Scan the CIS for device
.Fa dev .
For each tuple in the CIS, function
.Fa func
is called with the tuple and the argument
.Fa arg .
.Fa func
should return 0 if the tuple it was called with is the one it was
looking for, or 1 otherwise.
.El
.Sh AUTOCONFIGURATION
During autoconfiguration, a
.Nm
driver will receive a pointer to
.Fa struct pcmcia_attach_args
describing the device attached to the PCMCIA bus. Drivers match the
device using the
.Em manufacturer
and
.Em product
members.
.Pp
During the driver attach step, drivers will use the pcmcia function
.Em pf .
The driver should traverse the list of config entries searching for a
useful configuration. This config entry is passed to
.Fn pcmcia_function_init
to initialise the machine-independent interface. I/O and memory
resources should be initialised using
.Fn pcmcia_io_alloc
and
.Fn pcmcia_mem_alloc
using the specified resources in the config entry. These resources
can then be mapped into processor bus space using
.Fn pcmcia_io_map
and
.Fn pcmcia_mem_map
respectively. Upon successful allocation of resources, power can be
applied to the device with
.Fn pcmcia_function_enable
so that device-specific interrogation can be performed. Finally,
power should be removed from the device using
.Fn pcmcia_function_disable .
.Pp
Since PCMCIA devices support dynamic configuration, drivers should
make use of
.Fn powerhook_establish 9 .
Power can be applied and the interrupt handler should be established
through this interface.
.Sh DMA SUPPORT
PCMCIA devices do not support DMA.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent PCMCIA subsystem can be found. All pathnames are
relative to
.Pa /usr/src.
.Pp
The PCMCIA subsystem itself is implemented within the file
.Pa sys/dev/pcmcia/pcmcia.c .
The database of known devices exists within the file
.Pa sys/dev/pcmcia/pcmciadevs_data.h
and is generated automatically from the file
.Pa sys/dev/pcmcia/pcmciadevs .
New manufacturer and product identifiers should be added to this
file. The database can be regenerated using the Makefile
.Pa sys/dev/pcmcia/Makefile.pcmciadevs .
.Sh SEE ALSO
.Rs
.%A Personal Computer Memory Card International Association (PCMCIA)
.%T "PC Card 95 Standard"
.%D 1995
.Re
.sp
.Xr pcic 4 ,
.Xr pcmcia 4 ,
.Xr tcic 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 .
.Sh HISTORY
The machine-independent PCMCIA subsystem appeared in
.Nx 1.3 .

362
share/man/man9/vme.9 Normal file
View File

@ -0,0 +1,362 @@
.\" $NetBSD: vme.9,v 1.1 2001/07/01 04:11:14 gmcgarry Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Gregory McGarry.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd June 12, 2001
.Dt VME 9
.Os
.Sh NAME
.Nm VME ,
.Nm vme_probe ,
.Nm vme_space_map ,
.Nm vme_space_unmap ,
.Nm vme_intr_map ,
.Nm vme_intr_establish ,
.Nm vme_intr_disestablish ,
.Nm vme_intr_evcnt ,
.Nm vme_dmamap_create ,
.Nm vme_dmamap_destroy ,
.Nm vme_dmamem_alloc ,
.Nm vme_dmamem_free ,
.Nm vme_space_alloc ,
.Nm vme_space_free ,
.Nm vme_space_get
.Nd Versa Module Euroboard bus
.Sh SYNOPSIS
.Fd #include <machine/bus.h>
.Fd #include <dev/vme/vmereg.h>
.Fd #include <dev/vme/vmevar.h>
.Ft int
.Fn vme_probe "void *vc" "vme_addr_t vmeaddr" "vme_size_t len" "vme_am_t am" \
"vme_datasize_t datasize" \
"int (*callback)()" "void *arg"
.Ft int
.Fo vme_space_map
.Fa "void *vc" "vme_addr_t vmeaddr" "vme_size_t len" \
"vme_am_t am" "vme_datasize_t datasize" "vme_swap_t swap" \
"bus_space_tag_t *tag" "bus_space_handle_t *handle" "vme_mapresc_t *resc"
.Fc
.Ft void
.Fn vme_space_unmap "void *vc" "vme_mapresc_t resc"
.Ft int
.Fn vme_intr_map "void *vc" "int level" "int vector" \
"vme_intr_handle_t *handlep"
.Ft void *
.Fn vme_intr_establish "void *vc" "vme_intr_handle_t handle" "int prio" \
"int (*func)(void *)" "void *arg"
.Ft void
.Fn vme_intr_disestablish "void *vc" "void *cookie"
.Ft const struct evcnt *
.Fn vme_intr_evcnt "void *vc" "vme_intr_handle_t handle"
.Ft int
.Fo vme_dmamap_create
.Fa "void *vc" "vme_size_t size" "vme_am_t am" "vme_datasize_t datasize"
.Fa "vme_swap_t swap" "int nsegs" "vme_size_t segsz" "vme_addr_t bound"
.Fa "int flags" "bus_dmamap_t *map"
.Fc
.Ft void
.Fn vme_dmamap_destroy "void *vc" "bus_dmamap_t map"
.Ft int
.Fo vme_dmamem_alloc
.Fa "void *vc" "vme_size_t size" "vme_am_t am" \
"vme_datasize_t datasize" "vme_swap_t swap" "bus_dma_segment_t *segs" \
"int nsegs" "int *rsegs" "int flags"
.Fc
.Ft void
.Fn vme_dmamem_free "void *vc" "bus_dma_segment_t *segs" "int nsegs"
.Ft int
.Fn vme_space_alloc "struct vmebus_softc *tag" "vme_addr_t addr" "vme_size_t size" "vme_am_t ams"
.Ft void
.Fn vme_space_free "void *vc" "vme_addr_t addr" "vme_size_t size" \
"vme_am_t ams"
.Ft int
.Fn vme_space_get "void *vc" "vme_size_t size" "vme_am_t ams" \
"u_long align" "vme_addr_t *addr"
.Sh DESCRIPTION
The
.Nm
bus provides support for VME devices. The VME bus is a
high-performance backplane bus for use in computer systems. It is
based on the VMEbus specification initially released by the VMEbus
International Trade Association (VITA) in August of 1982. It has
since undergone IEC and IEEE standardisation.
.Pp
The VME bus supports 8, 16, and 32-bit transfers over non-multiplexed
32-bit data and address paths. The latest revisions allow 64-bit,
multiplexed transfers. It supports asynchronous, fully handshaken
transfers at speeds up to 80 MB/sec. It has a master-slave
architecture, encouraging multiprocessing and supports up to seven
interrupt levels.
.Sh DATA TYPES
Drivers attached to the
.Nm
bus will make use of the following data types:
.Bl -tag -width compact
.It Fa vme_chipset_tag_t
An opaque type identifying the bus controller.
.It Fa vme_addr_t
Addresses on the bus.
.It Fa vme_am_t
Address modifiers. Valid values are VME_AM_A32, VME_AM_A16,
VME_AM_A24, VME_AM_USERDEF (user/vendor definable), VME_AM_MBO,
VME_AM_SUPER, VME_AM_USER, VME_AM_DATA, VME_AM_PRG, VME_AM_BLT32 and
VME_AM_BLT64.
.It Fa vme_datasize_t
The datasize of the address space. Valid values are
VME_D8, VME_D16, and VME_D32.
.It Fa vme_mapresc_t
Generic placeholder for any resources needed for a mapping.
.It Fa vme_intr_handle_t
An opaque type describing an interrupt mapping.
.It Fa vme_swap_t
Hardware swap capabilities for controlling data endianness. Valid
values have not been specified yet.
.It Fa struct vme_range
A structure used to describe an address range on the VME bus. It
contains the following members:
.Bd -literal
vme_addr_t offset;
vme_size_t size;
vme_am_t am;
.Ed
.It Fa struct vme_attach_args
A structure used to inform the driver of the
device properties. It contains the following members:
.Bd -literal
vme_chipset_tag_t va_vct;
bus_dma_tag_t va_bdt;
int ivector;
int ilevel;
int numcfranges;
struct vme_range r[VME_MAXCFRANGES];
.Ed
.El
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn vme_probe "vc" "vmeaddr" "len" "am" "datasize" "callback" "arg"
Probes the VME space managed by controller
.Fa vc
at address
.Fa vmeaddr ,
length
.Fa len ,
with address modifiers
.Fa am
and datasize
.Fa datasize
for a device. If a VME device is found, the function
.Fa callback()
(if it is not NULL) is called to perform device-specific
identification.
.Fa callback()
is called with the argument
.Fa arg ,
and the bus-space tag and bus-space handle for accessing the VME space
mapping and should return a nonzero positive integer for a positive
device match.
.It Fo vme_space_map
.Fa "vc" "vmeaddr" "len" "am" "datasize" "swap" "tag" "handle" "resc"
.Fc
Maps the VME space managed by controller
.Fa vc
at address
.Fa vmeaddr ,
length
.Fa len ,
with address modifiers
.Fa am ,
datasize
.Fa datasize
and endianness
.Fa swap
for a device. If the mapping is successful
.Fa tag
contains the bus-space tag and
.Fa handle
contains the bus-space handle for accessing the VME space mapping.
.Fa resc
contains the resources for the mappings.
.Fn vme_space_map
returns 0 on success, and nonzero on error.
.It Fn vme_space_unmap "vc" "resc"
Unmaps the VME space mapping managed by controller
.Fa vc
and resources
.Fa resc .
.It Fn vme_intr_map "vc" "level" "vector" "handlep"
Sets
.Fa handlep
to a machine-dependant value which identifies a particular interrupt
source at level
.Fa level
and vector
.Fa vector
on the controller
.Fa vc .
.Fn vme_intr_map
returns zero on success, and nonzero on failure.
.It Fn vme_intr_establish "vc" "handle" "prio" "func" "arg"
Establishes the interrupt handler
.Fa handlep .
When the device interrupts,
.Fa func()
will be called with a single argument
.Fa arg
and will run at the interrupt priority level
.Fa prio .
The return value of
.Fn vme_intr_establish
may be saved and passed to
.Fn vme_intr_disestablish .
.It Fn vme_intr_disestablish "vc" "cookie"
Disables the interrupt handler when the driver is no longer interested
in interrupts from the device.
.Fa cookie
is the value returned by
.Fn vme_intr_establish .
.It Fn vme_intr_evcnt "vc" "handle"
Increment the interrupt event counter for the interrupt specified by
.Fa handle .
.It Fo vme_dmamap_create
.Fa "vc" "size" "am" "datasize" "swap" "nsegs" "segsz" "bound"
.Fa "flags" "map"
.Fc
Allocates a DMA handle and initializes it according to the parameters
provided. The VME-specific parameters describe the
address-space modifiers
.Fa am ,
datasize
.Fa datasize ,
and endianness
.Fa swap .
The remaining parameters are described in
.Xr bus_dma 9 .
.It Fn vme_dmamap_destroy "vc" "map"
Frees all resources associated with a given DMA handle. The parameters
are described in
.Xr bus_dma 9 .
.It Fo vme_dmamem_alloc
.Fa "vc" "size" "am" "datasize" "swap" "segs" "nsegs" "rsegs" "flags"
.Fc
Allocates memory that is
.Do
DMA safe
.Dc for the VME bus managed by
controller
.Fa vc .
The VME-specific parameters describe the
address-space modifiers
.Fa am ,
datasize
.Fa datasize ,
and endianness
.Fa swap .
The remaining parameters are described in
.Xr bus_dma 9 .
.It Fn vme_dmamem_free "vc" "segs" "nsegs"
Frees memory previously allocated by
.Fn vme_dmamem_alloc
for the VME space managed by controller
.Fa vc .
.It Fn vme_space_alloc "tag" "addr" "size" "ams"
Allocate VME space for the bus-space
.Fa tag
at address
.Fa addr
of size
.Fa size
and address-space modifiers
.Fa ams.
.Fn vme_space_alloc
returns EINVAL on invalid inputs.
.It Fn vme_space_free "vc" "addr" "size" "ams"
Deallocate VME space for the bus-space
.Fa tag
at address
.Fa addr
of size
.Fa size
and address-space modifiers
.Fa ams.
.It Fn vme_space_get "vc" "size" "ams" "align" "addr"
Returns EINVAL on invalid inputs.
.El
.Sh AUTOCONFIGURATION
The VME bus is an indirect-connection bus. During autoconfiguration
each driver is required to probe the bus for the presence of a
device. A VME driver will receive a pointer to a
.Fa struct vme_attach_args
hinting at "locations" (address ranges) on the VME bus where the
device may be located. The driver should check the number of address
ranges, allocate the address space of these ranges using
.Fn vme_space_alloc ,
and probe the address space for the device using
.Fn vme_probe .
.Pp
During driver attach the driver should also map the address ranges
using
.Fn vme_space_map .
The interrupt locators in
.Fa struct vme_attach_args
are used by
.Fn vme_intr_map
and
.Fn vme_intr_establish .
.Sh DMA SUPPORT
Extensive DMA facilities are provided.
.Sh CODE REFERENCES
This section describes places within the
.Nx
source tree where actual code implementing or utilising the
machine-independent
.Nm
subsystem can be found. All pathnames are relative to
.Pa /usr/src .
.Pp
The
.Nm
subsystem itself is implemented within the file
.Pa sys/dev/vme/vme.c .
.Sh SEE ALSO
.Xr vme 4 ,
.Xr autoconf 9 ,
.Xr bus_dma 9 ,
.Xr bus_space 9 ,
.Xr driver 9 .
.Sh HISTORY
The machine-independent VME subsystem appeared in
.Nx 1.5 .
.Sh BUGS
This page is incomplete.