Lines Matching refs:us
63 static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us);
64 static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us);
86 static int usbat_get_device_type(struct us_data *us) in usbat_get_device_type() argument
88 return ((struct usbat_info*)us->extra)->devicetype; in usbat_get_device_type()
94 static int usbat_read(struct us_data *us, in usbat_read() argument
99 return usb_stor_ctrl_transfer(us, in usbat_read()
100 us->recv_ctrl_pipe, in usbat_read()
112 static int usbat_write(struct us_data *us, in usbat_write() argument
117 return usb_stor_ctrl_transfer(us, in usbat_write()
118 us->send_ctrl_pipe, in usbat_write()
130 static int usbat_bulk_read(struct us_data *us, in usbat_bulk_read() argument
139 return usb_stor_bulk_transfer_sg(us, us->recv_bulk_pipe, buf, len, use_sg, NULL); in usbat_bulk_read()
145 static int usbat_bulk_write(struct us_data *us, in usbat_bulk_write() argument
154 return usb_stor_bulk_transfer_sg(us, us->send_bulk_pipe, buf, len, use_sg, NULL); in usbat_bulk_write()
162 static int usbat_execute_command(struct us_data *us, in usbat_execute_command() argument
166 return usb_stor_ctrl_transfer(us, us->send_ctrl_pipe, in usbat_execute_command()
174 static int usbat_get_status(struct us_data *us, unsigned char *status) in usbat_get_status() argument
177 rc = usbat_read(us, USBAT_ATA, USBAT_ATA_STATUS, status); in usbat_get_status()
186 static int usbat_check_status(struct us_data *us) in usbat_check_status() argument
188 unsigned char *reply = us->iobuf; in usbat_check_status()
191 rc = usbat_get_status(us, reply); in usbat_check_status()
210 static int usbat_set_shuttle_features(struct us_data *us, in usbat_set_shuttle_features() argument
218 unsigned char *command = us->iobuf; in usbat_set_shuttle_features()
259 return usbat_execute_command(us, command, 8); in usbat_set_shuttle_features()
266 static int usbat_wait_not_busy(struct us_data *us, int minutes) in usbat_wait_not_busy() argument
270 unsigned char *status = us->iobuf; in usbat_wait_not_busy()
280 result = usbat_get_status(us, status); in usbat_wait_not_busy()
285 result = usbat_read(us, USBAT_ATA, 0x10, status); in usbat_wait_not_busy()
314 static int usbat_read_block(struct us_data *us, in usbat_read_block() argument
320 unsigned char *command = us->iobuf; in usbat_read_block()
334 result = usbat_execute_command(us, command, 8); in usbat_read_block()
338 result = usbat_bulk_read(us, buf, len, use_sg); in usbat_read_block()
346 static int usbat_write_block(struct us_data *us, in usbat_write_block() argument
354 unsigned char *command = us->iobuf; in usbat_write_block()
368 result = usbat_execute_command(us, command, 8); in usbat_write_block()
373 result = usbat_bulk_write(us, buf, len, use_sg); in usbat_write_block()
377 return usbat_wait_not_busy(us, minutes); in usbat_write_block()
383 static int usbat_hp8200e_rw_block_test(struct us_data *us, in usbat_hp8200e_rw_block_test() argument
400 us->recv_bulk_pipe : us->send_bulk_pipe; in usbat_hp8200e_rw_block_test()
402 unsigned char *command = us->iobuf; in usbat_hp8200e_rw_block_test()
405 unsigned char *data = us->iobuf; in usbat_hp8200e_rw_block_test()
406 unsigned char *status = us->iobuf; in usbat_hp8200e_rw_block_test()
454 result = usbat_execute_command(us, command, cmdlen); in usbat_hp8200e_rw_block_test()
466 result = usbat_bulk_write(us, data, num_registers*2, 0); in usbat_hp8200e_rw_block_test()
472 result = usb_stor_bulk_transfer_sg(us, in usbat_hp8200e_rw_block_test()
503 if (usb_stor_clear_halt(us, in usbat_hp8200e_rw_block_test()
504 us->send_bulk_pipe) < 0) in usbat_hp8200e_rw_block_test()
512 result = usbat_read(us, USBAT_ATA, in usbat_hp8200e_rw_block_test()
530 return usbat_wait_not_busy(us, minutes); in usbat_hp8200e_rw_block_test()
547 static int usbat_multiple_write(struct us_data *us, in usbat_multiple_write() argument
553 unsigned char *data = us->iobuf; in usbat_multiple_write()
554 unsigned char *command = us->iobuf; in usbat_multiple_write()
573 result = usbat_execute_command(us, command, 8); in usbat_multiple_write()
584 result = usbat_bulk_write(us, data, num_registers*2, 0); in usbat_multiple_write()
588 if (usbat_get_device_type(us) == USBAT_DEV_HP8200) in usbat_multiple_write()
589 return usbat_wait_not_busy(us, 0); in usbat_multiple_write()
606 static int usbat_read_blocks(struct us_data *us, in usbat_read_blocks() argument
612 unsigned char *command = us->iobuf; in usbat_read_blocks()
624 result = usbat_execute_command(us, command, 8); in usbat_read_blocks()
629 result = usbat_bulk_read(us, buffer, len, use_sg); in usbat_read_blocks()
648 static int usbat_write_blocks(struct us_data *us, in usbat_write_blocks() argument
654 unsigned char *command = us->iobuf; in usbat_write_blocks()
666 result = usbat_execute_command(us, command, 8); in usbat_write_blocks()
671 result = usbat_bulk_write(us, buffer, len, use_sg); in usbat_write_blocks()
681 static int usbat_read_user_io(struct us_data *us, unsigned char *data_flags) in usbat_read_user_io() argument
685 result = usb_stor_ctrl_transfer(us, in usbat_read_user_io()
686 us->recv_ctrl_pipe, in usbat_read_user_io()
702 static int usbat_write_user_io(struct us_data *us, in usbat_write_user_io() argument
706 return usb_stor_ctrl_transfer(us, in usbat_write_user_io()
707 us->send_ctrl_pipe, in usbat_write_user_io()
720 static int usbat_device_reset(struct us_data *us) in usbat_device_reset() argument
728 rc = usbat_write_user_io(us, in usbat_device_reset()
738 rc = usbat_write_user_io(us, in usbat_device_reset()
750 static int usbat_device_enable_cdt(struct us_data *us) in usbat_device_enable_cdt() argument
755 rc = usbat_write_user_io(us, in usbat_device_enable_cdt()
793 static int usbat_flash_check_media(struct us_data *us, in usbat_flash_check_media() argument
797 unsigned char *uio = us->iobuf; in usbat_flash_check_media()
799 rc = usbat_read_user_io(us, uio); in usbat_flash_check_media()
817 rc = usbat_device_reset(us); in usbat_flash_check_media()
820 rc = usbat_device_enable_cdt(us); in usbat_flash_check_media()
826 rc = usbat_read_user_io(us, uio); in usbat_flash_check_media()
844 static int usbat_identify_device(struct us_data *us, in usbat_identify_device() argument
850 if (!us || !info) in usbat_identify_device()
853 rc = usbat_device_reset(us); in usbat_identify_device()
864 rc = usbat_write(us, USBAT_ATA, USBAT_ATA_CMD, 0xA1); in usbat_identify_device()
868 rc = usbat_get_status(us, &status); in usbat_identify_device()
889 static int usbat_set_transport(struct us_data *us, in usbat_set_transport() argument
898 usbat_identify_device(us, info); in usbat_set_transport()
905 us->transport = usbat_hp8200e_transport; in usbat_set_transport()
909 us->transport = usbat_flash_transport; in usbat_set_transport()
919 static int usbat_flash_get_sector_count(struct us_data *us, in usbat_flash_get_sector_count() argument
932 if (!us || !info) in usbat_flash_get_sector_count()
940 rc = usbat_multiple_write(us, registers, command, 3); in usbat_flash_get_sector_count()
948 if (usbat_get_status(us, &status) != USB_STOR_XFER_GOOD) { in usbat_flash_get_sector_count()
956 rc = usbat_read_block(us, reply, 512, 0); in usbat_flash_get_sector_count()
975 static int usbat_flash_read_data(struct us_data *us, in usbat_flash_read_data() argument
997 result = usbat_flash_check_media(us, info); in usbat_flash_read_data()
1036 result = usbat_multiple_write(us, registers, command, 7); in usbat_flash_read_data()
1041 result = usbat_read_blocks(us, buffer, len, 0); in usbat_flash_read_data()
1048 usb_stor_access_xfer_buf(buffer, len, us->srb, in usbat_flash_read_data()
1066 static int usbat_flash_write_data(struct us_data *us, in usbat_flash_write_data() argument
1088 result = usbat_flash_check_media(us, info); in usbat_flash_write_data()
1124 usb_stor_access_xfer_buf(buffer, len, us->srb, in usbat_flash_write_data()
1131 result = usbat_multiple_write(us, registers, command, 7); in usbat_flash_write_data()
1136 result = usbat_write_blocks(us, buffer, len, 0); in usbat_flash_write_data()
1156 static int usbat_hp8200e_handle_read10(struct us_data *us, in usbat_hp8200e_handle_read10() argument
1173 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_handle_read10()
1242 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_handle_read10()
1268 static int usbat_select_and_test_registers(struct us_data *us) in usbat_select_and_test_registers() argument
1271 unsigned char *status = us->iobuf; in usbat_select_and_test_registers()
1275 if (usbat_write(us, USBAT_ATA, USBAT_ATA_DEVICE, selector) != in usbat_select_and_test_registers()
1279 if (usbat_read(us, USBAT_ATA, USBAT_ATA_STATUS, status) != in usbat_select_and_test_registers()
1283 if (usbat_read(us, USBAT_ATA, USBAT_ATA_DEVICE, status) != in usbat_select_and_test_registers()
1287 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1291 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_HI, status) != in usbat_select_and_test_registers()
1295 if (usbat_write(us, USBAT_ATA, USBAT_ATA_LBA_ME, 0x55) != in usbat_select_and_test_registers()
1299 if (usbat_write(us, USBAT_ATA, USBAT_ATA_LBA_HI, 0xAA) != in usbat_select_and_test_registers()
1303 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1307 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_select_and_test_registers()
1318 static int init_usbat(struct us_data *us, int devicetype) in init_usbat() argument
1324 unsigned char *status = us->iobuf; in init_usbat()
1326 us->extra = kzalloc(sizeof(struct usbat_info), GFP_NOIO); in init_usbat()
1327 if (!us->extra) { in init_usbat()
1331 info = (struct usbat_info *) (us->extra); in init_usbat()
1334 rc = usbat_write_user_io(us, in init_usbat()
1344 rc = usbat_read_user_io(us, status); in init_usbat()
1350 rc = usbat_read_user_io(us, status); in init_usbat()
1354 rc = usbat_read_user_io(us, status); in init_usbat()
1360 rc = usbat_select_and_test_registers(us); in init_usbat()
1366 rc = usbat_read_user_io(us, status); in init_usbat()
1373 rc = usbat_device_enable_cdt(us); in init_usbat()
1379 rc = usbat_read_user_io(us, status); in init_usbat()
1387 rc = usbat_read_user_io(us, status); in init_usbat()
1393 rc = usbat_select_and_test_registers(us); in init_usbat()
1400 if (usbat_set_transport(us, info, devicetype)) in init_usbat()
1405 if (usbat_get_device_type(us) == USBAT_DEV_FLASH) { in init_usbat()
1409 rc = usbat_set_shuttle_features(us, (USBAT_FEAT_ETEN | USBAT_FEAT_ET2 | USBAT_FEAT_ET1), in init_usbat()
1422 static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) in usbat_hp8200e_transport() argument
1425 unsigned char *status = us->iobuf; in usbat_hp8200e_transport()
1458 result = usbat_get_status(us, status); in usbat_hp8200e_transport()
1467 result = usbat_hp8200e_rw_block_test(us, USBAT_ATA, in usbat_hp8200e_transport()
1485 return usbat_hp8200e_handle_read10(us, registers, data, srb); in usbat_hp8200e_transport()
1495 if ( (result = usbat_multiple_write(us, in usbat_hp8200e_transport()
1510 if ((result = usbat_write_block(us, in usbat_hp8200e_transport()
1523 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_ME, status) != in usbat_hp8200e_transport()
1530 if (usbat_read(us, USBAT_ATA, USBAT_ATA_LBA_HI, status) != in usbat_hp8200e_transport()
1540 result = usbat_read_block(us, scsi_sglist(srb), len, in usbat_hp8200e_transport()
1550 static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) in usbat_flash_transport() argument
1553 struct usbat_info *info = (struct usbat_info *) (us->extra); in usbat_flash_transport()
1555 unsigned char *ptr = us->iobuf; in usbat_flash_transport()
1563 fill_inquiry_response(us, ptr, 36); in usbat_flash_transport()
1568 rc = usbat_flash_check_media(us, info); in usbat_flash_transport()
1572 rc = usbat_flash_get_sector_count(us, info); in usbat_flash_transport()
1605 return usbat_flash_read_data(us, info, block, blocks); in usbat_flash_transport()
1619 return usbat_flash_read_data(us, info, block, blocks); in usbat_flash_transport()
1629 return usbat_flash_write_data(us, info, block, blocks); in usbat_flash_transport()
1643 return usbat_flash_write_data(us, info, block, blocks); in usbat_flash_transport()
1650 rc = usbat_flash_check_media(us, info); in usbat_flash_transport()
1654 return usbat_check_status(us); in usbat_flash_transport()
1687 int init_usbat_cd(struct us_data *us) in init_usbat_cd() argument
1689 return init_usbat(us, USBAT_DEV_HP8200); in init_usbat_cd()
1693 int init_usbat_flash(struct us_data *us) in init_usbat_flash() argument
1695 return init_usbat(us, USBAT_DEV_FLASH); in init_usbat_flash()
1698 int init_usbat_probe(struct us_data *us) in init_usbat_probe() argument
1700 return init_usbat(us, 0); in init_usbat_probe()
1712 int usbat_transport(struct scsi_cmnd *srb, struct us_data *us) in usbat_transport() argument
1714 struct usbat_info *info = (struct usbat_info*) (us->extra); in usbat_transport()
1716 if (usbat_set_transport(us, info, 0)) in usbat_transport()
1719 return us->transport(srb, us); in usbat_transport()