static int __maybe_unused mtu3_resume(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct ssusb_mtk *ssusb = platform_get_drvdata(pdev); int ret; dev_dbg(dev, "%s\n", __func__); if (!ssusb->is_host) return 0; ssusb_wakeup_set(ssusb, false); ret = ssusb_clks_enable(ssusb); if (ret) goto clks_err; ret = ssusb_phy_power_on(ssusb); if (ret) goto phy_err; ssusb_host_enable(ssusb); return 0; phy_err: ssusb_clks_disable(ssusb); clks_err: return ret; }
/* * when support dual-role mode, we reject suspend when * it works as device mode; */ static int __maybe_unused mtu3_suspend(struct device *dev) { struct ssusb_mtk *ssusb = dev_get_drvdata(dev); dev_dbg(dev, "%s\n", __func__); /* REVISIT: disconnect it for only device mode? */ if (!ssusb->is_host) return 0; ssusb_host_disable(ssusb, true); ssusb_phy_power_off(ssusb); ssusb_clks_disable(ssusb); ssusb_wakeup_set(ssusb, true); return 0; }