| From 438c8bfa6a929d2ae7fb2329789435bc1921d0d7 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 580c8d0bd8bbd..626bb9002f4a1 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 8b4a3cc812531..606e90ce8ca70 100644 |
| --- a/drivers/ufs/host/ufs-mediatek.c |
| +++ b/drivers/ufs/host/ufs-mediatek.c |
| @@ -1852,7 +1852,6 @@ static int ufs_mtk_remove(struct platform_device *pdev) |
| return 0; |
| } |
| |
| -#ifdef CONFIG_PM_SLEEP |
| static int ufs_mtk_system_suspend(struct device *dev) |
| { |
| struct ufs_hba *hba = dev_get_drvdata(dev); |
| @@ -1875,9 +1874,7 @@ static int ufs_mtk_system_resume(struct device *dev) |
| |
| return ufshcd_system_resume(dev); |
| } |
| -#endif |
| |
| -#ifdef CONFIG_PM |
| static int ufs_mtk_runtime_suspend(struct device *dev) |
| { |
| struct ufs_hba *hba = dev_get_drvdata(dev); |
| @@ -1900,13 +1897,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, |
| }; |
| @@ -1916,7 +1910,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 78380fc2374ea..8d2efb9e5d664 100644 |
| --- a/include/ufs/ufshcd.h |
| +++ b/include/ufs/ufshcd.h |
| @@ -1329,17 +1329,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_configure_adapt(struct ufs_hba *hba, |
| int agreed_gear, |
| -- |
| 2.51.0 |
| |