Lines Matching defs:am62
3 * dwc3-am62.c - TI specific Glue layer for AM62 DWC3 USB Controller
132 static inline u32 dwc3_ti_readl(struct dwc3_am62 *am62, u32 offset)
134 return readl((am62->usbss) + offset);
137 static inline void dwc3_ti_writel(struct dwc3_am62 *am62, u32 offset, u32 value)
139 writel(value, (am62->usbss) + offset);
142 static int phy_syscon_pll_refclk(struct dwc3_am62 *am62)
144 struct device *dev = am62->dev;
156 am62->syscon = syscon;
163 am62->offset = args.args[0];
165 ret = regmap_update_bits(am62->syscon, am62->offset, PHY_PLL_REFCLK_MASK, am62->rate_code);
178 struct dwc3_am62 *am62;
183 am62 = devm_kzalloc(dev, sizeof(*am62), GFP_KERNEL);
184 if (!am62)
187 am62->dev = dev;
188 platform_set_drvdata(pdev, am62);
190 am62->usbss = devm_platform_ioremap_resource(pdev, 0);
191 if (IS_ERR(am62->usbss)) {
193 return PTR_ERR(am62->usbss);
196 am62->usb2_refclk = devm_clk_get(dev, "ref");
197 if (IS_ERR(am62->usb2_refclk)) {
199 return PTR_ERR(am62->usb2_refclk);
203 rate = clk_get_rate(am62->usb2_refclk);
215 am62->rate_code = i;
218 ret = phy_syscon_pll_refclk(am62);
223 am62->vbus_divider = device_property_read_bool(dev, "ti,vbus-divider");
224 reg = dwc3_ti_readl(am62, USBSS_PHY_CONFIG);
225 if (am62->vbus_divider)
228 dwc3_ti_writel(am62, USBSS_PHY_CONFIG, reg);
236 clk_prepare_enable(am62->usb2_refclk);
246 reg = dwc3_ti_readl(am62, USBSS_MODE_CONTROL);
248 dwc3_ti_writel(am62, USBSS_MODE_CONTROL, reg);
264 clk_disable_unprepare(am62->usb2_refclk);
273 struct dwc3_am62 *am62 = platform_get_drvdata(pdev);
281 reg = dwc3_ti_readl(am62, USBSS_MODE_CONTROL);
283 dwc3_ti_writel(am62, USBSS_MODE_CONTROL, reg);
293 struct dwc3_am62 *am62 = dev_get_drvdata(dev);
297 reg = dwc3_ti_readl(am62, USBSS_CORE_STAT);
301 reg = dwc3_ti_readl(am62, USBSS_WAKEUP_CONFIG);
311 dwc3_ti_writel(am62, USBSS_WAKEUP_CONFIG, reg);
313 dwc3_ti_writel(am62, USBSS_WAKEUP_STAT, USBSS_WAKEUP_STAT_CLR);
316 clk_disable_unprepare(am62->usb2_refclk);
323 struct dwc3_am62 *am62 = dev_get_drvdata(dev);
326 clk_prepare_enable(am62->usb2_refclk);
330 dwc3_ti_writel(am62, USBSS_WAKEUP_CONFIG, USBSS_WAKEUP_CFG_NONE);
333 reg = dwc3_ti_readl(am62, USBSS_WAKEUP_STAT);
334 am62->wakeup_stat = reg;
348 { .compatible = "ti,am62-usb"},
357 .name = "dwc3-am62",
365 MODULE_ALIAS("platform:dwc3-am62");