Lines Matching refs:data
78 { .compatible = "fsl,imx23-usb", .data = &imx23_usb_data},
79 { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data},
80 { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data},
81 { .compatible = "fsl,imx6q-usb", .data = &imx6q_usb_data},
82 { .compatible = "fsl,imx6sl-usb", .data = &imx6sl_usb_data},
83 { .compatible = "fsl,imx6sx-usb", .data = &imx6sx_usb_data},
84 { .compatible = "fsl,imx6ul-usb", .data = &imx6ul_usb_data},
85 { .compatible = "fsl,imx7d-usb", .data = &imx7d_usb_data},
86 { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data},
87 { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data},
120 struct imx_usbmisc_data *data;
130 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
131 if (!data)
142 data->index = args.args[0];
154 data->dev = &misc_pdev->dev;
161 data->disable_oc = 1;
163 data->oc_pol_active_low = 0;
164 data->oc_pol_configured = 1;
166 data->oc_pol_active_low = 1;
167 data->oc_pol_configured = 1;
172 data->pwr_pol = of_property_read_bool(np, "power-active-high");
173 data->evdo = of_property_read_bool(np, "external-vbus-divider");
176 data->ulpi = 1;
179 &data->emp_curr_control))
180 data->emp_curr_control = -1;
182 &data->dc_vol_level_adjust))
183 data->dc_vol_level_adjust = -1;
185 return data;
191 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
194 data->clk_ipg = devm_clk_get(dev, "ipg");
195 if (IS_ERR(data->clk_ipg)) {
197 data->clk = devm_clk_get(dev, NULL);
198 if (IS_ERR(data->clk)) {
199 ret = PTR_ERR(data->clk);
202 PTR_ERR(data->clk), PTR_ERR(data->clk_ipg));
208 data->clk_ahb = devm_clk_get(dev, "ahb");
209 if (IS_ERR(data->clk_ahb)) {
210 ret = PTR_ERR(data->clk_ahb);
216 data->clk_per = devm_clk_get(dev, "per");
217 if (IS_ERR(data->clk_per)) {
218 ret = PTR_ERR(data->clk_per);
224 data->need_three_clks = true;
230 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
233 if (data->need_three_clks) {
234 ret = clk_prepare_enable(data->clk_ipg);
242 ret = clk_prepare_enable(data->clk_ahb);
247 clk_disable_unprepare(data->clk_ipg);
251 ret = clk_prepare_enable(data->clk_per);
256 clk_disable_unprepare(data->clk_ahb);
257 clk_disable_unprepare(data->clk_ipg);
261 ret = clk_prepare_enable(data->clk);
275 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
277 if (data->need_three_clks) {
278 clk_disable_unprepare(data->clk_per);
279 clk_disable_unprepare(data->clk_ahb);
280 clk_disable_unprepare(data->clk_ipg);
282 clk_disable_unprepare(data->clk);
289 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
291 struct imx_usbmisc_data *mdata = data->usbmisc_data;
295 if (data->pinctrl) {
296 ret = pinctrl_select_state(data->pinctrl,
297 data->pinctrl_hsic_active);
327 struct ci_hdrc_imx_data *data;
343 imx_platform_flag = of_id->data;
345 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
346 if (!data)
349 data->plat_data = imx_platform_flag;
351 platform_set_drvdata(pdev, data);
352 data->usbmisc_data = usbmisc_get_init_data(dev);
353 if (IS_ERR(data->usbmisc_data))
354 return PTR_ERR(data->usbmisc_data);
357 && data->usbmisc_data) {
359 data->usbmisc_data->hsic = 1;
360 data->pinctrl = devm_pinctrl_get(dev);
361 if (PTR_ERR(data->pinctrl) == -ENODEV)
362 data->pinctrl = NULL;
363 else if (IS_ERR(data->pinctrl)) {
364 if (PTR_ERR(data->pinctrl) != -EPROBE_DEFER)
366 PTR_ERR(data->pinctrl));
367 return PTR_ERR(data->pinctrl);
370 data->hsic_pad_regulator =
372 if (PTR_ERR(data->hsic_pad_regulator) == -ENODEV) {
374 data->hsic_pad_regulator = NULL;
375 } else if (IS_ERR(data->hsic_pad_regulator)) {
376 if (PTR_ERR(data->hsic_pad_regulator) != -EPROBE_DEFER)
379 PTR_ERR(data->hsic_pad_regulator));
380 return PTR_ERR(data->hsic_pad_regulator);
383 if (data->hsic_pad_regulator) {
384 ret = regulator_enable(data->hsic_pad_regulator);
394 if (data->pinctrl) {
397 pinctrl_hsic_idle = pinctrl_lookup_state(data->pinctrl, "idle");
405 ret = pinctrl_select_state(data->pinctrl, pinctrl_hsic_idle);
411 data->pinctrl_hsic_active = pinctrl_lookup_state(data->pinctrl,
413 if (IS_ERR(data->pinctrl_hsic_active)) {
416 PTR_ERR(data->pinctrl_hsic_active));
417 return PTR_ERR(data->pinctrl_hsic_active);
422 cpu_latency_qos_add_request(&data->pm_qos_req, 0);
432 data->phy = devm_usb_get_phy_by_phandle(dev, "fsl,usbphy", 0);
433 if (IS_ERR(data->phy)) {
434 ret = PTR_ERR(data->phy);
437 data->phy = devm_usb_get_phy_by_phandle(dev, "phys", 0);
438 if (IS_ERR(data->phy)) {
439 ret = PTR_ERR(data->phy);
441 data->phy = NULL;
447 pdata.usb_phy = data->phy;
448 if (data->usbmisc_data)
449 data->usbmisc_data->usb_phy = data->phy;
455 data->override_phy_control = true;
460 data->supports_runtime_pm = true;
462 ret = imx_usbmisc_init(data->usbmisc_data);
468 data->ci_pdev = ci_hdrc_add_device(dev,
471 if (IS_ERR(data->ci_pdev)) {
472 ret = PTR_ERR(data->ci_pdev);
479 if (data->usbmisc_data) {
482 data->usbmisc_data->ext_id = 1;
486 data->usbmisc_data->ext_vbus = 1;
489 data->usbmisc_data->available_role =
490 ci_hdrc_query_available_role(data->ci_pdev);
493 ret = imx_usbmisc_init_post(data->usbmisc_data);
499 if (data->supports_runtime_pm) {
509 ci_hdrc_remove_device(data->ci_pdev);
513 if (data->hsic_pad_regulator)
515 regulator_disable(data->hsic_pad_regulator);
517 cpu_latency_qos_remove_request(&data->pm_qos_req);
518 data->ci_pdev = NULL;
524 struct ci_hdrc_imx_data *data = platform_get_drvdata(pdev);
526 if (data->supports_runtime_pm) {
531 if (data->ci_pdev)
532 ci_hdrc_remove_device(data->ci_pdev);
533 if (data->override_phy_control)
534 usb_phy_shutdown(data->phy);
535 if (data->ci_pdev) {
537 if (data->plat_data->flags & CI_HDRC_PMQOS)
538 cpu_latency_qos_remove_request(&data->pm_qos_req);
539 if (data->hsic_pad_regulator)
540 regulator_disable(data->hsic_pad_regulator);
553 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
558 ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, false);
565 if (data->plat_data->flags & CI_HDRC_PMQOS)
566 cpu_latency_qos_remove_request(&data->pm_qos_req);
568 data->in_lpm = true;
575 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
580 if (!data->in_lpm) {
585 if (data->plat_data->flags & CI_HDRC_PMQOS)
586 cpu_latency_qos_add_request(&data->pm_qos_req, 0);
592 data->in_lpm = false;
594 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, false);
600 ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, true);
609 imx_usbmisc_set_wakeup(data->usbmisc_data, true);
619 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
621 if (data->in_lpm)
626 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true);
644 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
649 if (!ret && data->supports_runtime_pm) {
660 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
663 if (data->in_lpm) {
668 ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true);