linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [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).