Lines Matching refs:ssusb

41 static void ssusb_wakeup_ip_sleep_set(struct ssusb_mtk *ssusb, bool enable)
45 switch (ssusb->uwk_vers) {
47 reg = ssusb->uwk_reg_base + PERI_WK_CTRL1;
52 reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
59 regmap_update_bits(ssusb->uwk, reg, msk, val);
62 int ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb,
69 ssusb->uwk_en = of_property_read_bool(dn, "wakeup-source");
70 if (!ssusb->uwk_en)
78 ssusb->uwk_reg_base = args.args[0];
79 ssusb->uwk_vers = args.args[1];
80 ssusb->uwk = syscon_node_to_regmap(args.np);
82 dev_info(ssusb->dev, "uwk - reg:0x%x, version:%d\n",
83 ssusb->uwk_reg_base, ssusb->uwk_vers);
85 return PTR_ERR_OR_ZERO(ssusb->uwk);
88 void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable)
90 if (ssusb->uwk_en)
91 ssusb_wakeup_ip_sleep_set(ssusb, enable);
94 static void host_ports_num_get(struct ssusb_mtk *ssusb)
98 xhci_cap = mtu3_readl(ssusb->ippc_base, U3D_SSUSB_IP_XHCI_CAP);
99 ssusb->u2_ports = SSUSB_IP_XHCI_U2_PORT_NUM(xhci_cap);
100 ssusb->u3_ports = SSUSB_IP_XHCI_U3_PORT_NUM(xhci_cap);
102 dev_dbg(ssusb->dev, "host - u2_ports:%d, u3_ports:%d\n",
103 ssusb->u2_ports, ssusb->u3_ports);
107 int ssusb_host_enable(struct ssusb_mtk *ssusb)
109 void __iomem *ibase = ssusb->ippc_base;
110 int num_u3p = ssusb->u3_ports;
111 int num_u2p = ssusb->u2_ports;
123 if ((0x1 << i) & ssusb->u3p_dis_msk) {
146 return ssusb_check_clocks(ssusb, check_clk);
149 int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend)
151 void __iomem *ibase = ssusb->ippc_base;
152 int num_u3p = ssusb->u3_ports;
153 int num_u2p = ssusb->u2_ports;
160 if ((0x1 << i) & ssusb->u3p_dis_msk)
187 dev_err(ssusb->dev, "ip sleep failed!!!\n");
192 static void ssusb_host_setup(struct ssusb_mtk *ssusb)
194 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch;
196 host_ports_num_get(ssusb);
202 ssusb_host_enable(ssusb);
205 ssusb_set_force_mode(ssusb, MTU3_DR_FORCE_HOST);
208 ssusb_set_vbus(&ssusb->otg_switch, 1);
211 static void ssusb_host_cleanup(struct ssusb_mtk *ssusb)
213 if (ssusb->is_host)
214 ssusb_set_vbus(&ssusb->otg_switch, 0);
216 ssusb_host_disable(ssusb, false);
225 int ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn)
227 struct device *parent_dev = ssusb->dev;
230 ssusb_host_setup(ssusb);
244 void ssusb_host_exit(struct ssusb_mtk *ssusb)
246 of_platform_depopulate(ssusb->dev);
247 ssusb_host_cleanup(ssusb);