public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/14] AHCI power management cleanup
@ 2025-01-27 12:45 Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 01/14] ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() Raphael Gallais-Pou
                   ` (14 more replies)
  0 siblings, 15 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:45 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Several AHCI drivers expose suspend/resume functions in a way that can
be simplified.  Using pre-processor operation can lead to errors, while
relying on automatic kernel configuration is safer.  It also shrinks the
kernel size when CONFIG_PM_SLEEP is not used[1].

This has been compile-tested on x86, arm and arm64.

[1] https://lore.kernel.org/lkml/261f9fac-82de-4f39-bf5c-cdfcee917588@gmail.com/

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
Raphael Gallais-Pou (14):
      ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: ceva: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: da850: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: dm816: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: imx: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: mtk: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: platform: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: qoriq: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: seattle: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: sunxi: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: pata_arasan_cf: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: pata_imx: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: sata_highbank: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
      ahci: sata_rcar: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()

 drivers/ata/ahci_brcm.c      | 6 +++---
 drivers/ata/ahci_ceva.c      | 8 ++++----
 drivers/ata/ahci_da850.c     | 7 ++++---
 drivers/ata/ahci_dm816.c     | 8 ++++----
 drivers/ata/ahci_imx.c       | 6 ++----
 drivers/ata/ahci_mtk.c       | 7 ++++---
 drivers/ata/ahci_platform.c  | 7 ++++---
 drivers/ata/ahci_qoriq.c     | 9 ++++-----
 drivers/ata/ahci_seattle.c   | 7 ++++---
 drivers/ata/ahci_sunxi.c     | 9 ++++-----
 drivers/ata/pata_arasan_cf.c | 6 ++----
 drivers/ata/pata_imx.c       | 6 ++----
 drivers/ata/sata_highbank.c  | 9 ++++-----
 drivers/ata/sata_rcar.c      | 6 +-----
 14 files changed, 46 insertions(+), 55 deletions(-)
---
base-commit: 5ffa57f6eecefababb8cbe327222ef171943b183
change-id: 20250113-pm_ata-dbc07b3b0df3

Best regards,
-- 
Raphael Gallais-Pou <rgallaispou@gmail.com>



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH RFC 01/14] ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
@ 2025-01-27 12:45 ` Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 02/14] ahci: ceva: " Raphael Gallais-Pou
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:45 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_brcm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ahci_brcm.c b/drivers/ata/ahci_brcm.c
index 29be74fedcf01934e436481c66cb8d329284d599..3d43ed5db6078b3f07440f21aae6edf73d1da7f2 100644
--- a/drivers/ata/ahci_brcm.c
+++ b/drivers/ata/ahci_brcm.c
@@ -362,7 +362,7 @@ static int brcm_ahci_suspend(struct device *dev)
 	return ret;
 }
 
-static int __maybe_unused brcm_ahci_resume(struct device *dev)
+static int brcm_ahci_resume(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
 	struct ahci_host_priv *hpriv = host->private_data;
@@ -570,7 +570,7 @@ static void brcm_ahci_shutdown(struct platform_device *pdev)
 		dev_err(&pdev->dev, "failed to shutdown\n");
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_brcm_pm_ops, brcm_ahci_suspend, brcm_ahci_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_brcm_pm_ops, brcm_ahci_suspend, brcm_ahci_resume);
 
 static struct platform_driver brcm_ahci_driver = {
 	.probe = brcm_ahci_probe,
@@ -579,7 +579,7 @@ static struct platform_driver brcm_ahci_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_of_match,
-		.pm = &ahci_brcm_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_brcm_pm_ops),
 	},
 };
 module_platform_driver(brcm_ahci_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 02/14] ahci: ceva: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 01/14] ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() Raphael Gallais-Pou
