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()
139 dev_dbg(dwc3_data->dev, "Configuring as Device\n"); in st_dwc3_drd_init()
158 dev_dbg(dwc3_data->dev, "Configuring as Host\n"); in st_dwc3_drd_init()
162 dev_err(dwc3_data->dev, "Unsupported mode of operation %d\n", in st_dwc3_drd_init()
163 dwc3_data->dr_mode); in st_dwc3_drd_init()
167 return regmap_write(dwc3_data->regmap, dwc3_data->syscfg_reg_off, val); in st_dwc3_drd_init()
174 static void st_dwc3_init(struct st_dwc3 *dwc3_data) in st_dwc3_init() argument
176 u32 reg = st_dwc3_readl(dwc3_data->glue_base, CLKRST_CTRL); in st_dwc3_init()
180 st_dwc3_writel(dwc3_data->glue_base, CLKRST_CTRL, reg); in st_dwc3_init()
183 reg = st_dwc3_readl(dwc3_data->glue_base, USB2_VBUS_MNGMNT_SEL1); in st_dwc3_init()
189 st_dwc3_writel(dwc3_data->glue_base, USB2_VBUS_MNGMNT_SEL1, reg); in st_dwc3_init()
191 reg = st_dwc3_readl(dwc3_data->glue_base, CLKRST_CTRL); in st_dwc3_init()
193 st_dwc3_writel(dwc3_data->glue_base, CLKRST_CTRL, reg); in st_dwc3_init()
198 struct st_dwc3 *dwc3_data; in st_dwc3_probe() local
205 dwc3_data = devm_kzalloc(dev, sizeof(*dwc3_data), GFP_KERNEL); in st_dwc3_probe()
206 if (!dwc3_data) in st_dwc3_probe()
210 dwc3_data->glue_base = devm_ioremap_resource(dev, res); in st_dwc3_probe()
211 if (IS_ERR(dwc3_data->glue_base)) in st_dwc3_probe()
212 return PTR_ERR(dwc3_data->glue_base); in st_dwc3_probe()
219 dwc3_data->dev = dev; in st_dwc3_probe()
220 dwc3_data->regmap = regmap; in st_dwc3_probe()
228 dwc3_data->syscfg_reg_off = res->start; in st_dwc3_probe()
231 dwc3_data->glue_base, dwc3_data->syscfg_reg_off); in st_dwc3_probe()
233 dwc3_data->rstc_pwrdn = devm_reset_control_get(dev, "powerdown"); in st_dwc3_probe()
234 if (IS_ERR(dwc3_data->rstc_pwrdn)) { in st_dwc3_probe()
236 ret = PTR_ERR(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
241 reset_control_deassert(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
243 dwc3_data->rstc_rst = devm_reset_control_get(dev, "softreset"); in st_dwc3_probe()
244 if (IS_ERR(dwc3_data->rstc_rst)) { in st_dwc3_probe()
246 ret = PTR_ERR(dwc3_data->rstc_rst); in st_dwc3_probe()
251 reset_control_deassert(dwc3_data->rstc_rst); in st_dwc3_probe()
260 dwc3_data->dr_mode = of_usb_get_dr_mode(child); in st_dwc3_probe()
275 ret = st_dwc3_drd_init(dwc3_data); in st_dwc3_probe()
282 st_dwc3_init(dwc3_data); in st_dwc3_probe()
284 platform_set_drvdata(pdev, dwc3_data); in st_dwc3_probe()
288 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_probe()
290 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_probe()
298 struct st_dwc3 *dwc3_data = platform_get_drvdata(pdev); in st_dwc3_remove() local
302 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_remove()
303 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_remove()
311 struct st_dwc3 *dwc3_data = dev_get_drvdata(dev); in st_dwc3_suspend() local
313 reset_control_assert(dwc3_data->rstc_pwrdn); in st_dwc3_suspend()
314 reset_control_assert(dwc3_data->rstc_rst); in st_dwc3_suspend()
323 struct st_dwc3 *dwc3_data = dev_get_drvdata(dev); in st_dwc3_resume() local
328 reset_control_deassert(dwc3_data->rstc_pwrdn); in st_dwc3_resume()
329 reset_control_deassert(dwc3_data->rstc_rst); in st_dwc3_resume()
331 ret = st_dwc3_drd_init(dwc3_data); in st_dwc3_resume()
338 st_dwc3_init(dwc3_data); in st_dwc3_resume()