Lines Matching refs:us
69 static int isd200_Initialization(struct us_data *us);
410 static void isd200_build_sense(struct us_data *us, struct scsi_cmnd *srb) in isd200_build_sense() argument
412 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_build_sense()
488 static int isd200_action( struct us_data *us, int action, in isd200_action() argument
494 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_action()
508 usb_stor_dbg(us, " isd200_action(READ_STATUS)\n"); in isd200_action()
517 usb_stor_dbg(us, " isd200_action(ENUM,0x%02x)\n", value); in isd200_action()
527 usb_stor_dbg(us, " isd200_action(RESET)\n"); in isd200_action()
536 usb_stor_dbg(us, " isd200_action(REENABLE)\n"); in isd200_action()
545 usb_stor_dbg(us, " isd200_action(SOFT_RESET)\n"); in isd200_action()
554 usb_stor_dbg(us, " isd200_action(IDENTIFY)\n"); in isd200_action()
562 usb_stor_dbg(us, "Error: Undefined action %d\n", action); in isd200_action()
568 status = usb_stor_Bulk_transport(srb, us); in isd200_action()
572 usb_stor_dbg(us, " isd200_action(0x%02x) error: %d\n", in isd200_action()
589 static int isd200_read_regs( struct us_data *us ) in isd200_read_regs() argument
591 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_read_regs()
595 usb_stor_dbg(us, "Entering isd200_IssueATAReadRegs\n"); in isd200_read_regs()
597 transferStatus = isd200_action( us, ACTION_READ_STATUS, in isd200_read_regs()
600 usb_stor_dbg(us, " Error reading ATA registers\n"); in isd200_read_regs()
604 usb_stor_dbg(us, " Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n", in isd200_read_regs()
618 static void isd200_invoke_transport( struct us_data *us, in isd200_invoke_transport() argument
629 transferStatus = usb_stor_Bulk_transport(srb, us); in isd200_invoke_transport()
634 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { in isd200_invoke_transport()
635 usb_stor_dbg(us, "-- command was aborted\n"); in isd200_invoke_transport()
647 usb_stor_dbg(us, "-- transport indicates protocol failure\n"); in isd200_invoke_transport()
652 usb_stor_dbg(us, "-- transport indicates command failure\n"); in isd200_invoke_transport()
657 usb_stor_dbg(us, "-- transport indicates transport error\n"); in isd200_invoke_transport()
663 usb_stor_dbg(us, "-- transport indicates unknown error\n"); in isd200_invoke_transport()
675 usb_stor_dbg(us, "-- unexpectedly short transfer\n"); in isd200_invoke_transport()
680 result = isd200_read_regs(us); in isd200_invoke_transport()
681 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { in isd200_invoke_transport()
682 usb_stor_dbg(us, "-- auto-sense aborted\n"); in isd200_invoke_transport()
686 isd200_build_sense(us, srb); in isd200_invoke_transport()
711 clear_bit(US_FLIDX_ABORTING, &us->dflags); in isd200_invoke_transport()
716 static void isd200_log_config(struct us_data *us, struct isd200_info *info) in isd200_log_config() argument
718 usb_stor_dbg(us, " Event Notification: 0x%x\n", in isd200_log_config()
720 usb_stor_dbg(us, " External Clock: 0x%x\n", in isd200_log_config()
722 usb_stor_dbg(us, " ATA Init Timeout: 0x%x\n", in isd200_log_config()
724 usb_stor_dbg(us, " ATAPI Command Block Size: 0x%x\n", in isd200_log_config()
726 usb_stor_dbg(us, " Master/Slave Selection: 0x%x\n", in isd200_log_config()
728 usb_stor_dbg(us, " ATAPI Reset: 0x%x\n", in isd200_log_config()
730 usb_stor_dbg(us, " ATA Timing: 0x%x\n", in isd200_log_config()
732 usb_stor_dbg(us, " ATA Major Command: 0x%x\n", in isd200_log_config()
734 usb_stor_dbg(us, " ATA Minor Command: 0x%x\n", in isd200_log_config()
736 usb_stor_dbg(us, " Init Status: 0x%x\n", in isd200_log_config()
738 usb_stor_dbg(us, " Config Descriptor 2: 0x%x\n", in isd200_log_config()
740 usb_stor_dbg(us, " Skip Device Boot: 0x%x\n", in isd200_log_config()
742 usb_stor_dbg(us, " ATA 3 State Suspend: 0x%x\n", in isd200_log_config()
744 usb_stor_dbg(us, " Descriptor Override: 0x%x\n", in isd200_log_config()
746 usb_stor_dbg(us, " Last LUN Identifier: 0x%x\n", in isd200_log_config()
748 usb_stor_dbg(us, " SRST Enable: 0x%x\n", in isd200_log_config()
761 static int isd200_write_config( struct us_data *us ) in isd200_write_config() argument
763 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_write_config()
768 usb_stor_dbg(us, "Entering isd200_write_config\n"); in isd200_write_config()
769 usb_stor_dbg(us, " Writing the following ISD200 Config Data:\n"); in isd200_write_config()
770 isd200_log_config(us, info); in isd200_write_config()
775 us, in isd200_write_config()
776 us->send_ctrl_pipe, in isd200_write_config()
785 usb_stor_dbg(us, " ISD200 Config Data was written successfully\n"); in isd200_write_config()
787 usb_stor_dbg(us, " Request to write ISD200 Config Data failed!\n"); in isd200_write_config()
791 usb_stor_dbg(us, "Leaving isd200_write_config %08X\n", retStatus); in isd200_write_config()
804 static int isd200_read_config( struct us_data *us ) in isd200_read_config() argument
806 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_read_config()
810 usb_stor_dbg(us, "Entering isd200_read_config\n"); in isd200_read_config()
816 us, in isd200_read_config()
817 us->recv_ctrl_pipe, in isd200_read_config()
827 usb_stor_dbg(us, " Retrieved the following ISD200 Config Data:\n"); in isd200_read_config()
829 isd200_log_config(us, info); in isd200_read_config()
832 usb_stor_dbg(us, " Request to get ISD200 Config Data failed!\n"); in isd200_read_config()
836 usb_stor_dbg(us, "Leaving isd200_read_config %08X\n", retStatus); in isd200_read_config()
849 static int isd200_atapi_soft_reset( struct us_data *us ) in isd200_atapi_soft_reset() argument
854 usb_stor_dbg(us, "Entering isd200_atapi_soft_reset\n"); in isd200_atapi_soft_reset()
856 transferStatus = isd200_action( us, ACTION_SOFT_RESET, NULL, 0 ); in isd200_atapi_soft_reset()
858 usb_stor_dbg(us, " Error issuing Atapi Soft Reset\n"); in isd200_atapi_soft_reset()
862 usb_stor_dbg(us, "Leaving isd200_atapi_soft_reset %08X\n", retStatus); in isd200_atapi_soft_reset()
875 static int isd200_srst( struct us_data *us ) in isd200_srst() argument
880 usb_stor_dbg(us, "Entering isd200_SRST\n"); in isd200_srst()
882 transferStatus = isd200_action( us, ACTION_RESET, NULL, 0 ); in isd200_srst()
886 usb_stor_dbg(us, " Error issuing SRST\n"); in isd200_srst()
892 transferStatus = isd200_action( us, ACTION_REENABLE, NULL, 0 ); in isd200_srst()
894 usb_stor_dbg(us, " Error taking drive out of reset\n"); in isd200_srst()
902 usb_stor_dbg(us, "Leaving isd200_srst %08X\n", retStatus); in isd200_srst()
916 static int isd200_try_enum(struct us_data *us, unsigned char master_slave, in isd200_try_enum() argument
921 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_try_enum()
933 status = isd200_action( us, ACTION_ENUM, NULL, master_slave ); in isd200_try_enum()
937 status = isd200_action( us, ACTION_READ_STATUS, in isd200_try_enum()
944 usb_stor_dbg(us, " %s status is still BSY, try again...\n", in isd200_try_enum()
948 usb_stor_dbg(us, " %s status !BSY, continue with next operation\n", in isd200_try_enum()
959 usb_stor_dbg(us, " Status indicates it is not ready, try again...\n"); in isd200_try_enum()
963 usb_stor_dbg(us, " Identified ATA device\n"); in isd200_try_enum()
984 usb_stor_dbg(us, " Identified ATAPI device as slave. Rechecking again as master\n"); in isd200_try_enum()
988 usb_stor_dbg(us, " Identified ATAPI device\n"); in isd200_try_enum()
991 status = isd200_atapi_soft_reset(us); in isd200_try_enum()
995 usb_stor_dbg(us, " Not ATA, not ATAPI - Weird\n"); in isd200_try_enum()
1002 usb_stor_dbg(us, " BSY check timeout, just continue with next operation...\n"); in isd200_try_enum()
1004 usb_stor_dbg(us, " Device detect timeout!\n"); in isd200_try_enum()
1021 static int isd200_manual_enum(struct us_data *us) in isd200_manual_enum() argument
1023 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_manual_enum()
1026 usb_stor_dbg(us, "Entering isd200_manual_enum\n"); in isd200_manual_enum()
1028 retStatus = isd200_read_config(us); in isd200_manual_enum()
1032 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_STD, 0); in isd200_manual_enum()
1034 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_SLAVE, 0); in isd200_manual_enum()
1037 retStatus = isd200_srst(us); in isd200_manual_enum()
1040 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_STD, 1); in isd200_manual_enum()
1045 usb_stor_dbg(us, " Setting Master/Slave selection to %d\n", in isd200_manual_enum()
1049 retStatus = isd200_write_config(us); in isd200_manual_enum()
1053 usb_stor_dbg(us, "Leaving isd200_manual_enum %08X\n", retStatus); in isd200_manual_enum()
1071 static void isd200_dump_driveid(struct us_data *us, u16 *id) in isd200_dump_driveid() argument
1073 usb_stor_dbg(us, " Identify Data Structure:\n"); in isd200_dump_driveid()
1074 usb_stor_dbg(us, " config = 0x%x\n", id[ATA_ID_CONFIG]); in isd200_dump_driveid()
1075 usb_stor_dbg(us, " cyls = 0x%x\n", id[ATA_ID_CYLS]); in isd200_dump_driveid()
1076 usb_stor_dbg(us, " heads = 0x%x\n", id[ATA_ID_HEADS]); in isd200_dump_driveid()
1077 usb_stor_dbg(us, " track_bytes = 0x%x\n", id[4]); in isd200_dump_driveid()
1078 usb_stor_dbg(us, " sector_bytes = 0x%x\n", id[5]); in isd200_dump_driveid()
1079 usb_stor_dbg(us, " sectors = 0x%x\n", id[ATA_ID_SECTORS]); in isd200_dump_driveid()
1080 usb_stor_dbg(us, " serial_no[0] = 0x%x\n", *(char *)&id[ATA_ID_SERNO]); in isd200_dump_driveid()
1081 usb_stor_dbg(us, " buf_type = 0x%x\n", id[20]); in isd200_dump_driveid()
1082 usb_stor_dbg(us, " buf_size = 0x%x\n", id[ATA_ID_BUF_SIZE]); in isd200_dump_driveid()
1083 usb_stor_dbg(us, " ecc_bytes = 0x%x\n", id[22]); in isd200_dump_driveid()
1084 usb_stor_dbg(us, " fw_rev[0] = 0x%x\n", *(char *)&id[ATA_ID_FW_REV]); in isd200_dump_driveid()
1085 usb_stor_dbg(us, " model[0] = 0x%x\n", *(char *)&id[ATA_ID_PROD]); in isd200_dump_driveid()
1086 usb_stor_dbg(us, " max_multsect = 0x%x\n", id[ATA_ID_MAX_MULTSECT] & 0xff); in isd200_dump_driveid()
1087 usb_stor_dbg(us, " dword_io = 0x%x\n", id[ATA_ID_DWORD_IO]); in isd200_dump_driveid()
1088 usb_stor_dbg(us, " capability = 0x%x\n", id[ATA_ID_CAPABILITY] >> 8); in isd200_dump_driveid()
1089 usb_stor_dbg(us, " tPIO = 0x%x\n", id[ATA_ID_OLD_PIO_MODES] >> 8); in isd200_dump_driveid()
1090 usb_stor_dbg(us, " tDMA = 0x%x\n", id[ATA_ID_OLD_DMA_MODES] >> 8); in isd200_dump_driveid()
1091 usb_stor_dbg(us, " field_valid = 0x%x\n", id[ATA_ID_FIELD_VALID]); in isd200_dump_driveid()
1092 usb_stor_dbg(us, " cur_cyls = 0x%x\n", id[ATA_ID_CUR_CYLS]); in isd200_dump_driveid()
1093 usb_stor_dbg(us, " cur_heads = 0x%x\n", id[ATA_ID_CUR_HEADS]); in isd200_dump_driveid()
1094 usb_stor_dbg(us, " cur_sectors = 0x%x\n", id[ATA_ID_CUR_SECTORS]); in isd200_dump_driveid()
1095 usb_stor_dbg(us, " cur_capacity = 0x%x\n", ata_id_u32(id, 57)); in isd200_dump_driveid()
1096 usb_stor_dbg(us, " multsect = 0x%x\n", id[ATA_ID_MULTSECT] & 0xff); in isd200_dump_driveid()
1097 usb_stor_dbg(us, " lba_capacity = 0x%x\n", ata_id_u32(id, ATA_ID_LBA_CAPACITY)); in isd200_dump_driveid()
1098 usb_stor_dbg(us, " command_set_1 = 0x%x\n", id[ATA_ID_COMMAND_SET_1]); in isd200_dump_driveid()
1099 usb_stor_dbg(us, " command_set_2 = 0x%x\n", id[ATA_ID_COMMAND_SET_2]); in isd200_dump_driveid()
1110 static int isd200_get_inquiry_data( struct us_data *us ) in isd200_get_inquiry_data() argument
1112 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_get_inquiry_data()
1116 usb_stor_dbg(us, "Entering isd200_get_inquiry_data\n"); in isd200_get_inquiry_data()
1122 retStatus = isd200_manual_enum(us); in isd200_get_inquiry_data()
1130 transferStatus = isd200_action( us, ACTION_IDENTIFY, in isd200_get_inquiry_data()
1134 usb_stor_dbg(us, " Error issuing ATA Command Identify\n"); in isd200_get_inquiry_data()
1143 isd200_dump_driveid(us, id); in isd200_get_inquiry_data()
1177 usb_stor_dbg(us, " Device supports Media Status Notification\n"); in isd200_get_inquiry_data()
1194 us->protocol_name = "Transparent SCSI"; in isd200_get_inquiry_data()
1195 us->proto_handler = usb_stor_transparent_scsi_command; in isd200_get_inquiry_data()
1197 usb_stor_dbg(us, "Protocol changed to: %s\n", in isd200_get_inquiry_data()
1198 us->protocol_name); in isd200_get_inquiry_data()
1201 us->extra_destructor(info); in isd200_get_inquiry_data()
1203 us->extra = NULL; in isd200_get_inquiry_data()
1204 us->extra_destructor = NULL; in isd200_get_inquiry_data()
1208 usb_stor_dbg(us, "Leaving isd200_get_inquiry_data %08X\n", retStatus); in isd200_get_inquiry_data()
1222 static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, in isd200_scsi_to_ata() argument
1225 struct isd200_info *info = (struct isd200_info *)us->extra; in isd200_scsi_to_ata()
1239 usb_stor_dbg(us, " ATA OUT - INQUIRY\n"); in isd200_scsi_to_ata()
1249 usb_stor_dbg(us, " ATA OUT - SCSIOP_MODE_SENSE\n"); in isd200_scsi_to_ata()
1263 usb_stor_dbg(us, " Media Status not supported, just report okay\n"); in isd200_scsi_to_ata()
1270 usb_stor_dbg(us, " ATA OUT - SCSIOP_TEST_UNIT_READY\n"); in isd200_scsi_to_ata()
1281 usb_stor_dbg(us, " Media Status not supported, just report okay\n"); in isd200_scsi_to_ata()
1292 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ_CAPACITY\n"); in isd200_scsi_to_ata()
1311 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ\n"); in isd200_scsi_to_ata()
1343 usb_stor_dbg(us, " ATA OUT - SCSIOP_WRITE\n"); in isd200_scsi_to_ata()
1375 usb_stor_dbg(us, " ATA OUT - SCSIOP_MEDIUM_REMOVAL\n"); in isd200_scsi_to_ata()
1378 usb_stor_dbg(us, " srb->cmnd[4] = 0x%X\n", in isd200_scsi_to_ata()
1389 usb_stor_dbg(us, " Not removeable media, just report okay\n"); in isd200_scsi_to_ata()
1396 usb_stor_dbg(us, " ATA OUT - SCSIOP_START_STOP_UNIT\n"); in isd200_scsi_to_ata()
1397 usb_stor_dbg(us, " srb->cmnd[4] = 0x%X\n", srb->cmnd[4]); in isd200_scsi_to_ata()
1400 usb_stor_dbg(us, " Media Eject\n"); in isd200_scsi_to_ata()
1407 usb_stor_dbg(us, " Get Media Status\n"); in isd200_scsi_to_ata()
1415 usb_stor_dbg(us, " Nothing to do, just report okay\n"); in isd200_scsi_to_ata()
1422 usb_stor_dbg(us, "Unsupported SCSI command - 0x%X\n", in isd200_scsi_to_ata()
1457 static int isd200_init_info(struct us_data *us) in isd200_init_info() argument
1475 us->extra = info; in isd200_init_info()
1476 us->extra_destructor = isd200_free_info_ptrs; in isd200_init_info()
1485 static int isd200_Initialization(struct us_data *us) in isd200_Initialization() argument
1487 usb_stor_dbg(us, "ISD200 Initialization...\n"); in isd200_Initialization()
1491 if (isd200_init_info(us) == ISD200_ERROR) { in isd200_Initialization()
1492 usb_stor_dbg(us, "ERROR Initializing ISD200 Info struct\n"); in isd200_Initialization()
1496 if (isd200_get_inquiry_data(us) != ISD200_GOOD) in isd200_Initialization()
1497 usb_stor_dbg(us, "ISD200 Initialization Failure\n"); in isd200_Initialization()
1499 usb_stor_dbg(us, "ISD200 Initialization complete\n"); in isd200_Initialization()
1516 static void isd200_ata_command(struct scsi_cmnd *srb, struct us_data *us) in isd200_ata_command() argument
1523 if (us->extra == NULL) in isd200_ata_command()
1524 usb_stor_dbg(us, "ERROR Driver not initialized\n"); in isd200_ata_command()
1529 sendToTransport = isd200_scsi_to_ata(srb, us, &ataCdb); in isd200_ata_command()
1533 isd200_invoke_transport(us, srb, &ataCdb); in isd200_ata_command()
1543 struct us_data *us; in isd200_probe() local
1546 result = usb_stor_probe1(&us, intf, id, in isd200_probe()
1552 us->protocol_name = "ISD200 ATA/ATAPI"; in isd200_probe()
1553 us->proto_handler = isd200_ata_command; in isd200_probe()
1555 result = usb_stor_probe2(us); in isd200_probe()