diff options
| author | Warner Losh <imp@FreeBSD.org> | 2005-03-11 05:27:05 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2005-03-11 05:27:05 +0000 |
| commit | 0f675788ff79966ed7bf3b0daded34e6d93735f9 (patch) | |
| tree | 504aec576c594117130ea7b3a91d161bd09c96c5 /sys/dev/cardbus | |
| parent | fa20c234019ae7105ae5c4ae975e96ea8d66d7f3 (diff) | |
Notes
Diffstat (limited to 'sys/dev/cardbus')
| -rw-r--r-- | sys/dev/cardbus/cardbus.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index 19974cd4219e..aaabd08f5865 100644 --- a/sys/dev/cardbus/cardbus.c +++ b/sys/dev/cardbus/cardbus.c @@ -471,10 +471,10 @@ cardbus_attach_card(device_t cbdev) } cardbus_pickup_maps(cbdev, child); cardbus_alloc_resources(cbdev, child); - pci_cfg_save(child, &dinfo->pci, 0); - pci_cfg_restore(child, &dinfo->pci); pci_print_verbose(&dinfo->pci); - if (device_probe_and_attach(child) == 0) + if (device_probe_and_attach(child) != 0) + cardbus_release_all_resources(cbdev, dinfo); + else cardattached++; } } @@ -545,8 +545,12 @@ cardbus_driver_added(device_t cbdev, driver_t *driver) continue; dinfo = device_get_ivars(dev); pci_print_verbose(&dinfo->pci); - pci_cfg_restore(dev, &dinfo->pci); - device_probe_and_attach(dev); + resource_list_init(&dinfo->pci.resources); + cardbus_do_cis(cbdev, dev); + cardbus_pickup_maps(cbdev, child); + cardbus_alloc_resources(cbdev, child); + if (device_probe_and_attach(dev) != 0) + cardbus_release_all_resources(cbdev, dinfo); } free(devlist, M_TEMP); } |
