Lines Matching +full:reset +full:- +full:n +full:- +full:io
1 // SPDX-License-Identifier: GPL-2.0-only
5 * Xilinx Zynq Reset controller driver
11 #include <linux/io.h>
16 #include <linux/reset-controller.h>
37 pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__, in zynq_reset_assert()
40 return regmap_update_bits(priv->slcr, in zynq_reset_assert()
41 priv->offset + (bank * 4), in zynq_reset_assert()
54 pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__, in zynq_reset_deassert()
57 return regmap_update_bits(priv->slcr, in zynq_reset_deassert()
58 priv->offset + (bank * 4), in zynq_reset_deassert()
73 pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__, in zynq_reset_status()
76 ret = regmap_read(priv->slcr, priv->offset + (bank * 4), ®); in zynq_reset_status()
94 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in zynq_reset_probe()
96 return -ENOMEM; in zynq_reset_probe()
98 priv->slcr = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, in zynq_reset_probe()
100 if (IS_ERR(priv->slcr)) { in zynq_reset_probe()
101 dev_err(&pdev->dev, "unable to get zynq-slcr regmap"); in zynq_reset_probe()
102 return PTR_ERR(priv->slcr); in zynq_reset_probe()
107 dev_err(&pdev->dev, "missing IO resource\n"); in zynq_reset_probe()
108 return -ENODEV; in zynq_reset_probe()
111 priv->offset = res->start; in zynq_reset_probe()
113 priv->rcdev.owner = THIS_MODULE; in zynq_reset_probe()
114 priv->rcdev.nr_resets = resource_size(res) / 4 * BITS_PER_LONG; in zynq_reset_probe()
115 priv->rcdev.ops = &zynq_reset_ops; in zynq_reset_probe()
116 priv->rcdev.of_node = pdev->dev.of_node; in zynq_reset_probe()
118 return devm_reset_controller_register(&pdev->dev, &priv->rcdev); in zynq_reset_probe()
122 { .compatible = "xlnx,zynq-reset", },