Lines Matching full:data
74 { .compatible = "fsl,imx23-usb", .data = &imx23_usb_data},
75 { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data},
76 { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data},
77 { .compatible = "fsl,imx6q-usb", .data = &imx6q_usb_data},
78 { .compatible = "fsl,imx6sl-usb", .data = &imx6sl_usb_data},
79 { .compatible = "fsl,imx6sx-usb", .data = &imx6sx_usb_data},
80 { .compatible = "fsl,imx6ul-usb", .data = &imx6ul_usb_data},
81 { .compatible = "fsl,imx7d-usb", .data = &imx7d_usb_data},
82 { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data},
115 struct imx_usbmisc_data *data; in usbmisc_get_init_data() local
125 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); in usbmisc_get_init_data()
126 if (!data) in usbmisc_get_init_data()
137 data->index = args.args[0]; in usbmisc_get_init_data()
149 data->dev = &misc_pdev->dev; in usbmisc_get_init_data()
156 data->disable_oc = 1; in usbmisc_get_init_data()
158 data->oc_pol_active_low = 0; in usbmisc_get_init_data()
159 data->oc_pol_configured = 1; in usbmisc_get_init_data()
161 data->oc_pol_active_low = 1; in usbmisc_get_init_data()
162 data->oc_pol_configured = 1; in usbmisc_get_init_data()
167 data->pwr_pol = of_property_read_bool(np, "power-active-high"); in usbmisc_get_init_data()
168 data->evdo = of_property_read_bool(np, "external-vbus-divider"); in usbmisc_get_init_data()
171 data->ulpi = 1; in usbmisc_get_init_data()
174 &data->emp_curr_control); in usbmisc_get_init_data()
176 &data->dc_vol_level_adjust); in usbmisc_get_init_data()
178 return data; in usbmisc_get_init_data()
184 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_get_clks() local
187 data->clk_ipg = devm_clk_get(dev, "ipg"); in imx_get_clks()
188 if (IS_ERR(data->clk_ipg)) { in imx_get_clks()
190 data->clk = devm_clk_get(dev, NULL); in imx_get_clks()
191 if (IS_ERR(data->clk)) { in imx_get_clks()
192 ret = PTR_ERR(data->clk); in imx_get_clks()
195 PTR_ERR(data->clk), PTR_ERR(data->clk_ipg)); in imx_get_clks()
201 data->clk_ahb = devm_clk_get(dev, "ahb"); in imx_get_clks()
202 if (IS_ERR(data->clk_ahb)) { in imx_get_clks()
203 ret = PTR_ERR(data->clk_ahb); in imx_get_clks()
209 data->clk_per = devm_clk_get(dev, "per"); in imx_get_clks()
210 if (IS_ERR(data->clk_per)) { in imx_get_clks()
211 ret = PTR_ERR(data->clk_per); in imx_get_clks()
217 data->need_three_clks = true; in imx_get_clks()
223 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_prepare_enable_clks() local
226 if (data->need_three_clks) { in imx_prepare_enable_clks()
227 ret = clk_prepare_enable(data->clk_ipg); in imx_prepare_enable_clks()
235 ret = clk_prepare_enable(data->clk_ahb); in imx_prepare_enable_clks()
240 clk_disable_unprepare(data->clk_ipg); in imx_prepare_enable_clks()
244 ret = clk_prepare_enable(data->clk_per); in imx_prepare_enable_clks()
249 clk_disable_unprepare(data->clk_ahb); in imx_prepare_enable_clks()
250 clk_disable_unprepare(data->clk_ipg); in imx_prepare_enable_clks()
254 ret = clk_prepare_enable(data->clk); in imx_prepare_enable_clks()
268 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_disable_unprepare_clks() local
270 if (data->need_three_clks) { in imx_disable_unprepare_clks()
271 clk_disable_unprepare(data->clk_per); in imx_disable_unprepare_clks()
272 clk_disable_unprepare(data->clk_ahb); in imx_disable_unprepare_clks()
273 clk_disable_unprepare(data->clk_ipg); in imx_disable_unprepare_clks()
275 clk_disable_unprepare(data->clk); in imx_disable_unprepare_clks()
282 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_notify_event() local
284 struct imx_usbmisc_data *mdata = data->usbmisc_data; in ci_hdrc_imx_notify_event()
288 if (data->pinctrl) { in ci_hdrc_imx_notify_event()
289 ret = pinctrl_select_state(data->pinctrl, in ci_hdrc_imx_notify_event()
290 data->pinctrl_hsic_active); in ci_hdrc_imx_notify_event()
320 struct ci_hdrc_imx_data *data; in ci_hdrc_imx_probe() local
336 imx_platform_flag = of_id->data; in ci_hdrc_imx_probe()
338 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in ci_hdrc_imx_probe()
339 if (!data) in ci_hdrc_imx_probe()
342 data->plat_data = imx_platform_flag; in ci_hdrc_imx_probe()
344 platform_set_drvdata(pdev, data); in ci_hdrc_imx_probe()
345 data->usbmisc_data = usbmisc_get_init_data(dev); in ci_hdrc_imx_probe()
346 if (IS_ERR(data->usbmisc_data)) in ci_hdrc_imx_probe()
347 return PTR_ERR(data->usbmisc_data); in ci_hdrc_imx_probe()
350 && data->usbmisc_data) { in ci_hdrc_imx_probe()
352 data->usbmisc_data->hsic = 1; in ci_hdrc_imx_probe()
353 data->pinctrl = devm_pinctrl_get(dev); in ci_hdrc_imx_probe()
354 if (PTR_ERR(data->pinctrl) == -ENODEV) in ci_hdrc_imx_probe()
355 data->pinctrl = NULL; in ci_hdrc_imx_probe()
356 else if (IS_ERR(data->pinctrl)) { in ci_hdrc_imx_probe()
357 if (PTR_ERR(data->pinctrl) != -EPROBE_DEFER) in ci_hdrc_imx_probe()
359 PTR_ERR(data->pinctrl)); in ci_hdrc_imx_probe()
360 return PTR_ERR(data->pinctrl); in ci_hdrc_imx_probe()
363 data->hsic_pad_regulator = in ci_hdrc_imx_probe()
365 if (PTR_ERR(data->hsic_pad_regulator) == -ENODEV) { in ci_hdrc_imx_probe()
367 data->hsic_pad_regulator = NULL; in ci_hdrc_imx_probe()
368 } else if (IS_ERR(data->hsic_pad_regulator)) { in ci_hdrc_imx_probe()
369 if (PTR_ERR(data->hsic_pad_regulator) != -EPROBE_DEFER) in ci_hdrc_imx_probe()
372 PTR_ERR(data->hsic_pad_regulator)); in ci_hdrc_imx_probe()
373 return PTR_ERR(data->hsic_pad_regulator); in ci_hdrc_imx_probe()
376 if (data->hsic_pad_regulator) { in ci_hdrc_imx_probe()
377 ret = regulator_enable(data->hsic_pad_regulator); in ci_hdrc_imx_probe()
387 if (data->pinctrl) { in ci_hdrc_imx_probe()
390 pinctrl_hsic_idle = pinctrl_lookup_state(data->pinctrl, "idle"); in ci_hdrc_imx_probe()
398 ret = pinctrl_select_state(data->pinctrl, pinctrl_hsic_idle); in ci_hdrc_imx_probe()
404 data->pinctrl_hsic_active = pinctrl_lookup_state(data->pinctrl, in ci_hdrc_imx_probe()
406 if (IS_ERR(data->pinctrl_hsic_active)) { in ci_hdrc_imx_probe()
409 PTR_ERR(data->pinctrl_hsic_active)); in ci_hdrc_imx_probe()
410 return PTR_ERR(data->pinctrl_hsic_active); in ci_hdrc_imx_probe()
415 cpu_latency_qos_add_request(&data->pm_qos_req, 0); in ci_hdrc_imx_probe()
425 data->phy = devm_usb_get_phy_by_phandle(dev, "fsl,usbphy", 0); in ci_hdrc_imx_probe()
426 if (IS_ERR(data->phy)) { in ci_hdrc_imx_probe()
427 ret = PTR_ERR(data->phy); in ci_hdrc_imx_probe()
430 data->phy = devm_usb_get_phy_by_phandle(dev, "phys", 0); in ci_hdrc_imx_probe()
431 if (IS_ERR(data->phy)) { in ci_hdrc_imx_probe()
432 ret = PTR_ERR(data->phy); in ci_hdrc_imx_probe()
434 data->phy = NULL; in ci_hdrc_imx_probe()
440 pdata.usb_phy = data->phy; in ci_hdrc_imx_probe()
441 if (data->usbmisc_data) in ci_hdrc_imx_probe()
442 data->usbmisc_data->usb_phy = data->phy; in ci_hdrc_imx_probe()
448 data->override_phy_control = true; in ci_hdrc_imx_probe()
453 data->supports_runtime_pm = true; in ci_hdrc_imx_probe()
455 ret = imx_usbmisc_init(data->usbmisc_data); in ci_hdrc_imx_probe()
461 data->ci_pdev = ci_hdrc_add_device(dev, in ci_hdrc_imx_probe()
464 if (IS_ERR(data->ci_pdev)) { in ci_hdrc_imx_probe()
465 ret = PTR_ERR(data->ci_pdev); in ci_hdrc_imx_probe()
472 if (data->usbmisc_data) { in ci_hdrc_imx_probe()
475 data->usbmisc_data->ext_id = 1; in ci_hdrc_imx_probe()
479 data->usbmisc_data->ext_vbus = 1; in ci_hdrc_imx_probe()
482 data->usbmisc_data->available_role = in ci_hdrc_imx_probe()
483 ci_hdrc_query_available_role(data->ci_pdev); in ci_hdrc_imx_probe()
486 ret = imx_usbmisc_init_post(data->usbmisc_data); in ci_hdrc_imx_probe()
492 if (data->supports_runtime_pm) { in ci_hdrc_imx_probe()
502 ci_hdrc_remove_device(data->ci_pdev); in ci_hdrc_imx_probe()
506 if (data->hsic_pad_regulator) in ci_hdrc_imx_probe()
508 regulator_disable(data->hsic_pad_regulator); in ci_hdrc_imx_probe()
510 cpu_latency_qos_remove_request(&data->pm_qos_req); in ci_hdrc_imx_probe()
511 data->ci_pdev = NULL; in ci_hdrc_imx_probe()
517 struct ci_hdrc_imx_data *data = platform_get_drvdata(pdev); in ci_hdrc_imx_remove() local
519 if (data->supports_runtime_pm) { in ci_hdrc_imx_remove()
524 if (data->ci_pdev) in ci_hdrc_imx_remove()
525 ci_hdrc_remove_device(data->ci_pdev); in ci_hdrc_imx_remove()
526 if (data->override_phy_control) in ci_hdrc_imx_remove()
527 usb_phy_shutdown(data->phy); in ci_hdrc_imx_remove()
528 if (data->ci_pdev) { in ci_hdrc_imx_remove()
530 if (data->plat_data->flags & CI_HDRC_PMQOS) in ci_hdrc_imx_remove()
531 cpu_latency_qos_remove_request(&data->pm_qos_req); in ci_hdrc_imx_remove()
532 if (data->hsic_pad_regulator) in ci_hdrc_imx_remove()
533 regulator_disable(data->hsic_pad_regulator); in ci_hdrc_imx_remove()
546 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_controller_suspend() local
551 ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, false); in imx_controller_suspend()
558 if (data->plat_data->flags & CI_HDRC_PMQOS) in imx_controller_suspend()
559 cpu_latency_qos_remove_request(&data->pm_qos_req); in imx_controller_suspend()
561 data->in_lpm = true; in imx_controller_suspend()
568 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_controller_resume() local
573 if (!data->in_lpm) { in imx_controller_resume()
578 if (data->plat_data->flags & CI_HDRC_PMQOS) in imx_controller_resume()
579 cpu_latency_qos_add_request(&data->pm_qos_req, 0); in imx_controller_resume()
585 data->in_lpm = false; in imx_controller_resume()
587 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, false); in imx_controller_resume()
593 ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, true); in imx_controller_resume()
602 imx_usbmisc_set_wakeup(data->usbmisc_data, true); in imx_controller_resume()
612 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_suspend() local
614 if (data->in_lpm) in ci_hdrc_imx_suspend()
619 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true); in ci_hdrc_imx_suspend()
637 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_resume() local
642 if (!ret && data->supports_runtime_pm) { in ci_hdrc_imx_resume()
653 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_runtime_suspend() local
656 if (data->in_lpm) { in ci_hdrc_imx_runtime_suspend()
661 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true); in ci_hdrc_imx_runtime_suspend()