@ 2025-01-27 12:45 ` Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 03/14] ahci: da850: " Raphael Gallais-Pou
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:45 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_ceva.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/ata/ahci_ceva.c b/drivers/ata/ahci_ceva.c
index 2d6a08c23d6ad5d1d11a7de7fbe2968201d6095a..76e55f1f7db1f8349d696e92d8964af609532186 100644
--- a/drivers/ata/ahci_ceva.c
+++ b/drivers/ata/ahci_ceva.c
@@ -363,12 +363,12 @@ static int ceva_ahci_probe(struct platform_device *pdev)
 	return rc;
 }
 
-static int __maybe_unused ceva_ahci_suspend(struct device *dev)
+static int ceva_ahci_suspend(struct device *dev)
 {
 	return ahci_platform_suspend(dev);
 }
 
-static int __maybe_unused ceva_ahci_resume(struct device *dev)
+static int ceva_ahci_resume(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
 	struct ahci_host_priv *hpriv = host->private_data;
@@ -398,7 +398,7 @@ static int __maybe_unused ceva_ahci_resume(struct device *dev)
 	return rc;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_ceva_pm_ops, ceva_ahci_suspend, ceva_ahci_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_ceva_pm_ops, ceva_ahci_suspend, ceva_ahci_resume);
 
 static const struct of_device_id ceva_ahci_of_match[] = {
 	{ .compatible = "ceva,ahci-1v84" },
@@ -412,7 +412,7 @@ static struct platform_driver ceva_ahci_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = ceva_ahci_of_match,
-		.pm = &ahci_ceva_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_ceva_pm_ops),
 	},
 };
 module_platform_driver(ceva_ahci_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 03/14] ahci: da850: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 01/14] ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 02/14] ahci: ceva: " Raphael Gallais-Pou
@ 2025-01-27 12:45 ` Raphael Gallais-Pou
  2025-01-27 12:45 ` [PATCH RFC 04/14] ahci: dm816: " Raphael Gallais-Pou
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:45 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_da850.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ahci_da850.c b/drivers/ata/ahci_da850.c
index ca0924dc5bd26ba424b26bd040bf83720c96b56f..698b0c30de0d65423f932ab3c3d95787b692cb37 100644
--- a/drivers/ata/ahci_da850.c
+++ b/drivers/ata/ahci_da850.c
@@ -227,8 +227,9 @@ static int ahci_da850_probe(struct platform_device *pdev)
 	return rc;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_da850_pm_ops, ahci_platform_suspend,
-			 ahci_platform_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_da850_pm_ops,
+				ahci_platform_suspend,
+				ahci_platform_resume);
 
 static const struct of_device_id ahci_da850_of_match[] = {
 	{ .compatible = "ti,da850-ahci", },
@@ -242,7 +243,7 @@ static struct platform_driver ahci_da850_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_da850_of_match,
-		.pm = &ahci_da850_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_da850_pm_ops),
 	},
 };
 module_platform_driver(ahci_da850_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 04/14] ahci: dm816: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (2 preceding siblings ...)
  2025-01-27 12:45 ` [PATCH RFC 03/14] ahci: da850: " Raphael Gallais-Pou
@ 2025-01-27 12:45 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 05/14] ahci: imx: " Raphael Gallais-Pou
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:45 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_dm816.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/ata/ahci_dm816.c b/drivers/ata/ahci_dm816.c
index b08547b877a1f77ba220e925de321ed034147d7b..cb30a55945b8bdb1efefab192575864220215d08 100644
--- a/drivers/ata/ahci_dm816.c
+++ b/drivers/ata/ahci_dm816.c
@@ -170,9 +170,9 @@ static int ahci_dm816_probe(struct platform_device *pdev)
 	return rc;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_dm816_pm_ops,
