umass.c (255472) | umass.c (257381) |
---|---|
1#include <sys/cdefs.h> | 1#include <sys/cdefs.h> |
2__FBSDID("$FreeBSD: head/sys/dev/usb/storage/umass.c 255472 2013-09-11 10:18:36Z hselasky $"); | 2__FBSDID("$FreeBSD: head/sys/dev/usb/storage/umass.c 257381 2013-10-30 14:04:47Z nwhitehorn $"); |
3 4/*- 5 * Copyright (c) 1999 MAEKAWA Masahide <bishop@rr.iij4u.or.jp>, 6 * Nick Hibma <n_hibma@FreeBSD.org> 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions --- 11 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * | 3 4/*- 5 * Copyright (c) 1999 MAEKAWA Masahide <bishop@rr.iij4u.or.jp>, 6 * Nick Hibma <n_hibma@FreeBSD.org> 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions --- 11 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * |
30 * $FreeBSD: head/sys/dev/usb/storage/umass.c 255472 2013-09-11 10:18:36Z hselasky $ | 30 * $FreeBSD: head/sys/dev/usb/storage/umass.c 257381 2013-10-30 14:04:47Z nwhitehorn $ |
31 * $NetBSD: umass.c,v 1.28 2000/04/02 23:46:53 augustss Exp $ 32 */ 33 34/* Also already merged from NetBSD: 35 * $NetBSD: umass.c,v 1.67 2001/11/25 19:05:22 augustss Exp $ 36 * $NetBSD: umass.c,v 1.90 2002/11/04 19:17:33 pooka Exp $ 37 * $NetBSD: umass.c,v 1.108 2003/11/07 17:03:25 wiz Exp $ 38 * $NetBSD: umass.c,v 1.109 2003/12/04 13:57:31 keihan Exp $ --- 2075 unchanged lines hidden (view full) --- 2114} 2115 2116static void 2117umass_cam_attach(struct umass_softc *sc) 2118{ 2119#ifndef USB_DEBUG 2120 if (bootverbose) 2121#endif | 31 * $NetBSD: umass.c,v 1.28 2000/04/02 23:46:53 augustss Exp $ 32 */ 33 34/* Also already merged from NetBSD: 35 * $NetBSD: umass.c,v 1.67 2001/11/25 19:05:22 augustss Exp $ 36 * $NetBSD: umass.c,v 1.90 2002/11/04 19:17:33 pooka Exp $ 37 * $NetBSD: umass.c,v 1.108 2003/11/07 17:03:25 wiz Exp $ 38 * $NetBSD: umass.c,v 1.109 2003/12/04 13:57:31 keihan Exp $ --- 2075 unchanged lines hidden (view full) --- 2114} 2115 2116static void 2117umass_cam_attach(struct umass_softc *sc) 2118{ 2119#ifndef USB_DEBUG 2120 if (bootverbose) 2121#endif |
2122 printf("%s:%d:%d:%d: Attached to scbus%d\n", | 2122 printf("%s:%d:%d: Attached to scbus%d\n", |
2123 sc->sc_name, cam_sim_path(sc->sc_sim), | 2123 sc->sc_name, cam_sim_path(sc->sc_sim), |
2124 sc->sc_unit, CAM_LUN_WILDCARD, 2125 cam_sim_path(sc->sc_sim)); | 2124 sc->sc_unit, cam_sim_path(sc->sc_sim)); |
2126} 2127 2128/* umass_cam_detach 2129 * detach from the CAM layer 2130 */ 2131 2132static void 2133umass_cam_detach_sim(struct umass_softc *sc) --- 34 unchanged lines hidden (view full) --- 2168 uint8_t dir; 2169 2170 if (ccb->csio.ccb_h.flags & CAM_CDB_POINTER) { 2171 cmd = (uint8_t *)(ccb->csio.cdb_io.cdb_ptr); 2172 } else { 2173 cmd = (uint8_t *)(ccb->csio.cdb_io.cdb_bytes); 2174 } 2175 | 2125} 2126 2127/* umass_cam_detach 2128 * detach from the CAM layer 2129 */ 2130 2131static void 2132umass_cam_detach_sim(struct umass_softc *sc) --- 34 unchanged lines hidden (view full) --- 2167 uint8_t dir; 2168 2169 if (ccb->csio.ccb_h.flags & CAM_CDB_POINTER) { 2170 cmd = (uint8_t *)(ccb->csio.cdb_io.cdb_ptr); 2171 } else { 2172 cmd = (uint8_t *)(ccb->csio.cdb_io.cdb_bytes); 2173 } 2174 |
2176 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_SCSI_IO: " | 2175 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_SCSI_IO: " |
2177 "cmd: 0x%02x, flags: 0x%02x, " 2178 "%db cmd/%db data/%db sense\n", 2179 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, | 2176 "cmd: 0x%02x, flags: 0x%02x, " 2177 "%db cmd/%db data/%db sense\n", 2178 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, |
2180 ccb->ccb_h.target_lun, cmd[0], | 2179 (uintmax_t)ccb->ccb_h.target_lun, cmd[0], |
2181 ccb->ccb_h.flags & CAM_DIR_MASK, ccb->csio.cdb_len, 2182 ccb->csio.dxfer_len, ccb->csio.sense_len); 2183 2184 if (sc->sc_transfer.ccb) { | 2180 ccb->ccb_h.flags & CAM_DIR_MASK, ccb->csio.cdb_len, 2181 ccb->csio.dxfer_len, ccb->csio.sense_len); 2182 2183 if (sc->sc_transfer.ccb) { |
2185 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_SCSI_IO: " | 2184 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_SCSI_IO: " |
2186 "I/O in progress, deferring\n", 2187 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, | 2185 "I/O in progress, deferring\n", 2186 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, |
2188 ccb->ccb_h.target_lun); | 2187 (uintmax_t)ccb->ccb_h.target_lun); |
2189 ccb->ccb_h.status = CAM_SCSI_BUSY; 2190 xpt_done(ccb); 2191 goto done; 2192 } 2193 switch (ccb->ccb_h.flags & CAM_DIR_MASK) { 2194 case CAM_DIR_IN: 2195 dir = DIR_IN; 2196 break; --- 101 unchanged lines hidden (view full) --- 2298 &umass_cam_cb, ccb); 2299 } 2300 break; 2301 } 2302 case XPT_PATH_INQ: 2303 { 2304 struct ccb_pathinq *cpi = &ccb->cpi; 2305 | 2188 ccb->ccb_h.status = CAM_SCSI_BUSY; 2189 xpt_done(ccb); 2190 goto done; 2191 } 2192 switch (ccb->ccb_h.flags & CAM_DIR_MASK) { 2193 case CAM_DIR_IN: 2194 dir = DIR_IN; 2195 break; --- 101 unchanged lines hidden (view full) --- 2297 &umass_cam_cb, ccb); 2298 } 2299 break; 2300 } 2301 case XPT_PATH_INQ: 2302 { 2303 struct ccb_pathinq *cpi = &ccb->cpi; 2304 |
2306 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_PATH_INQ:.\n", | 2305 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_PATH_INQ:.\n", |
2307 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, | 2306 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, |
2308 ccb->ccb_h.target_lun); | 2307 (uintmax_t)ccb->ccb_h.target_lun); |
2309 2310 /* host specific information */ 2311 cpi->version_num = 1; 2312 cpi->hba_inquiry = 0; 2313 cpi->target_sprt = 0; 2314 cpi->hba_misc = PIM_NO_6_BYTE; 2315 cpi->hba_eng_cnt = 0; 2316 cpi->max_target = UMASS_SCSIID_MAX; /* one target */ --- 36 unchanged lines hidden (view full) --- 2353 } 2354 2355 cpi->ccb_h.status = CAM_REQ_CMP; 2356 xpt_done(ccb); 2357 break; 2358 } 2359 case XPT_RESET_DEV: 2360 { | 2308 2309 /* host specific information */ 2310 cpi->version_num = 1; 2311 cpi->hba_inquiry = 0; 2312 cpi->target_sprt = 0; 2313 cpi->hba_misc = PIM_NO_6_BYTE; 2314 cpi->hba_eng_cnt = 0; 2315 cpi->max_target = UMASS_SCSIID_MAX; /* one target */ --- 36 unchanged lines hidden (view full) --- 2352 } 2353 2354 cpi->ccb_h.status = CAM_REQ_CMP; 2355 xpt_done(ccb); 2356 break; 2357 } 2358 case XPT_RESET_DEV: 2359 { |
2361 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_RESET_DEV:.\n", | 2360 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_RESET_DEV:.\n", |
2362 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, | 2361 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, |
2363 ccb->ccb_h.target_lun); | 2362 (uintmax_t)ccb->ccb_h.target_lun); |
2364 2365 umass_reset(sc); 2366 2367 ccb->ccb_h.status = CAM_REQ_CMP; 2368 xpt_done(ccb); 2369 break; 2370 } 2371 case XPT_GET_TRAN_SETTINGS: 2372 { 2373 struct ccb_trans_settings *cts = &ccb->cts; 2374 | 2363 2364 umass_reset(sc); 2365 2366 ccb->ccb_h.status = CAM_REQ_CMP; 2367 xpt_done(ccb); 2368 break; 2369 } 2370 case XPT_GET_TRAN_SETTINGS: 2371 { 2372 struct ccb_trans_settings *cts = &ccb->cts; 2373 |
2375 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_GET_TRAN_SETTINGS:.\n", | 2374 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_GET_TRAN_SETTINGS:.\n", |
2376 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, | 2375 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, |
2377 ccb->ccb_h.target_lun); | 2376 (uintmax_t)ccb->ccb_h.target_lun); |
2378 2379 cts->protocol = PROTO_SCSI; 2380 cts->protocol_version = SCSI_REV_2; 2381 cts->transport = XPORT_USB; 2382 cts->transport_version = 0; 2383 cts->xport_specific.valid = 0; 2384 2385 ccb->ccb_h.status = CAM_REQ_CMP; 2386 xpt_done(ccb); 2387 break; 2388 } 2389 case XPT_SET_TRAN_SETTINGS: 2390 { | 2377 2378 cts->protocol = PROTO_SCSI; 2379 cts->protocol_version = SCSI_REV_2; 2380 cts->transport = XPORT_USB; 2381 cts->transport_version = 0; 2382 cts->xport_specific.valid = 0; 2383 2384 ccb->ccb_h.status = CAM_REQ_CMP; 2385 xpt_done(ccb); 2386 break; 2387 } 2388 case XPT_SET_TRAN_SETTINGS: 2389 { |
2391 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_SET_TRAN_SETTINGS:.\n", | 2390 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_SET_TRAN_SETTINGS:.\n", |
2392 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, | 2391 cam_sim_path(sc->sc_sim), ccb->ccb_h.target_id, |
2393 ccb->ccb_h.target_lun); | 2392 (uintmax_t)ccb->ccb_h.target_lun); |
2394 2395 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; 2396 xpt_done(ccb); 2397 break; 2398 } 2399 case XPT_CALC_GEOMETRY: 2400 { 2401 cam_calc_geometry(&ccb->ccg, /* extended */ 1); 2402 xpt_done(ccb); 2403 break; 2404 } 2405 case XPT_NOOP: 2406 { | 2393 2394 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; 2395 xpt_done(ccb); 2396 break; 2397 } 2398 case XPT_CALC_GEOMETRY: 2399 { 2400 cam_calc_geometry(&ccb->ccg, /* extended */ 1); 2401 xpt_done(ccb); 2402 break; 2403 } 2404 case XPT_NOOP: 2405 { |
2407 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:XPT_NOOP:.\n", | 2406 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:XPT_NOOP:.\n", |
2408 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, | 2407 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, |
2409 ccb->ccb_h.target_lun); | 2408 (uintmax_t)ccb->ccb_h.target_lun); |
2410 2411 ccb->ccb_h.status = CAM_REQ_CMP; 2412 xpt_done(ccb); 2413 break; 2414 } 2415 default: | 2409 2410 ccb->ccb_h.status = CAM_REQ_CMP; 2411 xpt_done(ccb); 2412 break; 2413 } 2414 default: |
2416 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%d:func_code 0x%04x: " | 2415 DPRINTF(sc, UDMASS_SCSI, "%d:%d:%jx:func_code 0x%04x: " |
2417 "Not implemented\n", 2418 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, | 2416 "Not implemented\n", 2417 sc ? cam_sim_path(sc->sc_sim) : -1, ccb->ccb_h.target_id, |
2419 ccb->ccb_h.target_lun, ccb->ccb_h.func_code); | 2418 (uintmax_t)ccb->ccb_h.target_lun, ccb->ccb_h.func_code); |
2420 2421 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; 2422 xpt_done(ccb); 2423 break; 2424 } 2425 2426done: 2427 return; --- 594 unchanged lines hidden --- | 2419 2420 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; 2421 xpt_done(ccb); 2422 break; 2423 } 2424 2425done: 2426 return; --- 594 unchanged lines hidden --- |