summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis/if_ndis_pci.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2004-07-11 00:19:30 +0000
committerwpaul <wpaul@FreeBSD.org>2004-07-11 00:19:30 +0000
commit16416501a995d5e0bbb51ba0f371590d3dc0c00a (patch)
treed3e09779ebff5bf50e2694a2ed89854892329112 /sys/dev/if_ndis/if_ndis_pci.c
parentaae5483213805c645aad67985fa4f638d6e34915 (diff)
downloadFreeBSD-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.c16
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 */
OpenPOWER on IntegriCloud