-			 ahci_platform_suspend,
-			 ahci_platform_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_dm816_pm_ops,
+				ahci_platform_suspend,
+				ahci_platform_resume);
 
 static const struct of_device_id ahci_dm816_of_match[] = {
 	{ .compatible = "ti,dm816-ahci", },
@@ -186,7 +186,7 @@ static struct platform_driver ahci_dm816_driver = {
 	.driver = {
 		.name = AHCI_DM816_DRV_NAME,
 		.of_match_table = ahci_dm816_of_match,
-		.pm = &ahci_dm816_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_dm816_pm_ops),
 	},
 };
 module_platform_driver(ahci_dm816_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 05/14] ahci: imx: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (3 preceding siblings ...)
  2025-01-27 12:45 ` [PATCH RFC 04/14] ahci: dm816: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 15:13   ` Frank Li
  2025-01-27 12:46 ` [PATCH RFC 06/14] ahci: mtk: " Raphael Gallais-Pou
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_imx.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
index f01f08048f97aa230877e413ba6e416d79779c1b..ec75a16c630a79ce10ea98b16c44c9a3908f869f 100644
--- a/drivers/ata/ahci_imx.c
+++ b/drivers/ata/ahci_imx.c
@@ -993,7 +993,6 @@ static void ahci_imx_host_stop(struct ata_host *host)
 	clk_disable_unprepare(imxpriv->sata_clk);
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int imx_ahci_suspend(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -1021,9 +1020,8 @@ static int imx_ahci_resume(struct device *dev)
 
 	return ahci_platform_resume_host(dev);
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(ahci_imx_pm_ops, imx_ahci_suspend, imx_ahci_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_imx_pm_ops, imx_ahci_suspend, imx_ahci_resume);
 
 static struct platform_driver imx_ahci_driver = {
 	.probe = imx_ahci_probe,
@@ -1031,7 +1029,7 @@ static struct platform_driver imx_ahci_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = imx_ahci_of_match,
-		.pm = &ahci_imx_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_imx_pm_ops),
 	},
 };
 module_platform_driver(imx_ahci_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 06/14] ahci: mtk: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (4 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 05/14] ahci: imx: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 07/14] ahci: platform: " Raphael Gallais-Pou
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_mtk.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ahci_mtk.c b/drivers/ata/ahci_mtk.c
index 7295b9066ae213a72a8c180a66ecfac8c2f46ff9..4afcf5e90e3b660f17b2eb0b1e3df446bef470da 100644
--- a/drivers/ata/ahci_mtk.c
+++ b/drivers/ata/ahci_mtk.c
@@ -163,8 +163,9 @@ static int mtk_ahci_probe(struct platform_device *pdev)
 	return err;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend,
-			 ahci_platform_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_pm_ops,
+				ahci_platform_suspend,
+				ahci_platform_resume);
 
 static const struct of_device_id ahci_of_match[] = {
 	{ .compatible = "mediatek,mtk-ahci", },
@@ -178,7 +179,7 @@ static struct platform_driver mtk_ahci_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_of_match,
-		.pm = &ahci_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_pm_ops),
 	},
 };
 module_platform_driver(mtk_ahci_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 07/14] ahci: platform: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (5 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 06/14] ahci: mtk: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 08/14] ahci: qoriq: " Raphael Gallais-Pou
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_platform.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index c18054333f7c968cc4e131545fc3127f03ac27e4..cd5d89c1902fab6c936aa04eefb461c968726185 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -74,8 +74,9 @@ static int ahci_probe(struct platform_device *pdev)
 	return rc;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend,
-			 ahci_platform_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_pm_ops,
+				ahci_platform_suspend,
+				ahci_platform_resume);
 
 static const struct of_device_id ahci_of_match[] = {
 	{ .compatible = "generic-ahci", },
@@ -102,7 +103,7 @@ static struct platform_driver ahci_driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_of_match,
 		.acpi_match_table = ahci_acpi_match,
-		.pm = &ahci_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_pm_ops),
 	},
 };
 module_platform_driver(ahci_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 08/14] ahci: qoriq: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (6 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 07/14] ahci: platform: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 09/14] ahci: seattle: " Raphael Gallais-Pou
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_qoriq.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
index 30e39885b64edf9cbb1eeca853659582f5296361..5f64bb8cd2e9c8d34403f76e5789fa435dce94ca 100644
--- a/drivers/ata/ahci_qoriq.c
+++ b/drivers/ata/ahci_qoriq.c
@@ -319,7 +319,6 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
 	return rc;
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int ahci_qoriq_resume(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -350,10 +349,10 @@ static int ahci_qoriq_resume(struct device *dev)
 
 	return rc;
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(ahci_qoriq_pm_ops, ahci_platform_suspend,
-			 ahci_qoriq_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_qoriq_pm_ops,
+				ahci_platform_suspend,
+				ahci_qoriq_resume);
 
 static struct platform_driver ahci_qoriq_driver = {
 	.probe = ahci_qoriq_probe,
@@ -362,7 +361,7 @@ static struct platform_driver ahci_qoriq_driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_qoriq_of_match,
 		.acpi_match_table = ahci_qoriq_acpi_match,
-		.pm = &ahci_qoriq_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_qoriq_pm_ops),
 	},
 };
 module_platform_driver(ahci_qoriq_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 09/14] ahci: seattle: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (7 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 08/14] ahci: qoriq: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 10/14] ahci: sunxi: " Raphael Gallais-Pou
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_seattle.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ahci_seattle.c b/drivers/ata/ahci_seattle.c
index 3f16c167840222e0de935f7fe44b3d83b95bc16c..4b67f3aa5787de433c8bcc1bb4965a887709aa9c 100644
--- a/drivers/ata/ahci_seattle.c
+++ b/drivers/ata/ahci_seattle.c
@@ -174,8 +174,9 @@ static int ahci_seattle_probe(struct platform_device *pdev)
 	return rc;
 }
 
-static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend,
-			 ahci_platform_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_pm_ops,
+				ahci_platform_suspend,
+				ahci_platform_resume);
 
 static const struct acpi_device_id ahci_acpi_match[] = {
 	{ "AMDI0600", 0 },
@@ -189,7 +190,7 @@ static struct platform_driver ahci_seattle_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.acpi_match_table = ahci_acpi_match,
-		.pm = &ahci_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_pm_ops),
 	},
 };
 module_platform_driver(ahci_seattle_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 10/14] ahci: sunxi: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (8 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 09/14] ahci: seattle: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-29 18:43   ` Jernej Škrabec
  2025-01-27 12:46 ` [PATCH RFC 11/14] ahci: pata_arasan_cf: " Raphael Gallais-Pou
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/ahci_sunxi.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/ahci_sunxi.c b/drivers/ata/ahci_sunxi.c
index 5d4584570ae013a4e44ca69557cc2c5aa61d32b1..2e86d4c97b822b6a52513dbe55e21851a58385d9 100644
--- a/drivers/ata/ahci_sunxi.c
+++ b/drivers/ata/ahci_sunxi.c
@@ -253,7 +253,6 @@ static int ahci_sunxi_probe(struct platform_device *pdev)
 	return rc;
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int ahci_sunxi_resume(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -278,10 +277,10 @@ static int ahci_sunxi_resume(struct device *dev)
 	ahci_platform_disable_resources(hpriv);
 	return rc;
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(ahci_sunxi_pm_ops, ahci_platform_suspend,
-			 ahci_sunxi_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_sunxi_pm_ops,
+				ahci_platform_suspend,
+				ahci_sunxi_resume);
 
 static const struct of_device_id ahci_sunxi_of_match[] = {
 	{ .compatible = "allwinner,sun4i-a10-ahci", },
@@ -296,7 +295,7 @@ static struct platform_driver ahci_sunxi_driver = {
 	.driver = {
 		.name = DRV_NAME,
 		.of_match_table = ahci_sunxi_of_match,
-		.pm = &ahci_sunxi_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_sunxi_pm_ops),
 	},
 };
 module_platform_driver(ahci_sunxi_driver);

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 11/14] ahci: pata_arasan_cf: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (9 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 10/14] ahci: sunxi: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 12/14] ahci: pata_imx: " Raphael Gallais-Pou
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/pata_arasan_cf.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
index 514d549286b56eabe07dfc2b3a961ef0f7c983f2..3ec03147a8fbe30e9f82c184d7a9c32cabcfdb92 100644
--- a/drivers/ata/pata_arasan_cf.c
+++ b/drivers/ata/pata_arasan_cf.c
@@ -926,7 +926,6 @@ static void arasan_cf_remove(struct platform_device *pdev)
 	cf_exit(acdev);
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int arasan_cf_suspend(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -950,9 +949,8 @@ static int arasan_cf_resume(struct device *dev)
 
 	return 0;
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(arasan_cf_pm_ops, arasan_cf_suspend, arasan_cf_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(arasan_cf_pm_ops, arasan_cf_suspend, arasan_cf_resume);
 
 #ifdef CONFIG_OF
 static const struct of_device_id arasan_cf_id_table[] = {
@@ -967,7 +965,7 @@ static struct platform_driver arasan_cf_driver = {
 	.remove		= arasan_cf_remove,
 	.driver		= {
 		.name	= DRIVER_NAME,
-		.pm	= &arasan_cf_pm_ops,
+		.pm	= pm_sleep_ptr(&arasan_cf_pm_ops),
 		.of_match_table = of_match_ptr(arasan_cf_id_table),
 	},
 };

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 12/14] ahci: pata_imx: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (10 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 11/14] ahci: pata_arasan_cf: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 13/14] ahci: sata_highbank: " Raphael Gallais-Pou
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/pata_imx.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/ata/pata_imx.c b/drivers/ata/pata_imx.c
index b37682b0578f48ea9d51a103d19e40fe91c4729f..533de2782c37fb21bba4e4b8361c48c0f2878175 100644
--- a/drivers/ata/pata_imx.c
+++ b/drivers/ata/pata_imx.c
@@ -201,7 +201,6 @@ static void pata_imx_remove(struct platform_device *pdev)
 	__raw_writel(0, priv->host_regs + PATA_IMX_ATA_INT_EN);
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int pata_imx_suspend(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -234,9 +233,8 @@ static int pata_imx_resume(struct device *dev)
 
 	return 0;
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(pata_imx_pm_ops, pata_imx_suspend, pata_imx_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(pata_imx_pm_ops, pata_imx_suspend, pata_imx_resume);
 
 static const struct of_device_id imx_pata_dt_ids[] = {
 	{
@@ -253,7 +251,7 @@ static struct platform_driver pata_imx_driver = {
 	.driver = {
 		.name		= DRV_NAME,
 		.of_match_table	= imx_pata_dt_ids,
-		.pm		= &pata_imx_pm_ops,
+		.pm		= pm_sleep_ptr(&pata_imx_pm_ops),
 	},
 };
 

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 13/14] ahci: sata_highbank: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (11 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 12/14] ahci: pata_imx: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 12:46 ` [PATCH RFC 14/14] ahci: sata_rcar: " Raphael Gallais-Pou
  2025-01-27 16:30 ` [RFC PATCH 00/14] AHCI power management cleanup Geert Uytterhoeven
  14 siblings, 0 replies; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/sata_highbank.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/sata_highbank.c b/drivers/ata/sata_highbank.c
index c8c817c51230a74df721016eb80238c188d96d01..c387e50485b974fa2f2defc0bd1ea8cd43dc14bb 100644
--- a/drivers/ata/sata_highbank.c
+++ b/drivers/ata/sata_highbank.c
@@ -565,7 +565,6 @@ static int ahci_highbank_probe(struct platform_device *pdev)
 	return rc;
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int ahci_highbank_suspend(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -609,17 +608,17 @@ static int ahci_highbank_resume(struct device *dev)
 
 	return 0;
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops,
-		  ahci_highbank_suspend, ahci_highbank_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops,
+				ahci_highbank_suspend,
+				ahci_highbank_resume);
 
 static struct platform_driver ahci_highbank_driver = {
 	.remove = ata_platform_remove_one,
 	.driver = {
 		.name = "highbank-ahci",
 		.of_match_table = ahci_of_match,
-		.pm = &ahci_highbank_pm_ops,
+		.pm = pm_sleep_ptr(&ahci_highbank_pm_ops),
 	},
 	.probe = ahci_highbank_probe,
 };

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH RFC 14/14] ahci: sata_rcar: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (12 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 13/14] ahci: sata_highbank: " Raphael Gallais-Pou
@ 2025-01-27 12:46 ` Raphael Gallais-Pou
  2025-01-27 13:45   ` Geert Uytterhoeven
  2025-01-27 16:30 ` [RFC PATCH 00/14] AHCI power management cleanup Geert Uytterhoeven
  14 siblings, 1 reply; 20+ messages in thread
