aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/advansys/adwcam.c
diff options
context:
space:
mode:
authorScott Mitchell <rsm@FreeBSD.org>2004-12-06 23:17:04 +0000
committerScott Mitchell <rsm@FreeBSD.org>2004-12-06 23:17:04 +0000
commitfb805ea785ddb712bcce2a6b2ae91ece90a3ecfa (patch)
tree17073bbc380e295bc9f943fffd981ad3fefb9a15 /sys/dev/advansys/adwcam.c
parent2f6a1b474498c3fa22389eace4ac99e17f4257ea (diff)
Notes
Diffstat (limited to 'sys/dev/advansys/adwcam.c')
-rw-r--r--sys/dev/advansys/adwcam.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/dev/advansys/adwcam.c b/sys/dev/advansys/adwcam.c
index f4e7f4cfe91f..400c0fca5271 100644
--- a/sys/dev/advansys/adwcam.c
+++ b/sys/dev/advansys/adwcam.c
@@ -872,6 +872,26 @@ adw_free(struct adw_softc *adw)
case 0:
break;
}
+
+ if (adw->regs != NULL)
+ bus_release_resource(adw->device,
+ adw->regs_res_type,
+ adw->regs_res_id,
+ adw->regs);
+
+ if (adw->irq != NULL)
+ bus_release_resource(adw->device,
+ adw->irq_res_type,
+ 0, adw->irq);
+
+ if (adw->sim != NULL) {
+ if (adw->path != NULL) {
+ xpt_async(AC_LOST_DEVICE, adw->path, NULL);
+ xpt_free_path(adw->path);
+ }
+ xpt_bus_deregister(cam_sim_path(adw->sim));
+ cam_sim_free(adw->sim, /*free_devq*/TRUE);
+ }
free(adw->name, M_DEVBUF);
free(adw, M_DEVBUF);
}