• Home
  • Raw
  • Download

Lines Matching +full:usb3 +full:- +full:if

1 // SPDX-License-Identifier: GPL-2.0
3 // reset-uniphier-usb3.c - USB3 reset driver for UniPhier
13 #include "reset-simple.h"
34 struct device *dev = &pdev->dev; in uniphier_usb3_reset_probe()
42 if (!priv) in uniphier_usb3_reset_probe()
43 return -ENOMEM; in uniphier_usb3_reset_probe()
45 priv->data = of_device_get_match_data(dev); in uniphier_usb3_reset_probe()
46 if (WARN_ON(!priv->data || priv->data->nclks > MAX_CLKS || in uniphier_usb3_reset_probe()
47 priv->data->nrsts > MAX_RSTS)) in uniphier_usb3_reset_probe()
48 return -EINVAL; in uniphier_usb3_reset_probe()
52 priv->rdata.membase = devm_ioremap_resource(dev, res); in uniphier_usb3_reset_probe()
53 if (IS_ERR(priv->rdata.membase)) in uniphier_usb3_reset_probe()
54 return PTR_ERR(priv->rdata.membase); in uniphier_usb3_reset_probe()
56 for (i = 0; i < priv->data->nclks; i++) in uniphier_usb3_reset_probe()
57 priv->clk[i].id = priv->data->clock_names[i]; in uniphier_usb3_reset_probe()
58 ret = devm_clk_bulk_get(dev, priv->data->nclks, priv->clk); in uniphier_usb3_reset_probe()
59 if (ret) in uniphier_usb3_reset_probe()
62 for (i = 0; i < priv->data->nrsts; i++) { in uniphier_usb3_reset_probe()
63 name = priv->data->reset_names[i]; in uniphier_usb3_reset_probe()
64 priv->rst[i] = devm_reset_control_get_shared(dev, name); in uniphier_usb3_reset_probe()
65 if (IS_ERR(priv->rst[i])) in uniphier_usb3_reset_probe()
66 return PTR_ERR(priv->rst[i]); in uniphier_usb3_reset_probe()
69 ret = clk_bulk_prepare_enable(priv->data->nclks, priv->clk); in uniphier_usb3_reset_probe()
70 if (ret) in uniphier_usb3_reset_probe()
73 for (nr = 0; nr < priv->data->nrsts; nr++) { in uniphier_usb3_reset_probe()
74 ret = reset_control_deassert(priv->rst[nr]); in uniphier_usb3_reset_probe()
75 if (ret) in uniphier_usb3_reset_probe()
79 spin_lock_init(&priv->rdata.lock); in uniphier_usb3_reset_probe()
80 priv->rdata.rcdev.owner = THIS_MODULE; in uniphier_usb3_reset_probe()
81 priv->rdata.rcdev.nr_resets = size * BITS_PER_BYTE; in uniphier_usb3_reset_probe()
82 priv->rdata.rcdev.ops = &reset_simple_ops; in uniphier_usb3_reset_probe()
83 priv->rdata.rcdev.of_node = dev->of_node; in uniphier_usb3_reset_probe()
84 priv->rdata.active_low = true; in uniphier_usb3_reset_probe()
88 ret = devm_reset_controller_register(dev, &priv->rdata.rcdev); in uniphier_usb3_reset_probe()
89 if (ret) in uniphier_usb3_reset_probe()
95 while (nr--) in uniphier_usb3_reset_probe()
96 reset_control_assert(priv->rst[nr]); in uniphier_usb3_reset_probe()
98 clk_bulk_disable_unprepare(priv->data->nclks, priv->clk); in uniphier_usb3_reset_probe()
108 for (i = 0; i < priv->data->nrsts; i++) in uniphier_usb3_reset_remove()
109 reset_control_assert(priv->rst[i]); in uniphier_usb3_reset_remove()
111 clk_bulk_disable_unprepare(priv->data->nclks, priv->clk); in uniphier_usb3_reset_remove()
140 .compatible = "socionext,uniphier-pro4-usb3-reset",
144 .compatible = "socionext,uniphier-pxs2-usb3-reset",
148 .compatible = "socionext,uniphier-ld20-usb3-reset",
152 .compatible = "socionext,uniphier-pxs3-usb3-reset",
163 .name = "uniphier-usb3-reset",
170 MODULE_DESCRIPTION("UniPhier USB3 Reset Driver");