ps3cdrom.c (224857) | ps3cdrom.c (225950) |
---|---|
1/*- 2 * Copyright (C) 2010 Nathan Whitehorn 3 * Copyright (C) 2011 glevand <geoffrey.levand@mail.ru> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> | 1/*- 2 * Copyright (C) 2010 Nathan Whitehorn 3 * Copyright (C) 2011 glevand <geoffrey.levand@mail.ru> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> |
29__FBSDID("$FreeBSD: head/sys/powerpc/ps3/ps3cdrom.c 224857 2011-08-14 00:20:37Z nwhitehorn $"); | 29__FBSDID("$FreeBSD: head/sys/powerpc/ps3/ps3cdrom.c 225950 2011-10-03 20:32:55Z ken $"); |
30 31#include <sys/param.h> 32#include <sys/module.h> 33#include <sys/systm.h> 34#include <sys/kernel.h> 35#include <sys/ata.h> 36#include <sys/bus.h> 37#include <sys/conf.h> --- 463 unchanged lines hidden (view full) --- 501 ccb->csio.resid = 0; 502 ccb->ccb_h.status = CAM_REQ_CMP; 503 } else { 504 ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND; 505 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; 506 507 if (!ps3cdrom_decode_lv1_status(status, &sense_key, 508 &asc, &ascq)) { | 30 31#include <sys/param.h> 32#include <sys/module.h> 33#include <sys/systm.h> 34#include <sys/kernel.h> 35#include <sys/ata.h> 36#include <sys/bus.h> 37#include <sys/conf.h> --- 463 unchanged lines hidden (view full) --- 501 ccb->csio.resid = 0; 502 ccb->ccb_h.status = CAM_REQ_CMP; 503 } else { 504 ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND; 505 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; 506 507 if (!ps3cdrom_decode_lv1_status(status, &sense_key, 508 &asc, &ascq)) { |
509 struct scsi_sense_data sense_data; | |
510 511 CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, 512 ("sense key 0x%02x asc 0x%02x ascq 0x%02x\n", 513 sense_key, asc, ascq)); 514 | 509 510 CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, 511 ("sense key 0x%02x asc 0x%02x ascq 0x%02x\n", 512 sense_key, asc, ascq)); 513 |
515 bzero(&sense_data, sizeof(sense_data)); 516 sense_data.error_code = SSD_CURRENT_ERROR; 517 sense_data.flags |= sense_key; 518 sense_data.extra_len = 0xa; 519 sense_data.add_sense_code = asc; 520 sense_data.add_sense_code_qual = ascq; 521 ccb->csio.sense_len = sizeof(sense_data); 522 bcopy(&sense_data, &ccb->csio.sense_data, 523 ccb->csio.sense_len); | 514 scsi_set_sense_data(&ccb->csio.sense_data, 515 /*sense_format*/ SSD_TYPE_NONE, 516 /*current_error*/ 1, 517 sense_key, 518 asc, 519 ascq, 520 SSD_ELEM_NONE); 521 ccb->csio.sense_len = SSD_FULL_SIZE; |
524 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR | 525 CAM_AUTOSNS_VALID; 526 } 527 528 if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) 529 ccb->csio.resid = ccb->csio.dxfer_len; 530 } 531 --- 106 unchanged lines hidden (view full) --- 638 sizeof(atapi_cmd), atapi_cmd.buf, atapi_cmd.arglen, 639 &xp->x_tag); 640 641 break; 642 } 643 } 644 645 if (err) { | 522 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR | 523 CAM_AUTOSNS_VALID; 524 } 525 526 if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) 527 ccb->csio.resid = ccb->csio.dxfer_len; 528 } 529 --- 106 unchanged lines hidden (view full) --- 636 sizeof(atapi_cmd), atapi_cmd.buf, atapi_cmd.arglen, 637 &xp->x_tag); 638 639 break; 640 } 641 } 642 643 if (err) { |
646 struct scsi_sense_data sense_data; 647 | |
648 device_printf(dev, "ATAPI command 0x%02x failed (%d)\n", 649 cdb[0], err); 650 651 bus_dmamap_unload(sc->sc_dmatag, xp->x_dmamap); 652 653 xp->x_ccb = NULL; 654 TAILQ_INSERT_TAIL(&sc->sc_free_xferq, xp, x_queue); 655 | 644 device_printf(dev, "ATAPI command 0x%02x failed (%d)\n", 645 cdb[0], err); 646 647 bus_dmamap_unload(sc->sc_dmatag, xp->x_dmamap); 648 649 xp->x_ccb = NULL; 650 TAILQ_INSERT_TAIL(&sc->sc_free_xferq, xp, x_queue); 651 |
656 bzero(&sense_data, sizeof(sense_data)); 657 sense_data.error_code = SSD_CURRENT_ERROR; 658 sense_data.flags |= SSD_KEY_ILLEGAL_REQUEST; 659 ccb->csio.sense_len = sizeof(sense_data); 660 bcopy(&sense_data, &ccb->csio.sense_data, ccb->csio.sense_len); | 652 bzero(&ccb->csio.sense_data, sizeof(ccb->csio.sense_data)); 653 /* Invalid field in parameter list */ 654 scsi_set_sense_data(&ccb->csio.sense_data, 655 /*sense_format*/ SSD_TYPE_NONE, 656 /*current_error*/ 1, 657 /*sense_key*/ SSD_KEY_ILLEGAL_REQUEST, 658 /*asc*/ 0x26, 659 /*ascq*/ 0x00, 660 SSD_ELEM_NONE); 661 662 ccb->csio.sense_len = SSD_FULL_SIZE; 663 ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND; |
661 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; 662 xpt_done(ccb); 663 } else { 664 CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, 665 ("ATAPI command 0x%02x tag 0x%016lx submitted\n ", cdb[0], 666 xp->x_tag)); 667 668 TAILQ_INSERT_TAIL(&sc->sc_active_xferq, xp, x_queue); --- 35 unchanged lines hidden --- | 664 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; 665 xpt_done(ccb); 666 } else { 667 CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, 668 ("ATAPI command 0x%02x tag 0x%016lx submitted\n ", cdb[0], 669 xp->x_tag)); 670 671 TAILQ_INSERT_TAIL(&sc->sc_active_xferq, xp, x_queue); --- 35 unchanged lines hidden --- |