* [PATCH 0/6] Remove register_restart_handler() from drivers/reset
@ 2025-08-13 21:41 Andrew Davis
2025-08-13 21:41 ` [PATCH 1/6] reset: ath79: Use devm_register_restart_handler() Andrew Davis
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Hello all,
Continuing to remove users of register_restart_handler(), this series
removes the remaining uses in the driver/reset subsystem.
Build tested, but I don't have any of these platforms, so some
sanity testing always welcome :)
Thanks,
Andrew
Andrew Davis (6):
reset: ath79: Use devm_register_restart_handler()
reset: intel: Use devm_register_restart_handler()
reset: lpc18xx: Use devm_register_sys_off_handler()
reset: ma35d1: Use devm_register_sys_off_handler()
reset: npcm: Use devm_register_sys_off_handler()
reset: sunplus: Use devm_register_sys_off_handler()
drivers/reset/reset-ath79.c | 12 +++---------
drivers/reset/reset-intel-gw.c | 11 +++--------
drivers/reset/reset-lpc18xx.c | 12 ++++--------
drivers/reset/reset-ma35d1.c | 11 ++++-------
drivers/reset/reset-npcm.c | 12 ++++--------
drivers/reset/reset-sunplus.c | 12 ++++--------
6 files changed, 22 insertions(+), 48 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/6] reset: ath79: Use devm_register_restart_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
2025-08-13 21:41 ` [PATCH 2/6] reset: intel: " Andrew Davis
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-ath79.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/reset/reset-ath79.c b/drivers/reset/reset-ath79.c
index b5d620132052d..4c4e69eb32bbc 100644
--- a/drivers/reset/reset-ath79.c
+++ b/drivers/reset/reset-ath79.c
@@ -15,7 +15,6 @@
struct ath79_reset {
struct reset_controller_dev rcdev;
- struct notifier_block restart_nb;
void __iomem *base;
spinlock_t lock;
};
@@ -72,11 +71,9 @@ static const struct reset_control_ops ath79_reset_ops = {
.status = ath79_reset_status,
};
-static int ath79_reset_restart_handler(struct notifier_block *nb,
- unsigned long action, void *data)
+static int ath79_reset_restart_handler(struct sys_off_data *data)
{
- struct ath79_reset *ath79_reset =
- container_of(nb, struct ath79_reset, restart_nb);
+ struct ath79_reset *ath79_reset = data->cb_data;
ath79_reset_assert(&ath79_reset->rcdev, FULL_CHIP_RESET);
@@ -108,10 +105,7 @@ static int ath79_reset_probe(struct platform_device *pdev)
if (err)
return err;
- ath79_reset->restart_nb.notifier_call = ath79_reset_restart_handler;
- ath79_reset->restart_nb.priority = 128;
-
- err = register_restart_handler(&ath79_reset->restart_nb);
+ err = devm_register_restart_handler(&pdev->dev, ath79_reset_restart_handler, ath79_reset);
if (err)
dev_warn(&pdev->dev, "Failed to register restart handler\n");
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/6] reset: intel: Use devm_register_restart_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
2025-08-13 21:41 ` [PATCH 1/6] reset: ath79: Use devm_register_restart_handler() Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
2025-08-13 21:41 ` [PATCH 3/6] reset: lpc18xx: Use devm_register_sys_off_handler() Andrew Davis
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-intel-gw.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/reset/reset-intel-gw.c b/drivers/reset/reset-intel-gw.c
index a5a01388ae7fa..97671b99f565a 100644
--- a/drivers/reset/reset-intel-gw.c
+++ b/drivers/reset/reset-intel-gw.c
@@ -28,7 +28,6 @@ struct intel_reset_soc {
struct intel_reset_data {
struct reset_controller_dev rcdev;
- struct notifier_block restart_nb;
const struct intel_reset_soc *soc_data;
struct regmap *regmap;
struct device *dev;
@@ -154,12 +153,10 @@ static int intel_reset_xlate(struct reset_controller_dev *rcdev,
return id;
}
-static int intel_reset_restart_handler(struct notifier_block *nb,
- unsigned long action, void *data)
+static int intel_reset_restart_handler(struct sys_off_data *data)
{
- struct intel_reset_data *reset_data;
+ struct intel_reset_data *reset_data = data->cb_data;
- reset_data = container_of(nb, struct intel_reset_data, restart_nb);
intel_assert_device(&reset_data->rcdev, reset_data->reboot_id);
return NOTIFY_DONE;
@@ -216,9 +213,7 @@ static int intel_reset_probe(struct platform_device *pdev)
if (data->soc_data->legacy)
data->reboot_id |= FIELD_PREP(STAT_BIT_OFFSET_MASK, rb_id[2]);
- data->restart_nb.notifier_call = intel_reset_restart_handler;
- data->restart_nb.priority = 128;
- register_restart_handler(&data->restart_nb);
+ devm_register_restart_handler(&pdev->dev, intel_reset_restart_handler, data);
return 0;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/6] reset: lpc18xx: Use devm_register_sys_off_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
2025-08-13 21:41 ` [PATCH 1/6] reset: ath79: Use devm_register_restart_handler() Andrew Davis
2025-08-13 21:41 ` [PATCH 2/6] reset: intel: " Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
2025-08-13 21:41 ` [PATCH 4/6] reset: ma35d1: " Andrew Davis
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-lpc18xx.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/reset/reset-lpc18xx.c b/drivers/reset/reset-lpc18xx.c
index e42b2f24a93da..8ac9f237e1ceb 100644
--- a/drivers/reset/reset-lpc18xx.c
+++ b/drivers/reset/reset-lpc18xx.c
@@ -31,7 +31,6 @@
struct lpc18xx_rgu_data {
struct reset_controller_dev rcdev;
- struct notifier_block restart_nb;
struct clk *clk_delay;
struct clk *clk_reg;
void __iomem *base;
@@ -41,11 +40,9 @@ struct lpc18xx_rgu_data {
#define to_rgu_data(p) container_of(p, struct lpc18xx_rgu_data, rcdev)
-static int lpc18xx_rgu_restart(struct notifier_block *nb, unsigned long mode,
- void *cmd)
+static int lpc18xx_rgu_restart(struct sys_off_data *data)
{
- struct lpc18xx_rgu_data *rc = container_of(nb, struct lpc18xx_rgu_data,
- restart_nb);
+ struct lpc18xx_rgu_data *rc = data->cb_data;
writel(BIT(LPC18XX_RGU_CORE_RST), rc->base + LPC18XX_RGU_CTRL0);
mdelay(2000);
@@ -178,9 +175,8 @@ static int lpc18xx_rgu_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(&pdev->dev, ret, "unable to register device\n");
- rc->restart_nb.priority = 192,
- rc->restart_nb.notifier_call = lpc18xx_rgu_restart,
- ret = register_restart_handler(&rc->restart_nb);
+ ret = devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART, 192,
+ lpc18xx_rgu_restart, rc);
if (ret)
dev_warn(&pdev->dev, "failed to register restart handler\n");
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/6] reset: ma35d1: Use devm_register_sys_off_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
` (2 preceding siblings ...)
2025-08-13 21:41 ` [PATCH 3/6] reset: lpc18xx: Use devm_register_sys_off_handler() Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
2025-08-13 21:41 ` [PATCH 5/6] reset: npcm: " Andrew Davis
2025-08-13 21:41 ` [PATCH 6/6] reset: sunplus: " Andrew Davis
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-ma35d1.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/reset/reset-ma35d1.c b/drivers/reset/reset-ma35d1.c
index 54e53863c98aa..4ee901f001326 100644
--- a/drivers/reset/reset-ma35d1.c
+++ b/drivers/reset/reset-ma35d1.c
@@ -19,7 +19,6 @@
struct ma35d1_reset_data {
struct reset_controller_dev rcdev;
- struct notifier_block restart_handler;
void __iomem *base;
/* protect registers against concurrent read-modify-write */
spinlock_t lock;
@@ -125,10 +124,9 @@ static const struct {
[MA35D1_RESET_SSPCC] = {0x2C, 31}
};
-static int ma35d1_restart_handler(struct notifier_block *this, unsigned long mode, void *cmd)
+static int ma35d1_restart_handler(struct sys_off_data *sys_off_data)
{
- struct ma35d1_reset_data *data =
- container_of(this, struct ma35d1_reset_data, restart_handler);
+ struct ma35d1_reset_data *data = sys_off_data->cb_data;
u32 id = MA35D1_RESET_CHIP;
writel_relaxed(BIT(ma35d1_reset_map[id].bit),
@@ -213,11 +211,10 @@ static int ma35d1_reset_probe(struct platform_device *pdev)
reset_data->rcdev.nr_resets = MA35D1_RESET_COUNT;
reset_data->rcdev.ops = &ma35d1_reset_ops;
reset_data->rcdev.of_node = dev->of_node;
- reset_data->restart_handler.notifier_call = ma35d1_restart_handler;
- reset_data->restart_handler.priority = 192;
spin_lock_init(&reset_data->lock);
- err = register_restart_handler(&reset_data->restart_handler);
+ err = devm_register_sys_off_handler(dev, SYS_OFF_MODE_RESTART, 192,
+ ma35d1_restart_handler, reset_data);
if (err)
dev_warn(&pdev->dev, "failed to register restart handler\n");
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/6] reset: npcm: Use devm_register_sys_off_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
` (3 preceding siblings ...)
2025-08-13 21:41 ` [PATCH 4/6] reset: ma35d1: " Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
2025-08-13 21:41 ` [PATCH 6/6] reset: sunplus: " Andrew Davis
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-npcm.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/reset/reset-npcm.c b/drivers/reset/reset-npcm.c
index e5b6127783a76..6939bb3eb1507 100644
--- a/drivers/reset/reset-npcm.c
+++ b/drivers/reset/reset-npcm.c
@@ -89,7 +89,6 @@ static const struct npcm_reset_info npxm8xx_reset_info[] = {
struct npcm_rc_data {
struct reset_controller_dev rcdev;
- struct notifier_block restart_nb;
const struct npcm_reset_info *info;
struct regmap *gcr_regmap;
u32 sw_reset_number;
@@ -100,11 +99,9 @@ struct npcm_rc_data {
#define to_rc_data(p) container_of(p, struct npcm_rc_data, rcdev)
-static int npcm_rc_restart(struct notifier_block *nb, unsigned long mode,
- void *cmd)
+static int npcm_rc_restart(struct sys_off_data *data)
{
- struct npcm_rc_data *rc = container_of(nb, struct npcm_rc_data,
- restart_nb);
+ struct npcm_rc_data *rc = data->cb_data;
writel(NPCM_SWRST << rc->sw_reset_number, rc->base + NPCM_SWRSTR);
mdelay(1000);
@@ -472,9 +469,8 @@ static int npcm_rc_probe(struct platform_device *pdev)
if (!of_property_read_u32(pdev->dev.of_node, "nuvoton,sw-reset-number",
&rc->sw_reset_number)) {
if (rc->sw_reset_number && rc->sw_reset_number < 5) {
- rc->restart_nb.priority = 192;
- rc->restart_nb.notifier_call = npcm_rc_restart;
- ret = register_restart_handler(&rc->restart_nb);
+ ret = devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART, 192,
+ npcm_rc_restart, rc);
if (ret) {
dev_warn(&pdev->dev, "failed to register restart handler\n");
return ret;
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 6/6] reset: sunplus: Use devm_register_sys_off_handler()
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
` (4 preceding siblings ...)
2025-08-13 21:41 ` [PATCH 5/6] reset: npcm: " Andrew Davis
@ 2025-08-13 21:41 ` Andrew Davis
5 siblings, 0 replies; 7+ messages in thread
From: Andrew Davis @ 2025-08-13 21:41 UTC (permalink / raw)
To: Philipp Zabel, Vladimir Zapolskiy, Jacky Huang, Shan-Chun Hung,
Qin Jian
Cc: openbmc, linux-arm-kernel, linux-kernel, Andrew Davis
Function register_restart_handler() is deprecated. Using this new API
removes our need to keep and manage a struct notifier_block and to
later unregister the handler.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/reset/reset-sunplus.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/reset/reset-sunplus.c b/drivers/reset/reset-sunplus.c
index df58decab64da..58b0874337598 100644
--- a/drivers/reset/reset-sunplus.c
+++ b/drivers/reset/reset-sunplus.c
@@ -100,7 +100,6 @@ static const u32 sp_resets[] = {
struct sp_reset {
struct reset_controller_dev rcdev;
- struct notifier_block notifier;
void __iomem *base;
};
@@ -154,10 +153,9 @@ static const struct reset_control_ops sp_reset_ops = {
.status = sp_reset_status,
};
-static int sp_restart(struct notifier_block *nb, unsigned long mode,
- void *cmd)
+static int sp_restart(struct sys_off_data *data)
{
- struct sp_reset *reset = container_of(nb, struct sp_reset, notifier);
+ struct sp_reset *reset = data->cb_data;
sp_reset_assert(&reset->rcdev, 0);
sp_reset_deassert(&reset->rcdev, 0);
@@ -189,10 +187,8 @@ static int sp_reset_probe(struct platform_device *pdev)
if (ret)
return ret;
- reset->notifier.notifier_call = sp_restart;
- reset->notifier.priority = 192;
-
- return register_restart_handler(&reset->notifier);
+ return devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART,
+ 192, sp_restart, reset);
}
static const struct of_device_id sp_reset_dt_ids[] = {
--
2.39.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-08-13 22:02 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-13 21:41 [PATCH 0/6] Remove register_restart_handler() from drivers/reset Andrew Davis
2025-08-13 21:41 ` [PATCH 1/6] reset: ath79: Use devm_register_restart_handler() Andrew Davis
2025-08-13 21:41 ` [PATCH 2/6] reset: intel: " Andrew Davis
2025-08-13 21:41 ` [PATCH 3/6] reset: lpc18xx: Use devm_register_sys_off_handler() Andrew Davis
2025-08-13 21:41 ` [PATCH 4/6] reset: ma35d1: " Andrew Davis
2025-08-13 21:41 ` [PATCH 5/6] reset: npcm: " Andrew Davis
2025-08-13 21:41 ` [PATCH 6/6] reset: sunplus: " Andrew Davis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).