From: Raphael Gallais-Pou @ 2025-01-27 12:46 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Letting the compiler remove these functions when the kernel is built
without CONFIG_PM_SLEEP support is simpler and less error prone than the
use of #ifdef based kernel configuration guards.

Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
---
 drivers/ata/sata_rcar.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c
index 22820a02d7408033d698a98373e1e8e7ef47f908..4c5f5938c12efc7c8594df4092915011e83f910d 100644
--- a/drivers/ata/sata_rcar.c
+++ b/drivers/ata/sata_rcar.c
@@ -927,7 +927,6 @@ static void sata_rcar_remove(struct platform_device *pdev)
 	pm_runtime_disable(&pdev->dev);
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int sata_rcar_suspend(struct device *dev)
 {
 	struct ata_host *host = dev_get_drvdata(dev);
@@ -1005,7 +1004,6 @@ static const struct dev_pm_ops sata_rcar_pm_ops = {
 	.poweroff	= sata_rcar_suspend,
 	.restore	= sata_rcar_restore,
 };
-#endif
 
 static struct platform_driver sata_rcar_driver = {
 	.probe		= sata_rcar_probe,
@@ -1013,9 +1011,7 @@ static struct platform_driver sata_rcar_driver = {
 	.driver = {
 		.name		= DRV_NAME,
 		.of_match_table	= sata_rcar_match,
-#ifdef CONFIG_PM_SLEEP
-		.pm		= &sata_rcar_pm_ops,
-#endif
+		.pm		= pm_sleep_ptr(&sata_rcar_pm_ops),
 	},
 };
 

-- 
2.48.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH RFC 14/14] ahci: sata_rcar: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:46 ` [PATCH RFC 14/14] ahci: sata_rcar: " Raphael Gallais-Pou
@ 2025-01-27 13:45   ` Geert Uytterhoeven
  2025-01-30  2:30     ` Damien Le Moal
  0 siblings, 1 reply; 20+ messages in thread
From: Geert Uytterhoeven @ 2025-01-27 13:45 UTC (permalink / raw)
  To: Raphael Gallais-Pou
  Cc: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven, linux-ide, linux-kernel, imx,
	linux-arm-kernel, linux-mediatek, linux-sunxi, linux-renesas-soc

Hi Raphael,

On Mon, 27 Jan 2025 at 13:46, Raphael Gallais-Pou <rgallaispou@gmail.com> wrote:
> Letting the compiler remove these functions when the kernel is built
> without CONFIG_PM_SLEEP support is simpler and less error prone than the
> use of #ifdef based kernel configuration guards.
>
> Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>

Thanks for your patch!

The subsystem prefix is "ata", not "ahci" (not all ATA-drivers are
AHCI-drivers).

> --- a/drivers/ata/sata_rcar.c
> +++ b/drivers/ata/sata_rcar.c
> @@ -927,7 +927,6 @@ static void sata_rcar_remove(struct platform_device *pdev)
>         pm_runtime_disable(&pdev->dev);
>  }
>
> -#ifdef CONFIG_PM_SLEEP
>  static int sata_rcar_suspend(struct device *dev)
>  {
>         struct ata_host *host = dev_get_drvdata(dev);
> @@ -1005,7 +1004,6 @@ static const struct dev_pm_ops sata_rcar_pm_ops = {
>         .poweroff       = sata_rcar_suspend,
>         .restore        = sata_rcar_restore,
>  };
> -#endif

If CONFIG_PM_SLEEP is disabled (e.g. m68k allyesconfig):

    drivers/ata/sata_rcar.c: In function ‘sata_rcar_suspend’:
    drivers/ata/sata_rcar.c:936:9: error: implicit declaration of
function ‘ata_host_suspend’; did you mean ‘sata_rcar_suspend’?
[-Werror=implicit-function-declaration]
      936 |         ata_host_suspend(host, PMSG_SUSPEND);
          |         ^~~~~~~~~~~~~~~~
          |         sata_rcar_suspend
    drivers/ata/sata_rcar.c: In function ‘sata_rcar_resume’:
    drivers/ata/sata_rcar.c:973:9: error: implicit declaration of
function ‘ata_host_resume’; did you mean ‘sata_rcar_resume’?
[-Werror=implicit-function-declaration]
      973 |         ata_host_resume(host);
          |         ^~~~~~~~~~~~~~~
          |         sata_rcar_resume

>
>  static struct platform_driver sata_rcar_driver = {
>         .probe          = sata_rcar_probe,
> @@ -1013,9 +1011,7 @@ static struct platform_driver sata_rcar_driver = {
>         .driver = {
>                 .name           = DRV_NAME,
>                 .of_match_table = sata_rcar_match,
> -#ifdef CONFIG_PM_SLEEP
> -               .pm             = &sata_rcar_pm_ops,
> -#endif
> +               .pm             = pm_sleep_ptr(&sata_rcar_pm_ops),
>         },
>  };

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH RFC 05/14] ahci: imx: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:46 ` [PATCH RFC 05/14] ahci: imx: " Raphael Gallais-Pou
@ 2025-01-27 15:13   ` Frank Li
  0 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2025-01-27 15:13 UTC (permalink / raw)
  To: Raphael Gallais-Pou
  Cc: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven, linux-ide, linux-kernel, imx,
	linux-arm-kernel, linux-mediatek, linux-sunxi, linux-renesas-soc

On Mon, Jan 27, 2025 at 01:46:00PM +0100, Raphael Gallais-Pou wrote:
> Letting the compiler remove these functions when the kernel is built
> without CONFIG_PM_SLEEP support is simpler and less error prone than the
> use of #ifdef based kernel configuration guards.
>
> Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> ---
>  drivers/ata/ahci_imx.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
> index f01f08048f97aa230877e413ba6e416d79779c1b..ec75a16c630a79ce10ea98b16c44c9a3908f869f 100644
> --- a/drivers/ata/ahci_imx.c
> +++ b/drivers/ata/ahci_imx.c
> @@ -993,7 +993,6 @@ static void ahci_imx_host_stop(struct ata_host *host)
>  	clk_disable_unprepare(imxpriv->sata_clk);
>  }
>
> -#ifdef CONFIG_PM_SLEEP
>  static int imx_ahci_suspend(struct device *dev)
>  {
>  	struct ata_host *host = dev_get_drvdata(dev);
> @@ -1021,9 +1020,8 @@ static int imx_ahci_resume(struct device *dev)
>
>  	return ahci_platform_resume_host(dev);
>  }
> -#endif
>
> -static SIMPLE_DEV_PM_OPS(ahci_imx_pm_ops, imx_ahci_suspend, imx_ahci_resume);
> +static DEFINE_SIMPLE_DEV_PM_OPS(ahci_imx_pm_ops, imx_ahci_suspend, imx_ahci_resume);
>
>  static struct platform_driver imx_ahci_driver = {
>  	.probe = imx_ahci_probe,
> @@ -1031,7 +1029,7 @@ static struct platform_driver imx_ahci_driver = {
>  	.driver = {
>  		.name = DRV_NAME,
>  		.of_match_table = imx_ahci_of_match,
> -		.pm = &ahci_imx_pm_ops,
> +		.pm = pm_sleep_ptr(&ahci_imx_pm_ops),
>  	},
>  };
>  module_platform_driver(imx_ahci_driver);
>
> --
> 2.48.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [RFC PATCH 00/14] AHCI power management cleanup
  2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
                   ` (13 preceding siblings ...)
  2025-01-27 12:46 ` [PATCH RFC 14/14] ahci: sata_rcar: " Raphael Gallais-Pou
@ 2025-01-27 16:30 ` Geert Uytterhoeven
  14 siblings, 0 replies; 20+ messages in thread
From: Geert Uytterhoeven @ 2025-01-27 16:30 UTC (permalink / raw)
  To: Raphael Gallais-Pou
  Cc: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Viresh Kumar,
	Geert Uytterhoeven, linux-ide, linux-kernel, imx,
	linux-arm-kernel, linux-mediatek, linux-sunxi, linux-renesas-soc

Hi Raphael,

On Mon, 27 Jan 2025 at 13:46, Raphael Gallais-Pou <rgallaispou@gmail.com> wrote:
> Several AHCI drivers expose suspend/resume functions in a way that can
> be simplified.  Using pre-processor operation can lead to errors, while
> relying on automatic kernel configuration is safer.  It also shrinks the
> kernel size when CONFIG_PM_SLEEP is not used[1].

m68k/allyesconfig:

drivers/ata/sata_highbank.c: In function ‘ahci_highbank_suspend’:
drivers/ata/sata_highbank.c:590:9: error: implicit declaration of
function ‘ata_host_suspend’; did you mean ‘ata_sas_port_suspend’?
[-Werror=implicit-function-declaration]
drivers/ata/sata_highbank.c: In function ‘ahci_highbank_resume’:
drivers/ata/sata_highbank.c:607:9: error: implicit declaration of
function ‘ata_host_resume’; did you mean ‘ahci_port_resume’?
[-Werror=implicit-function-declaration]
drivers/ata/pata_arasan_cf.c: In function ‘arasan_cf_suspend’:
drivers/ata/pata_arasan_cf.c:938:9: error: implicit declaration of
function ‘ata_host_suspend’; did you mean ‘ata_sas_port_suspend’?
[-Werror=implicit-function-declaration]
drivers/ata/pata_arasan_cf.c: In function ‘arasan_cf_resume’:
drivers/ata/pata_arasan_cf.c:948:9: error: implicit declaration of
function ‘ata_host_resume’; did you mean ‘sata_link_resume’?
[-Werror=implicit-function-declaration]
drivers/ata/sata_rcar.c: In function ‘sata_rcar_suspend’:
drivers/ata/sata_rcar.c:936:9: error: implicit declaration of function
‘ata_host_suspend’; did you mean ‘sata_rcar_suspend’?
[-Werror=implicit-function-declaration]
drivers/ata/sata_rcar.c: In function ‘sata_rcar_resume’:
drivers/ata/sata_rcar.c:973:9: error: implicit declaration of function
‘ata_host_resume’; did you mean ‘sata_rcar_resume’?
[-Werror=implicit-function-declaration]
drivers/ata/pata_imx.c: In function ‘pata_imx_suspend’:
drivers/ata/pata_imx.c:209:9: error: implicit declaration of function
‘ata_host_suspend’; did you mean ‘pata_imx_suspend’?
[-Werror=implicit-function-declaration]
drivers/ata/pata_imx.c: In function ‘pata_imx_resume’:
drivers/ata/pata_imx.c:232:9: error: implicit declaration of function
‘ata_host_resume’; did you mean ‘pata_imx_resume’?
[-Werror=implicit-function-declaration]

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH RFC 10/14] ahci: sunxi: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 12:46 ` [PATCH RFC 10/14] ahci: sunxi: " Raphael Gallais-Pou
@ 2025-01-29 18:43   ` Jernej Škrabec
  0 siblings, 0 replies; 20+ messages in thread
