Lines Matching refs:us

111 	struct us_data *us;  member
169 static int init_realtek_cr(struct us_data *us);
212 static int rts51x_bulk_transport(struct us_data *us, u8 lun, in rts51x_bulk_transport() argument
216 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *)us->iobuf; in rts51x_bulk_transport()
217 struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *)us->iobuf; in rts51x_bulk_transport()
227 bcb->Tag = ++us->tag; in rts51x_bulk_transport()
236 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, in rts51x_bulk_transport()
246 us->recv_bulk_pipe : us->send_bulk_pipe; in rts51x_bulk_transport()
247 result = usb_stor_bulk_transfer_buf(us, pipe, in rts51x_bulk_transport()
254 result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, in rts51x_bulk_transport()
261 usb_stor_dbg(us, "Signature mismatch: got %08X, expecting %08X\n", in rts51x_bulk_transport()
267 if (bcs->Tag != us->tag) in rts51x_bulk_transport()
299 static int rts51x_bulk_transport_special(struct us_data *us, u8 lun, in rts51x_bulk_transport_special() argument
303 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; in rts51x_bulk_transport_special()
304 struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) us->iobuf; in rts51x_bulk_transport_special()
313 bcb->Tag = ++us->tag; in rts51x_bulk_transport_special()
322 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, in rts51x_bulk_transport_special()
332 us->recv_bulk_pipe : us->send_bulk_pipe; in rts51x_bulk_transport_special()
333 result = usb_stor_bulk_transfer_buf(us, pipe, in rts51x_bulk_transport_special()
340 result = usb_bulk_msg(us->pusb_dev, us->recv_bulk_pipe, bcs, in rts51x_bulk_transport_special()
346 static int rts51x_get_max_lun(struct us_data *us) in rts51x_get_max_lun() argument
351 us->iobuf[0] = 0; in rts51x_get_max_lun()
352 result = usb_stor_control_msg(us, us->recv_ctrl_pipe, in rts51x_get_max_lun()
356 0, us->ifnum, us->iobuf, 1, 10 * HZ); in rts51x_get_max_lun()
358 usb_stor_dbg(us, "GetMaxLUN command result is %d, data is %d\n", in rts51x_get_max_lun()
359 result, us->iobuf[0]); in rts51x_get_max_lun()
363 return us->iobuf[0]; in rts51x_get_max_lun()
368 static int rts51x_read_mem(struct us_data *us, u16 addr, u8 *data, u16 len) in rts51x_read_mem() argument
378 usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); in rts51x_read_mem()
387 retval = rts51x_bulk_transport(us, 0, cmnd, 12, in rts51x_read_mem()
399 static int rts51x_write_mem(struct us_data *us, u16 addr, u8 *data, u16 len) in rts51x_write_mem() argument
409 usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); in rts51x_write_mem()
418 retval = rts51x_bulk_transport(us, 0, cmnd, 12, in rts51x_write_mem()
427 static int rts51x_read_status(struct us_data *us, in rts51x_read_status() argument
438 usb_stor_dbg(us, "lun = %d\n", lun); in rts51x_read_status()
443 retval = rts51x_bulk_transport(us, lun, cmnd, 12, in rts51x_read_status()
455 static int rts51x_check_status(struct us_data *us, u8 lun) in rts51x_check_status() argument
457 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in rts51x_check_status()
461 retval = rts51x_read_status(us, lun, buf, 16, &(chip->status_len)); in rts51x_check_status()
465 usb_stor_dbg(us, "chip->status_len = %d\n", chip->status_len); in rts51x_check_status()
486 static int enable_oscillator(struct us_data *us) in enable_oscillator() argument
491 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in enable_oscillator()
496 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in enable_oscillator()
500 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in enable_oscillator()
510 static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len) in __do_config_autodelink() argument
516 usb_stor_dbg(us, "addr = 0xfe47, len = %d\n", len); in __do_config_autodelink()
529 retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, buf, len, DMA_TO_DEVICE, NULL); in __do_config_autodelink()
538 static int do_config_autodelink(struct us_data *us, int enable, int force) in do_config_autodelink() argument
543 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in do_config_autodelink()
556 usb_stor_dbg(us, "set 0xfe47 to 0x%x\n", value); in do_config_autodelink()
559 retval = __do_config_autodelink(us, &value, 1); in do_config_autodelink()
566 static int config_autodelink_after_power_on(struct us_data *us) in config_autodelink_after_power_on() argument
568 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in config_autodelink_after_power_on()
575 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_after_power_on()
590 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_after_power_on()
594 retval = enable_oscillator(us); in config_autodelink_after_power_on()
596 (void)do_config_autodelink(us, 1, 0); in config_autodelink_after_power_on()
612 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_after_power_on()
618 retval = rts51x_write_mem(us, 0xFE79, &value, 1); in config_autodelink_after_power_on()
623 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_after_power_on()
633 static int config_autodelink_before_power_down(struct us_data *us) in config_autodelink_before_power_down() argument
635 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in config_autodelink_before_power_down()
643 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
648 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
654 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_before_power_down()
659 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_before_power_down()
666 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
673 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_before_power_down()
687 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_before_power_down()
694 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_before_power_down()
703 static void fw5895_init(struct us_data *us) in fw5895_init() argument
705 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in fw5895_init()
710 usb_stor_dbg(us, "Not the specified device, return immediately!\n"); in fw5895_init()
712 retval = rts51x_read_mem(us, 0xFD6F, &val, 1); in fw5895_init()
715 retval = rts51x_write_mem(us, 0xFD70, &val, 1); in fw5895_init()
717 usb_stor_dbg(us, "Write memory fail\n"); in fw5895_init()
719 usb_stor_dbg(us, "Read memory fail, OR (val & 0x1F) != 0\n"); in fw5895_init()
726 static void fw5895_set_mmc_wp(struct us_data *us) in fw5895_set_mmc_wp() argument
728 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in fw5895_set_mmc_wp()
733 usb_stor_dbg(us, "Not the specified device, return immediately!\n"); in fw5895_set_mmc_wp()
735 retval = rts51x_read_mem(us, 0xFD6F, buf, 1); in fw5895_set_mmc_wp()
738 retval = rts51x_read_mem(us, 0xD04E, buf, 1); in fw5895_set_mmc_wp()
741 retval = rts51x_write_mem(us, 0xFD70, buf, 1); in fw5895_set_mmc_wp()
743 usb_stor_dbg(us, "Write memory fail\n"); in fw5895_set_mmc_wp()
745 usb_stor_dbg(us, "Read memory fail\n"); in fw5895_set_mmc_wp()
748 usb_stor_dbg(us, "Read memory fail, OR (buf[0]&0x24)!=0x24\n"); in fw5895_set_mmc_wp()
755 struct us_data *us = chip->us; in rts51x_modi_suspend_timer() local
757 usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); in rts51x_modi_suspend_timer()
766 struct us_data *us = chip->us; in rts51x_suspend_timer_fn() local
775 usb_stor_dbg(us, "RTS51X_STAT_SS, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_suspend_timer_fn()
776 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_suspend_timer_fn()
777 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_suspend_timer_fn()
779 if (atomic_read(&us->pusb_intf->pm_usage_cnt) > 0) { in rts51x_suspend_timer_fn()
780 usb_stor_dbg(us, "Ready to enter SS state\n"); in rts51x_suspend_timer_fn()
783 pm_suspend_ignore_children(&us->pusb_intf->dev, true); in rts51x_suspend_timer_fn()
784 usb_autopm_put_interface_async(us->pusb_intf); in rts51x_suspend_timer_fn()
785 usb_stor_dbg(us, "RTS51X_STAT_SS 01, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_suspend_timer_fn()
786 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_suspend_timer_fn()
787 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_suspend_timer_fn()
791 usb_stor_dbg(us, "Unknown state !!!\n"); in rts51x_suspend_timer_fn()
806 static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) in rts51x_invoke_transport() argument
808 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in rts51x_invoke_transport()
819 usb_stor_dbg(us, "working scsi, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_invoke_transport()
820 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_invoke_transport()
821 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_invoke_transport()
823 if (atomic_read(&us->pusb_intf->pm_usage_cnt) <= 0) { in rts51x_invoke_transport()
824 ret = usb_autopm_get_interface(us->pusb_intf); in rts51x_invoke_transport()
825 usb_stor_dbg(us, "working scsi, ret=%d\n", ret); in rts51x_invoke_transport()
829 chip->proto_handler_backup(srb, us); in rts51x_invoke_transport()
832 usb_stor_dbg(us, "NOT working scsi\n"); in rts51x_invoke_transport()
843 usb_stor_dbg(us, "TEST_UNIT_READY\n"); in rts51x_invoke_transport()
856 usb_stor_dbg(us, "ALLOW_MEDIUM_REMOVAL\n"); in rts51x_invoke_transport()
860 usb_stor_dbg(us, "NOT working scsi, not SS\n"); in rts51x_invoke_transport()
861 chip->proto_handler_backup(srb, us); in rts51x_invoke_transport()
868 fw5895_set_mmc_wp(us); in rts51x_invoke_transport()
880 usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); in rts51x_invoke_transport()
885 static int realtek_cr_autosuspend_setup(struct us_data *us) in realtek_cr_autosuspend_setup() argument
892 chip = (struct rts51x_chip *)us->extra; in realtek_cr_autosuspend_setup()
898 retval = rts51x_read_status(us, 0, buf, 16, &(chip->status_len)); in realtek_cr_autosuspend_setup()
900 usb_stor_dbg(us, "Read status fail\n"); in realtek_cr_autosuspend_setup()
921 chip = (struct rts51x_chip *)(us->extra); in realtek_cr_autosuspend_setup()
922 chip->proto_handler_backup = us->proto_handler; in realtek_cr_autosuspend_setup()
924 pm_runtime_set_autosuspend_delay(&us->pusb_dev->dev, 0); in realtek_cr_autosuspend_setup()
926 us->proto_handler = rts51x_invoke_transport; in realtek_cr_autosuspend_setup()
931 fw5895_init(us); in realtek_cr_autosuspend_setup()
934 usb_enable_autosuspend(us->pusb_dev); in realtek_cr_autosuspend_setup()
959 struct us_data *us = usb_get_intfdata(iface); in realtek_cr_suspend() local
962 mutex_lock(&us->dev_mutex); in realtek_cr_suspend()
964 config_autodelink_before_power_down(us); in realtek_cr_suspend()
966 mutex_unlock(&us->dev_mutex); in realtek_cr_suspend()
973 struct us_data *us = usb_get_intfdata(iface); in realtek_cr_resume() local
975 fw5895_init(us); in realtek_cr_resume()
976 config_autodelink_after_power_on(us); in realtek_cr_resume()
985 static int init_realtek_cr(struct us_data *us) in init_realtek_cr() argument
994 us->extra = chip; in init_realtek_cr()
995 us->extra_destructor = realtek_cr_destructor; in init_realtek_cr()
996 us->max_lun = chip->max_lun = rts51x_get_max_lun(us); in init_realtek_cr()
997 chip->us = us; in init_realtek_cr()
999 usb_stor_dbg(us, "chip->max_lun = %d\n", chip->max_lun); in init_realtek_cr()
1007 retval = rts51x_check_status(us, (u8) i); in init_realtek_cr()
1021 realtek_cr_autosuspend_setup(us); in init_realtek_cr()
1024 usb_stor_dbg(us, "chip->flag = 0x%x\n", chip->flag); in init_realtek_cr()
1026 (void)config_autodelink_after_power_on(us); in init_realtek_cr()
1031 if (us->extra) { in init_realtek_cr()
1033 kfree(us->extra); in init_realtek_cr()
1034 us->extra = NULL; in init_realtek_cr()
1045 struct us_data *us; in realtek_cr_probe() local
1050 result = usb_stor_probe1(&us, intf, id, in realtek_cr_probe()
1057 result = usb_stor_probe2(us); in realtek_cr_probe()