Lines Matching refs:dwc3_data

118 static int st_dwc3_drd_init(struct st_dwc3 *dwc3_data)  in st_dwc3_drd_init()  argument
123 err = regmap_read(dwc3_data->regmap, dwc3_data->syscfg_reg_off, &val); in st_dwc3_drd_init()
129 switch (dwc3_data->dr_mode) { in st_dwc3_drd_init()
158 dev_err(dwc3_data->dev, "Unsupported mode of operation %d\n", in st_dwc3_drd_init()
159 dwc3_data->dr_mode); in st_dwc3_drd_init()
163 return regmap_write(dwc3_data->regmap, dwc3_data->syscfg_reg_off, val); in st_dwc3_drd_init()
170 static void st_dwc3_init(struct st_dwc3 *dwc3_data) in st_dwc3_init() argument
172 u32 reg = st_dwc3_readl(dwc3_data->glue_base, CLKRST_CTRL); in st_dwc3_init()
176 st_dwc3_writel(dwc3_data->glue_base, CLKRST_CTRL, reg); in st_dwc3_init()
179 reg = st_dwc3_readl(dwc3_data->glue_base, USB2_VBUS_MNGMNT_SEL1); in st_dwc3_init()
185 st_dwc3_writel(dwc3_data->glue_base, USB2_VBUS_MNGMNT_SEL1, reg); in st_dwc3_init()
187 reg = st_dwc3_readl(dwc3_data->glue_base, CLKRST_CTRL); in st_dwc3_init()
189 st_dwc3_writel(dwc3_data->glue_base, CLKRST_CTRL, reg); in st_dwc3_init()
194 struct st_dwc3 *dwc3_data; in st_dwc3_probe() local
202 dwc3_data = devm_kzalloc(dev, sizeof(*dwc3_data), GFP_KERNEL); in st_dwc3_probe()
203 if (!dwc3_data) in st_dwc3_probe()
207 dwc3_data->glue_base = devm_ioremap_resource(dev, res); in st_dwc3_probe()
208 if (IS_ERR(dwc3_data->glue_base)) in st_dwc3_probe()
209 return PTR_ERR(dwc3_data->glue_base); in st_dwc3_probe()
216 dwc3_data->dev = dev; in st_dwc3_probe()
217 dwc3_data->regmap = regmap; in st_dwc3_probe()
225 dwc3_data->syscfg_reg_off = res->start; in st_dwc3_probe()
228 dwc3_data->glue_base, dwc3_data->syscfg_reg_off); in st_dwc3_probe()
230 dwc3_data->rstc_pwrdn = devm_reset_control_get(dev, "powerdown"); in st_dwc3_probe()
231 if (IS_ERR(dwc3_data->rstc_pwrdn)) { in st_dwc3_probe()
233 ret = PTR_ERR(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
238 reset_control_deassert(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
240 dwc3_data->rstc_rst = devm_reset_control_get(dev, "softreset"); in st_dwc3_probe()
241 if (IS_ERR(dwc3_data->rstc_rst)) { in st_dwc3_probe()
243 ret = PTR_ERR(dwc3_data->rstc_rst); in st_dwc3_probe()
248 reset_control_deassert(dwc3_data->rstc_rst); in st_dwc3_probe()
271 dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev); in st_dwc3_probe()
279 ret = st_dwc3_drd_init(dwc3_data); in st_dwc3_probe()
286 st_dwc3_init(dwc3_data); in st_dwc3_probe()
288 platform_set_drvdata(pdev, dwc3_data); in st_dwc3_probe()
292 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_probe()
294 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
302 struct st_dwc3 *dwc3_data = platform_get_drvdata(pdev); in st_dwc3_remove() local
306 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_remove()
307 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_remove()
315 struct st_dwc3 *dwc3_data = dev_get_drvdata(dev); in st_dwc3_suspend() local
317 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_suspend()
318 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_suspend()
327 struct st_dwc3 *dwc3_data = dev_get_drvdata(dev); in st_dwc3_resume() local
332 reset_control_deassert(dwc3_data->rstc_pwrdn); in st_dwc3_resume()
333 reset_control_deassert(dwc3_data->rstc_rst); in st_dwc3_resume()
335 ret = st_dwc3_drd_init(dwc3_data); in st_dwc3_resume()
342 st_dwc3_init(dwc3_data); in st_dwc3_resume()