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>
118 /* ATA Vendor Specific defines */
146 /* ATA registers offset definitions */
152 /* ATA error definitions not in <linux/hdreg.h> */
155 /* ATA command definitions not in <linux/hdreg.h> */
159 /* ATA drive control definitions */
480 union ata_cdb ata; in isd200_action() local
487 memset(&ata, 0, sizeof(ata)); in isd200_action()
491 ata.generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; in isd200_action()
492 ata.generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; in isd200_action()
493 ata.generic.TransferBlockSize = 1; in isd200_action()
498 ata.generic.ActionSelect = ACTION_SELECT_0|ACTION_SELECT_2; in isd200_action()
499 ata.generic.RegisterSelect = in isd200_action()
507 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
510 ata.generic.RegisterSelect = REG_DEVICE_HEAD; in isd200_action()
511 ata.write.DeviceHeadByte = value; in isd200_action()
517 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
519 ata.generic.RegisterSelect = REG_DEVICE_CONTROL; in isd200_action()
520 ata.write.DeviceControlByte = ATA_DC_RESET_CONTROLLER; in isd200_action()
526 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| in isd200_action()
528 ata.generic.RegisterSelect = REG_DEVICE_CONTROL; in isd200_action()
529 ata.write.DeviceControlByte = ATA_DC_REENABLE_CONTROLLER; in isd200_action()
535 ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_5; in isd200_action()
536 ata.generic.RegisterSelect = REG_DEVICE_HEAD | REG_COMMAND; in isd200_action()
537 ata.write.DeviceHeadByte = info->DeviceHead; in isd200_action()
538 ata.write.CommandByte = ATA_CMD_DEV_RESET; in isd200_action()
544 ata.generic.RegisterSelect = REG_COMMAND; in isd200_action()
545 ata.write.CommandByte = ATA_CMD_ID_ATA; in isd200_action()
555 memcpy(srb->cmnd, &ata, sizeof(ata.generic)); in isd200_action()
556 srb->cmd_len = sizeof(ata.generic); in isd200_action()
573 * Read ATA Registers
589 usb_stor_dbg(us, " Error reading ATA registers\n"); in isd200_read_regs()
593 usb_stor_dbg(us, " Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n", in isd200_read_regs()
715 usb_stor_dbg(us, " ATA Init Timeout: 0x%x\n", in isd200_log_config()
723 usb_stor_dbg(us, " ATA Timing: 0x%x\n", in isd200_log_config()
725 usb_stor_dbg(us, " ATA Major Command: 0x%x\n", in isd200_log_config()
727 usb_stor_dbg(us, " ATA Minor Command: 0x%x\n", in isd200_log_config()
735 usb_stor_dbg(us, " ATA 3 State Suspend: 0x%x\n", in isd200_log_config()
806 /* determine what the special ATA CDB bytes are. */ in isd200_read_config()
948 /* ATA_DF (workaround ATA Zip drive) and */ in isd200_try_enum()
954 /* check for DRDY, ATA devices set DRDY after SRST */ in isd200_try_enum()
956 usb_stor_dbg(us, " Identified ATA device\n"); in isd200_try_enum()
990 usb_stor_dbg(us, " Not ATA, not ATAPI - Weird\n"); in isd200_try_enum()
1010 * Determines if the drive attached is an ATA or ATAPI and if it is a
1034 /* ata or atapi? */ in isd200_manual_enum()
1121 /* check for an ATA device */ in isd200_get_inquiry_data()
1123 /* this must be an ATA device */ in isd200_get_inquiry_data()
1124 /* perform an ATA Command Identify */ in isd200_get_inquiry_data()
1128 /* Error issuing ATA Command Identify */ in isd200_get_inquiry_data()
1129 usb_stor_dbg(us, " Error issuing ATA Command Identify\n"); in isd200_get_inquiry_data()
1132 /* ATA Command Identify successful */ in isd200_get_inquiry_data()
1142 usb_stor_dbg(us, " Invalid ATA Identify data\n"); in isd200_get_inquiry_data()
1221 * Translate SCSI commands to ATA commands.
1244 usb_stor_dbg(us, " ATA OUT - INQUIRY\n"); in isd200_scsi_to_ata()
1254 usb_stor_dbg(us, " ATA OUT - SCSIOP_MODE_SENSE\n"); in isd200_scsi_to_ata()
1275 usb_stor_dbg(us, " ATA OUT - SCSIOP_TEST_UNIT_READY\n"); in isd200_scsi_to_ata()
1297 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ_CAPACITY\n"); in isd200_scsi_to_ata()
1316 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ\n"); in isd200_scsi_to_ata()
1348 usb_stor_dbg(us, " ATA OUT - SCSIOP_WRITE\n"); in isd200_scsi_to_ata()
1380 usb_stor_dbg(us, " ATA OUT - SCSIOP_MEDIUM_REMOVAL\n"); in isd200_scsi_to_ata()
1401 usb_stor_dbg(us, " ATA OUT - SCSIOP_START_STOP_UNIT\n"); in isd200_scsi_to_ata()
1519 * This protocol and transport are for ATA devices connected to an ISD200
1540 /* scsi_bufflen might change in protocol translation to ata */ in isd200_ata_command()
1565 us->protocol_name = "ISD200 ATA/ATAPI"; in isd200_probe()