Lines Matching +full:ma35d1 +full:- +full:reset
1 // SPDX-License-Identifier: GPL-2.0-only
4 * Author: Chi-Fang Li <cfli0@nuvoton.com>
16 #include <linux/reset-controller.h>
18 #include <dt-bindings/reset/nuvoton,ma35d1-reset.h>
24 /* protect registers against concurrent read-modify-write */
135 data->base + ma35d1_reset_map[id].reg_ofs); in ma35d1_restart_handler()
146 return -EINVAL; in ma35d1_reset_update()
148 spin_lock_irqsave(&data->lock, flags); in ma35d1_reset_update()
149 reg = readl_relaxed(data->base + ma35d1_reset_map[id].reg_ofs); in ma35d1_reset_update()
154 writel_relaxed(reg, data->base + ma35d1_reset_map[id].reg_ofs); in ma35d1_reset_update()
155 spin_unlock_irqrestore(&data->lock, flags); in ma35d1_reset_update()
176 return -EINVAL; in ma35d1_reset_status()
178 reg = readl_relaxed(data->base + ma35d1_reset_map[id].reg_ofs); in ma35d1_reset_status()
189 { .compatible = "nuvoton,ma35d1-reset" },
196 struct device *dev = &pdev->dev; in ma35d1_reset_probe()
199 if (!pdev->dev.of_node) { in ma35d1_reset_probe()
200 dev_err(&pdev->dev, "Device tree node not found\n"); in ma35d1_reset_probe()
201 return -EINVAL; in ma35d1_reset_probe()
206 return -ENOMEM; in ma35d1_reset_probe()
208 reset_data->base = devm_platform_ioremap_resource(pdev, 0); in ma35d1_reset_probe()
209 if (IS_ERR(reset_data->base)) in ma35d1_reset_probe()
210 return PTR_ERR(reset_data->base); in ma35d1_reset_probe()
212 reset_data->rcdev.owner = THIS_MODULE; in ma35d1_reset_probe()
213 reset_data->rcdev.nr_resets = MA35D1_RESET_COUNT; in ma35d1_reset_probe()
214 reset_data->rcdev.ops = &ma35d1_reset_ops; in ma35d1_reset_probe()
215 reset_data->rcdev.of_node = dev->of_node; in ma35d1_reset_probe()
216 reset_data->restart_handler.notifier_call = ma35d1_restart_handler; in ma35d1_reset_probe()
217 reset_data->restart_handler.priority = 192; in ma35d1_reset_probe()
218 spin_lock_init(&reset_data->lock); in ma35d1_reset_probe()
220 err = register_restart_handler(&reset_data->restart_handler); in ma35d1_reset_probe()
222 dev_warn(&pdev->dev, "failed to register restart handler\n"); in ma35d1_reset_probe()
224 return devm_reset_controller_register(dev, &reset_data->rcdev); in ma35d1_reset_probe()
230 .name = "ma35d1-reset",