Deleted Added
full compact
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 ---