From: Jernej Škrabec @ 2025-01-29 18:43 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Matthias Brugger,
	AngeloGioacchino Del Regno, Hans de Goede, Patrice Chotard,
	Chen-Yu Tsai, Samuel Holland, Viresh Kumar, Geert Uytterhoeven,
	Raphael Gallais-Pou
  Cc: linux-ide, linux-kernel, imx, linux-arm-kernel, linux-mediatek,
	linux-sunxi, linux-renesas-soc

Dne ponedeljek, 27. januar 2025 ob 13:46:05 Srednjeevropski standardni čas je Raphael Gallais-Pou napisal(a):
> Letting the compiler remove these functions when the kernel is built
> without CONFIG_PM_SLEEP support is simpler and less error prone than the
> use of #ifdef based kernel configuration guards.
> 
> Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>

Best regards,
Jernej




^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH RFC 14/14] ahci: sata_rcar: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
  2025-01-27 13:45   ` Geert Uytterhoeven
@ 2025-01-30  2:30     ` Damien Le Moal
  0 siblings, 0 replies; 20+ messages in thread
From: Damien Le Moal @ 2025-01-30  2:30 UTC (permalink / raw)
  To: Geert Uytterhoeven, Raphael Gallais-Pou
  Cc: Niklas Cassel, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Matthias Brugger, AngeloGioacchino Del Regno,
	Hans de Goede, Patrice Chotard, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, Viresh Kumar, Geert Uytterhoeven, linux-ide,
	linux-kernel, imx, linux-arm-kernel, linux-mediatek, linux-sunxi,
	linux-renesas-soc

