* [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
@ 2025-04-11 8:59 Arnd Bergmann
2025-04-11 11:02 ` [EXT] " Luke Wang
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Arnd Bergmann @ 2025-04-11 8:59 UTC (permalink / raw)
To: Haibo Chen, Adrian Hunter, Ulf Hansson, Shawn Guo, Sascha Hauer,
Luke Wang
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx, linux-mmc, s32, linux-arm-kernel, linux-kernel
From: Arnd Bergmann <arnd@arndb.de>
Two newly added functions are unused in configurations without
power management support:
drivers/mmc/host/sdhci-esdhc-imx.c:1586:13: error: unused function 'sdhc_esdhc_tuning_save' [-Werror,-Wunused-function]
1586 | static void sdhc_esdhc_tuning_save(struct sdhci_host *host)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/mmc/host/sdhci-esdhc-imx.c:1608:13: error: unused function 'sdhc_esdhc_tuning_restore' [-Werror,-Wunused-function]
1608 | static void sdhc_esdhc_tuning_restore(struct sdhci_host *host)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Remove the #ifdef checks and instead use the better macros that
silently drop the unused functions when PM is disabled. This also
requires using pm_ptr() to eliminate both the runtime and pm_sleep
operations.
Fixes: 3d1eea493894 ("mmc: sdhci-esdhc-imx: Save tuning value when card stays powered in suspend")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
v2: add pm_ptr()
---
drivers/mmc/host/sdhci-esdhc-imx.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 7e8addaed697..3c2e50d0260d 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -1942,7 +1942,6 @@ static void sdhci_esdhc_imx_remove(struct platform_device *pdev)
sdhci_pltfm_free(pdev);
}
-#ifdef CONFIG_PM_SLEEP
static int sdhci_esdhc_suspend(struct device *dev)
{
struct sdhci_host *host = dev_get_drvdata(dev);
@@ -2021,9 +2020,7 @@ static int sdhci_esdhc_resume(struct device *dev)
return ret;
}
-#endif
-#ifdef CONFIG_PM
static int sdhci_esdhc_runtime_suspend(struct device *dev)
{
struct sdhci_host *host = dev_get_drvdata(dev);
@@ -2103,11 +2100,10 @@ static int sdhci_esdhc_runtime_resume(struct device *dev)
cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
return err;
}
-#endif
static const struct dev_pm_ops sdhci_esdhc_pmops = {
- SET_SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
- SET_RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
+ SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
+ RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
sdhci_esdhc_runtime_resume, NULL)
};
@@ -2116,7 +2112,7 @@ static struct platform_driver sdhci_esdhc_imx_driver = {
.name = "sdhci-esdhc-imx",
.probe_type = PROBE_PREFER_ASYNCHRONOUS,
.of_match_table = imx_esdhc_dt_ids,
- .pm = &sdhci_esdhc_pmops,
+ .pm = pm_ptr(&sdhci_esdhc_pmops),
},
.probe = sdhci_esdhc_imx_probe,
.remove = sdhci_esdhc_imx_remove,
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
@ 2025-04-11 11:02 ` Luke Wang
2025-04-11 11:47 ` Adrian Hunter
2025-04-14 8:08 ` kernel test robot
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Luke Wang @ 2025-04-11 11:02 UTC (permalink / raw)
To: Arnd Bergmann, Bough Chen, Adrian Hunter, Ulf Hansson, Shawn Guo,
Sascha Hauer
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx@lists.linux.dev, linux-mmc@vger.kernel.org,
dl-S32, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Tested-by: Luke Wang <ziniu.wang_1@nxp.com>
> -----Original Message-----
> From: Arnd Bergmann <arnd@kernel.org>
> Sent: Friday, April 11, 2025 4:59 PM
> To: Bough Chen <haibo.chen@nxp.com>; Adrian Hunter
> <adrian.hunter@intel.com>; Ulf Hansson <ulf.hansson@linaro.org>; Shawn
> Guo <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> Luke Wang <ziniu.wang_1@nxp.com>
> Cc: Arnd Bergmann <arnd@arndb.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Josua
> Mayer <josua@solid-run.com>; imx@lists.linux.dev; linux-
> mmc@vger.kernel.org; dl-S32 <S32@nxp.com>; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Subject: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> Two newly added functions are unused in configurations without
> power management support:
>
> drivers/mmc/host/sdhci-esdhc-imx.c:1586:13: error: unused function
> 'sdhc_esdhc_tuning_save' [-Werror,-Wunused-function]
> 1586 | static void sdhc_esdhc_tuning_save(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~
> drivers/mmc/host/sdhci-esdhc-imx.c:1608:13: error: unused function
> 'sdhc_esdhc_tuning_restore' [-Werror,-Wunused-function]
> 1608 | static void sdhc_esdhc_tuning_restore(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
>
> Remove the #ifdef checks and instead use the better macros that
> silently drop the unused functions when PM is disabled. This also
> requires using pm_ptr() to eliminate both the runtime and pm_sleep
> operations.
>
> Fixes: 3d1eea493894 ("mmc: sdhci-esdhc-imx: Save tuning value when card
> stays powered in suspend")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> v2: add pm_ptr()
> ---
> drivers/mmc/host/sdhci-esdhc-imx.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-
> esdhc-imx.c
> index 7e8addaed697..3c2e50d0260d 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1942,7 +1942,6 @@ static void sdhci_esdhc_imx_remove(struct
> platform_device *pdev)
> sdhci_pltfm_free(pdev);
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int sdhci_esdhc_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2021,9 +2020,7 @@ static int sdhci_esdhc_resume(struct device *dev)
>
> return ret;
> }
> -#endif
>
> -#ifdef CONFIG_PM
> static int sdhci_esdhc_runtime_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2103,11 +2100,10 @@ static int sdhci_esdhc_runtime_resume(struct
> device *dev)
> cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
> return err;
> }
> -#endif
>
> static const struct dev_pm_ops sdhci_esdhc_pmops = {
> - SET_SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend,
> sdhci_esdhc_resume)
> - SET_RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> + SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
> + RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> sdhci_esdhc_runtime_resume, NULL)
> };
>
> @@ -2116,7 +2112,7 @@ static struct platform_driver
> sdhci_esdhc_imx_driver = {
> .name = "sdhci-esdhc-imx",
> .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> .of_match_table = imx_esdhc_dt_ids,
> - .pm = &sdhci_esdhc_pmops,
> + .pm = pm_ptr(&sdhci_esdhc_pmops),
> },
> .probe = sdhci_esdhc_imx_probe,
> .remove = sdhci_esdhc_imx_remove,
> --
> 2.39.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 11:02 ` [EXT] " Luke Wang
@ 2025-04-11 11:47 ` Adrian Hunter
2025-04-14 6:49 ` Luke Wang
0 siblings, 1 reply; 10+ messages in thread
From: Adrian Hunter @ 2025-04-11 11:47 UTC (permalink / raw)
To: Luke Wang, Arnd Bergmann, Bough Chen, Ulf Hansson, Shawn Guo,
Sascha Hauer
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx@lists.linux.dev, linux-mmc@vger.kernel.org,
dl-S32, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
On 11/04/25 14:02, Luke Wang wrote:
> Tested-by: Luke Wang <ziniu.wang_1@nxp.com>
Did you test with "# CONFIG_PM is not set"? Because FWIW
it does not work for me on x86 with CONFIG_COMPILE_TEST=y
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 11:47 ` Adrian Hunter
@ 2025-04-14 6:49 ` Luke Wang
0 siblings, 0 replies; 10+ messages in thread
From: Luke Wang @ 2025-04-14 6:49 UTC (permalink / raw)
To: Adrian Hunter, Arnd Bergmann, Bough Chen, Ulf Hansson, Shawn Guo,
Sascha Hauer
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx@lists.linux.dev, linux-mmc@vger.kernel.org,
dl-S32, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
> -----Original Message-----
> From: Adrian Hunter <adrian.hunter@intel.com>
> Sent: Friday, April 11, 2025 7:47 PM
> To: Luke Wang <ziniu.wang_1@nxp.com>; Arnd Bergmann
> <arnd@kernel.org>; Bough Chen <haibo.chen@nxp.com>; Ulf Hansson
> <ulf.hansson@linaro.org>; Shawn Guo <shawnguo@kernel.org>; Sascha
> Hauer <s.hauer@pengutronix.de>
> Cc: Arnd Bergmann <arnd@arndb.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Josua
> Mayer <josua@solid-run.com>; imx@lists.linux.dev; linux-
> mmc@vger.kernel.org; dl-S32 <S32@nxp.com>; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Subject: Re: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On 11/04/25 14:02, Luke Wang wrote:
> > Tested-by: Luke Wang <ziniu.wang_1@nxp.com>
>
> Did you test with "# CONFIG_PM is not set"? Because FWIW
> it does not work for me on x86 with CONFIG_COMPILE_TEST=y
Hi Adrian
Sorry, I didn't test with "# CONFIG_PM is not set". I did the functional test and it work fine.
If # CONFIG_PM is not set, there indeed be problems with compilation.
Regard
Luke
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
2025-04-11 11:02 ` [EXT] " Luke Wang
@ 2025-04-14 8:08 ` kernel test robot
2025-04-14 10:32 ` kernel test robot
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2025-04-14 8:08 UTC (permalink / raw)
To: Arnd Bergmann, Haibo Chen, Adrian Hunter, Ulf Hansson, Shawn Guo,
Sascha Hauer, Luke Wang
Cc: oe-kbuild-all, Arnd Bergmann, Pengutronix Kernel Team,
Fabio Estevam, Josua Mayer, imx, linux-mmc, s32, linux-arm-kernel,
linux-kernel
Hi Arnd,
kernel test robot noticed the following build errors:
[auto build test ERROR on v6.15-rc2]
[also build test ERROR on linus/master next-20250411]
[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/Arnd-Bergmann/mmc-esdhc-imx-convert-to-modern-PM_OPS/20250414-092134
base: v6.15-rc2
patch link: https://lore.kernel.org/r/20250411085932.1902662-1-arnd%40kernel.org
patch subject: [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
config: i386-buildonly-randconfig-006-20250414 (https://download.01.org/0day-ci/archive/20250414/202504141551.hdiQj4os-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250414/202504141551.hdiQj4os-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/202504141551.hdiQj4os-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/mmc/host/sdhci-esdhc-imx.c: In function 'sdhci_esdhc_suspend':
>> drivers/mmc/host/sdhci-esdhc-imx.c:1902:15: error: implicit declaration of function 'sdhci_suspend_host'; did you mean 'sdhci_add_host'? [-Werror=implicit-function-declaration]
1902 | ret = sdhci_suspend_host(host);
| ^~~~~~~~~~~~~~~~~~
| sdhci_add_host
drivers/mmc/host/sdhci-esdhc-imx.c: In function 'sdhci_esdhc_resume':
>> drivers/mmc/host/sdhci-esdhc-imx.c:1927:15: error: implicit declaration of function 'sdhci_resume_host'; did you mean 'sdhci_remove_host'? [-Werror=implicit-function-declaration]
1927 | ret = sdhci_resume_host(host);
| ^~~~~~~~~~~~~~~~~
| sdhci_remove_host
drivers/mmc/host/sdhci-esdhc-imx.c: In function 'sdhci_esdhc_runtime_suspend':
>> drivers/mmc/host/sdhci-esdhc-imx.c:1953:15: error: implicit declaration of function 'sdhci_runtime_suspend_host' [-Werror=implicit-function-declaration]
1953 | ret = sdhci_runtime_suspend_host(host);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mmc/host/sdhci-esdhc-imx.c: In function 'sdhci_esdhc_runtime_resume':
>> drivers/mmc/host/sdhci-esdhc-imx.c:1999:15: error: implicit declaration of function 'sdhci_runtime_resume_host' [-Werror=implicit-function-declaration]
1999 | err = sdhci_runtime_resume_host(host, 0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +1902 drivers/mmc/host/sdhci-esdhc-imx.c
95f25efe0ce22e Wolfram Sang 2010-10-15 1879
04143fbaeb5799 Dong Aisheng 2016-07-12 1880 static int sdhci_esdhc_suspend(struct device *dev)
04143fbaeb5799 Dong Aisheng 2016-07-12 1881 {
3e3274ab9ff37f Ulf Hansson 2016-07-27 1882 struct sdhci_host *host = dev_get_drvdata(dev);
a26a4f1baca55a Haibo Chen 2020-02-19 1883 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
a26a4f1baca55a Haibo Chen 2020-02-19 1884 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1885 int ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1886
bb6e358169bf62 BOUGH CHEN 2019-01-07 1887 if (host->mmc->caps2 & MMC_CAP2_CQE) {
bb6e358169bf62 BOUGH CHEN 2019-01-07 1888 ret = cqhci_suspend(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1889 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1890 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1891 }
3e3274ab9ff37f Ulf Hansson 2016-07-27 1892
a26a4f1baca55a Haibo Chen 2020-02-19 1893 if ((imx_data->socdata->flags & ESDHC_FLAG_STATE_LOST_IN_LPMODE) &&
a26a4f1baca55a Haibo Chen 2020-02-19 1894 (host->tuning_mode != SDHCI_TUNING_MODE_1)) {
a26a4f1baca55a Haibo Chen 2020-02-19 1895 mmc_retune_timer_stop(host->mmc);
a26a4f1baca55a Haibo Chen 2020-02-19 1896 mmc_retune_needed(host->mmc);
a26a4f1baca55a Haibo Chen 2020-02-19 1897 }
a26a4f1baca55a Haibo Chen 2020-02-19 1898
d38dcad4e7b48f Adrian Hunter 2017-03-20 1899 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
d38dcad4e7b48f Adrian Hunter 2017-03-20 1900 mmc_retune_needed(host->mmc);
d38dcad4e7b48f Adrian Hunter 2017-03-20 1901
af8fade4bd7bc7 Haibo Chen 2020-02-19 @1902 ret = sdhci_suspend_host(host);
f6140462611308 Haibo Chen 2020-05-27 1903 if (ret)
f6140462611308 Haibo Chen 2020-05-27 1904 return ret;
f6140462611308 Haibo Chen 2020-05-27 1905
f6140462611308 Haibo Chen 2020-05-27 1906 ret = pinctrl_pm_select_sleep_state(dev);
f6140462611308 Haibo Chen 2020-05-27 1907 if (ret)
f6140462611308 Haibo Chen 2020-05-27 1908 return ret;
f6140462611308 Haibo Chen 2020-05-27 1909
f6140462611308 Haibo Chen 2020-05-27 1910 ret = mmc_gpio_set_cd_wake(host->mmc, true);
af8fade4bd7bc7 Haibo Chen 2020-02-19 1911
af8fade4bd7bc7 Haibo Chen 2020-02-19 1912 return ret;
04143fbaeb5799 Dong Aisheng 2016-07-12 1913 }
04143fbaeb5799 Dong Aisheng 2016-07-12 1914
04143fbaeb5799 Dong Aisheng 2016-07-12 1915 static int sdhci_esdhc_resume(struct device *dev)
04143fbaeb5799 Dong Aisheng 2016-07-12 1916 {
cc17e1294b8aeb Dong Aisheng 2016-07-12 1917 struct sdhci_host *host = dev_get_drvdata(dev);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1918 int ret;
cc17e1294b8aeb Dong Aisheng 2016-07-12 1919
af8fade4bd7bc7 Haibo Chen 2020-02-19 1920 ret = pinctrl_pm_select_default_state(dev);
af8fade4bd7bc7 Haibo Chen 2020-02-19 1921 if (ret)
af8fade4bd7bc7 Haibo Chen 2020-02-19 1922 return ret;
af8fade4bd7bc7 Haibo Chen 2020-02-19 1923
19dbfdd3d5152d Dong Aisheng 2016-07-12 1924 /* re-initialize hw state in case it's lost in low power mode */
19dbfdd3d5152d Dong Aisheng 2016-07-12 1925 sdhci_esdhc_imx_hwinit(host);
cc17e1294b8aeb Dong Aisheng 2016-07-12 1926
bb6e358169bf62 BOUGH CHEN 2019-01-07 @1927 ret = sdhci_resume_host(host);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1928 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1929 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1930
bb6e358169bf62 BOUGH CHEN 2019-01-07 1931 if (host->mmc->caps2 & MMC_CAP2_CQE)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1932 ret = cqhci_resume(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1933
f6140462611308 Haibo Chen 2020-05-27 1934 if (!ret)
f6140462611308 Haibo Chen 2020-05-27 1935 ret = mmc_gpio_set_cd_wake(host->mmc, false);
f6140462611308 Haibo Chen 2020-05-27 1936
bb6e358169bf62 BOUGH CHEN 2019-01-07 1937 return ret;
04143fbaeb5799 Dong Aisheng 2016-07-12 1938 }
04143fbaeb5799 Dong Aisheng 2016-07-12 1939
89d7e5c131228a Dong Aisheng 2013-11-04 1940 static int sdhci_esdhc_runtime_suspend(struct device *dev)
89d7e5c131228a Dong Aisheng 2013-11-04 1941 {
89d7e5c131228a Dong Aisheng 2013-11-04 1942 struct sdhci_host *host = dev_get_drvdata(dev);
89d7e5c131228a Dong Aisheng 2013-11-04 1943 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
070e6d3ff5a696 Jisheng Zhang 2016-02-16 1944 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
89d7e5c131228a Dong Aisheng 2013-11-04 1945 int ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1946
bb6e358169bf62 BOUGH CHEN 2019-01-07 1947 if (host->mmc->caps2 & MMC_CAP2_CQE) {
bb6e358169bf62 BOUGH CHEN 2019-01-07 1948 ret = cqhci_suspend(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1949 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1950 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1951 }
bb6e358169bf62 BOUGH CHEN 2019-01-07 1952
89d7e5c131228a Dong Aisheng 2013-11-04 @1953 ret = sdhci_runtime_suspend_host(host);
371d39fabcebc3 Michael Trimarchi 2018-01-04 1954 if (ret)
371d39fabcebc3 Michael Trimarchi 2018-01-04 1955 return ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1956
d38dcad4e7b48f Adrian Hunter 2017-03-20 1957 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
d38dcad4e7b48f Adrian Hunter 2017-03-20 1958 mmc_retune_needed(host->mmc);
d38dcad4e7b48f Adrian Hunter 2017-03-20 1959
3602785b341a95 Michael Trimarchi 2018-01-04 1960 imx_data->actual_clock = host->mmc->actual_clock;
3602785b341a95 Michael Trimarchi 2018-01-04 1961 esdhc_pltfm_set_clock(host, 0);
89d7e5c131228a Dong Aisheng 2013-11-04 1962 clk_disable_unprepare(imx_data->clk_per);
89d7e5c131228a Dong Aisheng 2013-11-04 1963 clk_disable_unprepare(imx_data->clk_ipg);
89d7e5c131228a Dong Aisheng 2013-11-04 1964 clk_disable_unprepare(imx_data->clk_ahb);
89d7e5c131228a Dong Aisheng 2013-11-04 1965
1c4989b000aeac BOUGH CHEN 2019-04-29 1966 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 1967 cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
1c4989b000aeac BOUGH CHEN 2019-04-29 1968
89d7e5c131228a Dong Aisheng 2013-11-04 1969 return ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1970 }
89d7e5c131228a Dong Aisheng 2013-11-04 1971
89d7e5c131228a Dong Aisheng 2013-11-04 1972 static int sdhci_esdhc_runtime_resume(struct device *dev)
89d7e5c131228a Dong Aisheng 2013-11-04 1973 {
89d7e5c131228a Dong Aisheng 2013-11-04 1974 struct sdhci_host *host = dev_get_drvdata(dev);
89d7e5c131228a Dong Aisheng 2013-11-04 1975 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
070e6d3ff5a696 Jisheng Zhang 2016-02-16 1976 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1977 int err;
89d7e5c131228a Dong Aisheng 2013-11-04 1978
1c4989b000aeac BOUGH CHEN 2019-04-29 1979 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 1980 cpu_latency_qos_add_request(&imx_data->pm_qos_req, 0);
1c4989b000aeac BOUGH CHEN 2019-04-29 1981
5c11f1ffb02244 Haibo Chen 2020-02-19 1982 if (imx_data->socdata->flags & ESDHC_FLAG_CLK_RATE_LOST_IN_PM_RUNTIME)
5c11f1ffb02244 Haibo Chen 2020-02-19 1983 clk_set_rate(imx_data->clk_per, pltfm_host->clock);
5c11f1ffb02244 Haibo Chen 2020-02-19 1984
a0ad3087586d09 Michael Trimarchi 2018-01-04 1985 err = clk_prepare_enable(imx_data->clk_ahb);
a0ad3087586d09 Michael Trimarchi 2018-01-04 1986 if (err)
1c4989b000aeac BOUGH CHEN 2019-04-29 1987 goto remove_pm_qos_request;
a0ad3087586d09 Michael Trimarchi 2018-01-04 1988
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1989 err = clk_prepare_enable(imx_data->clk_per);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1990 if (err)
a0ad3087586d09 Michael Trimarchi 2018-01-04 1991 goto disable_ahb_clk;
af5d2b7b0d24f5 Ulf Hansson 2019-09-08 1992
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1993 err = clk_prepare_enable(imx_data->clk_ipg);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1994 if (err)
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1995 goto disable_per_clk;
af5d2b7b0d24f5 Ulf Hansson 2019-09-08 1996
3602785b341a95 Michael Trimarchi 2018-01-04 1997 esdhc_pltfm_set_clock(host, imx_data->actual_clock);
a0ad3087586d09 Michael Trimarchi 2018-01-04 1998
c6303c5d52d5ec Baolin Wang 2019-07-25 @1999 err = sdhci_runtime_resume_host(host, 0);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2000 if (err)
a0ad3087586d09 Michael Trimarchi 2018-01-04 2001 goto disable_ipg_clk;
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2002
bb6e358169bf62 BOUGH CHEN 2019-01-07 2003 if (host->mmc->caps2 & MMC_CAP2_CQE)
bb6e358169bf62 BOUGH CHEN 2019-01-07 2004 err = cqhci_resume(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 2005
bb6e358169bf62 BOUGH CHEN 2019-01-07 2006 return err;
89d7e5c131228a Dong Aisheng 2013-11-04 2007
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2008 disable_ipg_clk:
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2009 clk_disable_unprepare(imx_data->clk_ipg);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2010 disable_per_clk:
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2011 clk_disable_unprepare(imx_data->clk_per);
a0ad3087586d09 Michael Trimarchi 2018-01-04 2012 disable_ahb_clk:
a0ad3087586d09 Michael Trimarchi 2018-01-04 2013 clk_disable_unprepare(imx_data->clk_ahb);
1c4989b000aeac BOUGH CHEN 2019-04-29 2014 remove_pm_qos_request:
1c4989b000aeac BOUGH CHEN 2019-04-29 2015 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 2016 cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2017 return err;
89d7e5c131228a Dong Aisheng 2013-11-04 2018 }
89d7e5c131228a Dong Aisheng 2013-11-04 2019
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
2025-04-11 11:02 ` [EXT] " Luke Wang
2025-04-14 8:08 ` kernel test robot
@ 2025-04-14 10:32 ` kernel test robot
2025-04-15 3:15 ` [EXT] " Luke Wang
2025-04-16 17:47 ` Adrian Hunter
4 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2025-04-14 10:32 UTC (permalink / raw)
To: Arnd Bergmann, Haibo Chen, Adrian Hunter, Ulf Hansson, Shawn Guo,
Sascha Hauer, Luke Wang
Cc: llvm, oe-kbuild-all, Arnd Bergmann, Pengutronix Kernel Team,
Fabio Estevam, Josua Mayer, imx, linux-mmc, s32, linux-arm-kernel,
linux-kernel
Hi Arnd,
kernel test robot noticed the following build errors:
[auto build test ERROR on v6.15-rc2]
[also build test ERROR on linus/master next-20250414]
[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/Arnd-Bergmann/mmc-esdhc-imx-convert-to-modern-PM_OPS/20250414-092134
base: v6.15-rc2
patch link: https://lore.kernel.org/r/20250411085932.1902662-1-arnd%40kernel.org
patch subject: [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250414/202504141852.82kZm4nO-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250414/202504141852.82kZm4nO-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/202504141852.82kZm4nO-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/mmc/host/sdhci-esdhc-imx.c:1902:8: error: call to undeclared function 'sdhci_suspend_host'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1902 | ret = sdhci_suspend_host(host);
| ^
>> drivers/mmc/host/sdhci-esdhc-imx.c:1927:8: error: call to undeclared function 'sdhci_resume_host'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1927 | ret = sdhci_resume_host(host);
| ^
drivers/mmc/host/sdhci-esdhc-imx.c:1927:8: note: did you mean 'sdhci_remove_host'?
drivers/mmc/host/sdhci.h:827:6: note: 'sdhci_remove_host' declared here
827 | void sdhci_remove_host(struct sdhci_host *host, int dead);
| ^
>> drivers/mmc/host/sdhci-esdhc-imx.c:1953:8: error: call to undeclared function 'sdhci_runtime_suspend_host'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1953 | ret = sdhci_runtime_suspend_host(host);
| ^
>> drivers/mmc/host/sdhci-esdhc-imx.c:1999:8: error: call to undeclared function 'sdhci_runtime_resume_host'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1999 | err = sdhci_runtime_resume_host(host, 0);
| ^
4 errors generated.
vim +/sdhci_suspend_host +1902 drivers/mmc/host/sdhci-esdhc-imx.c
95f25efe0ce22e Wolfram Sang 2010-10-15 1879
04143fbaeb5799 Dong Aisheng 2016-07-12 1880 static int sdhci_esdhc_suspend(struct device *dev)
04143fbaeb5799 Dong Aisheng 2016-07-12 1881 {
3e3274ab9ff37f Ulf Hansson 2016-07-27 1882 struct sdhci_host *host = dev_get_drvdata(dev);
a26a4f1baca55a Haibo Chen 2020-02-19 1883 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
a26a4f1baca55a Haibo Chen 2020-02-19 1884 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1885 int ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1886
bb6e358169bf62 BOUGH CHEN 2019-01-07 1887 if (host->mmc->caps2 & MMC_CAP2_CQE) {
bb6e358169bf62 BOUGH CHEN 2019-01-07 1888 ret = cqhci_suspend(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1889 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1890 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1891 }
3e3274ab9ff37f Ulf Hansson 2016-07-27 1892
a26a4f1baca55a Haibo Chen 2020-02-19 1893 if ((imx_data->socdata->flags & ESDHC_FLAG_STATE_LOST_IN_LPMODE) &&
a26a4f1baca55a Haibo Chen 2020-02-19 1894 (host->tuning_mode != SDHCI_TUNING_MODE_1)) {
a26a4f1baca55a Haibo Chen 2020-02-19 1895 mmc_retune_timer_stop(host->mmc);
a26a4f1baca55a Haibo Chen 2020-02-19 1896 mmc_retune_needed(host->mmc);
a26a4f1baca55a Haibo Chen 2020-02-19 1897 }
a26a4f1baca55a Haibo Chen 2020-02-19 1898
d38dcad4e7b48f Adrian Hunter 2017-03-20 1899 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
d38dcad4e7b48f Adrian Hunter 2017-03-20 1900 mmc_retune_needed(host->mmc);
d38dcad4e7b48f Adrian Hunter 2017-03-20 1901
af8fade4bd7bc7 Haibo Chen 2020-02-19 @1902 ret = sdhci_suspend_host(host);
f6140462611308 Haibo Chen 2020-05-27 1903 if (ret)
f6140462611308 Haibo Chen 2020-05-27 1904 return ret;
f6140462611308 Haibo Chen 2020-05-27 1905
f6140462611308 Haibo Chen 2020-05-27 1906 ret = pinctrl_pm_select_sleep_state(dev);
f6140462611308 Haibo Chen 2020-05-27 1907 if (ret)
f6140462611308 Haibo Chen 2020-05-27 1908 return ret;
f6140462611308 Haibo Chen 2020-05-27 1909
f6140462611308 Haibo Chen 2020-05-27 1910 ret = mmc_gpio_set_cd_wake(host->mmc, true);
af8fade4bd7bc7 Haibo Chen 2020-02-19 1911
af8fade4bd7bc7 Haibo Chen 2020-02-19 1912 return ret;
04143fbaeb5799 Dong Aisheng 2016-07-12 1913 }
04143fbaeb5799 Dong Aisheng 2016-07-12 1914
04143fbaeb5799 Dong Aisheng 2016-07-12 1915 static int sdhci_esdhc_resume(struct device *dev)
04143fbaeb5799 Dong Aisheng 2016-07-12 1916 {
cc17e1294b8aeb Dong Aisheng 2016-07-12 1917 struct sdhci_host *host = dev_get_drvdata(dev);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1918 int ret;
cc17e1294b8aeb Dong Aisheng 2016-07-12 1919
af8fade4bd7bc7 Haibo Chen 2020-02-19 1920 ret = pinctrl_pm_select_default_state(dev);
af8fade4bd7bc7 Haibo Chen 2020-02-19 1921 if (ret)
af8fade4bd7bc7 Haibo Chen 2020-02-19 1922 return ret;
af8fade4bd7bc7 Haibo Chen 2020-02-19 1923
19dbfdd3d5152d Dong Aisheng 2016-07-12 1924 /* re-initialize hw state in case it's lost in low power mode */
19dbfdd3d5152d Dong Aisheng 2016-07-12 1925 sdhci_esdhc_imx_hwinit(host);
cc17e1294b8aeb Dong Aisheng 2016-07-12 1926
bb6e358169bf62 BOUGH CHEN 2019-01-07 @1927 ret = sdhci_resume_host(host);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1928 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1929 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1930
bb6e358169bf62 BOUGH CHEN 2019-01-07 1931 if (host->mmc->caps2 & MMC_CAP2_CQE)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1932 ret = cqhci_resume(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1933
f6140462611308 Haibo Chen 2020-05-27 1934 if (!ret)
f6140462611308 Haibo Chen 2020-05-27 1935 ret = mmc_gpio_set_cd_wake(host->mmc, false);
f6140462611308 Haibo Chen 2020-05-27 1936
bb6e358169bf62 BOUGH CHEN 2019-01-07 1937 return ret;
04143fbaeb5799 Dong Aisheng 2016-07-12 1938 }
04143fbaeb5799 Dong Aisheng 2016-07-12 1939
89d7e5c131228a Dong Aisheng 2013-11-04 1940 static int sdhci_esdhc_runtime_suspend(struct device *dev)
89d7e5c131228a Dong Aisheng 2013-11-04 1941 {
89d7e5c131228a Dong Aisheng 2013-11-04 1942 struct sdhci_host *host = dev_get_drvdata(dev);
89d7e5c131228a Dong Aisheng 2013-11-04 1943 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
070e6d3ff5a696 Jisheng Zhang 2016-02-16 1944 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
89d7e5c131228a Dong Aisheng 2013-11-04 1945 int ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1946
bb6e358169bf62 BOUGH CHEN 2019-01-07 1947 if (host->mmc->caps2 & MMC_CAP2_CQE) {
bb6e358169bf62 BOUGH CHEN 2019-01-07 1948 ret = cqhci_suspend(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 1949 if (ret)
bb6e358169bf62 BOUGH CHEN 2019-01-07 1950 return ret;
bb6e358169bf62 BOUGH CHEN 2019-01-07 1951 }
bb6e358169bf62 BOUGH CHEN 2019-01-07 1952
89d7e5c131228a Dong Aisheng 2013-11-04 @1953 ret = sdhci_runtime_suspend_host(host);
371d39fabcebc3 Michael Trimarchi 2018-01-04 1954 if (ret)
371d39fabcebc3 Michael Trimarchi 2018-01-04 1955 return ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1956
d38dcad4e7b48f Adrian Hunter 2017-03-20 1957 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
d38dcad4e7b48f Adrian Hunter 2017-03-20 1958 mmc_retune_needed(host->mmc);
d38dcad4e7b48f Adrian Hunter 2017-03-20 1959
3602785b341a95 Michael Trimarchi 2018-01-04 1960 imx_data->actual_clock = host->mmc->actual_clock;
3602785b341a95 Michael Trimarchi 2018-01-04 1961 esdhc_pltfm_set_clock(host, 0);
89d7e5c131228a Dong Aisheng 2013-11-04 1962 clk_disable_unprepare(imx_data->clk_per);
89d7e5c131228a Dong Aisheng 2013-11-04 1963 clk_disable_unprepare(imx_data->clk_ipg);
89d7e5c131228a Dong Aisheng 2013-11-04 1964 clk_disable_unprepare(imx_data->clk_ahb);
89d7e5c131228a Dong Aisheng 2013-11-04 1965
1c4989b000aeac BOUGH CHEN 2019-04-29 1966 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 1967 cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
1c4989b000aeac BOUGH CHEN 2019-04-29 1968
89d7e5c131228a Dong Aisheng 2013-11-04 1969 return ret;
89d7e5c131228a Dong Aisheng 2013-11-04 1970 }
89d7e5c131228a Dong Aisheng 2013-11-04 1971
89d7e5c131228a Dong Aisheng 2013-11-04 1972 static int sdhci_esdhc_runtime_resume(struct device *dev)
89d7e5c131228a Dong Aisheng 2013-11-04 1973 {
89d7e5c131228a Dong Aisheng 2013-11-04 1974 struct sdhci_host *host = dev_get_drvdata(dev);
89d7e5c131228a Dong Aisheng 2013-11-04 1975 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
070e6d3ff5a696 Jisheng Zhang 2016-02-16 1976 struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1977 int err;
89d7e5c131228a Dong Aisheng 2013-11-04 1978
1c4989b000aeac BOUGH CHEN 2019-04-29 1979 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 1980 cpu_latency_qos_add_request(&imx_data->pm_qos_req, 0);
1c4989b000aeac BOUGH CHEN 2019-04-29 1981
5c11f1ffb02244 Haibo Chen 2020-02-19 1982 if (imx_data->socdata->flags & ESDHC_FLAG_CLK_RATE_LOST_IN_PM_RUNTIME)
5c11f1ffb02244 Haibo Chen 2020-02-19 1983 clk_set_rate(imx_data->clk_per, pltfm_host->clock);
5c11f1ffb02244 Haibo Chen 2020-02-19 1984
a0ad3087586d09 Michael Trimarchi 2018-01-04 1985 err = clk_prepare_enable(imx_data->clk_ahb);
a0ad3087586d09 Michael Trimarchi 2018-01-04 1986 if (err)
1c4989b000aeac BOUGH CHEN 2019-04-29 1987 goto remove_pm_qos_request;
a0ad3087586d09 Michael Trimarchi 2018-01-04 1988
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1989 err = clk_prepare_enable(imx_data->clk_per);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1990 if (err)
a0ad3087586d09 Michael Trimarchi 2018-01-04 1991 goto disable_ahb_clk;
af5d2b7b0d24f5 Ulf Hansson 2019-09-08 1992
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1993 err = clk_prepare_enable(imx_data->clk_ipg);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1994 if (err)
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 1995 goto disable_per_clk;
af5d2b7b0d24f5 Ulf Hansson 2019-09-08 1996
3602785b341a95 Michael Trimarchi 2018-01-04 1997 esdhc_pltfm_set_clock(host, imx_data->actual_clock);
a0ad3087586d09 Michael Trimarchi 2018-01-04 1998
c6303c5d52d5ec Baolin Wang 2019-07-25 @1999 err = sdhci_runtime_resume_host(host, 0);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2000 if (err)
a0ad3087586d09 Michael Trimarchi 2018-01-04 2001 goto disable_ipg_clk;
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2002
bb6e358169bf62 BOUGH CHEN 2019-01-07 2003 if (host->mmc->caps2 & MMC_CAP2_CQE)
bb6e358169bf62 BOUGH CHEN 2019-01-07 2004 err = cqhci_resume(host->mmc);
bb6e358169bf62 BOUGH CHEN 2019-01-07 2005
bb6e358169bf62 BOUGH CHEN 2019-01-07 2006 return err;
89d7e5c131228a Dong Aisheng 2013-11-04 2007
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2008 disable_ipg_clk:
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2009 clk_disable_unprepare(imx_data->clk_ipg);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2010 disable_per_clk:
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2011 clk_disable_unprepare(imx_data->clk_per);
a0ad3087586d09 Michael Trimarchi 2018-01-04 2012 disable_ahb_clk:
a0ad3087586d09 Michael Trimarchi 2018-01-04 2013 clk_disable_unprepare(imx_data->clk_ahb);
1c4989b000aeac BOUGH CHEN 2019-04-29 2014 remove_pm_qos_request:
1c4989b000aeac BOUGH CHEN 2019-04-29 2015 if (imx_data->socdata->flags & ESDHC_FLAG_PMQOS)
d1b98305916bc0 Rafael J. Wysocki 2020-02-12 2016 cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
17b1eb7f0bf3dc Fabio Estevam 2017-05-16 2017 return err;
89d7e5c131228a Dong Aisheng 2013-11-04 2018 }
89d7e5c131228a Dong Aisheng 2013-11-04 2019
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
` (2 preceding siblings ...)
2025-04-14 10:32 ` kernel test robot
@ 2025-04-15 3:15 ` Luke Wang
2025-04-15 12:57 ` Arnd Bergmann
2025-04-16 17:47 ` Adrian Hunter
4 siblings, 1 reply; 10+ messages in thread
From: Luke Wang @ 2025-04-15 3:15 UTC (permalink / raw)
To: Arnd Bergmann, Bough Chen, Adrian Hunter, Ulf Hansson, Shawn Guo,
Sascha Hauer
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx@lists.linux.dev, linux-mmc@vger.kernel.org,
dl-S32, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Hi Arnd,
This patch has compilation issue because sdhci.c still uses #ifdef CONFIG_PM. Do you plan to send a new patch to fix? If not, I can send a patch to fix the compilation warning.
Regards
Luke
> -----Original Message-----
> From: Arnd Bergmann <arnd@kernel.org>
> Sent: Friday, April 11, 2025 4:59 PM
> To: Bough Chen <haibo.chen@nxp.com>; Adrian Hunter
> <adrian.hunter@intel.com>; Ulf Hansson <ulf.hansson@linaro.org>; Shawn
> Guo <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> Luke Wang <ziniu.wang_1@nxp.com>
> Cc: Arnd Bergmann <arnd@arndb.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Josua
> Mayer <josua@solid-run.com>; imx@lists.linux.dev; linux-
> mmc@vger.kernel.org; dl-S32 <S32@nxp.com>; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Subject: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> Two newly added functions are unused in configurations without
> power management support:
>
> drivers/mmc/host/sdhci-esdhc-imx.c:1586:13: error: unused function
> 'sdhc_esdhc_tuning_save' [-Werror,-Wunused-function]
> 1586 | static void sdhc_esdhc_tuning_save(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~
> drivers/mmc/host/sdhci-esdhc-imx.c:1608:13: error: unused function
> 'sdhc_esdhc_tuning_restore' [-Werror,-Wunused-function]
> 1608 | static void sdhc_esdhc_tuning_restore(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
>
> Remove the #ifdef checks and instead use the better macros that
> silently drop the unused functions when PM is disabled. This also
> requires using pm_ptr() to eliminate both the runtime and pm_sleep
> operations.
>
> Fixes: 3d1eea493894 ("mmc: sdhci-esdhc-imx: Save tuning value when card
> stays powered in suspend")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> v2: add pm_ptr()
> ---
> drivers/mmc/host/sdhci-esdhc-imx.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-
> esdhc-imx.c
> index 7e8addaed697..3c2e50d0260d 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1942,7 +1942,6 @@ static void sdhci_esdhc_imx_remove(struct
> platform_device *pdev)
> sdhci_pltfm_free(pdev);
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int sdhci_esdhc_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2021,9 +2020,7 @@ static int sdhci_esdhc_resume(struct device *dev)
>
> return ret;
> }
> -#endif
>
> -#ifdef CONFIG_PM
> static int sdhci_esdhc_runtime_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2103,11 +2100,10 @@ static int sdhci_esdhc_runtime_resume(struct
> device *dev)
> cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
> return err;
> }
> -#endif
>
> static const struct dev_pm_ops sdhci_esdhc_pmops = {
> - SET_SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend,
> sdhci_esdhc_resume)
> - SET_RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> + SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
> + RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> sdhci_esdhc_runtime_resume, NULL)
> };
>
> @@ -2116,7 +2112,7 @@ static struct platform_driver
> sdhci_esdhc_imx_driver = {
> .name = "sdhci-esdhc-imx",
> .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> .of_match_table = imx_esdhc_dt_ids,
> - .pm = &sdhci_esdhc_pmops,
> + .pm = pm_ptr(&sdhci_esdhc_pmops),
> },
> .probe = sdhci_esdhc_imx_probe,
> .remove = sdhci_esdhc_imx_remove,
> --
> 2.39.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-15 3:15 ` [EXT] " Luke Wang
@ 2025-04-15 12:57 ` Arnd Bergmann
2025-04-16 2:42 ` Luke Wang
0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2025-04-15 12:57 UTC (permalink / raw)
To: Luke Wang, Arnd Bergmann, Haibo Chen, Adrian Hunter, Ulf Hansson,
Shawn Guo, Sascha Hauer
Cc: Pengutronix Kernel Team, Fabio Estevam, Josua Mayer,
imx@lists.linux.dev, linux-mmc @ vger . kernel . org,
NXP S32 Linux Team, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
On Tue, Apr 15, 2025, at 05:15, Luke Wang wrote:
> Hi Arnd,
>
> This patch has compilation issue because sdhci.c still uses #ifdef
> CONFIG_PM. Do you plan to send a new patch to fix? If not, I can send a
> patch to fix the compilation warning.
Can you see if the change below is sufficient? I see I have that
in my randconfig tree and I did not see any problems with my
v2 patch and that. I probably added that one originally because
of some other build failure but then never sent it.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index cd0e35a80542..4ee2695b0202 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -874,12 +874,10 @@ irqreturn_t sdhci_thread_irq(int irq, void *dev_id);
void sdhci_adma_write_desc(struct sdhci_host *host, void **desc,
dma_addr_t addr, int len, unsigned int cmd);
-#ifdef CONFIG_PM
int sdhci_suspend_host(struct sdhci_host *host);
int sdhci_resume_host(struct sdhci_host *host);
int sdhci_runtime_suspend_host(struct sdhci_host *host);
int sdhci_runtime_resume_host(struct sdhci_host *host, int soft_reset);
-#endif
void sdhci_cqe_enable(struct mmc_host *mmc);
void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery);
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-15 12:57 ` Arnd Bergmann
@ 2025-04-16 2:42 ` Luke Wang
0 siblings, 0 replies; 10+ messages in thread
From: Luke Wang @ 2025-04-16 2:42 UTC (permalink / raw)
To: Arnd Bergmann, Arnd Bergmann, Bough Chen, Adrian Hunter,
Ulf Hansson, Shawn Guo, Sascha Hauer
Cc: Pengutronix Kernel Team, Fabio Estevam, Josua Mayer,
imx@lists.linux.dev, linux-mmc @ vger . kernel . org, dl-S32,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
> -----Original Message-----
> From: Arnd Bergmann <arnd@arndb.de>
> Sent: Tuesday, April 15, 2025 8:57 PM
> To: Luke Wang <ziniu.wang_1@nxp.com>; Arnd Bergmann
> <arnd@kernel.org>; Bough Chen <haibo.chen@nxp.com>; Adrian Hunter
> <adrian.hunter@intel.com>; Ulf Hansson <ulf.hansson@linaro.org>; Shawn
> Guo <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam
> <festevam@gmail.com>; Josua Mayer <josua@solid-run.com>;
> imx@lists.linux.dev; linux-mmc @ vger . kernel . org <linux-
> mmc@vger.kernel.org>; dl-S32 <S32@nxp.com>; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Subject: Re: [EXT] [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On Tue, Apr 15, 2025, at 05:15, Luke Wang wrote:
> > Hi Arnd,
> >
> > This patch has compilation issue because sdhci.c still uses #ifdef
> > CONFIG_PM. Do you plan to send a new patch to fix? If not, I can send a
> > patch to fix the compilation warning.
>
> Can you see if the change below is sufficient? I see I have that
> in my randconfig tree and I did not see any problems with my
> v2 patch and that. I probably added that one originally because
> of some other build failure but then never sent it.
>
Yes, it works fine. No build warning/error with CONFIG_PM not set.
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
> index cd0e35a80542..4ee2695b0202 100644
> --- a/drivers/mmc/host/sdhci.h
> +++ b/drivers/mmc/host/sdhci.h
> @@ -874,12 +874,10 @@ irqreturn_t sdhci_thread_irq(int irq, void *dev_id);
> void sdhci_adma_write_desc(struct sdhci_host *host, void **desc,
> dma_addr_t addr, int len, unsigned int cmd);
>
> -#ifdef CONFIG_PM
> int sdhci_suspend_host(struct sdhci_host *host);
> int sdhci_resume_host(struct sdhci_host *host);
> int sdhci_runtime_suspend_host(struct sdhci_host *host);
> int sdhci_runtime_resume_host(struct sdhci_host *host, int soft_reset);
> -#endif
>
> void sdhci_cqe_enable(struct mmc_host *mmc);
> void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery);
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
` (3 preceding siblings ...)
2025-04-15 3:15 ` [EXT] " Luke Wang
@ 2025-04-16 17:47 ` Adrian Hunter
4 siblings, 0 replies; 10+ messages in thread
From: Adrian Hunter @ 2025-04-16 17:47 UTC (permalink / raw)
To: Arnd Bergmann, Haibo Chen, Ulf Hansson, Shawn Guo, Sascha Hauer,
Luke Wang
Cc: Arnd Bergmann, Pengutronix Kernel Team, Fabio Estevam,
Josua Mayer, imx, linux-mmc, s32, linux-arm-kernel, linux-kernel
On 11/04/25 11:59, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> Two newly added functions are unused in configurations without
> power management support:
>
> drivers/mmc/host/sdhci-esdhc-imx.c:1586:13: error: unused function 'sdhc_esdhc_tuning_save' [-Werror,-Wunused-function]
> 1586 | static void sdhc_esdhc_tuning_save(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~
> drivers/mmc/host/sdhci-esdhc-imx.c:1608:13: error: unused function 'sdhc_esdhc_tuning_restore' [-Werror,-Wunused-function]
> 1608 | static void sdhc_esdhc_tuning_restore(struct sdhci_host *host)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
>
> Remove the #ifdef checks and instead use the better macros that
> silently drop the unused functions when PM is disabled. This also
> requires using pm_ptr() to eliminate both the runtime and pm_sleep
> operations.
This explanation is still a bit mysterious. SYSTEM_SLEEP_PM_OPS()
and pm_ptr() make use of PTR_IF() which uses a conditional expression
so that the pointers have a reference during compile time but not at
link time. That way unused functions still get compiled without
triggering -Wunused-function, but get dropped by the linker's
dead code elimination.
It is perhaps worth noting that dead code elimination is not
default unless -O1 or above optimization level is used. The
kernel currently uses -O2 or -Os both of which do dead code
elimination.
>
> Fixes: 3d1eea493894 ("mmc: sdhci-esdhc-imx: Save tuning value when card stays powered in suspend")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Nevertheless, together with the chunk from:
https://lore.kernel.org/all/3d544dbc-863d-4ac5-9839-aef3a36881d1@app.fastmail.com/
i.e.
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index cd0e35a80542..4ee2695b0202 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -874,12 +874,10 @@ irqreturn_t sdhci_thread_irq(int irq, void *dev_id);
void sdhci_adma_write_desc(struct sdhci_host *host, void **desc,
dma_addr_t addr, int len, unsigned int cmd);
-#ifdef CONFIG_PM
int sdhci_suspend_host(struct sdhci_host *host);
int sdhci_resume_host(struct sdhci_host *host);
int sdhci_runtime_suspend_host(struct sdhci_host *host);
int sdhci_runtime_resume_host(struct sdhci_host *host, int soft_reset);
-#endif
void sdhci_cqe_enable(struct mmc_host *mmc);
void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery);
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> v2: add pm_ptr()
> ---
> drivers/mmc/host/sdhci-esdhc-imx.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 7e8addaed697..3c2e50d0260d 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1942,7 +1942,6 @@ static void sdhci_esdhc_imx_remove(struct platform_device *pdev)
> sdhci_pltfm_free(pdev);
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int sdhci_esdhc_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2021,9 +2020,7 @@ static int sdhci_esdhc_resume(struct device *dev)
>
> return ret;
> }
> -#endif
>
> -#ifdef CONFIG_PM
> static int sdhci_esdhc_runtime_suspend(struct device *dev)
> {
> struct sdhci_host *host = dev_get_drvdata(dev);
> @@ -2103,11 +2100,10 @@ static int sdhci_esdhc_runtime_resume(struct device *dev)
> cpu_latency_qos_remove_request(&imx_data->pm_qos_req);
> return err;
> }
> -#endif
>
> static const struct dev_pm_ops sdhci_esdhc_pmops = {
> - SET_SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
> - SET_RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> + SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume)
> + RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend,
> sdhci_esdhc_runtime_resume, NULL)
> };
>
> @@ -2116,7 +2112,7 @@ static struct platform_driver sdhci_esdhc_imx_driver = {
> .name = "sdhci-esdhc-imx",
> .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> .of_match_table = imx_esdhc_dt_ids,
> - .pm = &sdhci_esdhc_pmops,
> + .pm = pm_ptr(&sdhci_esdhc_pmops),
> },
> .probe = sdhci_esdhc_imx_probe,
> .remove = sdhci_esdhc_imx_remove,
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-04-16 17:49 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-11 8:59 [PATCH] [v2] mmc: esdhc-imx: convert to modern PM_OPS Arnd Bergmann
2025-04-11 11:02 ` [EXT] " Luke Wang
2025-04-11 11:47 ` Adrian Hunter
2025-04-14 6:49 ` Luke Wang
2025-04-14 8:08 ` kernel test robot
2025-04-14 10:32 ` kernel test robot
2025-04-15 3:15 ` [EXT] " Luke Wang
2025-04-15 12:57 ` Arnd Bergmann
2025-04-16 2:42 ` Luke Wang
2025-04-16 17:47 ` Adrian Hunter
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).