| From 52c1a3d9e5330f7c571f10a5a7736ef5544a2a07 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 2 Feb 2026 10:50:18 +0100 |
| Subject: scsi: ufs: host: mediatek: Require CONFIG_PM |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| [ Upstream commit bbb8d98fb4536594cb104fd630ea0f7dce3771d6 ] |
| |
| The added print statement from a recent fix causes the driver to fail |
| building when CONFIG_PM is disabled: |
| |
| drivers/ufs/host/ufs-mediatek.c: In function 'ufs_mtk_resume': |
| drivers/ufs/host/ufs-mediatek.c:1890:40: error: 'struct dev_pm_info' has no member named 'request' |
| 1890 | hba->dev->power.request, |
| |
| It seems unlikely that the driver can work at all without CONFIG_PM, so |
| just add a dependency and remove the existing ifdef checks, rather than |
| adding another ifdef. |
| |
| Fixes: 15ef3f5aa822 ("scsi: ufs: host: mediatek: Enhance recovery on resume failure") |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> |
| Link: https://patch.msgid.link/20260202095052.1232703-1-arnd@kernel.org |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/ufs/host/Kconfig | 1 + |
| drivers/ufs/host/ufs-mediatek.c | 12 +++--------- |
| include/ufs/ufshcd.h | 4 ---- |
| 3 files changed, 4 insertions(+), 13 deletions(-) |
| |
| diff --git a/drivers/ufs/host/Kconfig b/drivers/ufs/host/Kconfig |
| index 7d5117b2dab4a..964ae70e7390d 100644 |
| --- a/drivers/ufs/host/Kconfig |
| +++ b/drivers/ufs/host/Kconfig |
| @@ -72,6 +72,7 @@ config SCSI_UFS_QCOM |
| config SCSI_UFS_MEDIATEK |
| tristate "Mediatek specific hooks to UFS controller platform driver" |
| depends on SCSI_UFSHCD_PLATFORM && ARCH_MEDIATEK |
| + depends on PM |
| depends on RESET_CONTROLLER |
| select PHY_MTK_UFS |
| select RESET_TI_SYSCON |
| diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c |
| index 66b11cc0703bd..b3daaa07e9252 100644 |
| --- a/drivers/ufs/host/ufs-mediatek.c |
| +++ b/drivers/ufs/host/ufs-mediatek.c |
| @@ -2437,7 +2437,6 @@ static void ufs_mtk_remove(struct platform_device *pdev) |
| ufshcd_pltfrm_remove(pdev); |
| } |
| |
| -#ifdef CONFIG_PM_SLEEP |
| static int ufs_mtk_system_suspend(struct device *dev) |
| { |
| struct ufs_hba *hba = dev_get_drvdata(dev); |
| @@ -2484,9 +2483,7 @@ static int ufs_mtk_system_resume(struct device *dev) |
| |
| return ret; |
| } |
| -#endif |
| |
| -#ifdef CONFIG_PM |
| static int ufs_mtk_runtime_suspend(struct device *dev) |
| { |
| struct ufs_hba *hba = dev_get_drvdata(dev); |
| @@ -2525,13 +2522,10 @@ static int ufs_mtk_runtime_resume(struct device *dev) |
| |
| return ufshcd_runtime_resume(dev); |
| } |
| -#endif |
| |
| static const struct dev_pm_ops ufs_mtk_pm_ops = { |
| - SET_SYSTEM_SLEEP_PM_OPS(ufs_mtk_system_suspend, |
| - ufs_mtk_system_resume) |
| - SET_RUNTIME_PM_OPS(ufs_mtk_runtime_suspend, |
| - ufs_mtk_runtime_resume, NULL) |
| + SYSTEM_SLEEP_PM_OPS(ufs_mtk_system_suspend, ufs_mtk_system_resume) |
| + RUNTIME_PM_OPS(ufs_mtk_runtime_suspend, ufs_mtk_runtime_resume, NULL) |
| .prepare = ufshcd_suspend_prepare, |
| .complete = ufshcd_resume_complete, |
| }; |
| @@ -2541,7 +2535,7 @@ static struct platform_driver ufs_mtk_pltform = { |
| .remove = ufs_mtk_remove, |
| .driver = { |
| .name = "ufshcd-mtk", |
| - .pm = &ufs_mtk_pm_ops, |
| + .pm = pm_ptr(&ufs_mtk_pm_ops), |
| .of_match_table = ufs_mtk_of_match, |
| }, |
| }; |
| diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h |
| index 19154228780b2..8e15c3a70ed41 100644 |
| --- a/include/ufs/ufshcd.h |
| +++ b/include/ufs/ufshcd.h |
| @@ -1342,17 +1342,13 @@ static inline void *ufshcd_get_variant(struct ufs_hba *hba) |
| return hba->priv; |
| } |
| |
| -#ifdef CONFIG_PM |
| extern int ufshcd_runtime_suspend(struct device *dev); |
| extern int ufshcd_runtime_resume(struct device *dev); |
| -#endif |
| -#ifdef CONFIG_PM_SLEEP |
| extern int ufshcd_system_suspend(struct device *dev); |
| extern int ufshcd_system_resume(struct device *dev); |
| extern int ufshcd_system_freeze(struct device *dev); |
| extern int ufshcd_system_thaw(struct device *dev); |
| extern int ufshcd_system_restore(struct device *dev); |
| -#endif |
| |
| extern int ufshcd_dme_reset(struct ufs_hba *hba); |
| extern int ufshcd_dme_enable(struct ufs_hba *hba); |
| -- |
| 2.51.0 |
| |