diff options
author | wpaul <wpaul@FreeBSD.org> | 2004-07-11 00:19:30 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2004-07-11 00:19:30 +0000 |
commit | 16416501a995d5e0bbb51ba0f371590d3dc0c00a (patch) | |
tree | d3e09779ebff5bf50e2694a2ed89854892329112 /sys/dev/if_ndis/if_ndis_pci.c | |
parent | aae5483213805c645aad67985fa4f638d6e34915 (diff) | |
download | FreeBSD-src-16416501a995d5e0bbb51ba0f371590d3dc0c00a.zip FreeBSD-src-16416501a995d5e0bbb51ba0f371590d3dc0c00a.tar.gz |
Make NdisReadPcmciaAttributeMemory() and NdisWritePcmciaAttributeMemory()
actually work.
Make the PCI and PCCARD attachments provide a bus_get_resource_list()
method so that resource listing for PCCARD works. PCCARD does not
have a bus_get_resource_list() method (yet), so I faked up the
resource list management in if_ndis_pccard.c, and added
bus_get_resource_list() methods to both if_ndis_pccard.c and if_ndis_pci.c.
The one in the PCI attechment just hands off to the PCI bus code.
The difference is transparent to the NDIS resource handler code.
Fixed ndis_open_file() so that opening files which live on NFS
filesystems work: pass an actual ucred structure to VOP_GETATTR()
(NFS explodes if the ucred structure is NOCRED).
Make NdisMMapIoSpace() handle mapping of PCMCIA attribute memory
resources correctly.
Turn subr_ndis.c:my_strcasecmp() into ndis_strcasecmp() and export
it so that if_ndis_pccard.c can use it, and junk the other copy
of my_strcasecmp() from if_ndis_pccard.c.
Diffstat (limited to 'sys/dev/if_ndis/if_ndis_pci.c')
-rw-r--r-- | sys/dev/if_ndis/if_ndis_pci.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/dev/if_ndis/if_ndis_pci.c b/sys/dev/if_ndis/if_ndis_pci.c index 7602dd1..47c2f69 100644 --- a/sys/dev/if_ndis/if_ndis_pci.c +++ b/sys/dev/if_ndis/if_ndis_pci.c @@ -84,6 +84,8 @@ static struct ndis_pci_type ndis_devs[] = { static int ndis_probe_pci (device_t); static int ndis_attach_pci (device_t); +static struct resource_list *ndis_get_resource_list + (device_t, device_t); extern int ndis_attach (device_t); extern int ndis_shutdown (device_t); extern int ndis_detach (device_t); @@ -101,6 +103,9 @@ static device_method_t ndis_methods[] = { DEVMETHOD(device_suspend, ndis_suspend), DEVMETHOD(device_resume, ndis_resume), + /* Bus interface */ + DEVMETHOD(bus_get_resource_list, ndis_get_resource_list), + { 0, 0 } }; @@ -321,4 +326,15 @@ fail: return(error); } +static struct resource_list * +ndis_get_resource_list(dev, child) + device_t dev; + device_t child; +{ + struct ndis_softc *sc; + + sc = device_get_softc(dev); + return (BUS_GET_RESOURCE_LIST(device_get_parent(sc->ndis_dev), dev)); +} + #endif /* NDIS_PCI_DEV_TABLE */ |