Module Name: src Committed By: riz Date: Mon Apr 29 03:17:01 UTC 2013
Modified Files: src/sys/dev/scsipi [netbsd-6]: ses.c Log Message: Pull up following revision(s) (requested by jakllsch in ticket #878): sys/dev/scsipi/ses.c: revision 1.45 Add detach support. From martin@. "Works for me." Addresses PR 44283. To generate a diff of this commit: cvs rdiff -u -r1.43 -r1.43.8.1 src/sys/dev/scsipi/ses.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/scsipi/ses.c diff -u src/sys/dev/scsipi/ses.c:1.43 src/sys/dev/scsipi/ses.c:1.43.8.1 --- src/sys/dev/scsipi/ses.c:1.43 Sun Jul 17 20:54:51 2011 +++ src/sys/dev/scsipi/ses.c Mon Apr 29 03:17:01 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: ses.c,v 1.43 2011/07/17 20:54:51 joerg Exp $ */ +/* $NetBSD: ses.c,v 1.43.8.1 2013/04/29 03:17:01 riz Exp $ */ /* * Copyright (C) 2000 National Aeronautics & Space Administration * All rights reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ses.c,v 1.43 2011/07/17 20:54:51 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ses.c,v 1.43.8.1 2013/04/29 03:17:01 riz Exp $"); #include "opt_scsi.h" @@ -168,10 +168,11 @@ struct ses_softc { static int ses_match(device_t, cfdata_t, void *); static void ses_attach(device_t, device_t, void *); +static int ses_detach(device_t, int); static enctyp ses_device_type(struct scsipibus_attach_args *); CFATTACH_DECL(ses, sizeof (struct ses_softc), - ses_match, ses_attach, NULL, NULL); + ses_match, ses_attach, ses_detach, NULL); extern struct cfdriver ses_cd; @@ -276,7 +277,6 @@ ses_attach(device_t parent, device_t sel printf("\n%s: %s\n", device_xname(&softc->sc_device), tname); } - static enctyp ses_device_type(struct scsipibus_attach_args *sa) { @@ -811,6 +811,29 @@ ses_softc_init(ses_softc_t *ssc, int doi } static int +ses_detach(device_t self, int flags) +{ + struct ses_softc *ssc = device_private(self); + struct sscfg *cc = ssc->ses_private; + + if (ssc->ses_objmap) { + SES_FREE(ssc->ses_objmap, (nobj * sizeof (encobj))); + } + if (cc != NULL) { + if (cc->ses_typidx) { + SES_FREE(cc->ses_typidx, + (nobj * sizeof (struct typidx))); + } + if (cc->ses_eltmap) { + SES_FREE(cc->ses_eltmap, ntype); + } + SES_FREE(cc, sizeof (struct sscfg)); + } + + return 0; +} + +static int ses_init_enc(ses_softc_t *ssc) { return (0);