Lines Matching refs:vhub
189 if (ep->vhub->wakeup_en) in ast_vhub_hub_dev_status()
206 if (ep->vhub->ep1_stalled) in ast_vhub_hub_ep_status()
224 ep->vhub->wakeup_en = is_set; in ast_vhub_hub_dev_feature()
252 ep->vhub->ep1_stalled = is_set; in ast_vhub_hub_ep_feature()
253 reg = readl(ep->vhub->regs + AST_VHUB_EP1_CTRL); in ast_vhub_hub_ep_feature()
260 writel(reg, ep->vhub->regs + AST_VHUB_EP1_CTRL); in ast_vhub_hub_ep_feature()
309 if (desc_type == USB_DT_DEVICE && ep->vhub->force_usb1) in ast_vhub_rep_desc()
338 struct ast_vhub *vhub = ep->vhub; in ast_vhub_std_hub_request() local
346 if (vhub->speed == USB_SPEED_UNKNOWN) { in ast_vhub_std_hub_request()
347 u32 ustat = readl(vhub->regs + AST_VHUB_USBSTS); in ast_vhub_std_hub_request()
349 vhub->speed = USB_SPEED_HIGH; in ast_vhub_std_hub_request()
351 vhub->speed = USB_SPEED_FULL; in ast_vhub_std_hub_request()
352 UDCDBG(vhub, "USB status=%08x speed=%s\n", ustat, in ast_vhub_std_hub_request()
353 vhub->speed == USB_SPEED_HIGH ? "high" : "full"); in ast_vhub_std_hub_request()
360 writel(wValue, vhub->regs + AST_VHUB_CONF); in ast_vhub_std_hub_request()
413 static void ast_vhub_update_hub_ep1(struct ast_vhub *vhub, in ast_vhub_update_hub_ep1() argument
417 u32 reg = readl(vhub->regs + AST_VHUB_EP1_STS_CHG); in ast_vhub_update_hub_ep1()
419 if (vhub->ports[port].change) in ast_vhub_update_hub_ep1()
423 writel(reg, vhub->regs + AST_VHUB_EP1_STS_CHG); in ast_vhub_update_hub_ep1()
426 static void ast_vhub_change_port_stat(struct ast_vhub *vhub, in ast_vhub_change_port_stat() argument
432 struct ast_vhub_port *p = &vhub->ports[port]; in ast_vhub_change_port_stat()
454 ast_vhub_update_hub_ep1(vhub, port); in ast_vhub_change_port_stat()
458 static void ast_vhub_send_host_wakeup(struct ast_vhub *vhub) in ast_vhub_send_host_wakeup() argument
460 u32 reg = readl(vhub->regs + AST_VHUB_CTRL); in ast_vhub_send_host_wakeup()
461 UDCDBG(vhub, "Waking up host !\n"); in ast_vhub_send_host_wakeup()
463 writel(reg, vhub->regs + AST_VHUB_CTRL); in ast_vhub_send_host_wakeup()
466 void ast_vhub_device_connect(struct ast_vhub *vhub, in ast_vhub_device_connect() argument
470 ast_vhub_change_port_stat(vhub, port, 0, in ast_vhub_device_connect()
473 ast_vhub_change_port_stat(vhub, port, in ast_vhub_device_connect()
482 if (vhub->wakeup_en) in ast_vhub_device_connect()
483 ast_vhub_send_host_wakeup(vhub); in ast_vhub_device_connect()
488 struct ast_vhub *vhub = container_of(work, in ast_vhub_wake_work() local
499 spin_lock_irqsave(&vhub->lock, flags); in ast_vhub_wake_work()
501 struct ast_vhub_port *p = &vhub->ports[i]; in ast_vhub_wake_work()
505 ast_vhub_change_port_stat(vhub, i, in ast_vhub_wake_work()
510 ast_vhub_send_host_wakeup(vhub); in ast_vhub_wake_work()
511 spin_unlock_irqrestore(&vhub->lock, flags); in ast_vhub_wake_work()
514 void ast_vhub_hub_wake_all(struct ast_vhub *vhub) in ast_vhub_hub_wake_all() argument
521 schedule_work(&vhub->wake_work); in ast_vhub_hub_wake_all()
524 static void ast_vhub_port_reset(struct ast_vhub *vhub, u8 port) in ast_vhub_port_reset() argument
526 struct ast_vhub_port *p = &vhub->ports[port]; in ast_vhub_port_reset()
530 ast_vhub_change_port_stat(vhub, port, in ast_vhub_port_reset()
547 if (speed == USB_SPEED_UNKNOWN || speed > vhub->speed) in ast_vhub_port_reset()
548 speed = vhub->speed; in ast_vhub_port_reset()
565 UDCDBG(vhub, "Unsupported speed %d when" in ast_vhub_port_reset()
574 ast_vhub_change_port_stat(vhub, port, clr, set, true); in ast_vhub_port_reset()
580 struct ast_vhub *vhub = ep->vhub; in ast_vhub_set_port_feature() local
586 p = &vhub->ports[port]; in ast_vhub_set_port_feature()
592 ast_vhub_change_port_stat(vhub, port, in ast_vhub_set_port_feature()
599 ast_vhub_port_reset(vhub, port); in ast_vhub_set_port_feature()
609 ast_vhub_update_hub_ep1(vhub, port); in ast_vhub_set_port_feature()
623 struct ast_vhub *vhub = ep->vhub; in ast_vhub_clr_port_feature() local
629 p = &vhub->ports[port]; in ast_vhub_clr_port_feature()
633 ast_vhub_change_port_stat(vhub, port, in ast_vhub_clr_port_feature()
642 ast_vhub_change_port_stat(vhub, port, in ast_vhub_clr_port_feature()
660 ast_vhub_update_hub_ep1(vhub, port); in ast_vhub_clr_port_feature()
669 struct ast_vhub *vhub = ep->vhub; in ast_vhub_get_port_stat() local
676 stat = vhub->ports[port].status; in ast_vhub_get_port_stat()
677 chg = vhub->ports[port].change; in ast_vhub_get_port_stat()
732 void ast_vhub_hub_suspend(struct ast_vhub *vhub) in ast_vhub_hub_suspend() argument
736 UDCDBG(vhub, "USB bus suspend\n"); in ast_vhub_hub_suspend()
738 if (vhub->suspended) in ast_vhub_hub_suspend()
741 vhub->suspended = true; in ast_vhub_hub_suspend()
748 struct ast_vhub_port *p = &vhub->ports[i]; in ast_vhub_hub_suspend()
755 void ast_vhub_hub_resume(struct ast_vhub *vhub) in ast_vhub_hub_resume() argument
759 UDCDBG(vhub, "USB bus resume\n"); in ast_vhub_hub_resume()
761 if (!vhub->suspended) in ast_vhub_hub_resume()
764 vhub->suspended = false; in ast_vhub_hub_resume()
771 struct ast_vhub_port *p = &vhub->ports[i]; in ast_vhub_hub_resume()
778 void ast_vhub_hub_reset(struct ast_vhub *vhub) in ast_vhub_hub_reset() argument
782 UDCDBG(vhub, "USB bus reset\n"); in ast_vhub_hub_reset()
788 if (vhub->speed == USB_SPEED_UNKNOWN) in ast_vhub_hub_reset()
792 vhub->suspended = false; in ast_vhub_hub_reset()
795 vhub->speed = USB_SPEED_UNKNOWN; in ast_vhub_hub_reset()
798 vhub->wakeup_en = false; in ast_vhub_hub_reset()
805 struct ast_vhub_port *p = &vhub->ports[i]; in ast_vhub_hub_reset()
816 writel(0, vhub->regs + AST_VHUB_CONF); in ast_vhub_hub_reset()
817 writel(0, vhub->regs + AST_VHUB_EP0_CTRL); in ast_vhub_hub_reset()
820 vhub->regs + AST_VHUB_EP1_CTRL); in ast_vhub_hub_reset()
821 writel(0, vhub->regs + AST_VHUB_EP1_STS_CHG); in ast_vhub_hub_reset()
824 void ast_vhub_init_hub(struct ast_vhub *vhub) in ast_vhub_init_hub() argument
826 vhub->speed = USB_SPEED_UNKNOWN; in ast_vhub_init_hub()
827 INIT_WORK(&vhub->wake_work, ast_vhub_wake_work); in ast_vhub_init_hub()