* [PATCH 00/18] Remove pm_power_off use in drivers/power/reset
@ 2024-02-01 18:00 Andrew Davis
2024-02-01 18:00 ` [PATCH 01/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
` (17 more replies)
0 siblings, 18 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Hello all,
Use of pm_power_off is considered legacy and should be replaced with
register_sys_off*(). Same for register_restart_handler(). Do this
for the drivers/power/reset subsystem for all trivial cases.
Thanks,
Andrew
Andrew Davis (18):
power: reset: atc260x-poweroff: Use
devm_register_sys_off_handler(RESTART)
power: reset: atc260x-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: xgene-reboot: Use devm_register_sys_off_handler(RESTART)
power: reset: tps65086-restart: Use
devm_register_sys_off_handler(RESTART)
power: reset: tps65086-restart: Remove unneeded device data struct
power: reset: brcm-kona-reset: Use
devm_register_sys_off_handler(RESTART)
power: reset: axxia-reset: Use devm_register_sys_off_handler(RESTART)
power: reset: rmobile-reset: Use devm_platform_ioremap_resource()
helper
power: reset: rmobile-reset: Use
devm_register_sys_off_handler(RESTART)
power: reset: mt6323-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: msm-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: msm-poweroff: Use devm_register_sys_off_handler(RESTART)
power: reset: regulator-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: as3722-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: gemini-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: restart-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
power: reset: syscon-poweroff: Move device data into a struct
power: reset: syscon-poweroff: Use
devm_register_sys_off_handler(POWER_OFF)
drivers/power/reset/as3722-poweroff.c | 30 ++++-------
drivers/power/reset/atc260x-poweroff.c | 55 ++++++++------------
drivers/power/reset/axxia-reset.c | 16 +++---
drivers/power/reset/brcm-kona-reset.c | 18 +++----
drivers/power/reset/gemini-poweroff.c | 16 +++---
drivers/power/reset/msm-poweroff.c | 25 ++++-----
drivers/power/reset/mt6323-poweroff.c | 28 +++++-----
drivers/power/reset/regulator-poweroff.c | 36 +++++--------
drivers/power/reset/restart-poweroff.c | 25 +++------
drivers/power/reset/rmobile-reset.c | 38 +++++---------
drivers/power/reset/syscon-poweroff.c | 66 ++++++++++++------------
drivers/power/reset/tps65086-restart.c | 58 ++++-----------------
drivers/power/reset/xgene-reboot.c | 13 ++---
13 files changed, 158 insertions(+), 266 deletions(-)
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 01/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 02/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
` (16 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/atc260x-poweroff.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/power/reset/atc260x-poweroff.c b/drivers/power/reset/atc260x-poweroff.c
index b4aa50e9685e1..ce2748d3282c3 100644
--- a/drivers/power/reset/atc260x-poweroff.c
+++ b/drivers/power/reset/atc260x-poweroff.c
@@ -16,7 +16,6 @@
struct atc260x_pwrc {
struct device *dev;
struct regmap *regmap;
- struct notifier_block restart_nb;
int (*do_poweroff)(const struct atc260x_pwrc *pwrc, bool restart);
};
@@ -172,11 +171,9 @@ static void atc260x_pwrc_pm_handler(void)
WARN_ONCE(1, "Unable to power off system\n");
}
-static int atc260x_pwrc_restart_handler(struct notifier_block *nb,
- unsigned long mode, void *cmd)
+static int atc260x_pwrc_restart_handler(struct sys_off_data *data)
{
- struct atc260x_pwrc *pwrc = container_of(nb, struct atc260x_pwrc,
- restart_nb);
+ struct atc260x_pwrc *pwrc = data->cb_data;
pwrc->do_poweroff(pwrc, true);
return NOTIFY_DONE;
@@ -194,8 +191,6 @@ static int atc260x_pwrc_probe(struct platform_device *pdev)
priv->dev = &pdev->dev;
priv->regmap = atc260x->regmap;
- priv->restart_nb.notifier_call = atc260x_pwrc_restart_handler;
- priv->restart_nb.priority = 192;
switch (atc260x->ic_type) {
case ATC2603C:
@@ -225,7 +220,11 @@ static int atc260x_pwrc_probe(struct platform_device *pdev)
dev_warn(priv->dev, "Poweroff callback already assigned\n");
}
- ret = register_restart_handler(&priv->restart_nb);
+ ret = devm_register_sys_off_handler(priv->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_HIGH,
+ atc260x_pwrc_restart_handler,
+ priv);
if (ret)
dev_err(priv->dev, "failed to register restart handler: %d\n",
ret);
@@ -241,8 +240,6 @@ static void atc260x_pwrc_remove(struct platform_device *pdev)
pm_power_off = NULL;
atc260x_pwrc_data = NULL;
}
-
- unregister_restart_handler(&priv->restart_nb);
}
static struct platform_driver atc260x_pwrc_driver = {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 02/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
2024-02-01 18:00 ` [PATCH 01/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 03/18] power: reset: xgene-reboot: Use devm_register_sys_off_handler(RESTART) Andrew Davis
` (15 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/atc260x-poweroff.c | 38 ++++++++++----------------
1 file changed, 14 insertions(+), 24 deletions(-)
diff --git a/drivers/power/reset/atc260x-poweroff.c b/drivers/power/reset/atc260x-poweroff.c
index ce2748d3282c3..e3e4621ccb1dd 100644
--- a/drivers/power/reset/atc260x-poweroff.c
+++ b/drivers/power/reset/atc260x-poweroff.c
@@ -19,9 +19,6 @@ struct atc260x_pwrc {
int (*do_poweroff)(const struct atc260x_pwrc *pwrc, bool restart);
};
-/* Global variable needed only for pm_power_off */
-static struct atc260x_pwrc *atc260x_pwrc_data;
-
static int atc2603c_do_poweroff(const struct atc260x_pwrc *pwrc, bool restart)
{
int ret, deep_sleep = 0;
@@ -164,11 +161,15 @@ static int atc2609a_init(const struct atc260x_pwrc *pwrc)
return ret;
}
-static void atc260x_pwrc_pm_handler(void)
+static int atc260x_pwrc_pm_handler(struct sys_off_data *data)
{
- atc260x_pwrc_data->do_poweroff(atc260x_pwrc_data, false);
+ struct atc260x_pwrc *pwrc = data->cb_data;
+
+ pwrc->do_poweroff(pwrc, false);
WARN_ONCE(1, "Unable to power off system\n");
+
+ return NOTIFY_DONE;
}
static int atc260x_pwrc_restart_handler(struct sys_off_data *data)
@@ -211,14 +212,14 @@ static int atc260x_pwrc_probe(struct platform_device *pdev)
if (ret)
return ret;
- platform_set_drvdata(pdev, priv);
-
- if (!pm_power_off) {
- atc260x_pwrc_data = priv;
- pm_power_off = atc260x_pwrc_pm_handler;
- } else {
- dev_warn(priv->dev, "Poweroff callback already assigned\n");
- }
+ ret = devm_register_sys_off_handler(priv->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT,
+ atc260x_pwrc_pm_handler,
+ priv);
+ if (ret)
+ dev_err(priv->dev, "failed to register power-off handler: %d\n",
+ ret);
ret = devm_register_sys_off_handler(priv->dev,
SYS_OFF_MODE_RESTART,
@@ -232,19 +233,8 @@ static int atc260x_pwrc_probe(struct platform_device *pdev)
return ret;
}
-static void atc260x_pwrc_remove(struct platform_device *pdev)
-{
- struct atc260x_pwrc *priv = platform_get_drvdata(pdev);
-
- if (atc260x_pwrc_data == priv) {
- pm_power_off = NULL;
- atc260x_pwrc_data = NULL;
- }
-}
-
static struct platform_driver atc260x_pwrc_driver = {
.probe = atc260x_pwrc_probe,
- .remove_new = atc260x_pwrc_remove,
.driver = {
.name = "atc260x-pwrc",
},
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 03/18] power: reset: xgene-reboot: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
2024-02-01 18:00 ` [PATCH 01/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-01 18:00 ` [PATCH 02/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 04/18] power: reset: tps65086-restart: " Andrew Davis
` (14 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/xgene-reboot.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/power/reset/xgene-reboot.c b/drivers/power/reset/xgene-reboot.c
index c2e5a99940d37..5c923ab838a55 100644
--- a/drivers/power/reset/xgene-reboot.c
+++ b/drivers/power/reset/xgene-reboot.c
@@ -24,15 +24,11 @@ struct xgene_reboot_context {
struct device *dev;
void *csr;
u32 mask;
- struct notifier_block restart_handler;
};
-static int xgene_restart_handler(struct notifier_block *this,
- unsigned long mode, void *cmd)
+static int xgene_restart_handler(struct sys_off_data *data)
{
- struct xgene_reboot_context *ctx =
- container_of(this, struct xgene_reboot_context,
- restart_handler);
+ struct xgene_reboot_context *ctx = data->cb_data;
/* Issue the reboot */
writel(ctx->mask, ctx->csr);
@@ -64,9 +60,8 @@ static int xgene_reboot_probe(struct platform_device *pdev)
ctx->mask = 0xFFFFFFFF;
ctx->dev = dev;
- ctx->restart_handler.notifier_call = xgene_restart_handler;
- ctx->restart_handler.priority = 128;
- err = register_restart_handler(&ctx->restart_handler);
+ err = devm_register_sys_off_handler(dev, SYS_OFF_MODE_RESTART, 128,
+ xgene_restart_handler, ctx);
if (err) {
iounmap(ctx->csr);
dev_err(dev, "cannot register restart handler (err=%d)\n", err);
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 04/18] power: reset: tps65086-restart: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (2 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 03/18] power: reset: xgene-reboot: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 05/18] power: reset: tps65086-restart: Remove unneeded device data struct Andrew Davis
` (13 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/tps65086-restart.c | 35 ++++++--------------------
1 file changed, 7 insertions(+), 28 deletions(-)
diff --git a/drivers/power/reset/tps65086-restart.c b/drivers/power/reset/tps65086-restart.c
index ee8e9f4b837ea..82d7a761a0385 100644
--- a/drivers/power/reset/tps65086-restart.c
+++ b/drivers/power/reset/tps65086-restart.c
@@ -10,15 +10,12 @@
#include <linux/reboot.h>
struct tps65086_restart {
- struct notifier_block handler;
struct device *dev;
};
-static int tps65086_restart_notify(struct notifier_block *this,
- unsigned long mode, void *cmd)
+static int tps65086_restart_notify(struct sys_off_data *data)
{
- struct tps65086_restart *tps65086_restart =
- container_of(this, struct tps65086_restart, handler);
+ struct tps65086_restart *tps65086_restart = data->cb_data;
struct tps65086 *tps65086 = dev_get_drvdata(tps65086_restart->dev->parent);
int ret;
@@ -46,13 +43,13 @@ static int tps65086_restart_probe(struct platform_device *pdev)
if (!tps65086_restart)
return -ENOMEM;
- platform_set_drvdata(pdev, tps65086_restart);
-
- tps65086_restart->handler.notifier_call = tps65086_restart_notify;
- tps65086_restart->handler.priority = 192;
tps65086_restart->dev = &pdev->dev;
- ret = register_restart_handler(&tps65086_restart->handler);
+ ret = devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_HIGH,
+ tps65086_restart_notify,
+ tps65086_restart);
if (ret) {
dev_err(&pdev->dev, "%s: cannot register restart handler: %d\n",
__func__, ret);
@@ -62,23 +59,6 @@ static int tps65086_restart_probe(struct platform_device *pdev)
return 0;
}
-static void tps65086_restart_remove(struct platform_device *pdev)
-{
- struct tps65086_restart *tps65086_restart = platform_get_drvdata(pdev);
- int ret;
-
- ret = unregister_restart_handler(&tps65086_restart->handler);
- if (ret) {
- /*
- * tps65086_restart_probe() registered the restart handler. So
- * unregistering should work fine. Checking the error code
- * shouldn't be needed, still doing it for completeness.
- */
- dev_err(&pdev->dev, "%s: cannot unregister restart handler: %d\n",
- __func__, ret);
- }
-}
-
static const struct platform_device_id tps65086_restart_id_table[] = {
{ "tps65086-reset", },
{ /* sentinel */ }
@@ -90,7 +70,6 @@ static struct platform_driver tps65086_restart_driver = {
.name = "tps65086-restart",
},
.probe = tps65086_restart_probe,
- .remove_new = tps65086_restart_remove,
.id_table = tps65086_restart_id_table,
};
module_platform_driver(tps65086_restart_driver);
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 05/18] power: reset: tps65086-restart: Remove unneeded device data struct
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (3 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 04/18] power: reset: tps65086-restart: " Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
` (12 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
We only need one member of the struct tps65086_restart, pass that
tps65086_restart_notify() directly. Remove that struct and its
allocation.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/tps65086-restart.c | 35 ++++++--------------------
1 file changed, 8 insertions(+), 27 deletions(-)
diff --git a/drivers/power/reset/tps65086-restart.c b/drivers/power/reset/tps65086-restart.c
index 82d7a761a0385..6976dbcac74fa 100644
--- a/drivers/power/reset/tps65086-restart.c
+++ b/drivers/power/reset/tps65086-restart.c
@@ -9,19 +9,14 @@
#include <linux/platform_device.h>
#include <linux/reboot.h>
-struct tps65086_restart {
- struct device *dev;
-};
-
static int tps65086_restart_notify(struct sys_off_data *data)
{
- struct tps65086_restart *tps65086_restart = data->cb_data;
- struct tps65086 *tps65086 = dev_get_drvdata(tps65086_restart->dev->parent);
+ struct tps65086 *tps65086 = data->cb_data;
int ret;
ret = regmap_write(tps65086->regmap, TPS65086_FORCESHUTDN, 1);
if (ret) {
- dev_err(tps65086_restart->dev, "%s: error writing to tps65086 pmic: %d\n",
+ dev_err(tps65086->dev, "%s: error writing to tps65086 pmic: %d\n",
__func__, ret);
return NOTIFY_DONE;
}
@@ -36,27 +31,13 @@ static int tps65086_restart_notify(struct sys_off_data *data)
static int tps65086_restart_probe(struct platform_device *pdev)
{
- struct tps65086_restart *tps65086_restart;
- int ret;
-
- tps65086_restart = devm_kzalloc(&pdev->dev, sizeof(*tps65086_restart), GFP_KERNEL);
- if (!tps65086_restart)
- return -ENOMEM;
-
- tps65086_restart->dev = &pdev->dev;
-
- ret = devm_register_sys_off_handler(&pdev->dev,
- SYS_OFF_MODE_RESTART,
- SYS_OFF_PRIO_HIGH,
- tps65086_restart_notify,
- tps65086_restart);
- if (ret) {
- dev_err(&pdev->dev, "%s: cannot register restart handler: %d\n",
- __func__, ret);
- return -ENODEV;
- }
+ struct tps65086 *tps65086 = dev_get_drvdata(pdev->dev.parent);
- return 0;
+ return devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_HIGH,
+ tps65086_restart_notify,
+ tps65086);
}
static const struct platform_device_id tps65086_restart_id_table[] = {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (4 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 05/18] power: reset: tps65086-restart: Remove unneeded device data struct Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-02 15:42 ` kernel test robot
2024-02-01 18:00 ` [PATCH 07/18] power: reset: axxia-reset: " Andrew Davis
` (11 subsequent siblings)
17 siblings, 1 reply; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/brcm-kona-reset.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/power/reset/brcm-kona-reset.c b/drivers/power/reset/brcm-kona-reset.c
index d05728b1db097..4bb956c8f24f8 100644
--- a/drivers/power/reset/brcm-kona-reset.c
+++ b/drivers/power/reset/brcm-kona-reset.c
@@ -13,11 +13,10 @@
#define RSTMGR_WR_PASSWORD_SHIFT 8
#define RSTMGR_WR_ACCESS_ENABLE 1
-static void __iomem *kona_reset_base;
-
-static int kona_reset_handler(struct notifier_block *this,
- unsigned long mode, void *cmd)
+static int kona_reset_handler(struct sys_off_data *data)
{
+ void __iomem *kona_reset_base = data->cb_data;
+
/*
* A soft reset is triggered by writing a 0 to bit 0 of the soft reset
* register. To write to that register we must first write the password
@@ -31,18 +30,17 @@ static int kona_reset_handler(struct notifier_block *this,
return NOTIFY_DONE;
}
-static struct notifier_block kona_reset_nb = {
- .notifier_call = kona_reset_handler,
- .priority = 128,
-};
-
static int kona_reset_probe(struct platform_device *pdev)
{
+ void __iomem *kona_reset_base;
+
kona_reset_base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(kona_reset_base))
return PTR_ERR(kona_reset_base);
- return register_restart_handler(&kona_reset_nb);
+ return devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART,
+ 128, kona_reset_handler,
+ kona_reset_base);
}
static const struct of_device_id of_match[] = {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 07/18] power: reset: axxia-reset: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (5 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 08/18] power: reset: rmobile-reset: Use devm_platform_ioremap_resource() helper Andrew Davis
` (10 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/axxia-reset.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/drivers/power/reset/axxia-reset.c b/drivers/power/reset/axxia-reset.c
index 24946766760c3..797bf6773860e 100644
--- a/drivers/power/reset/axxia-reset.c
+++ b/drivers/power/reset/axxia-reset.c
@@ -26,11 +26,10 @@
#define SC_EFUSE_INT_STATUS 0x180c
#define EFUSE_READ_DONE (1<<31)
-static struct regmap *syscon;
-
-static int axxia_restart_handler(struct notifier_block *this,
- unsigned long mode, void *cmd)
+static int axxia_restart_handler(struct sys_off_data *data)
{
+ struct regmap *syscon = data->cb_data;
+
/* Access Key (0xab) */
regmap_write(syscon, SC_CRIT_WRITE_KEY, 0xab);
/* Select internal boot from 0xffff0000 */
@@ -44,14 +43,10 @@ static int axxia_restart_handler(struct notifier_block *this,
return NOTIFY_DONE;
}
-static struct notifier_block axxia_restart_nb = {
- .notifier_call = axxia_restart_handler,
- .priority = 128,
-};
-
static int axxia_reset_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
+ struct regmap *syscon;
int err;
syscon = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
@@ -60,7 +55,8 @@ static int axxia_reset_probe(struct platform_device *pdev)
return PTR_ERR(syscon);
}
- err = register_restart_handler(&axxia_restart_nb);
+ err = devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART,
+ 128, axxia_restart_handler, syscon);
if (err)
dev_err(dev, "cannot register restart handler (err=%d)\n", err);
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 08/18] power: reset: rmobile-reset: Use devm_platform_ioremap_resource() helper
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (6 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 07/18] power: reset: axxia-reset: " Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
` (9 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed ioremap function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/rmobile-reset.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/power/reset/rmobile-reset.c b/drivers/power/reset/rmobile-reset.c
index 5df9b41c68c79..29c17ed2d4de9 100644
--- a/drivers/power/reset/rmobile-reset.c
+++ b/drivers/power/reset/rmobile-reset.c
@@ -41,28 +41,23 @@ static int rmobile_reset_probe(struct platform_device *pdev)
{
int error;
- sysc_base2 = of_iomap(pdev->dev.of_node, 1);
- if (!sysc_base2)
- return -ENODEV;
+ sysc_base2 = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(sysc_base2))
+ return PTR_ERR(sysc_base2);
error = register_restart_handler(&rmobile_reset_nb);
if (error) {
dev_err(&pdev->dev,
"cannot register restart handler (err=%d)\n", error);
- goto fail_unmap;
+ return error;
}
return 0;
-
-fail_unmap:
- iounmap(sysc_base2);
- return error;
}
static void rmobile_reset_remove(struct platform_device *pdev)
{
unregister_restart_handler(&rmobile_reset_nb);
- iounmap(sysc_base2);
}
static const struct of_device_id rmobile_reset_of_match[] = {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (7 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 08/18] power: reset: rmobile-reset: Use devm_platform_ioremap_resource() helper Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-03 4:20 ` kernel test robot
2024-02-01 18:00 ` [PATCH 10/18] power: reset: mt6323-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
` (8 subsequent siblings)
17 siblings, 1 reply; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/rmobile-reset.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/power/reset/rmobile-reset.c b/drivers/power/reset/rmobile-reset.c
index 29c17ed2d4de9..41e98ff33a3c3 100644
--- a/drivers/power/reset/rmobile-reset.c
+++ b/drivers/power/reset/rmobile-reset.c
@@ -19,12 +19,9 @@
/* Reset Control Register 2 */
#define RESCNT2_PRES 0x80000000 /* Soft power-on reset */
-static void __iomem *sysc_base2;
-
-static int rmobile_reset_handler(struct notifier_block *this,
- unsigned long mode, void *cmd)
+static int rmobile_reset_handler(struct sys_off_data *data)
{
- pr_debug("%s %lu\n", __func__, mode);
+ void __iomem *sysc_base2 = data->cb_data;
/* Let's assume we have acquired the HPB semaphore */
writel(RESCNT2_PRES, sysc_base2 + RESCNT2);
@@ -32,20 +29,20 @@ static int rmobile_reset_handler(struct notifier_block *this,
return NOTIFY_DONE;
}
-static struct notifier_block rmobile_reset_nb = {
- .notifier_call = rmobile_reset_handler,
- .priority = 192,
-};
-
static int rmobile_reset_probe(struct platform_device *pdev)
{
+ void __iomem *sysc_base2;
int error;
sysc_base2 = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(sysc_base2))
return PTR_ERR(sysc_base2);
- error = register_restart_handler(&rmobile_reset_nb);
+ error = devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_HIGH,
+ rmobile_reset_handler,
+ sysc_base2);
if (error) {
dev_err(&pdev->dev,
"cannot register restart handler (err=%d)\n", error);
@@ -55,11 +52,6 @@ static int rmobile_reset_probe(struct platform_device *pdev)
return 0;
}
-static void rmobile_reset_remove(struct platform_device *pdev)
-{
- unregister_restart_handler(&rmobile_reset_nb);
-}
-
static const struct of_device_id rmobile_reset_of_match[] = {
{ .compatible = "renesas,sysc-rmobile", },
{ /* sentinel */ }
@@ -68,7 +60,6 @@ MODULE_DEVICE_TABLE(of, rmobile_reset_of_match);
static struct platform_driver rmobile_reset_driver = {
.probe = rmobile_reset_probe,
- .remove_new = rmobile_reset_remove,
.driver = {
.name = "rmobile_reset",
.of_match_table = rmobile_reset_of_match,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 10/18] power: reset: mt6323-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (8 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 11/18] power: reset: msm-poweroff: " Andrew Davis
` (7 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/mt6323-poweroff.c | 28 ++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/drivers/power/reset/mt6323-poweroff.c b/drivers/power/reset/mt6323-poweroff.c
index 57a63c0ab7fb7..ca5d11b17ff03 100644
--- a/drivers/power/reset/mt6323-poweroff.c
+++ b/drivers/power/reset/mt6323-poweroff.c
@@ -14,6 +14,7 @@
#include <linux/platform_device.h>
#include <linux/mfd/mt6397/core.h>
#include <linux/mfd/mt6397/rtc.h>
+#include <linux/reboot.h>
struct mt6323_pwrc {
struct device *dev;
@@ -21,11 +22,9 @@ struct mt6323_pwrc {
u32 base;
};
-static struct mt6323_pwrc *mt_pwrc;
-
-static void mt6323_do_pwroff(void)
+static int mt6323_do_pwroff(struct sys_off_data *data)
{
- struct mt6323_pwrc *pwrc = mt_pwrc;
+ struct mt6323_pwrc *pwrc = data->cb_data;
unsigned int val;
int ret;
@@ -44,6 +43,8 @@ static void mt6323_do_pwroff(void)
mdelay(1000);
WARN_ONCE(1, "Unable to power off system\n");
+
+ return NOTIFY_DONE;
}
static int mt6323_pwrc_probe(struct platform_device *pdev)
@@ -51,6 +52,7 @@ static int mt6323_pwrc_probe(struct platform_device *pdev)
struct mt6397_chip *mt6397_chip = dev_get_drvdata(pdev->dev.parent);
struct mt6323_pwrc *pwrc;
struct resource *res;
+ int ret;
pwrc = devm_kzalloc(&pdev->dev, sizeof(*pwrc), GFP_KERNEL);
if (!pwrc)
@@ -63,19 +65,20 @@ static int mt6323_pwrc_probe(struct platform_device *pdev)
pwrc->base = res->start;
pwrc->regmap = mt6397_chip->regmap;
pwrc->dev = &pdev->dev;
- mt_pwrc = pwrc;
- pm_power_off = &mt6323_do_pwroff;
+ ret = devm_register_sys_off_handler(pwrc->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT,
+ mt6323_do_pwroff,
+ pwrc);
+ if (ret) {
+ dev_err(pwrc->dev, "failed to register power-off handler: %d\n", ret);
+ return ret;
+ }
return 0;
}
-static void mt6323_pwrc_remove(struct platform_device *pdev)
-{
- if (pm_power_off == &mt6323_do_pwroff)
- pm_power_off = NULL;
-}
-
static const struct of_device_id mt6323_pwrc_dt_match[] = {
{ .compatible = "mediatek,mt6323-pwrc" },
{},
@@ -84,7 +87,6 @@ MODULE_DEVICE_TABLE(of, mt6323_pwrc_dt_match);
static struct platform_driver mt6323_pwrc_driver = {
.probe = mt6323_pwrc_probe,
- .remove_new = mt6323_pwrc_remove,
.driver = {
.name = "mt6323-pwrc",
.of_match_table = mt6323_pwrc_dt_match,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 11/18] power: reset: msm-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (9 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 10/18] power: reset: mt6323-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 12/18] power: reset: msm-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
` (6 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use this helper to register sys_off handler. Drivers should move away from
setting pm_power_off directly as it only allows for one handler. The new
way allows for trying multiple if the first one doesn't work.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/msm-poweroff.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/power/reset/msm-poweroff.c b/drivers/power/reset/msm-poweroff.c
index d96d248a6e25b..bcf04491e7022 100644
--- a/drivers/power/reset/msm-poweroff.c
+++ b/drivers/power/reset/msm-poweroff.c
@@ -28,9 +28,11 @@ static struct notifier_block restart_nb = {
.priority = 128,
};
-static void do_msm_poweroff(void)
+static int do_msm_poweroff(struct sys_off_data *data)
{
deassert_pshold(&restart_nb, 0, NULL);
+
+ return NOTIFY_DONE;
}
static int msm_restart_probe(struct platform_device *pdev)
@@ -41,7 +43,9 @@ static int msm_restart_probe(struct platform_device *pdev)
register_restart_handler(&restart_nb);
- pm_power_off = do_msm_poweroff;
+ devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT, do_msm_poweroff,
+ msm_ps_hold);
return 0;
}
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 12/18] power: reset: msm-poweroff: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (10 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 11/18] power: reset: msm-poweroff: " Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 13/18] power: reset: regulator-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
` (5 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/msm-poweroff.c | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/drivers/power/reset/msm-poweroff.c b/drivers/power/reset/msm-poweroff.c
index bcf04491e7022..c5831c46f69e2 100644
--- a/drivers/power/reset/msm-poweroff.c
+++ b/drivers/power/reset/msm-poweroff.c
@@ -13,35 +13,24 @@
#include <linux/reboot.h>
#include <linux/pm.h>
-static void __iomem *msm_ps_hold;
-static int deassert_pshold(struct notifier_block *nb, unsigned long action,
- void *data)
+static int do_msm_poweroff(struct sys_off_data *data)
{
+ void __iomem *msm_ps_hold = data->cb_data;
+
writel(0, msm_ps_hold);
mdelay(10000);
return NOTIFY_DONE;
}
-static struct notifier_block restart_nb = {
- .notifier_call = deassert_pshold,
- .priority = 128,
-};
-
-static int do_msm_poweroff(struct sys_off_data *data)
-{
- deassert_pshold(&restart_nb, 0, NULL);
-
- return NOTIFY_DONE;
-}
-
static int msm_restart_probe(struct platform_device *pdev)
{
- msm_ps_hold = devm_platform_ioremap_resource(pdev, 0);
+ void __iomem *msm_ps_hold = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(msm_ps_hold))
return PTR_ERR(msm_ps_hold);
- register_restart_handler(&restart_nb);
+ devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART,
+ 128, do_msm_poweroff, msm_ps_hold);
devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_POWER_OFF,
SYS_OFF_PRIO_DEFAULT, do_msm_poweroff,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 13/18] power: reset: regulator-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (11 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 12/18] power: reset: msm-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 14/18] power: reset: as3722-poweroff: " Andrew Davis
` (4 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/regulator-poweroff.c | 36 +++++++++---------------
1 file changed, 13 insertions(+), 23 deletions(-)
diff --git a/drivers/power/reset/regulator-poweroff.c b/drivers/power/reset/regulator-poweroff.c
index 15160809c423a..fed4978e38580 100644
--- a/drivers/power/reset/regulator-poweroff.c
+++ b/drivers/power/reset/regulator-poweroff.c
@@ -13,18 +13,15 @@
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm.h>
+#include <linux/reboot.h>
#include <linux/regulator/consumer.h>
#define TIMEOUT_MS 3000
-/*
- * Hold configuration here, cannot be more than one instance of the driver
- * since pm_power_off itself is global.
- */
-static struct regulator *cpu_regulator;
-
-static void regulator_poweroff_do_poweroff(void)
+static int regulator_poweroff_do_poweroff(struct sys_off_data *data)
{
+ struct regulator *cpu_regulator = data->cb_data;
+
if (cpu_regulator && regulator_is_enabled(cpu_regulator))
regulator_force_disable(cpu_regulator);
@@ -32,30 +29,24 @@ static void regulator_poweroff_do_poweroff(void)
mdelay(TIMEOUT_MS);
WARN_ON(1);
+
+ return NOTIFY_DONE;
}
static int regulator_poweroff_probe(struct platform_device *pdev)
{
- /* If a pm_power_off function has already been added, leave it alone */
- if (pm_power_off != NULL) {
- dev_err(&pdev->dev,
- "%s: pm_power_off function already registered\n",
- __func__);
- return -EBUSY;
- }
+ struct regulator *cpu_regulator;
cpu_regulator = devm_regulator_get(&pdev->dev, "cpu");
if (IS_ERR(cpu_regulator))
return PTR_ERR(cpu_regulator);
- pm_power_off = ®ulator_poweroff_do_poweroff;
- return 0;
-}
-
-static void regulator_poweroff_remove(struct platform_device *pdev)
-{
- if (pm_power_off == ®ulator_poweroff_do_poweroff)
- pm_power_off = NULL;
+ /* Set this handler to low priority to not override an existing handler */
+ return devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_LOW,
+ regulator_poweroff_do_poweroff,
+ cpu_regulator);
}
static const struct of_device_id of_regulator_poweroff_match[] = {
@@ -66,7 +57,6 @@ MODULE_DEVICE_TABLE(of, of_regulator_poweroff_match);
static struct platform_driver regulator_poweroff_driver = {
.probe = regulator_poweroff_probe,
- .remove_new = regulator_poweroff_remove,
.driver = {
.name = "poweroff-regulator",
.of_match_table = of_regulator_poweroff_match,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 14/18] power: reset: as3722-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (12 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 13/18] power: reset: regulator-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:00 ` [PATCH 15/18] power: reset: gemini-poweroff: " Andrew Davis
` (3 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/as3722-poweroff.c | 30 ++++++++++-----------------
1 file changed, 11 insertions(+), 19 deletions(-)
diff --git a/drivers/power/reset/as3722-poweroff.c b/drivers/power/reset/as3722-poweroff.c
index ab3350ce2d621..bb26fa6fa67ca 100644
--- a/drivers/power/reset/as3722-poweroff.c
+++ b/drivers/power/reset/as3722-poweroff.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
+#include <linux/reboot.h>
#include <linux/slab.h>
struct as3722_poweroff {
@@ -18,22 +19,18 @@ struct as3722_poweroff {
struct as3722 *as3722;
};
-static struct as3722_poweroff *as3722_pm_poweroff;
-
-static void as3722_pm_power_off(void)
+static int as3722_pm_power_off(struct sys_off_data *data)
{
+ struct as3722_poweroff *as3722_pm_poweroff = data->cb_data;
int ret;
- if (!as3722_pm_poweroff) {
- pr_err("AS3722 poweroff is not initialised\n");
- return;
- }
-
ret = as3722_update_bits(as3722_pm_poweroff->as3722,
AS3722_RESET_CONTROL_REG, AS3722_POWER_OFF, AS3722_POWER_OFF);
if (ret < 0)
dev_err(as3722_pm_poweroff->dev,
"RESET_CONTROL_REG update failed, %d\n", ret);
+
+ return NOTIFY_DONE;
}
static int as3722_poweroff_probe(struct platform_device *pdev)
@@ -54,18 +51,14 @@ static int as3722_poweroff_probe(struct platform_device *pdev)
as3722_poweroff->as3722 = dev_get_drvdata(pdev->dev.parent);
as3722_poweroff->dev = &pdev->dev;
- as3722_pm_poweroff = as3722_poweroff;
- if (!pm_power_off)
- pm_power_off = as3722_pm_power_off;
- return 0;
-}
+ return devm_register_sys_off_handler(as3722_poweroff->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT,
+ as3722_pm_power_off,
+ as3722_poweroff);
-static void as3722_poweroff_remove(struct platform_device *pdev)
-{
- if (pm_power_off == as3722_pm_power_off)
- pm_power_off = NULL;
- as3722_pm_poweroff = NULL;
+ return 0;
}
static struct platform_driver as3722_poweroff_driver = {
@@ -73,7 +66,6 @@ static struct platform_driver as3722_poweroff_driver = {
.name = "as3722-power-off",
},
.probe = as3722_poweroff_probe,
- .remove_new = as3722_poweroff_remove,
};
module_platform_driver(as3722_poweroff_driver);
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 15/18] power: reset: gemini-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (13 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 14/18] power: reset: as3722-poweroff: " Andrew Davis
@ 2024-02-01 18:00 ` Andrew Davis
2024-02-01 18:01 ` [PATCH 16/18] power: reset: restart-poweroff: " Andrew Davis
` (2 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:00 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/gemini-poweroff.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/power/reset/gemini-poweroff.c b/drivers/power/reset/gemini-poweroff.c
index d309b610142ce..06d6992dec892 100644
--- a/drivers/power/reset/gemini-poweroff.c
+++ b/drivers/power/reset/gemini-poweroff.c
@@ -70,12 +70,9 @@ static irqreturn_t gemini_powerbutton_interrupt(int irq, void *data)
return IRQ_HANDLED;
}
-/* This callback needs this static local as it has void as argument */
-static struct gemini_powercon *gpw_poweroff;
-
-static void gemini_poweroff(void)
+static int gemini_poweroff(struct sys_off_data *data)
{
- struct gemini_powercon *gpw = gpw_poweroff;
+ struct gemini_powercon *gpw = data->cb_data;
u32 val;
dev_crit(gpw->dev, "Gemini power off\n");
@@ -86,6 +83,8 @@ static void gemini_poweroff(void)
val &= ~GEMINI_CTRL_ENABLE;
val |= GEMINI_CTRL_SHUTDOWN;
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
+
+ return NOTIFY_DONE;
}
static int gemini_poweroff_probe(struct platform_device *pdev)
@@ -148,8 +147,11 @@ static int gemini_poweroff_probe(struct platform_device *pdev)
if (ret)
return ret;
- pm_power_off = gemini_poweroff;
- gpw_poweroff = gpw;
+ ret = devm_register_sys_off_handler(dev, SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT,
+ gemini_poweroff, gpw);
+ if (ret)
+ return ret;
dev_info(dev, "Gemini poweroff driver registered\n");
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 16/18] power: reset: restart-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (14 preceding siblings ...)
2024-02-01 18:00 ` [PATCH 15/18] power: reset: gemini-poweroff: " Andrew Davis
@ 2024-02-01 18:01 ` Andrew Davis
2024-02-01 18:01 ` [PATCH 17/18] power: reset: syscon-poweroff: Move device data into a struct Andrew Davis
2024-02-01 18:01 ` [PATCH 18/18] power: reset: syscon-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:01 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/restart-poweroff.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/power/reset/restart-poweroff.c b/drivers/power/reset/restart-poweroff.c
index f4d6004793d3a..fcd588f9ae9d3 100644
--- a/drivers/power/reset/restart-poweroff.c
+++ b/drivers/power/reset/restart-poweroff.c
@@ -14,29 +14,21 @@
#include <linux/module.h>
#include <linux/reboot.h>
-static void restart_poweroff_do_poweroff(void)
+static int restart_poweroff_do_poweroff(struct sys_off_data *data)
{
reboot_mode = REBOOT_HARD;
machine_restart(NULL);
+ return NOTIFY_DONE;
}
static int restart_poweroff_probe(struct platform_device *pdev)
{
- /* If a pm_power_off function has already been added, leave it alone */
- if (pm_power_off != NULL) {
- dev_err(&pdev->dev,
- "pm_power_off function already registered");
- return -EBUSY;
- }
-
- pm_power_off = &restart_poweroff_do_poweroff;
- return 0;
-}
-
-static void restart_poweroff_remove(struct platform_device *pdev)
-{
- if (pm_power_off == &restart_poweroff_do_poweroff)
- pm_power_off = NULL;
+ /* Set this handler to low priority to not override an existing handler */
+ return devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_LOW,
+ restart_poweroff_do_poweroff,
+ NULL);
}
static const struct of_device_id of_restart_poweroff_match[] = {
@@ -47,7 +39,6 @@ MODULE_DEVICE_TABLE(of, of_restart_poweroff_match);
static struct platform_driver restart_poweroff_driver = {
.probe = restart_poweroff_probe,
- .remove_new = restart_poweroff_remove,
.driver = {
.name = "poweroff-restart",
.of_match_table = of_restart_poweroff_match,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 17/18] power: reset: syscon-poweroff: Move device data into a struct
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (15 preceding siblings ...)
2024-02-01 18:01 ` [PATCH 16/18] power: reset: restart-poweroff: " Andrew Davis
@ 2024-02-01 18:01 ` Andrew Davis
2024-02-01 18:01 ` [PATCH 18/18] power: reset: syscon-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:01 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Currently all these device data elements are top level global variables.
Move these into a struct. This will be used in the next patch when
the global variable usage is removed. Doing this in two steps makes
the patches easier to read.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/syscon-poweroff.c | 36 +++++++++++++++------------
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/drivers/power/reset/syscon-poweroff.c b/drivers/power/reset/syscon-poweroff.c
index 1b2ce7734260c..4899a019256e8 100644
--- a/drivers/power/reset/syscon-poweroff.c
+++ b/drivers/power/reset/syscon-poweroff.c
@@ -15,15 +15,19 @@
#include <linux/pm.h>
#include <linux/regmap.h>
-static struct regmap *map;
-static u32 offset;
-static u32 value;
-static u32 mask;
+struct syscon_poweroff_data {
+ struct regmap *map;
+ u32 offset;
+ u32 value;
+ u32 mask;
+};
+
+static struct syscon_poweroff_data *data;
static void syscon_poweroff(void)
{
/* Issue the poweroff */
- regmap_update_bits(map, offset, mask, value);
+ regmap_update_bits(data->map, data->offset, data->mask, data->value);
mdelay(1000);
@@ -35,22 +39,22 @@ static int syscon_poweroff_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
int mask_err, value_err;
- map = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap");
- if (IS_ERR(map)) {
- map = syscon_node_to_regmap(dev->parent->of_node);
- if (IS_ERR(map)) {
+ data->map = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap");
+ if (IS_ERR(data->map)) {
+ data->map = syscon_node_to_regmap(dev->parent->of_node);
+ if (IS_ERR(data->map)) {
dev_err(dev, "unable to get syscon");
- return PTR_ERR(map);
+ return PTR_ERR(data->map);
}
}
- if (of_property_read_u32(dev->of_node, "offset", &offset)) {
+ if (of_property_read_u32(dev->of_node, "offset", &data->offset)) {
dev_err(dev, "unable to read 'offset'");
return -EINVAL;
}
- value_err = of_property_read_u32(dev->of_node, "value", &value);
- mask_err = of_property_read_u32(dev->of_node, "mask", &mask);
+ value_err = of_property_read_u32(dev->of_node, "value", &data->value);
+ mask_err = of_property_read_u32(dev->of_node, "mask", &data->mask);
if (value_err && mask_err) {
dev_err(dev, "unable to read 'value' and 'mask'");
return -EINVAL;
@@ -58,11 +62,11 @@ static int syscon_poweroff_probe(struct platform_device *pdev)
if (value_err) {
/* support old binding */
- value = mask;
- mask = 0xFFFFFFFF;
+ data->value = data->mask;
+ data->mask = 0xFFFFFFFF;
} else if (mask_err) {
/* support value without mask*/
- mask = 0xFFFFFFFF;
+ data->mask = 0xFFFFFFFF;
}
if (pm_power_off) {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 18/18] power: reset: syscon-poweroff: Use devm_register_sys_off_handler(POWER_OFF)
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
` (16 preceding siblings ...)
2024-02-01 18:01 ` [PATCH 17/18] power: reset: syscon-poweroff: Move device data into a struct Andrew Davis
@ 2024-02-01 18:01 ` Andrew Davis
17 siblings, 0 replies; 21+ messages in thread
From: Andrew Davis @ 2024-02-01 18:01 UTC (permalink / raw)
To: Sebastian Reichel, Manivannan Sadhasivam, Cristian Ciocaltea,
Florian Fainelli, Ray Jui, Scott Branden, Bjorn Andersson,
Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: linux-pm, linux-kernel, linux-actions, linux-arm-msm,
linux-arm-kernel, linux-mediatek, Andrew Davis
Use device life-cycle managed register function to simplify probe and
exit paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/reset/syscon-poweroff.c | 34 ++++++++++++---------------
1 file changed, 15 insertions(+), 19 deletions(-)
diff --git a/drivers/power/reset/syscon-poweroff.c b/drivers/power/reset/syscon-poweroff.c
index 4899a019256e8..203936f4c544f 100644
--- a/drivers/power/reset/syscon-poweroff.c
+++ b/drivers/power/reset/syscon-poweroff.c
@@ -13,6 +13,7 @@
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm.h>
+#include <linux/reboot.h>
#include <linux/regmap.h>
struct syscon_poweroff_data {
@@ -22,23 +23,30 @@ struct syscon_poweroff_data {
u32 mask;
};
-static struct syscon_poweroff_data *data;
-
-static void syscon_poweroff(void)
+static int syscon_poweroff(struct sys_off_data *off_data)
{
+ struct syscon_poweroff_data *data = off_data->cb_data;
+
/* Issue the poweroff */
regmap_update_bits(data->map, data->offset, data->mask, data->value);
mdelay(1000);
pr_emerg("Unable to poweroff system\n");
+
+ return NOTIFY_DONE;
}
static int syscon_poweroff_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
+ struct syscon_poweroff_data *data;
int mask_err, value_err;
+ data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
data->map = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap");
if (IS_ERR(data->map)) {
data->map = syscon_node_to_regmap(dev->parent->of_node);
@@ -69,21 +77,10 @@ static int syscon_poweroff_probe(struct platform_device *pdev)
data->mask = 0xFFFFFFFF;
}
- if (pm_power_off) {
- dev_err(dev, "pm_power_off already claimed for %ps",
- pm_power_off);
- return -EBUSY;
- }
-
- pm_power_off = syscon_poweroff;
-
- return 0;
-}
-
-static void syscon_poweroff_remove(struct platform_device *pdev)
-{
- if (pm_power_off == syscon_poweroff)
- pm_power_off = NULL;
+ return devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_POWER_OFF,
+ SYS_OFF_PRIO_DEFAULT,
+ syscon_poweroff, data);
}
static const struct of_device_id syscon_poweroff_of_match[] = {
@@ -93,7 +90,6 @@ static const struct of_device_id syscon_poweroff_of_match[] = {
static struct platform_driver syscon_poweroff_driver = {
.probe = syscon_poweroff_probe,
- .remove_new = syscon_poweroff_remove,
.driver = {
.name = "syscon-poweroff",
.of_match_table = syscon_poweroff_of_match,
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 ` [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-02 15:42 ` kernel test robot
0 siblings, 0 replies; 21+ messages in thread
From: kernel test robot @ 2024-02-02 15:42 UTC (permalink / raw)
To: Andrew Davis, Sebastian Reichel, Manivannan Sadhasivam,
Cristian Ciocaltea, Florian Fainelli, Ray Jui, Scott Branden,
Bjorn Andersson, Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: oe-kbuild-all, linux-pm, linux-kernel, linux-actions,
linux-arm-msm, linux-arm-kernel, linux-mediatek, Andrew Davis
Hi Andrew,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sre-power-supply/for-next]
[also build test WARNING on mani-mhi/mhi-next soc/for-next linus/master v6.8-rc2 next-20240202]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andrew-Davis/power-reset-atc260x-poweroff-Use-devm_register_sys_off_handler-RESTART/20240202-020809
base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
patch link: https://lore.kernel.org/r/20240201180102.70395-7-afd%40ti.com
patch subject: [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART)
config: arm-randconfig-r121-20240202 (https://download.01.org/0day-ci/archive/20240202/202402022349.daHRuWLB-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240202/202402022349.daHRuWLB-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402022349.daHRuWLB-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/power/reset/brcm-kona-reset.c:18:45: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *kona_reset_base @@ got void *cb_data @@
drivers/power/reset/brcm-kona-reset.c:18:45: sparse: expected void [noderef] __iomem *kona_reset_base
drivers/power/reset/brcm-kona-reset.c:18:45: sparse: got void *cb_data
>> drivers/power/reset/brcm-kona-reset.c:43:46: sparse: sparse: incorrect type in argument 5 (different address spaces) @@ expected void *cb_data @@ got void [noderef] __iomem *[assigned] kona_reset_base @@
drivers/power/reset/brcm-kona-reset.c:43:46: sparse: expected void *cb_data
drivers/power/reset/brcm-kona-reset.c:43:46: sparse: got void [noderef] __iomem *[assigned] kona_reset_base
vim +18 drivers/power/reset/brcm-kona-reset.c
15
16 static int kona_reset_handler(struct sys_off_data *data)
17 {
> 18 void __iomem *kona_reset_base = data->cb_data;
19
20 /*
21 * A soft reset is triggered by writing a 0 to bit 0 of the soft reset
22 * register. To write to that register we must first write the password
23 * and the enable bit in the write access enable register.
24 */
25 writel((RSTMGR_WR_PASSWORD << RSTMGR_WR_PASSWORD_SHIFT) |
26 RSTMGR_WR_ACCESS_ENABLE,
27 kona_reset_base + RSTMGR_REG_WR_ACCESS_OFFSET);
28 writel(0, kona_reset_base + RSTMGR_REG_CHIP_SOFT_RST_OFFSET);
29
30 return NOTIFY_DONE;
31 }
32
33 static int kona_reset_probe(struct platform_device *pdev)
34 {
35 void __iomem *kona_reset_base;
36
37 kona_reset_base = devm_platform_ioremap_resource(pdev, 0);
38 if (IS_ERR(kona_reset_base))
39 return PTR_ERR(kona_reset_base);
40
41 return devm_register_sys_off_handler(&pdev->dev, SYS_OFF_MODE_RESTART,
42 128, kona_reset_handler,
> 43 kona_reset_base);
44 }
45
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART)
2024-02-01 18:00 ` [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
@ 2024-02-03 4:20 ` kernel test robot
0 siblings, 0 replies; 21+ messages in thread
From: kernel test robot @ 2024-02-03 4:20 UTC (permalink / raw)
To: Andrew Davis, Sebastian Reichel, Manivannan Sadhasivam,
Cristian Ciocaltea, Florian Fainelli, Ray Jui, Scott Branden,
Bjorn Andersson, Konrad Dybcio, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno
Cc: oe-kbuild-all, linux-pm, linux-kernel, linux-actions,
linux-arm-msm, linux-arm-kernel, linux-mediatek, Andrew Davis
Hi Andrew,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sre-power-supply/for-next]
[also build test WARNING on mani-mhi/mhi-next soc/for-next linus/master v6.8-rc2 next-20240202]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andrew-Davis/power-reset-atc260x-poweroff-Use-devm_register_sys_off_handler-RESTART/20240202-020809
base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
patch link: https://lore.kernel.org/r/20240201180102.70395-10-afd%40ti.com
patch subject: [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART)
config: hexagon-randconfig-r122-20240202 (https://download.01.org/0day-ci/archive/20240203/202402031246.nZHDnDnf-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 7dd790db8b77c4a833c06632e903dc4f13877a64)
reproduce: (https://download.01.org/0day-ci/archive/20240203/202402031246.nZHDnDnf-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402031246.nZHDnDnf-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/power/reset/rmobile-reset.c:24:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *sysc_base2 @@ got void *cb_data @@
drivers/power/reset/rmobile-reset.c:24:40: sparse: expected void [noderef] __iomem *sysc_base2
drivers/power/reset/rmobile-reset.c:24:40: sparse: got void *cb_data
>> drivers/power/reset/rmobile-reset.c:45:47: sparse: sparse: incorrect type in argument 5 (different address spaces) @@ expected void *cb_data @@ got void [noderef] __iomem *[assigned] sysc_base2 @@
drivers/power/reset/rmobile-reset.c:45:47: sparse: expected void *cb_data
drivers/power/reset/rmobile-reset.c:45:47: sparse: got void [noderef] __iomem *[assigned] sysc_base2
vim +24 drivers/power/reset/rmobile-reset.c
21
22 static int rmobile_reset_handler(struct sys_off_data *data)
23 {
> 24 void __iomem *sysc_base2 = data->cb_data;
25
26 /* Let's assume we have acquired the HPB semaphore */
27 writel(RESCNT2_PRES, sysc_base2 + RESCNT2);
28
29 return NOTIFY_DONE;
30 }
31
32 static int rmobile_reset_probe(struct platform_device *pdev)
33 {
34 void __iomem *sysc_base2;
35 int error;
36
37 sysc_base2 = devm_platform_ioremap_resource(pdev, 0);
38 if (IS_ERR(sysc_base2))
39 return PTR_ERR(sysc_base2);
40
41 error = devm_register_sys_off_handler(&pdev->dev,
42 SYS_OFF_MODE_RESTART,
43 SYS_OFF_PRIO_HIGH,
44 rmobile_reset_handler,
> 45 sysc_base2);
46 if (error) {
47 dev_err(&pdev->dev,
48 "cannot register restart handler (err=%d)\n", error);
49 return error;
50 }
51
52 return 0;
53 }
54
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2024-02-03 5:34 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-01 18:00 [PATCH 00/18] Remove pm_power_off use in drivers/power/reset Andrew Davis
2024-02-01 18:00 ` [PATCH 01/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-01 18:00 ` [PATCH 02/18] power: reset: atc260x-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
2024-02-01 18:00 ` [PATCH 03/18] power: reset: xgene-reboot: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-01 18:00 ` [PATCH 04/18] power: reset: tps65086-restart: " Andrew Davis
2024-02-01 18:00 ` [PATCH 05/18] power: reset: tps65086-restart: Remove unneeded device data struct Andrew Davis
2024-02-01 18:00 ` [PATCH 06/18] power: reset: brcm-kona-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-02 15:42 ` kernel test robot
2024-02-01 18:00 ` [PATCH 07/18] power: reset: axxia-reset: " Andrew Davis
2024-02-01 18:00 ` [PATCH 08/18] power: reset: rmobile-reset: Use devm_platform_ioremap_resource() helper Andrew Davis
2024-02-01 18:00 ` [PATCH 09/18] power: reset: rmobile-reset: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-03 4:20 ` kernel test robot
2024-02-01 18:00 ` [PATCH 10/18] power: reset: mt6323-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
2024-02-01 18:00 ` [PATCH 11/18] power: reset: msm-poweroff: " Andrew Davis
2024-02-01 18:00 ` [PATCH 12/18] power: reset: msm-poweroff: Use devm_register_sys_off_handler(RESTART) Andrew Davis
2024-02-01 18:00 ` [PATCH 13/18] power: reset: regulator-poweroff: Use devm_register_sys_off_handler(POWER_OFF) Andrew Davis
2024-02-01 18:00 ` [PATCH 14/18] power: reset: as3722-poweroff: " Andrew Davis
2024-02-01 18:00 ` [PATCH 15/18] power: reset: gemini-poweroff: " Andrew Davis
2024-02-01 18:01 ` [PATCH 16/18] power: reset: restart-poweroff: " Andrew Davis
2024-02-01 18:01 ` [PATCH 17/18] power: reset: syscon-poweroff: Move device data into a struct Andrew Davis
2024-02-01 18:01 ` [PATCH 18/18] power: reset: syscon-poweroff: Use devm_register_sys_off_handler(POWER_OFF) 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).