On 1/27/25 22:45, Geert Uytterhoeven wrote:
> Hi Raphael,
> 
> On Mon, 27 Jan 2025 at 13:46, Raphael Gallais-Pou <rgallaispou@gmail.com> wrote:
>> Letting the compiler remove these functions when the kernel is built
>> without CONFIG_PM_SLEEP support is simpler and less error prone than the
>> use of #ifdef based kernel configuration guards.
>>
>> Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
> 
> Thanks for your patch!
> 
> The subsystem prefix is "ata", not "ahci" (not all ATA-drivers are
> AHCI-drivers).

Yep. The convention is:

ata: driver_name: xxx

So it would be:

ata: sata_rcar: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()

for this patch. And the same comment applies to all your other patches in the
series.

> 
>> --- a/drivers/ata/sata_rcar.c
>> +++ b/drivers/ata/sata_rcar.c
>> @@ -927,7 +927,6 @@ static void sata_rcar_remove(struct platform_device *pdev)
>>         pm_runtime_disable(&pdev->dev);
>>  }
>>
>> -#ifdef CONFIG_PM_SLEEP
>>  static int sata_rcar_suspend(struct device *dev)
>>  {
>>         struct ata_host *host = dev_get_drvdata(dev);
>> @@ -1005,7 +1004,6 @@ static const struct dev_pm_ops sata_rcar_pm_ops = {
>>         .poweroff       = sata_rcar_suspend,
>>         .restore        = sata_rcar_restore,
>>  };
>> -#endif
> 
> If CONFIG_PM_SLEEP is disabled (e.g. m68k allyesconfig):
> 
>     drivers/ata/sata_rcar.c: In function ‘sata_rcar_suspend’:
>     drivers/ata/sata_rcar.c:936:9: error: implicit declaration of
> function ‘ata_host_suspend’; did you mean ‘sata_rcar_suspend’?
> [-Werror=implicit-function-declaration]
>       936 |         ata_host_suspend(host, PMSG_SUSPEND);
>           |         ^~~~~~~~~~~~~~~~
>           |         sata_rcar_suspend
>     drivers/ata/sata_rcar.c: In function ‘sata_rcar_resume’:
>     drivers/ata/sata_rcar.c:973:9: error: implicit declaration of
> function ‘ata_host_resume’; did you mean ‘sata_rcar_resume’?
> [-Werror=implicit-function-declaration]
>       973 |         ata_host_resume(host);
>           |         ^~~~~~~~~~~~~~~
>           |         sata_rcar_resume
> 
>>
>>  static struct platform_driver sata_rcar_driver = {
>>         .probe          = sata_rcar_probe,
>> @@ -1013,9 +1011,7 @@ static struct platform_driver sata_rcar_driver = {
>>         .driver = {
>>                 .name           = DRV_NAME,
>>                 .of_match_table = sata_rcar_match,
>> -#ifdef CONFIG_PM_SLEEP
>> -               .pm             = &sata_rcar_pm_ops,
>> -#endif
>> +               .pm             = pm_sleep_ptr(&sata_rcar_pm_ops),
>>         },
>>  };
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 


-- 
Damien Le Moal
Western Digital Research


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-01-30  2:32 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-27 12:45 [RFC PATCH 00/14] AHCI power management cleanup Raphael Gallais-Pou
2025-01-27 12:45 ` [PATCH RFC 01/14] ahci: brcm: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() Raphael Gallais-Pou
2025-01-27 12:45 ` [PATCH RFC 02/14] ahci: ceva: " Raphael Gallais-Pou
2025-01-27 12:45 ` [PATCH RFC 03/14] ahci: da850: " Raphael Gallais-Pou
2025-01-27 12:45 ` [PATCH RFC 04/14] ahci: dm816: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 05/14] ahci: imx: " Raphael Gallais-Pou
2025-01-27 15:13   ` Frank Li
2025-01-27 12:46 ` [PATCH RFC 06/14] ahci: mtk: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 07/14] ahci: platform: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 08/14] ahci: qoriq: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 09/14] ahci: seattle: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 10/14] ahci: sunxi: " Raphael Gallais-Pou
2025-01-29 18:43   ` Jernej Škrabec
2025-01-27 12:46 ` [PATCH RFC 11/14] ahci: pata_arasan_cf: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 12/14] ahci: pata_imx: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 13/14] ahci: sata_highbank: " Raphael Gallais-Pou
2025-01-27 12:46 ` [PATCH RFC 14/14] ahci: sata_rcar: " Raphael Gallais-Pou
2025-01-27 13:45   ` Geert Uytterhoeven
2025-01-30  2:30     ` Damien Le Moal
2025-01-27 16:30 ` [RFC PATCH 00/14] AHCI power management cleanup Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox