Lines Matching +full:de +full:- +full:asserted
1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (C) 2017 Pengutronix, Philipp Zabel <kernel@pengutronix.de>
11 * Maxime Ripard <maxime.ripard@free-electrons.com>
21 #include <linux/reset-controller.h>
22 #include <linux/reset/reset-simple.h>
41 spin_lock_irqsave(&data->lock, flags); in reset_simple_update()
43 reg = readl(data->membase + (bank * reg_width)); in reset_simple_update()
44 if (assert ^ data->active_low) in reset_simple_update()
48 writel(reg, data->membase + (bank * reg_width)); in reset_simple_update()
50 spin_unlock_irqrestore(&data->lock, flags); in reset_simple_update()
73 if (!data->reset_us) in reset_simple_reset()
74 return -ENOTSUPP; in reset_simple_reset()
80 usleep_range(data->reset_us, data->reset_us * 2); in reset_simple_reset()
94 reg = readl(data->membase + (bank * reg_width)); in reset_simple_status()
96 return !(reg & BIT(offset)) ^ !data->status_active_low; in reset_simple_status()
108 * struct reset_simple_devdata - simple reset controller properties
114 * asserted. Otherwise, bits read back as set while the
115 * reset is asserted.
138 { .compatible = "altr,stratix10-rst-mgr",
140 { .compatible = "st,stm32-rcc", },
141 { .compatible = "allwinner,sun6i-a31-clock-reset",
143 { .compatible = "zte,zx296718-reset",
145 { .compatible = "aspeed,ast2400-lpc-reset" },
146 { .compatible = "aspeed,ast2500-lpc-reset" },
147 { .compatible = "bitmain,bm1880-reset",
149 { .compatible = "snps,dw-high-reset" },
150 { .compatible = "snps,dw-low-reset",
157 struct device *dev = &pdev->dev; in reset_simple_probe()
168 return -ENOMEM; in reset_simple_probe()
175 spin_lock_init(&data->lock); in reset_simple_probe()
176 data->membase = membase; in reset_simple_probe()
177 data->rcdev.owner = THIS_MODULE; in reset_simple_probe()
178 data->rcdev.nr_resets = resource_size(res) * BITS_PER_BYTE; in reset_simple_probe()
179 data->rcdev.ops = &reset_simple_ops; in reset_simple_probe()
180 data->rcdev.of_node = dev->of_node; in reset_simple_probe()
183 reg_offset = devdata->reg_offset; in reset_simple_probe()
184 if (devdata->nr_resets) in reset_simple_probe()
185 data->rcdev.nr_resets = devdata->nr_resets; in reset_simple_probe()
186 data->active_low = devdata->active_low; in reset_simple_probe()
187 data->status_active_low = devdata->status_active_low; in reset_simple_probe()
190 data->membase += reg_offset; in reset_simple_probe()
192 return devm_reset_controller_register(dev, &data->rcdev); in reset_simple_probe()
198 .name = "simple-reset",