Lines Matching full:data

91 	{ .compatible = "fsl,imx23-usb", .data = &imx23_usb_data},
92 { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data},
93 { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data},
94 { .compatible = "fsl,imx6q-usb", .data = &imx6q_usb_data},
95 { .compatible = "fsl,imx6sl-usb", .data = &imx6sl_usb_data},
96 { .compatible = "fsl,imx6sx-usb", .data = &imx6sx_usb_data},
97 { .compatible = "fsl,imx6ul-usb", .data = &imx6ul_usb_data},
98 { .compatible = "fsl,imx7d-usb", .data = &imx7d_usb_data},
99 { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data},
100 { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data},
101 { .compatible = "fsl,imx95-usb", .data = &imx95_usb_data},
102 { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data},
137 struct imx_usbmisc_data *data; in usbmisc_get_init_data() local
147 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); in usbmisc_get_init_data()
148 if (!data) in usbmisc_get_init_data()
159 data->index = args.args[0]; in usbmisc_get_init_data()
171 data->dev = &misc_pdev->dev; in usbmisc_get_init_data()
178 data->disable_oc = 1; in usbmisc_get_init_data()
180 data->oc_pol_active_low = 0; in usbmisc_get_init_data()
181 data->oc_pol_configured = 1; in usbmisc_get_init_data()
183 data->oc_pol_active_low = 1; in usbmisc_get_init_data()
184 data->oc_pol_configured = 1; in usbmisc_get_init_data()
189 data->pwr_pol = of_property_read_bool(np, "power-active-high"); in usbmisc_get_init_data()
190 data->evdo = of_property_read_bool(np, "external-vbus-divider"); in usbmisc_get_init_data()
193 data->ulpi = 1; in usbmisc_get_init_data()
196 &data->emp_curr_control)) in usbmisc_get_init_data()
197 data->emp_curr_control = -1; in usbmisc_get_init_data()
199 &data->dc_vol_level_adjust)) in usbmisc_get_init_data()
200 data->dc_vol_level_adjust = -1; in usbmisc_get_init_data()
202 &data->rise_fall_time_adjust)) in usbmisc_get_init_data()
203 data->rise_fall_time_adjust = -1; in usbmisc_get_init_data()
205 return data; in usbmisc_get_init_data()
211 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_get_clks() local
214 data->clk_ipg = devm_clk_get(dev, "ipg"); in imx_get_clks()
215 if (IS_ERR(data->clk_ipg)) { in imx_get_clks()
217 data->clk = devm_clk_get(dev, NULL); in imx_get_clks()
218 if (IS_ERR(data->clk)) { in imx_get_clks()
219 ret = PTR_ERR(data->clk); in imx_get_clks()
222 PTR_ERR(data->clk), PTR_ERR(data->clk_ipg)); in imx_get_clks()
228 data->clk_wakeup = devm_clk_get_optional(dev, "usb_wakeup"); in imx_get_clks()
229 if (IS_ERR(data->clk_wakeup)) in imx_get_clks()
230 ret = dev_err_probe(dev, PTR_ERR(data->clk_wakeup), in imx_get_clks()
235 data->clk_ahb = devm_clk_get(dev, "ahb"); in imx_get_clks()
236 if (IS_ERR(data->clk_ahb)) { in imx_get_clks()
237 ret = PTR_ERR(data->clk_ahb); in imx_get_clks()
243 data->clk_per = devm_clk_get(dev, "per"); in imx_get_clks()
244 if (IS_ERR(data->clk_per)) { in imx_get_clks()
245 ret = PTR_ERR(data->clk_per); in imx_get_clks()
251 data->need_three_clks = true; in imx_get_clks()
257 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_prepare_enable_clks() local
260 if (data->need_three_clks) { in imx_prepare_enable_clks()
261 ret = clk_prepare_enable(data->clk_ipg); in imx_prepare_enable_clks()
269 ret = clk_prepare_enable(data->clk_ahb); in imx_prepare_enable_clks()
274 clk_disable_unprepare(data->clk_ipg); in imx_prepare_enable_clks()
278 ret = clk_prepare_enable(data->clk_per); in imx_prepare_enable_clks()
283 clk_disable_unprepare(data->clk_ahb); in imx_prepare_enable_clks()
284 clk_disable_unprepare(data->clk_ipg); in imx_prepare_enable_clks()
288 ret = clk_prepare_enable(data->clk); in imx_prepare_enable_clks()
302 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_disable_unprepare_clks() local
304 if (data->need_three_clks) { in imx_disable_unprepare_clks()
305 clk_disable_unprepare(data->clk_per); in imx_disable_unprepare_clks()
306 clk_disable_unprepare(data->clk_ahb); in imx_disable_unprepare_clks()
307 clk_disable_unprepare(data->clk_ipg); in imx_disable_unprepare_clks()
309 clk_disable_unprepare(data->clk); in imx_disable_unprepare_clks()
316 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_notify_event() local
318 struct imx_usbmisc_data *mdata = data->usbmisc_data; in ci_hdrc_imx_notify_event()
322 if (data->pinctrl) { in ci_hdrc_imx_notify_event()
323 ret = pinctrl_select_state(data->pinctrl, in ci_hdrc_imx_notify_event()
324 data->pinctrl_hsic_active); in ci_hdrc_imx_notify_event()
348 imx_usbmisc_pullup(data->usbmisc_data, in ci_hdrc_imx_notify_event()
358 static irqreturn_t ci_wakeup_irq_handler(int irq, void *data) in ci_wakeup_irq_handler() argument
360 struct ci_hdrc_imx_data *imx_data = data; in ci_wakeup_irq_handler()
370 struct ci_hdrc_imx_data *data = arg; in ci_hdrc_imx_disable_regulator() local
372 regulator_disable(data->hsic_pad_regulator); in ci_hdrc_imx_disable_regulator()
377 struct ci_hdrc_imx_data *data; in ci_hdrc_imx_probe() local
392 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in ci_hdrc_imx_probe()
393 if (!data) in ci_hdrc_imx_probe()
396 data->plat_data = imx_platform_flag; in ci_hdrc_imx_probe()
398 platform_set_drvdata(pdev, data); in ci_hdrc_imx_probe()
399 data->usbmisc_data = usbmisc_get_init_data(dev); in ci_hdrc_imx_probe()
400 if (IS_ERR(data->usbmisc_data)) in ci_hdrc_imx_probe()
401 return PTR_ERR(data->usbmisc_data); in ci_hdrc_imx_probe()
404 && data->usbmisc_data) { in ci_hdrc_imx_probe()
406 data->usbmisc_data->hsic = 1; in ci_hdrc_imx_probe()
407 data->pinctrl = devm_pinctrl_get(dev); in ci_hdrc_imx_probe()
408 if (PTR_ERR(data->pinctrl) == -ENODEV) in ci_hdrc_imx_probe()
409 data->pinctrl = NULL; in ci_hdrc_imx_probe()
410 else if (IS_ERR(data->pinctrl)) { in ci_hdrc_imx_probe()
411 ret = dev_err_probe(dev, PTR_ERR(data->pinctrl), in ci_hdrc_imx_probe()
416 data->hsic_pad_regulator = in ci_hdrc_imx_probe()
418 if (PTR_ERR(data->hsic_pad_regulator) == -ENODEV) { in ci_hdrc_imx_probe()
420 data->hsic_pad_regulator = NULL; in ci_hdrc_imx_probe()
421 } else if (IS_ERR(data->hsic_pad_regulator)) { in ci_hdrc_imx_probe()
422 ret = dev_err_probe(dev, PTR_ERR(data->hsic_pad_regulator), in ci_hdrc_imx_probe()
427 if (data->hsic_pad_regulator) { in ci_hdrc_imx_probe()
428 ret = regulator_enable(data->hsic_pad_regulator); in ci_hdrc_imx_probe()
435 ci_hdrc_imx_disable_regulator, data); in ci_hdrc_imx_probe()
445 if (data->pinctrl) { in ci_hdrc_imx_probe()
448 pinctrl_hsic_idle = pinctrl_lookup_state(data->pinctrl, "idle"); in ci_hdrc_imx_probe()
457 ret = pinctrl_select_state(data->pinctrl, pinctrl_hsic_idle); in ci_hdrc_imx_probe()
463 data->pinctrl_hsic_active = pinctrl_lookup_state(data->pinctrl, in ci_hdrc_imx_probe()
465 if (IS_ERR(data->pinctrl_hsic_active)) { in ci_hdrc_imx_probe()
468 PTR_ERR(data->pinctrl_hsic_active)); in ci_hdrc_imx_probe()
469 ret = PTR_ERR(data->pinctrl_hsic_active); in ci_hdrc_imx_probe()
475 cpu_latency_qos_add_request(&data->pm_qos_req, 0); in ci_hdrc_imx_probe()
485 ret = clk_prepare_enable(data->clk_wakeup); in ci_hdrc_imx_probe()
489 data->phy = devm_usb_get_phy_by_phandle(dev, "fsl,usbphy", 0); in ci_hdrc_imx_probe()
490 if (IS_ERR(data->phy)) { in ci_hdrc_imx_probe()
491 ret = PTR_ERR(data->phy); in ci_hdrc_imx_probe()
496 data->phy = devm_usb_get_phy_by_phandle(dev, "phys", 0); in ci_hdrc_imx_probe()
497 if (IS_ERR(data->phy)) { in ci_hdrc_imx_probe()
498 ret = PTR_ERR(data->phy); in ci_hdrc_imx_probe()
500 data->phy = NULL; in ci_hdrc_imx_probe()
508 pdata.usb_phy = data->phy; in ci_hdrc_imx_probe()
509 if (data->usbmisc_data) in ci_hdrc_imx_probe()
510 data->usbmisc_data->usb_phy = data->phy; in ci_hdrc_imx_probe()
516 data->override_phy_control = true; in ci_hdrc_imx_probe()
525 data->supports_runtime_pm = true; in ci_hdrc_imx_probe()
527 data->wakeup_irq = platform_get_irq_optional(pdev, 1); in ci_hdrc_imx_probe()
528 if (data->wakeup_irq > 0) { in ci_hdrc_imx_probe()
535 ret = devm_request_threaded_irq(dev, data->wakeup_irq, in ci_hdrc_imx_probe()
538 irq_name, data); in ci_hdrc_imx_probe()
543 ret = imx_usbmisc_init(data->usbmisc_data); in ci_hdrc_imx_probe()
549 data->ci_pdev = ci_hdrc_add_device(dev, in ci_hdrc_imx_probe()
552 if (IS_ERR(data->ci_pdev)) { in ci_hdrc_imx_probe()
553 ret = PTR_ERR(data->ci_pdev); in ci_hdrc_imx_probe()
558 if (data->usbmisc_data) { in ci_hdrc_imx_probe()
561 data->usbmisc_data->ext_id = 1; in ci_hdrc_imx_probe()
565 data->usbmisc_data->ext_vbus = 1; in ci_hdrc_imx_probe()
568 data->usbmisc_data->available_role = in ci_hdrc_imx_probe()
569 ci_hdrc_query_available_role(data->ci_pdev); in ci_hdrc_imx_probe()
572 ret = imx_usbmisc_init_post(data->usbmisc_data); in ci_hdrc_imx_probe()
578 if (data->supports_runtime_pm) { in ci_hdrc_imx_probe()
588 ci_hdrc_remove_device(data->ci_pdev); in ci_hdrc_imx_probe()
590 if (data->override_phy_control) in ci_hdrc_imx_probe()
591 usb_phy_shutdown(data->phy); in ci_hdrc_imx_probe()
593 clk_disable_unprepare(data->clk_wakeup); in ci_hdrc_imx_probe()
598 cpu_latency_qos_remove_request(&data->pm_qos_req); in ci_hdrc_imx_probe()
599 data->ci_pdev = NULL; in ci_hdrc_imx_probe()
601 if (data->usbmisc_data) in ci_hdrc_imx_probe()
602 put_device(data->usbmisc_data->dev); in ci_hdrc_imx_probe()
608 struct ci_hdrc_imx_data *data = platform_get_drvdata(pdev); in ci_hdrc_imx_remove() local
610 if (data->supports_runtime_pm) { in ci_hdrc_imx_remove()
615 if (data->ci_pdev) in ci_hdrc_imx_remove()
616 ci_hdrc_remove_device(data->ci_pdev); in ci_hdrc_imx_remove()
617 if (data->override_phy_control) in ci_hdrc_imx_remove()
618 usb_phy_shutdown(data->phy); in ci_hdrc_imx_remove()
619 if (data->ci_pdev) { in ci_hdrc_imx_remove()
621 clk_disable_unprepare(data->clk_wakeup); in ci_hdrc_imx_remove()
622 if (data->plat_data->flags & CI_HDRC_PMQOS) in ci_hdrc_imx_remove()
623 cpu_latency_qos_remove_request(&data->pm_qos_req); in ci_hdrc_imx_remove()
625 if (data->usbmisc_data) in ci_hdrc_imx_remove()
626 put_device(data->usbmisc_data->dev); in ci_hdrc_imx_remove()
637 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_controller_suspend() local
642 ret = imx_usbmisc_suspend(data->usbmisc_data, in imx_controller_suspend()
652 if (data->wakeup_irq > 0) in imx_controller_suspend()
653 enable_irq(data->wakeup_irq); in imx_controller_suspend()
655 if (data->plat_data->flags & CI_HDRC_PMQOS) in imx_controller_suspend()
656 cpu_latency_qos_remove_request(&data->pm_qos_req); in imx_controller_suspend()
658 data->in_lpm = true; in imx_controller_suspend()
666 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in imx_controller_resume() local
671 if (!data->in_lpm) { in imx_controller_resume()
676 if (data->plat_data->flags & CI_HDRC_PMQOS) in imx_controller_resume()
677 cpu_latency_qos_add_request(&data->pm_qos_req, 0); in imx_controller_resume()
679 if (data->wakeup_irq > 0 && in imx_controller_resume()
680 !irqd_irq_disabled(irq_get_irq_data(data->wakeup_irq))) in imx_controller_resume()
681 disable_irq_nosync(data->wakeup_irq); in imx_controller_resume()
687 data->in_lpm = false; in imx_controller_resume()
689 ret = imx_usbmisc_resume(data->usbmisc_data, in imx_controller_resume()
707 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_suspend() local
709 if (data->in_lpm) in ci_hdrc_imx_suspend()
719 if (data->wakeup_irq > 0 && device_may_wakeup(dev)) { in ci_hdrc_imx_suspend()
720 enable_irq_wake(data->wakeup_irq); in ci_hdrc_imx_suspend()
722 if (data->plat_data->flags & CI_HDRC_OUT_BAND_WAKEUP) in ci_hdrc_imx_suspend()
731 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_resume() local
734 if (data->wakeup_irq > 0 && device_may_wakeup(dev)) in ci_hdrc_imx_resume()
735 disable_irq_wake(data->wakeup_irq); in ci_hdrc_imx_resume()
739 if (!ret && data->supports_runtime_pm) { in ci_hdrc_imx_resume()
750 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); in ci_hdrc_imx_runtime_suspend() local
752 if (data->in_lpm) { in ci_hdrc_imx_runtime_suspend()