diff options
| -rw-r--r-- | sys/dev/cardbus/cardbus.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index d6ffbe996cbb5..19974cd4219ea 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) - cardbus_release_all_resources(cbdev, dinfo); - else + if (device_probe_and_attach(child) == 0) cardattached++; } } @@ -545,10 +545,8 @@ cardbus_driver_added(device_t cbdev, driver_t *driver) continue; dinfo = device_get_ivars(dev); pci_print_verbose(&dinfo->pci); - resource_list_init(&dinfo->pci.resources); - cardbus_do_cis(cbdev, dev); - if (device_probe_and_attach(dev) != 0) - cardbus_release_all_resources(cbdev, dinfo); + pci_cfg_restore(dev, &dinfo->pci); + device_probe_and_attach(dev); } free(devlist, M_TEMP); } |
