Lines Matching refs:us

108 	struct us_data *us;  member
166 static int init_realtek_cr(struct us_data *us);
209 static int rts51x_bulk_transport(struct us_data *us, u8 lun, in rts51x_bulk_transport() argument
213 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *)us->iobuf; in rts51x_bulk_transport()
214 struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *)us->iobuf; in rts51x_bulk_transport()
224 bcb->Tag = ++us->tag; in rts51x_bulk_transport()
233 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, in rts51x_bulk_transport()
243 us->recv_bulk_pipe : us->send_bulk_pipe; in rts51x_bulk_transport()
244 result = usb_stor_bulk_transfer_buf(us, pipe, in rts51x_bulk_transport()
251 result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, in rts51x_bulk_transport()
258 usb_stor_dbg(us, "Signature mismatch: got %08X, expecting %08X\n", in rts51x_bulk_transport()
264 if (bcs->Tag != us->tag) in rts51x_bulk_transport()
296 static int rts51x_bulk_transport_special(struct us_data *us, u8 lun, in rts51x_bulk_transport_special() argument
300 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; in rts51x_bulk_transport_special()
301 struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) us->iobuf; in rts51x_bulk_transport_special()
310 bcb->Tag = ++us->tag; in rts51x_bulk_transport_special()
319 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, in rts51x_bulk_transport_special()
329 us->recv_bulk_pipe : us->send_bulk_pipe; in rts51x_bulk_transport_special()
330 result = usb_stor_bulk_transfer_buf(us, pipe, in rts51x_bulk_transport_special()
337 result = usb_bulk_msg(us->pusb_dev, us->recv_bulk_pipe, bcs, in rts51x_bulk_transport_special()
343 static int rts51x_get_max_lun(struct us_data *us) in rts51x_get_max_lun() argument
348 us->iobuf[0] = 0; in rts51x_get_max_lun()
349 result = usb_stor_control_msg(us, us->recv_ctrl_pipe, in rts51x_get_max_lun()
353 0, us->ifnum, us->iobuf, 1, 10 * HZ); in rts51x_get_max_lun()
355 usb_stor_dbg(us, "GetMaxLUN command result is %d, data is %d\n", in rts51x_get_max_lun()
356 result, us->iobuf[0]); in rts51x_get_max_lun()
360 return us->iobuf[0]; in rts51x_get_max_lun()
365 static int rts51x_read_mem(struct us_data *us, u16 addr, u8 *data, u16 len) in rts51x_read_mem() argument
375 usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); in rts51x_read_mem()
384 retval = rts51x_bulk_transport(us, 0, cmnd, 12, in rts51x_read_mem()
396 static int rts51x_write_mem(struct us_data *us, u16 addr, u8 *data, u16 len) in rts51x_write_mem() argument
406 usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); in rts51x_write_mem()
415 retval = rts51x_bulk_transport(us, 0, cmnd, 12, in rts51x_write_mem()
424 static int rts51x_read_status(struct us_data *us, in rts51x_read_status() argument
435 usb_stor_dbg(us, "lun = %d\n", lun); in rts51x_read_status()
440 retval = rts51x_bulk_transport(us, lun, cmnd, 12, in rts51x_read_status()
452 static int rts51x_check_status(struct us_data *us, u8 lun) in rts51x_check_status() argument
454 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in rts51x_check_status()
458 retval = rts51x_read_status(us, lun, buf, 16, &(chip->status_len)); in rts51x_check_status()
462 usb_stor_dbg(us, "chip->status_len = %d\n", chip->status_len); in rts51x_check_status()
483 static int enable_oscillator(struct us_data *us) in enable_oscillator() argument
488 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in enable_oscillator()
493 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in enable_oscillator()
497 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in enable_oscillator()
507 static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len) in __do_config_autodelink() argument
513 usb_stor_dbg(us, "addr = 0xfe47, len = %d\n", len); in __do_config_autodelink()
526 retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, buf, len, DMA_TO_DEVICE, NULL); in __do_config_autodelink()
535 static int do_config_autodelink(struct us_data *us, int enable, int force) in do_config_autodelink() argument
540 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in do_config_autodelink()
553 usb_stor_dbg(us, "set 0xfe47 to 0x%x\n", value); in do_config_autodelink()
556 retval = __do_config_autodelink(us, &value, 1); in do_config_autodelink()
563 static int config_autodelink_after_power_on(struct us_data *us) in config_autodelink_after_power_on() argument
565 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in config_autodelink_after_power_on()
572 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_after_power_on()
587 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_after_power_on()
591 retval = enable_oscillator(us); in config_autodelink_after_power_on()
593 (void)do_config_autodelink(us, 1, 0); in config_autodelink_after_power_on()
609 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_after_power_on()
615 retval = rts51x_write_mem(us, 0xFE79, &value, 1); in config_autodelink_after_power_on()
620 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_after_power_on()
630 static int config_autodelink_before_power_down(struct us_data *us) in config_autodelink_before_power_down() argument
632 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in config_autodelink_before_power_down()
640 retval = rts51x_read_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
645 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
651 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_before_power_down()
656 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_before_power_down()
663 retval = rts51x_write_mem(us, 0xFE77, &value, 1); in config_autodelink_before_power_down()
670 retval = rts51x_read_mem(us, 0xFE47, &value, 1); in config_autodelink_before_power_down()
684 retval = __do_config_autodelink(us, &value, 1); in config_autodelink_before_power_down()
691 retval = rts51x_write_mem(us, 0x48, &value, 1); in config_autodelink_before_power_down()
700 static void fw5895_init(struct us_data *us) in fw5895_init() argument
702 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in fw5895_init()
707 usb_stor_dbg(us, "Not the specified device, return immediately!\n"); in fw5895_init()
709 retval = rts51x_read_mem(us, 0xFD6F, &val, 1); in fw5895_init()
712 retval = rts51x_write_mem(us, 0xFD70, &val, 1); in fw5895_init()
714 usb_stor_dbg(us, "Write memory fail\n"); in fw5895_init()
716 usb_stor_dbg(us, "Read memory fail, OR (val & 0x1F) != 0\n"); in fw5895_init()
723 static void fw5895_set_mmc_wp(struct us_data *us) in fw5895_set_mmc_wp() argument
725 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in fw5895_set_mmc_wp()
730 usb_stor_dbg(us, "Not the specified device, return immediately!\n"); in fw5895_set_mmc_wp()
732 retval = rts51x_read_mem(us, 0xFD6F, buf, 1); in fw5895_set_mmc_wp()
735 retval = rts51x_read_mem(us, 0xD04E, buf, 1); in fw5895_set_mmc_wp()
738 retval = rts51x_write_mem(us, 0xFD70, buf, 1); in fw5895_set_mmc_wp()
740 usb_stor_dbg(us, "Write memory fail\n"); in fw5895_set_mmc_wp()
742 usb_stor_dbg(us, "Read memory fail\n"); in fw5895_set_mmc_wp()
745 usb_stor_dbg(us, "Read memory fail, OR (buf[0]&0x24)!=0x24\n"); in fw5895_set_mmc_wp()
752 struct us_data *us = chip->us; in rts51x_modi_suspend_timer() local
754 usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); in rts51x_modi_suspend_timer()
763 struct us_data *us = chip->us; in rts51x_suspend_timer_fn() local
772 usb_stor_dbg(us, "RTS51X_STAT_SS, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_suspend_timer_fn()
773 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_suspend_timer_fn()
774 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_suspend_timer_fn()
776 if (atomic_read(&us->pusb_intf->pm_usage_cnt) > 0) { in rts51x_suspend_timer_fn()
777 usb_stor_dbg(us, "Ready to enter SS state\n"); in rts51x_suspend_timer_fn()
780 pm_suspend_ignore_children(&us->pusb_intf->dev, true); in rts51x_suspend_timer_fn()
781 usb_autopm_put_interface_async(us->pusb_intf); in rts51x_suspend_timer_fn()
782 usb_stor_dbg(us, "RTS51X_STAT_SS 01, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_suspend_timer_fn()
783 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_suspend_timer_fn()
784 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_suspend_timer_fn()
788 usb_stor_dbg(us, "Unknown state !!!\n"); in rts51x_suspend_timer_fn()
803 static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) in rts51x_invoke_transport() argument
805 struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); in rts51x_invoke_transport()
816 usb_stor_dbg(us, "working scsi, intf->pm_usage_cnt:%d, power.usage:%d\n", in rts51x_invoke_transport()
817 atomic_read(&us->pusb_intf->pm_usage_cnt), in rts51x_invoke_transport()
818 atomic_read(&us->pusb_intf->dev.power.usage_count)); in rts51x_invoke_transport()
820 if (atomic_read(&us->pusb_intf->pm_usage_cnt) <= 0) { in rts51x_invoke_transport()
821 ret = usb_autopm_get_interface(us->pusb_intf); in rts51x_invoke_transport()
822 usb_stor_dbg(us, "working scsi, ret=%d\n", ret); in rts51x_invoke_transport()
826 chip->proto_handler_backup(srb, us); in rts51x_invoke_transport()
829 usb_stor_dbg(us, "NOT working scsi\n"); in rts51x_invoke_transport()
840 usb_stor_dbg(us, "TEST_UNIT_READY\n"); in rts51x_invoke_transport()
853 usb_stor_dbg(us, "ALLOW_MEDIUM_REMOVAL\n"); in rts51x_invoke_transport()
857 usb_stor_dbg(us, "NOT working scsi, not SS\n"); in rts51x_invoke_transport()
858 chip->proto_handler_backup(srb, us); in rts51x_invoke_transport()
865 fw5895_set_mmc_wp(us); in rts51x_invoke_transport()
877 usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); in rts51x_invoke_transport()
882 static int realtek_cr_autosuspend_setup(struct us_data *us) in realtek_cr_autosuspend_setup() argument
889 chip = (struct rts51x_chip *)us->extra; in realtek_cr_autosuspend_setup()
895 retval = rts51x_read_status(us, 0, buf, 16, &(chip->status_len)); in realtek_cr_autosuspend_setup()
897 usb_stor_dbg(us, "Read status fail\n"); in realtek_cr_autosuspend_setup()
918 chip = (struct rts51x_chip *)(us->extra); in realtek_cr_autosuspend_setup()
919 chip->proto_handler_backup = us->proto_handler; in realtek_cr_autosuspend_setup()
921 pm_runtime_set_autosuspend_delay(&us->pusb_dev->dev, 0); in realtek_cr_autosuspend_setup()
923 us->proto_handler = rts51x_invoke_transport; in realtek_cr_autosuspend_setup()
928 fw5895_init(us); in realtek_cr_autosuspend_setup()
931 usb_enable_autosuspend(us->pusb_dev); in realtek_cr_autosuspend_setup()
956 struct us_data *us = usb_get_intfdata(iface); in realtek_cr_suspend() local
959 mutex_lock(&us->dev_mutex); in realtek_cr_suspend()
961 config_autodelink_before_power_down(us); in realtek_cr_suspend()
963 mutex_unlock(&us->dev_mutex); in realtek_cr_suspend()
970 struct us_data *us = usb_get_intfdata(iface); in realtek_cr_resume() local
972 fw5895_init(us); in realtek_cr_resume()
973 config_autodelink_after_power_on(us); in realtek_cr_resume()
982 static int init_realtek_cr(struct us_data *us) in init_realtek_cr() argument
991 us->extra = chip; in init_realtek_cr()
992 us->extra_destructor = realtek_cr_destructor; in init_realtek_cr()
993 us->max_lun = chip->max_lun = rts51x_get_max_lun(us); in init_realtek_cr()
994 chip->us = us; in init_realtek_cr()
996 usb_stor_dbg(us, "chip->max_lun = %d\n", chip->max_lun); in init_realtek_cr()
1004 retval = rts51x_check_status(us, (u8) i); in init_realtek_cr()
1018 realtek_cr_autosuspend_setup(us); in init_realtek_cr()
1021 usb_stor_dbg(us, "chip->flag = 0x%x\n", chip->flag); in init_realtek_cr()
1023 (void)config_autodelink_after_power_on(us); in init_realtek_cr()
1028 if (us->extra) { in init_realtek_cr()
1030 kfree(us->extra); in init_realtek_cr()
1031 us->extra = NULL; in init_realtek_cr()
1040 struct us_data *us; in realtek_cr_probe() local
1045 result = usb_stor_probe1(&us, intf, id, in realtek_cr_probe()
1051 result = usb_stor_probe2(us); in realtek_cr_probe()