aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/cardbus/cardbus.c12
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);
}