Lines Matching +full:sp7021 +full:- +full:reset

1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 * SP7021 reset driver
13 #include <linux/reset-controller.h>
21 /* SP7021: mo_reset0 ~ mo_reset9 */
115 struct sp_reset *reset = to_sp_reset(rcdev); in sp_reset_update() local
121 writel(val, reset->base + (index * 4)); in sp_reset_update()
141 struct sp_reset *reset = to_sp_reset(rcdev); in sp_reset_status() local
146 reg = readl(reset->base + (index * 4)); in sp_reset_status()
160 struct sp_reset *reset = container_of(nb, struct sp_reset, notifier); in sp_restart() local
162 sp_reset_assert(&reset->rcdev, 0); in sp_restart()
163 sp_reset_deassert(&reset->rcdev, 0); in sp_restart()
170 struct device *dev = &pdev->dev; in sp_reset_probe()
171 struct sp_reset *reset; in sp_reset_probe() local
175 reset = devm_kzalloc(dev, sizeof(*reset), GFP_KERNEL); in sp_reset_probe()
176 if (!reset) in sp_reset_probe()
177 return -ENOMEM; in sp_reset_probe()
179 reset->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); in sp_reset_probe()
180 if (IS_ERR(reset->base)) in sp_reset_probe()
181 return PTR_ERR(reset->base); in sp_reset_probe()
183 reset->rcdev.ops = &sp_reset_ops; in sp_reset_probe()
184 reset->rcdev.owner = THIS_MODULE; in sp_reset_probe()
185 reset->rcdev.of_node = dev->of_node; in sp_reset_probe()
186 reset->rcdev.nr_resets = resource_size(res) / 4 * BITS_PER_HWM_REG; in sp_reset_probe()
188 ret = devm_reset_controller_register(dev, &reset->rcdev); in sp_reset_probe()
192 reset->notifier.notifier_call = sp_restart; in sp_reset_probe()
193 reset->notifier.priority = 192; in sp_reset_probe()
195 return register_restart_handler(&reset->notifier); in sp_reset_probe()
199 {.compatible = "sunplus,sp7021-reset",},
206 .name = "sunplus-reset",