Lines Matching refs:us
160 static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us);
161 static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us);
163 static int init_usbat_cd(struct us_data *us);
164 static int init_usbat_flash(struct us_data *us);
225 static int usbat_get_device_type(struct us_data *us) in usbat_get_device_type() argument
227 return ((struct usbat_info*)us->extra)->devicetype; in usbat_get_device_type()
233 static int usbat_read(struct us_data *us, in usbat_read() argument
238 return usb_stor_ctrl_transfer(us, in usbat_read()
239 us->recv_ctrl_pipe, in usbat_read()
251 static int usbat_write(struct us_data *us, in usbat_write() argument
256 return usb_stor_ctrl_transfer(us, in usbat_write()
257 us->send_ctrl_pipe, in usbat_write()
269 static int usbat_bulk_read(struct us_data *us, in usbat_bulk_read() argument
277 usb_stor_dbg(us, "len = %d\n", len); in usbat_bulk_read()
278 return usb_stor_bulk_transfer_sg(us, us->recv_bulk_pipe, buf, len, use_sg, NULL); in usbat_bulk_read()
284 static int usbat_bulk_write(struct us_data *us, in usbat_bulk_write() argument
292 usb_stor_dbg(us, "len = %d\n", len); in usbat_bulk_write()
293 return usb_stor_bulk_transfer_sg(us, us->send_bulk_pipe, buf, len, use_sg, NULL); in usbat_bulk_write()
301 static int usbat_execute_command(struct us_data *us, in usbat_execute_command() argument
305 return usb_stor_ctrl_transfer(us, us->send_ctrl_pipe, in usbat_execute_command()
313 static int usbat_get_status(struct us_data *us, unsigned char *status) in usbat_get_status() argument
316 rc = usbat_read(us, USBAT_ATA, USBAT_ATA_STATUS, status); in usbat_get_status()
318 usb_stor_dbg(us, "0x%02X\n", *status); in usbat_get_status()
325 static int usbat_check_status(struct us_data *us) in usbat_check_status() argument
327 unsigned char *reply = us->iobuf; in usbat_check_status()
330 rc = usbat_get_status(us, reply); in usbat_check_status()
349 static int usbat_set_shuttle_features(struct us_data *us, in usbat_set_shuttle_features() argument
357 unsigned char *command = us->iobuf; in usbat_set_shuttle_features()
398 return usbat_execute_command(us, command, 8); in usbat_set_shuttle_features()
405 static int usbat_wait_not_busy(struct us_data *us, int minutes) in usbat_wait_not_busy() argument
409 unsigned char *status = us->iobuf; in usbat_wait_not_busy()
419 result = usbat_get_status(us, status); in usbat_wait_not_busy()
424 result = usbat_read(us, USBAT_ATA, 0x10, status); in usbat_wait_not_busy()
431 usb_stor_dbg(us, "Waited not busy for %d steps\n", i); in usbat_wait_not_busy()
445 usb_stor_dbg(us, "Waited not busy for %d minutes, timing out\n", in usbat_wait_not_busy()
453 static int usbat_read_block(struct us_data *us, in usbat_read_block() argument
459 unsigned char *command = us->iobuf; in usbat_read_block()
473 result = usbat_execute_command(us, command, 8); in usbat_read_block()
477 result = usbat_bulk_read(us, buf, len, use_sg); in usbat_read_block()
485 static int usbat_write_block(struct us_data *us, in usbat_write_block() argument
493 unsigned char *command = us->iobuf; in usbat_write_block()
507 result = usbat_execute_command(us, command, 8); in usbat_write_block()
512 result = usbat_bulk_write(us, buf, len, use_sg); in usbat_write_block()
516 return usbat_wait_not_busy(us, minutes); in usbat_write_block()
522 static int usbat_hp8200e_rw_block_test(struct us_data *us, in usbat_hp8200e_rw_block_test() argument
539 us->recv_bulk_pipe : us->send_bulk_pipe; in usbat_hp8200e_rw_block_test()
541 unsigned char *command = us->iobuf; in usbat_hp8200e_rw_block_test()
544 unsigned char *data = us->iobuf; in usbat_hp8200e_rw_block_test()
545 unsigned char *status = us->iobuf; in usbat_hp8200e_rw_block_test()
593 result = usbat_execute_command(us, command, cmdlen); in usbat_hp8200e_rw_block_test()
605 result = usbat_bulk_write(us, data, num_registers*2, 0); in usbat_hp8200e_rw_block_test()
611 result = usb_stor_bulk_transfer_sg(us, in usbat_hp8200e_rw_block_test()
642 if (usb_stor_clear_halt(us, in usbat_hp8200e_rw_block_test()
643 us->send_bulk_pipe) < 0) in usbat_hp8200e_rw_block_test()
651 result = usbat_read(us, USBAT_ATA, in usbat_hp8200e_rw_block_test()
663 usb_stor_dbg(us, "Redoing %s\n", in usbat_hp8200e_rw_block_test()
670 return usbat_wait_not_busy(us, minutes); in usbat_hp8200e_rw_block_test()
674 usb_stor_dbg(us, "Bummer! %s bulk data 20 times failed\n", in usbat_hp8200e_rw_block_test()
687 static int usbat_multiple_write(struct us_data *us, in usbat_multiple_write() argument
693 unsigned char *data = us->iobuf; in usbat_multiple_write()
694 unsigned char *command = us->iobuf; in usbat_multiple_write()
713 result = usbat_execute_command(us, command, 8); in usbat_multiple_write()
724 result = usbat_bulk_write(us, data, num_registers*2, 0); in usbat_multiple_write()
728 if (usbat_get_device_type(us) == USBAT_DEV_HP8200) in usbat_multiple_write()
729 return usbat_wait_not_busy(us, 0); in usbat_multiple_write()
746 static int usbat_read_blocks(struct us_data *us, in usbat_read_blocks() argument
752 unsigned char *command = us->iobuf; in usbat_read_blocks()
764 result = usbat_execute_command(us, command, 8); in usbat_read_blocks()
769 result = usbat_bulk_read(us, buffer, len, use_sg); in usbat_read_blocks()
788 static int usbat_write_blocks(struct us_data *us, in usbat_write_blocks() argument
794 unsigned char *command = us->iobuf; in usbat_write_blocks()
806 result = usbat_execute_command(us, command, 8); in usbat_write_blocks()
811 result = usbat_bulk_write(us, buffer, len, use_sg); in usbat_write_blocks()
821 static int usbat_read_user_io(struct us_data *us, unsigned char *data_flags) in usbat_read_user_io() argument
825 result = usb_stor_ctrl_transfer(us, in usbat_read_user_io()
826 us->recv_ctrl_pipe, in usbat_read_user_io()
834 usb_stor_dbg(us, "UIO register reads %02X\n", *data_flags); in usbat_read_user_io()
842 static int usbat_write_user_io(struct us_data *us, in usbat_write_user_io() argument
846 return usb_stor_ctrl_transfer(us, in usbat_write_user_io()
847 us->send_ctrl_pipe, in usbat_write_user_io()
860 static int usbat_device_reset(struct us_data *us) in usbat_device_reset() argument
868 rc = usbat_write_user_io(us, in usbat_device_reset()
878 rc = usbat_write_user_io(us, in usbat_device_reset()
890 static int usbat_device_enable_cdt(struct us_data *us) in usbat_device_enable_cdt() argument
895 rc = usbat_write_user_io(us, in usbat_device_enable_cdt()
907 static int usbat_flash_check_media_present(struct us_data *us, in usbat_flash_check_media_present() argument
911 usb_stor_dbg(us, "no media detected\n"); in usbat_flash_check_media_present()
921 static int usbat_flash_check_media_changed(struct us_data *us, in usbat_flash_check_media_changed() argument
925 usb_stor_dbg(us, "media change detected\n"); in usbat_flash_check_media_changed()
935 static int usbat_flash_check_media(struct us_data *us, in usbat_flash_check_media() argument
939 unsigned char *uio = us->iobuf; in usbat_flash_check_media()
941 rc = usbat_read_user_io(us, uio); in usbat_flash_check_media()
946 rc = usbat_flash_check_media_present(us, uio); in usbat_flash_check_media()
955 rc = usbat_flash_check_media_changed(us, uio); in usbat_flash_check_media()
959 rc = usbat_device_reset(us); in usbat_flash_check_media()
962 rc = usbat_device_enable_cdt(us); in usbat_flash_check_media()
968 rc = usbat_read_user_io(us, uio); in usbat_flash_check_media()
986 static int usbat_identify_device(struct us_data *us, in usbat_identify_device() argument
992 if (!us || !info) in usbat_identify_device()
995 rc = usbat_device_reset(us); in usbat_identify_device()
1006 rc = usbat_write(us, USBAT_ATA, USBAT_ATA_CMD, 0xA1); in usbat_identify_device()
1010 rc = usbat_get_status(us, &status); in usbat_identify_device()
1017 usb_stor_dbg(us, "Detected HP8200 CDRW\n"); in usbat_identify_device()
1021 usb_stor_dbg(us, "Detected Flash reader/writer\n"); in usbat_identify_device()
1031 static int usbat_set_transport(struct us_data *us, in usbat_set_transport() argument
1040 usbat_identify_device(us, info); in usbat_set_transport()
1047 us->transport = usbat_hp8200e_transport; in usbat_set_transport()
1051 us->transport = usbat_flash_transport; in usbat_set_transport()
1061 static int usbat_flash_get_sector_count(struct us_data *us, in usbat_flash_get_sector_count() argument
1074 if (!us || !info) in usbat_flash_get_sector_count()
1082 rc = usbat_multiple_write(us, registers, command, 3); in usbat_flash_get_sector_count()
1084 usb_stor_dbg(us, "Gah! identify_device failed\n"); in usbat_flash_get_sector_count()
1090 if (usbat_get_status(us, &status) != USB_STOR_XFER_GOOD) { in usbat_flash_get_sector_count()
1098 rc = usbat_read_block(us, reply, 512, 0); in usbat_flash_get_sector_count()
1117 static int usbat_flash_read_data(struct us_data *us, in usbat_flash_read_data() argument
1139 result = usbat_flash_check_media(us, info); in usbat_flash_read_data()
1178 result = usbat_multiple_write(us, registers, command, 7); in usbat_flash_read_data()
1183 result = usbat_read_blocks(us, buffer, len, 0); in usbat_flash_read_data()
1187 usb_stor_dbg(us, "%d bytes\n", len); in usbat_flash_read_data()
1190 usb_stor_access_xfer_buf(buffer, len, us->srb, in usbat_flash_read_data()
1208 static int usbat_flash_write_data(struct us_data *us, in usbat_flash_write_data() argument
1230 result = usbat_flash_check_media(us, info); in usbat_flash_write_data()
1266 usb_stor_access_xfer_buf(buffer, len, us->srb, in usbat_flash_write_data()
1273 result = usbat_multiple_write(us, registers, command, 7); in usbat_flash_write_data()
1278 result = usbat_write_blocks(us, buffer, len, 0); in usbat_flash_write_data()
1298 static int usbat_hp8200e_handle_read10(struct us_data *us, in usbat_hp8200e_handle_read10() argument
1310 usb_stor_dbg(us, "transfersize %d\n", srb->transfersize); in usbat_hp8200e_handle_read10()
1314 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_handle_read10()
1337 usb_stor_dbg(us, "GPCMD_READ_CD: len %d\n", len); in usbat_hp8200e_handle_read10()
1343 usb_stor_dbg(us, "transfersize 0, forcing %d\n", in usbat_hp8200e_handle_read10()
1354 usb_stor_dbg(us, "Max read is %d bytes\n", len); in usbat_hp8200e_handle_read10()
1383 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_handle_read10()
1409 static int usbat_select_and_test_registers(struct us_data *us) in usbat_select_and_test_registers() argument
1412 unsigned char *status = us->iobuf; in usbat_select_and_test_registers()
1416 if (usbat_write(us, USBAT_ATA, USBAT_ATA_DEVICE, selector) != in usbat_select_and_test_registers()
1420 if (usbat_read(us, USBAT_ATA, USBAT_ATA_STATUS, status) != in usbat_select_and_test_registers()
1424 if (usbat_read(us, USBAT_ATA, USBAT_ATA_DEVICE, status) != in usbat_select_and_test_registers()
1428 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1432 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_HI, status) != in usbat_select_and_test_registers()
1436 if (usbat_write(us, USBAT_ATA, USBAT_ATA_LBA_ME, 0x55) != in usbat_select_and_test_registers()
1440 if (usbat_write(us, USBAT_ATA, USBAT_ATA_LBA_HI, 0xAA) != in usbat_select_and_test_registers()
1444 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1448 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1459 static int init_usbat(struct us_data *us, int devicetype) in init_usbat() argument
1465 unsigned char *status = us->iobuf; in init_usbat()
1467 us->extra = kzalloc(sizeof(struct usbat_info), GFP_NOIO); in init_usbat()
1468 if (!us->extra) in init_usbat()
1471 info = (struct usbat_info *) (us->extra); in init_usbat()
1474 rc = usbat_write_user_io(us, in init_usbat()
1480 usb_stor_dbg(us, "INIT 1\n"); in init_usbat()
1484 rc = usbat_read_user_io(us, status); in init_usbat()
1488 usb_stor_dbg(us, "INIT 2\n"); in init_usbat()
1490 rc = usbat_read_user_io(us, status); in init_usbat()
1494 rc = usbat_read_user_io(us, status); in init_usbat()
1498 usb_stor_dbg(us, "INIT 3\n"); in init_usbat()
1500 rc = usbat_select_and_test_registers(us); in init_usbat()
1504 usb_stor_dbg(us, "INIT 4\n"); in init_usbat()
1506 rc = usbat_read_user_io(us, status); in init_usbat()
1510 usb_stor_dbg(us, "INIT 5\n"); in init_usbat()
1513 rc = usbat_device_enable_cdt(us); in init_usbat()
1517 usb_stor_dbg(us, "INIT 6\n"); in init_usbat()
1519 rc = usbat_read_user_io(us, status); in init_usbat()
1523 usb_stor_dbg(us, "INIT 7\n"); in init_usbat()
1527 rc = usbat_read_user_io(us, status); in init_usbat()
1531 usb_stor_dbg(us, "INIT 8\n"); in init_usbat()
1533 rc = usbat_select_and_test_registers(us); in init_usbat()
1537 usb_stor_dbg(us, "INIT 9\n"); in init_usbat()
1540 if (usbat_set_transport(us, info, devicetype)) in init_usbat()
1543 usb_stor_dbg(us, "INIT 10\n"); in init_usbat()
1545 if (usbat_get_device_type(us) == USBAT_DEV_FLASH) { in init_usbat()
1549 rc = usbat_set_shuttle_features(us, (USBAT_FEAT_ETEN | USBAT_FEAT_ET2 | USBAT_FEAT_ET1), in init_usbat()
1554 usb_stor_dbg(us, "INIT 11\n"); in init_usbat()
1562 static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) in usbat_hp8200e_transport() argument
1565 unsigned char *status = us->iobuf; in usbat_hp8200e_transport()
1598 result = usbat_get_status(us, status); in usbat_hp8200e_transport()
1599 usb_stor_dbg(us, "Status = %02X\n", *status); in usbat_hp8200e_transport()
1607 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_transport()
1617 usb_stor_dbg(us, "Wrote %08X bytes\n", transferred); in usbat_hp8200e_transport()
1625 return usbat_hp8200e_handle_read10(us, registers, data, srb); in usbat_hp8200e_transport()
1630 usb_stor_dbg(us, "Error: len = %08X... what do I do now?\n", in usbat_hp8200e_transport()
1635 result = usbat_multiple_write(us, registers, data, 7); in usbat_hp8200e_transport()
1650 result = usbat_write_block(us, USBAT_ATA, srb->cmnd, 12, in usbat_hp8200e_transport()
1662 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_hp8200e_transport()
1669 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_HI, status) != in usbat_hp8200e_transport()
1679 result = usbat_read_block(us, scsi_sglist(srb), len, in usbat_hp8200e_transport()
1689 static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) in usbat_flash_transport() argument
1692 struct usbat_info *info = (struct usbat_info *) (us->extra); in usbat_flash_transport()
1694 unsigned char *ptr = us->iobuf; in usbat_flash_transport()
1700 usb_stor_dbg(us, "INQUIRY - Returning bogus response\n"); in usbat_flash_transport()
1702 fill_inquiry_response(us, ptr, 36); in usbat_flash_transport()
1707 rc = usbat_flash_check_media(us, info); in usbat_flash_transport()
1711 rc = usbat_flash_get_sector_count(us, info); in usbat_flash_transport()
1717 usb_stor_dbg(us, "READ_CAPACITY: %ld sectors, %ld bytes per sector\n", in usbat_flash_transport()
1733 usb_stor_dbg(us, "Gah! MODE_SELECT_10\n"); in usbat_flash_transport()
1743 usb_stor_dbg(us, "READ_10: read block 0x%04lx count %ld\n", in usbat_flash_transport()
1745 return usbat_flash_read_data(us, info, block, blocks); in usbat_flash_transport()
1758 usb_stor_dbg(us, "READ_12: read block 0x%04lx count %ld\n", in usbat_flash_transport()
1760 return usbat_flash_read_data(us, info, block, blocks); in usbat_flash_transport()
1769 usb_stor_dbg(us, "WRITE_10: write block 0x%04lx count %ld\n", in usbat_flash_transport()
1771 return usbat_flash_write_data(us, info, block, blocks); in usbat_flash_transport()
1784 usb_stor_dbg(us, "WRITE_12: write block 0x%04lx count %ld\n", in usbat_flash_transport()
1786 return usbat_flash_write_data(us, info, block, blocks); in usbat_flash_transport()
1791 usb_stor_dbg(us, "TEST_UNIT_READY\n"); in usbat_flash_transport()
1793 rc = usbat_flash_check_media(us, info); in usbat_flash_transport()
1797 return usbat_check_status(us); in usbat_flash_transport()
1801 usb_stor_dbg(us, "REQUEST_SENSE\n"); in usbat_flash_transport()
1822 usb_stor_dbg(us, "Gah! Unknown command: %d (0x%x)\n", in usbat_flash_transport()
1830 static int init_usbat_cd(struct us_data *us) in init_usbat_cd() argument
1832 return init_usbat(us, USBAT_DEV_HP8200); in init_usbat_cd()
1835 static int init_usbat_flash(struct us_data *us) in init_usbat_flash() argument
1837 return init_usbat(us, USBAT_DEV_FLASH); in init_usbat_flash()
1845 struct us_data *us; in usbat_probe() local
1848 result = usb_stor_probe1(&us, intf, id, in usbat_probe()
1857 us->transport_name = "Shuttle USBAT"; in usbat_probe()
1858 us->transport = usbat_flash_transport; in usbat_probe()
1859 us->transport_reset = usb_stor_CB_reset; in usbat_probe()
1860 us->max_lun = 0; in usbat_probe()
1862 result = usb_stor_probe2(us); in usbat_probe()