Lines Matching refs:ssusb

15 void ssusb_set_force_mode(struct ssusb_mtk *ssusb,  in ssusb_set_force_mode()  argument
20 value = mtu3_readl(ssusb->ippc_base, SSUSB_U2_CTRL(0)); in ssusb_set_force_mode()
35 mtu3_writel(ssusb->ippc_base, SSUSB_U2_CTRL(0), value); in ssusb_set_force_mode()
39 int ssusb_check_clocks(struct ssusb_mtk *ssusb, u32 ex_clks) in ssusb_check_clocks() argument
41 void __iomem *ibase = ssusb->ippc_base; in ssusb_check_clocks()
51 dev_err(ssusb->dev, "clks of sts1 are not stable!\n"); in ssusb_check_clocks()
58 dev_err(ssusb->dev, "mac2 clock is not stable\n"); in ssusb_check_clocks()
65 int ssusb_phy_setup(struct ssusb_mtk *ssusb) in ssusb_phy_setup() argument
67 struct udevice *dev = ssusb->dev; in ssusb_phy_setup()
68 struct phy_bulk *phys = &ssusb->phys; in ssusb_phy_setup()
86 void ssusb_phy_shutdown(struct ssusb_mtk *ssusb) in ssusb_phy_shutdown() argument
88 generic_phy_power_off_bulk(&ssusb->phys); in ssusb_phy_shutdown()
89 generic_phy_exit_bulk(&ssusb->phys); in ssusb_phy_shutdown()
92 static int ssusb_rscs_init(struct ssusb_mtk *ssusb) in ssusb_rscs_init() argument
96 ret = regulator_set_enable(ssusb->vusb33_supply, true); in ssusb_rscs_init()
98 dev_err(ssusb->dev, "failed to enable vusb33\n"); in ssusb_rscs_init()
102 ret = clk_enable_bulk(&ssusb->clks); in ssusb_rscs_init()
106 ret = ssusb_phy_setup(ssusb); in ssusb_rscs_init()
108 dev_err(ssusb->dev, "failed to setup phy\n"); in ssusb_rscs_init()
115 clk_disable_bulk(&ssusb->clks); in ssusb_rscs_init()
117 regulator_set_enable(ssusb->vusb33_supply, false); in ssusb_rscs_init()
122 static void ssusb_rscs_exit(struct ssusb_mtk *ssusb) in ssusb_rscs_exit() argument
124 clk_disable_bulk(&ssusb->clks); in ssusb_rscs_exit()
125 regulator_set_enable(ssusb->vusb33_supply, false); in ssusb_rscs_exit()
126 ssusb_phy_shutdown(ssusb); in ssusb_rscs_exit()
129 static void ssusb_ip_sw_reset(struct ssusb_mtk *ssusb) in ssusb_ip_sw_reset() argument
132 mtu3_setbits(ssusb->ippc_base, U3D_SSUSB_IP_PW_CTRL0, SSUSB_IP_SW_RST); in ssusb_ip_sw_reset()
134 mtu3_clrbits(ssusb->ippc_base, U3D_SSUSB_IP_PW_CTRL0, SSUSB_IP_SW_RST); in ssusb_ip_sw_reset()
137 static int get_ssusb_rscs(struct udevice *dev, struct ssusb_mtk *ssusb) in get_ssusb_rscs() argument
143 &ssusb->vusb33_supply); in get_ssusb_rscs()
148 &ssusb->vbus_supply); in get_ssusb_rscs()
152 ret = clk_get_bulk(dev, &ssusb->clks); in get_ssusb_rscs()
158 ssusb->ippc_base = devfdt_remap_addr_name(dev, "ippc"); in get_ssusb_rscs()
159 if (!ssusb->ippc_base) { in get_ssusb_rscs()
170 ssusb->mac_base = devfdt_remap_addr_name(child, "mac"); in get_ssusb_rscs()
171 if (!ssusb->mac_base) { in get_ssusb_rscs()
176 ssusb->dr_mode = usb_get_dr_mode(dev_ofnode(child)); in get_ssusb_rscs()
178 if (ssusb->dr_mode == USB_DR_MODE_UNKNOWN || in get_ssusb_rscs()
179 ssusb->dr_mode == USB_DR_MODE_OTG) in get_ssusb_rscs()
180 ssusb->dr_mode = USB_DR_MODE_PERIPHERAL; in get_ssusb_rscs()
183 ssusb->dr_mode = USB_DR_MODE_PERIPHERAL; in get_ssusb_rscs()
185 ssusb->dr_mode = USB_DR_MODE_HOST; in get_ssusb_rscs()
188 ssusb->dr_mode, ssusb->ippc_base, ssusb->mac_base); in get_ssusb_rscs()
195 struct ssusb_mtk *ssusb = dev_get_priv(dev); in mtu3_probe() local
198 ssusb->dev = dev; in mtu3_probe()
200 ret = get_ssusb_rscs(dev, ssusb); in mtu3_probe()
204 ret = ssusb_rscs_init(ssusb); in mtu3_probe()
208 ssusb_ip_sw_reset(ssusb); in mtu3_probe()
215 struct ssusb_mtk *ssusb = dev_to_ssusb(dev); in mtu3_remove() local
217 ssusb_rscs_exit(ssusb); in mtu3_remove()
238 struct ssusb_mtk *ssusb = dev_to_ssusb(dev->parent); in mtu3_gadget_probe() local
242 ssusb->u3d = mtu; in mtu3_gadget_probe()
243 return ssusb_gadget_init(ssusb); in mtu3_gadget_probe()
250 ssusb_gadget_exit(mtu->ssusb); in mtu3_gadget_remove()
268 struct ssusb_mtk *ssusb = dev_to_ssusb(dev->parent); in mtu3_host_probe() local
274 ssusb->u3h = u3h; in mtu3_host_probe()
275 rc = ssusb_host_init(ssusb); in mtu3_host_probe()
291 ssusb_host_exit(u3h->ssusb); in mtu3_host_remove()