Lines Matching full:ata
14 * The ISD200 ASIC does not natively support ATA devices. The chip
15 * does implement an interface, the ATA Command Block (ATACB) which provides
16 * a means of passing ATA commands and ATA register accesses to a device.
37 #include <linux/ata.h>
117 /* ATA Vendor Specific defines */
145 /* ATA registers offset definitions */
151 /* ATA error definitions not in <linux/hdreg.h> */
154 /* ATA command definitions not in <linux/hdreg.h> */
158 /* ATA drive control definitions */
479 union ata_cdb ata; in isd200_action() local
486 memset(&ata, 0, sizeof(ata)); in isd200_action()
490 ata.generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; in isd200_action()
491 ata.generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; in isd200_action()
492 ata.generic.TransferBlockSize = 1; in isd200_action()
497 ata.generic.ActionSelect = ACTION_SELECT_0|ACTION_SELECT_2; in isd200_action()
498 ata.generic.RegisterSelect = in isd200_action()
506 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
509 ata.generic.RegisterSelect = REG_DEVICE_HEAD; in isd200_action()
510 ata.write.DeviceHeadByte = value; in isd200_action()
516 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
518 ata.generic.RegisterSelect = REG_DEVICE_CONTROL; in isd200_action()
519 ata.write.DeviceControlByte = ATA_DC_RESET_CONTROLLER; in isd200_action()
525 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
527 ata.generic.RegisterSelect = REG_DEVICE_CONTROL; in isd200_action()
528 ata.write.DeviceControlByte = ATA_DC_REENABLE_CONTROLLER; in isd200_action()
534 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_5; in isd200_action()
535 ata.generic.RegisterSelect = REG_DEVICE_HEAD | REG_COMMAND; in isd200_action()
536 ata.write.DeviceHeadByte = info->DeviceHead; in isd200_action()
537 ata.write.CommandByte = ATA_CMD_DEV_RESET; in isd200_action()
543 ata.generic.RegisterSelect = REG_COMMAND; in isd200_action()
544 ata.write.CommandByte = ATA_CMD_ID_ATA; in isd200_action()
554 memcpy(srb->cmnd, &ata, sizeof(ata.generic)); in isd200_action()
555 srb->cmd_len = sizeof(ata.generic); in isd200_action()
572 * Read ATA Registers
588 usb_stor_dbg(us, " Error reading ATA registers\n"); in isd200_read_regs()
592 usb_stor_dbg(us, " Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n", in isd200_read_regs()
714 usb_stor_dbg(us, " ATA Init Timeout: 0x%x\n", in isd200_log_config()
722 usb_stor_dbg(us, " ATA Timing: 0x%x\n", in isd200_log_config()
724 usb_stor_dbg(us, " ATA Major Command: 0x%x\n", in isd200_log_config()
726 usb_stor_dbg(us, " ATA Minor Command: 0x%x\n", in isd200_log_config()
734 usb_stor_dbg(us, " ATA 3 State Suspend: 0x%x\n", in isd200_log_config()
805 /* determine what the special ATA CDB bytes are. */ in isd200_read_config()
947 /* ATA_DF (workaround ATA Zip drive) and */ in isd200_try_enum()
953 /* check for DRDY, ATA devices set DRDY after SRST */ in isd200_try_enum()
955 usb_stor_dbg(us, " Identified ATA device\n"); in isd200_try_enum()
989 usb_stor_dbg(us, " Not ATA, not ATAPI - Weird\n"); in isd200_try_enum()
1009 * Determines if the drive attached is an ATA or ATAPI and if it is a
1033 /* ata or atapi? */ in isd200_manual_enum()
1120 /* check for an ATA device */ in isd200_get_inquiry_data()
1122 /* this must be an ATA device */ in isd200_get_inquiry_data()
1123 /* perform an ATA Command Identify */ in isd200_get_inquiry_data()
1127 /* Error issuing ATA Command Identify */ in isd200_get_inquiry_data()
1128 usb_stor_dbg(us, " Error issuing ATA Command Identify\n"); in isd200_get_inquiry_data()
1131 /* ATA Command Identify successful */ in isd200_get_inquiry_data()
1212 * Translate SCSI commands to ATA commands.
1235 usb_stor_dbg(us, " ATA OUT - INQUIRY\n"); in isd200_scsi_to_ata()
1245 usb_stor_dbg(us, " ATA OUT - SCSIOP_MODE_SENSE\n"); in isd200_scsi_to_ata()
1266 usb_stor_dbg(us, " ATA OUT - SCSIOP_TEST_UNIT_READY\n"); in isd200_scsi_to_ata()
1288 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ_CAPACITY\n"); in isd200_scsi_to_ata()
1307 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ\n"); in isd200_scsi_to_ata()
1339 usb_stor_dbg(us, " ATA OUT - SCSIOP_WRITE\n"); in isd200_scsi_to_ata()
1371 usb_stor_dbg(us, " ATA OUT - SCSIOP_MEDIUM_REMOVAL\n"); in isd200_scsi_to_ata()
1392 usb_stor_dbg(us, " ATA OUT - SCSIOP_START_STOP_UNIT\n"); in isd200_scsi_to_ata()
1505 * This protocol and transport are for ATA devices connected to an ISD200
1526 /* scsi_bufflen might change in protocol translation to ata */ in isd200_ata_command()
1551 us->protocol_name = "ISD200 ATA/ATAPI"; in isd200_probe()