Lines Matching refs:us

58 static int isd200_Initialization(struct us_data *us);
399 static void isd200_build_sense(struct us_data *us, struct scsi_cmnd *srb)
401 struct isd200_info *info = (struct isd200_info *)us->extra;
477 static int isd200_action( struct us_data *us, int action,
483 struct isd200_info *info = (struct isd200_info *)us->extra;
497 usb_stor_dbg(us, " isd200_action(READ_STATUS)\n");
506 usb_stor_dbg(us, " isd200_action(ENUM,0x%02x)\n", value);
516 usb_stor_dbg(us, " isd200_action(RESET)\n");
525 usb_stor_dbg(us, " isd200_action(REENABLE)\n");
534 usb_stor_dbg(us, " isd200_action(SOFT_RESET)\n");
543 usb_stor_dbg(us, " isd200_action(IDENTIFY)\n");
551 usb_stor_dbg(us, "Error: Undefined action %d\n", action);
557 status = usb_stor_Bulk_transport(srb, us);
561 usb_stor_dbg(us, " isd200_action(0x%02x) error: %d\n",
578 static int isd200_read_regs( struct us_data *us )
580 struct isd200_info *info = (struct isd200_info *)us->extra;
584 usb_stor_dbg(us, "Entering isd200_IssueATAReadRegs\n");
586 transferStatus = isd200_action( us, ACTION_READ_STATUS,
589 usb_stor_dbg(us, " Error reading ATA registers\n");
593 usb_stor_dbg(us, " Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n",
607 static void isd200_invoke_transport( struct us_data *us,
618 transferStatus = usb_stor_Bulk_transport(srb, us);
624 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) {
625 usb_stor_dbg(us, "-- command was aborted\n");
637 usb_stor_dbg(us, "-- transport indicates protocol failure\n");
642 usb_stor_dbg(us, "-- transport indicates command failure\n");
647 usb_stor_dbg(us, "-- transport indicates transport error\n");
653 usb_stor_dbg(us, "-- transport indicates unknown error\n");
665 usb_stor_dbg(us, "-- unexpectedly short transfer\n");
670 result = isd200_read_regs(us);
671 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) {
672 usb_stor_dbg(us, "-- auto-sense aborted\n");
676 isd200_build_sense(us, srb);
704 clear_bit(US_FLIDX_ABORTING, &us->dflags);
709 static void isd200_log_config(struct us_data *us, struct isd200_info *info)
711 usb_stor_dbg(us, " Event Notification: 0x%x\n",
713 usb_stor_dbg(us, " External Clock: 0x%x\n",
715 usb_stor_dbg(us, " ATA Init Timeout: 0x%x\n",
717 usb_stor_dbg(us, " ATAPI Command Block Size: 0x%x\n",
719 usb_stor_dbg(us, " Master/Slave Selection: 0x%x\n",
721 usb_stor_dbg(us, " ATAPI Reset: 0x%x\n",
723 usb_stor_dbg(us, " ATA Timing: 0x%x\n",
725 usb_stor_dbg(us, " ATA Major Command: 0x%x\n",
727 usb_stor_dbg(us, " ATA Minor Command: 0x%x\n",
729 usb_stor_dbg(us, " Init Status: 0x%x\n",
731 usb_stor_dbg(us, " Config Descriptor 2: 0x%x\n",
733 usb_stor_dbg(us, " Skip Device Boot: 0x%x\n",
735 usb_stor_dbg(us, " ATA 3 State Suspend: 0x%x\n",
737 usb_stor_dbg(us, " Descriptor Override: 0x%x\n",
739 usb_stor_dbg(us, " Last LUN Identifier: 0x%x\n",
741 usb_stor_dbg(us, " SRST Enable: 0x%x\n",
754 static int isd200_write_config( struct us_data *us )
756 struct isd200_info *info = (struct isd200_info *)us->extra;
761 usb_stor_dbg(us, "Entering isd200_write_config\n");
762 usb_stor_dbg(us, " Writing the following ISD200 Config Data:\n");
763 isd200_log_config(us, info);
768 us,
769 us->send_ctrl_pipe,
778 usb_stor_dbg(us, " ISD200 Config Data was written successfully\n");
780 usb_stor_dbg(us, " Request to write ISD200 Config Data failed!\n");
784 usb_stor_dbg(us, "Leaving isd200_write_config %08X\n", retStatus);
797 static int isd200_read_config( struct us_data *us )
799 struct isd200_info *info = (struct isd200_info *)us->extra;
803 usb_stor_dbg(us, "Entering isd200_read_config\n");
809 us,
810 us->recv_ctrl_pipe,
820 usb_stor_dbg(us, " Retrieved the following ISD200 Config Data:\n");
822 isd200_log_config(us, info);
825 usb_stor_dbg(us, " Request to get ISD200 Config Data failed!\n");
829 usb_stor_dbg(us, "Leaving isd200_read_config %08X\n", retStatus);
842 static int isd200_atapi_soft_reset( struct us_data *us )
847 usb_stor_dbg(us, "Entering isd200_atapi_soft_reset\n");
849 transferStatus = isd200_action( us, ACTION_SOFT_RESET, NULL, 0 );
851 usb_stor_dbg(us, " Error issuing Atapi Soft Reset\n");
855 usb_stor_dbg(us, "Leaving isd200_atapi_soft_reset %08X\n", retStatus);
868 static int isd200_srst( struct us_data *us )
873 usb_stor_dbg(us, "Entering isd200_SRST\n");
875 transferStatus = isd200_action( us, ACTION_RESET, NULL, 0 );
879 usb_stor_dbg(us, " Error issuing SRST\n");
885 transferStatus = isd200_action( us, ACTION_REENABLE, NULL, 0 );
887 usb_stor_dbg(us, " Error taking drive out of reset\n");
895 usb_stor_dbg(us, "Leaving isd200_srst %08X\n", retStatus);
909 static int isd200_try_enum(struct us_data *us, unsigned char master_slave,
914 struct isd200_info *info = (struct isd200_info *)us->extra;
926 status = isd200_action( us, ACTION_ENUM, NULL, master_slave );
930 status = isd200_action( us, ACTION_READ_STATUS,
937 usb_stor_dbg(us, " %s status is still BSY, try again...\n",
941 usb_stor_dbg(us, " %s status !BSY, continue with next operation\n",
952 usb_stor_dbg(us, " Status indicates it is not ready, try again...\n");
956 usb_stor_dbg(us, " Identified ATA device\n");
979 usb_stor_dbg(us, " Identified ATAPI device as slave. Rechecking again as master\n");
983 usb_stor_dbg(us, " Identified ATAPI device\n");
986 status = isd200_atapi_soft_reset(us);
990 usb_stor_dbg(us, " Not ATA, not ATAPI - Weird\n");
997 usb_stor_dbg(us, " BSY check timeout, just continue with next operation...\n");
999 usb_stor_dbg(us, " Device detect timeout!\n");
1016 static int isd200_manual_enum(struct us_data *us)
1018 struct isd200_info *info = (struct isd200_info *)us->extra;
1021 usb_stor_dbg(us, "Entering isd200_manual_enum\n");
1023 retStatus = isd200_read_config(us);
1027 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_STD, 0);
1029 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_SLAVE, 0);
1032 retStatus = isd200_srst(us);
1035 retStatus = isd200_try_enum( us, ATA_ADDRESS_DEVHEAD_STD, 1);
1040 usb_stor_dbg(us, " Setting Master/Slave selection to %d\n",
1044 retStatus = isd200_write_config(us);
1048 usb_stor_dbg(us, "Leaving isd200_manual_enum %08X\n", retStatus);
1066 static void isd200_dump_driveid(struct us_data *us, u16 *id)
1068 usb_stor_dbg(us, " Identify Data Structure:\n");
1069 usb_stor_dbg(us, " config = 0x%x\n", id[ATA_ID_CONFIG]);
1070 usb_stor_dbg(us, " cyls = 0x%x\n", id[ATA_ID_CYLS]);
1071 usb_stor_dbg(us, " heads = 0x%x\n", id[ATA_ID_HEADS]);
1072 usb_stor_dbg(us, " track_bytes = 0x%x\n", id[4]);
1073 usb_stor_dbg(us, " sector_bytes = 0x%x\n", id[5]);
1074 usb_stor_dbg(us, " sectors = 0x%x\n", id[ATA_ID_SECTORS]);
1075 usb_stor_dbg(us, " serial_no[0] = 0x%x\n", *(char *)&id[ATA_ID_SERNO]);
1076 usb_stor_dbg(us, " buf_type = 0x%x\n", id[20]);
1077 usb_stor_dbg(us, " buf_size = 0x%x\n", id[ATA_ID_BUF_SIZE]);
1078 usb_stor_dbg(us, " ecc_bytes = 0x%x\n", id[22]);
1079 usb_stor_dbg(us, " fw_rev[0] = 0x%x\n", *(char *)&id[ATA_ID_FW_REV]);
1080 usb_stor_dbg(us, " model[0] = 0x%x\n", *(char *)&id[ATA_ID_PROD]);
1081 usb_stor_dbg(us, " max_multsect = 0x%x\n", id[ATA_ID_MAX_MULTSECT] & 0xff);
1082 usb_stor_dbg(us, " dword_io = 0x%x\n", id[ATA_ID_DWORD_IO]);
1083 usb_stor_dbg(us, " capability = 0x%x\n", id[ATA_ID_CAPABILITY] >> 8);
1084 usb_stor_dbg(us, " tPIO = 0x%x\n", id[ATA_ID_OLD_PIO_MODES] >> 8);
1085 usb_stor_dbg(us, " tDMA = 0x%x\n", id[ATA_ID_OLD_DMA_MODES] >> 8);
1086 usb_stor_dbg(us, " field_valid = 0x%x\n", id[ATA_ID_FIELD_VALID]);
1087 usb_stor_dbg(us, " cur_cyls = 0x%x\n", id[ATA_ID_CUR_CYLS]);
1088 usb_stor_dbg(us, " cur_heads = 0x%x\n", id[ATA_ID_CUR_HEADS]);
1089 usb_stor_dbg(us, " cur_sectors = 0x%x\n", id[ATA_ID_CUR_SECTORS]);
1090 usb_stor_dbg(us, " cur_capacity = 0x%x\n", ata_id_u32(id, 57));
1091 usb_stor_dbg(us, " multsect = 0x%x\n", id[ATA_ID_MULTSECT] & 0xff);
1092 usb_stor_dbg(us, " lba_capacity = 0x%x\n", ata_id_u32(id, ATA_ID_LBA_CAPACITY));
1093 usb_stor_dbg(us, " command_set_1 = 0x%x\n", id[ATA_ID_COMMAND_SET_1]);
1094 usb_stor_dbg(us, " command_set_2 = 0x%x\n", id[ATA_ID_COMMAND_SET_2]);
1105 static int isd200_get_inquiry_data( struct us_data *us )
1107 struct isd200_info *info = (struct isd200_info *)us->extra;
1111 usb_stor_dbg(us, "Entering isd200_get_inquiry_data\n");
1117 retStatus = isd200_manual_enum(us);
1125 transferStatus = isd200_action( us, ACTION_IDENTIFY,
1129 usb_stor_dbg(us, " Error issuing ATA Command Identify\n");
1138 isd200_dump_driveid(us, id);
1172 usb_stor_dbg(us, " Device supports Media Status Notification\n");
1191 us->protocol_name = "Transparent SCSI";
1192 us->proto_handler = usb_stor_transparent_scsi_command;
1194 usb_stor_dbg(us, "Protocol changed to: %s\n",
1195 us->protocol_name);
1198 us->extra_destructor(info);
1200 us->extra = NULL;
1201 us->extra_destructor = NULL;
1205 usb_stor_dbg(us, "Leaving isd200_get_inquiry_data %08X\n", retStatus);
1219 static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us,
1222 struct isd200_info *info = (struct isd200_info *)us->extra;
1236 usb_stor_dbg(us, " ATA OUT - INQUIRY\n");
1246 usb_stor_dbg(us, " ATA OUT - SCSIOP_MODE_SENSE\n");
1260 usb_stor_dbg(us, " Media Status not supported, just report okay\n");
1267 usb_stor_dbg(us, " ATA OUT - SCSIOP_TEST_UNIT_READY\n");
1278 usb_stor_dbg(us, " Media Status not supported, just report okay\n");
1289 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ_CAPACITY\n");
1308 usb_stor_dbg(us, " ATA OUT - SCSIOP_READ\n");
1340 usb_stor_dbg(us, " ATA OUT - SCSIOP_WRITE\n");
1372 usb_stor_dbg(us, " ATA OUT - SCSIOP_MEDIUM_REMOVAL\n");
1375 usb_stor_dbg(us, " srb->cmnd[4] = 0x%X\n",
1386 usb_stor_dbg(us, " Not removable media, just report okay\n");
1393 usb_stor_dbg(us, " ATA OUT - SCSIOP_START_STOP_UNIT\n");
1394 usb_stor_dbg(us, " srb->cmnd[4] = 0x%X\n", srb->cmnd[4]);
1397 usb_stor_dbg(us, " Media Eject\n");
1404 usb_stor_dbg(us, " Get Media Status\n");
1412 usb_stor_dbg(us, " Nothing to do, just report okay\n");
1419 usb_stor_dbg(us, "Unsupported SCSI command - 0x%X\n",
1454 static int isd200_init_info(struct us_data *us)
1472 us->extra = info;
1473 us->extra_destructor = isd200_free_info_ptrs;
1482 static int isd200_Initialization(struct us_data *us)
1484 usb_stor_dbg(us, "ISD200 Initialization...\n");
1488 if (isd200_init_info(us) == ISD200_ERROR) {
1489 usb_stor_dbg(us, "ERROR Initializing ISD200 Info struct\n");
1493 if (isd200_get_inquiry_data(us) != ISD200_GOOD)
1494 usb_stor_dbg(us, "ISD200 Initialization Failure\n");
1496 usb_stor_dbg(us, "ISD200 Initialization complete\n");
1513 static void isd200_ata_command(struct scsi_cmnd *srb, struct us_data *us)
1520 if (us->extra == NULL) {
1521 usb_stor_dbg(us, "ERROR Driver not initialized\n");
1529 sendToTransport = isd200_scsi_to_ata(srb, us, &ataCdb);
1533 isd200_invoke_transport(us, srb, &ataCdb);
1543 struct us_data *us;
1546 result = usb_stor_probe1(&us, intf, id,
1552 us->protocol_name = "ISD200 ATA/ATAPI";
1553 us->proto_handler = isd200_ata_command;
1555 result = usb_stor_probe2(us);