aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/net/prism2_pci.c
diff options
context:
space:
mode:
authorMichael Brown <mcb30@etherboot.org>2005-04-13 02:02:08 +0000
committerMichael Brown <mcb30@etherboot.org>2005-04-13 02:02:08 +0000
commit7cc6366a840317923a70ee6e8e619dd673cae11e (patch)
treec18b4e1c9c4e16133af839bbe848cd9c592062f9 /src/drivers/net/prism2_pci.c
parent951e305081bc77ccaefeb076f05cdab72bdcd8ef (diff)
downloadipxe-7cc6366a840317923a70ee6e8e619dd673cae11e.tar.gz
Finished by hand
Diffstat (limited to 'src/drivers/net/prism2_pci.c')
-rw-r--r--src/drivers/net/prism2_pci.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/drivers/net/prism2_pci.c b/src/drivers/net/prism2_pci.c
index 1d4ea31c1..08a698c8b 100644
--- a/src/drivers/net/prism2_pci.c
+++ b/src/drivers/net/prism2_pci.c
@@ -26,5 +26,23 @@ PCI_ROM(0x1260, 0x3873, "dwl520", "DLink DWL-520"),
static struct pci_driver prism2_pci_driver =
PCI_DRIVER ( "Prism2_PCI", prism2_pci_nics, PCI_NO_CLASS );
+static int prism2_pci_probe ( struct dev *dev ) {
+ struct nic *nic = nic_device ( dev );
+ struct pci_device *pci = pci_device ( dev );
+ hfa384x_t *hw = &hw_global;
+ uint32_t membase = 0; /* Prism2.5 Memory Base */
+
+ if ( ! find_pci_device ( pci, &prism2_pci_driver ) )
+ return 0;
+
+ pci_read_config_dword( pci, PRISM2_PCI_MEM_BASE, &membase);
+ membase &= PCI_BASE_ADDRESS_MEM_MASK;
+ hw->membase = (uint32_t) phys_to_virt(membase);
+ printf ( "Prism2.5 has registers at %#x\n", hw->membase );
+ nic->ioaddr = hw->membase;
+
+ return prism2_probe ( nic, hw );
+}
+
BOOT_DRIVER ( "Prism2_PCI", prism2_pci_probe );