From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Po-Wen Kao <powen.kao@mediatek.com>,
Stanley Chu <stanley.chu@mediatek.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Sasha Levin <sashal@kernel.org>,
jejb@linux.ibm.com, matthias.bgg@gmail.com, bvanassche@acm.org,
beanhuo@micron.com, avri.altman@wdc.com, peter.wang@mediatek.com,
linmq006@gmail.com, ye.guojin@zte.com.cn,
linux-scsi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: [PATCH AUTOSEL 5.15 12/46] scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators
Date: Sun, 14 Aug 2022 11:32:13 -0400 [thread overview]
Message-ID: <20220814153247.2378312-12-sashal@kernel.org> (raw)
In-Reply-To: <20220814153247.2378312-1-sashal@kernel.org>
From: Po-Wen Kao <powen.kao@mediatek.com>
[ Upstream commit 3fd23b8dfb54d9b74eba6dfdd3225db3ac116785 ]
Currently the LPM configurations of device regulators may not work since
VCC is not disabled yet while ufs_mtk_vreg_set_lpm() is executed.
Fix this by changing the timing of invoking ufs_mtk_vreg_set_lpm().
Link: https://lore.kernel.org/r/20220616053725.5681-5-stanley.chu@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/ufs/ufs-mediatek.c | 58 ++++++++++++++++++++++++++++++---
1 file changed, 53 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 4e53857605de..9f1d69d33149 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -949,7 +949,6 @@ static int ufs_mtk_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
* ufshcd_suspend() re-enabling regulators while vreg is still
* in low-power mode.
*/
- ufs_mtk_vreg_set_lpm(hba, true);
err = ufs_mtk_mphy_power_on(hba, false);
if (err)
goto fail;
@@ -973,12 +972,13 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
{
int err;
+ if (hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL)
+ ufs_mtk_vreg_set_lpm(hba, false);
+
err = ufs_mtk_mphy_power_on(hba, true);
if (err)
goto fail;
- ufs_mtk_vreg_set_lpm(hba, false);
-
if (ufshcd_is_link_hibern8(hba)) {
err = ufs_mtk_link_set_hpm(hba);
if (err)
@@ -1139,9 +1139,57 @@ static int ufs_mtk_remove(struct platform_device *pdev)
return 0;
}
+int ufs_mtk_system_suspend(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+ int ret;
+
+ ret = ufshcd_system_suspend(dev);
+ if (ret)
+ return ret;
+
+ ufs_mtk_vreg_set_lpm(hba, true);
+
+ return 0;
+}
+
+int ufs_mtk_system_resume(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+
+ ufs_mtk_vreg_set_lpm(hba, false);
+
+ return ufshcd_system_resume(dev);
+}
+
+int ufs_mtk_runtime_suspend(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+ int ret = 0;
+
+ ret = ufshcd_runtime_suspend(dev);
+ if (ret)
+ return ret;
+
+ ufs_mtk_vreg_set_lpm(hba, true);
+
+ return 0;
+}
+
+int ufs_mtk_runtime_resume(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+
+ ufs_mtk_vreg_set_lpm(hba, false);
+
+ return ufshcd_runtime_resume(dev);
+}
+
static const struct dev_pm_ops ufs_mtk_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(ufshcd_system_suspend, ufshcd_system_resume)
- SET_RUNTIME_PM_OPS(ufshcd_runtime_suspend, ufshcd_runtime_resume, NULL)
+ 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)
.prepare = ufshcd_suspend_prepare,
.complete = ufshcd_resume_complete,
};
--
2.35.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Po-Wen Kao <powen.kao@mediatek.com>,
Stanley Chu <stanley.chu@mediatek.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Sasha Levin <sashal@kernel.org>,
jejb@linux.ibm.com, matthias.bgg@gmail.com, bvanassche@acm.org,
beanhuo@micron.com, avri.altman@wdc.com, peter.wang@mediatek.com,
linmq006@gmail.com, ye.guojin@zte.com.cn,
linux-scsi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: [PATCH AUTOSEL 5.15 12/46] scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators
Date: Sun, 14 Aug 2022 11:32:13 -0400 [thread overview]
Message-ID: <20220814153247.2378312-12-sashal@kernel.org> (raw)
In-Reply-To: <20220814153247.2378312-1-sashal@kernel.org>
From: Po-Wen Kao <powen.kao@mediatek.com>
[ Upstream commit 3fd23b8dfb54d9b74eba6dfdd3225db3ac116785 ]
Currently the LPM configurations of device regulators may not work since
VCC is not disabled yet while ufs_mtk_vreg_set_lpm() is executed.
Fix this by changing the timing of invoking ufs_mtk_vreg_set_lpm().
Link: https://lore.kernel.org/r/20220616053725.5681-5-stanley.chu@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/ufs/ufs-mediatek.c | 58 ++++++++++++++++++++++++++++++---
1 file changed, 53 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 4e53857605de..9f1d69d33149 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -949,7 +949,6 @@ static int ufs_mtk_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
* ufshcd_suspend() re-enabling regulators while vreg is still
* in low-power mode.
*/
- ufs_mtk_vreg_set_lpm(hba, true);
err = ufs_mtk_mphy_power_on(hba, false);
if (err)
goto fail;
@@ -973,12 +972,13 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
{
int err;
+ if (hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL)
+ ufs_mtk_vreg_set_lpm(hba, false);
+
err = ufs_mtk_mphy_power_on(hba, true);
if (err)
goto fail;
- ufs_mtk_vreg_set_lpm(hba, false);
-
if (ufshcd_is_link_hibern8(hba)) {
err = ufs_mtk_link_set_hpm(hba);
if (err)
@@ -1139,9 +1139,57 @@ static int ufs_mtk_remove(struct platform_device *pdev)
return 0;
}
+int ufs_mtk_system_suspend(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+ int ret;
+
+ ret = ufshcd_system_suspend(dev);
+ if (ret)
+ return ret;
+
+ ufs_mtk_vreg_set_lpm(hba, true);
+
+ return 0;
+}
+
+int ufs_mtk_system_resume(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+
+ ufs_mtk_vreg_set_lpm(hba, false);
+
+ return ufshcd_system_resume(dev);
+}
+
+int ufs_mtk_runtime_suspend(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+ int ret = 0;
+
+ ret = ufshcd_runtime_suspend(dev);
+ if (ret)
+ return ret;
+
+ ufs_mtk_vreg_set_lpm(hba, true);
+
+ return 0;
+}
+
+int ufs_mtk_runtime_resume(struct device *dev)
+{
+ struct ufs_hba *hba = dev_get_drvdata(dev);
+
+ ufs_mtk_vreg_set_lpm(hba, false);
+
+ return ufshcd_runtime_resume(dev);
+}
+
static const struct dev_pm_ops ufs_mtk_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(ufshcd_system_suspend, ufshcd_system_resume)
- SET_RUNTIME_PM_OPS(ufshcd_runtime_suspend, ufshcd_runtime_resume, NULL)
+ 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)
.prepare = ufshcd_suspend_prepare,
.complete = ufshcd_resume_complete,
};
--
2.35.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-08-14 15:43 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-14 15:32 [PATCH AUTOSEL 5.15 01/46] HID: multitouch: new device class fix Lenovo X12 trackpad sticky Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 02/46] PCI: Add ACS quirk for Broadcom BCM5750x NICs Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 03/46] platform/chrome: cros_ec_proto: don't show MKBP version if unsupported Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 04/46] usb: cdns3 fix use-after-free at workaround 2 Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 05/46] usb: cdns3: fix random warning message when driver load Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 06/46] usb: gadget: uvc: calculate the number of request depending on framesize Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 07/46] usb: gadget: uvc: call uvc uvcg_warn on completed status instead of uvcg_info Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 08/46] PCI: aardvark: Fix reporting Slot capabilities on emulated bridge Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 09/46] irqchip/tegra: Fix overflow implicit truncation warnings Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 10/46] drm/meson: " Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 11/46] clk: ti: Stop using legacy clkctrl names for omap4 and 5 Sasha Levin
2022-08-14 15:32 ` Sasha Levin [this message]
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 12/46] scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 13/46] usb: host: ohci-ppc-of: Fix refcount leak bug Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 14/46] usb: renesas: " Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 15/46] usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 16/46] vboxguest: Do not use devm for irq Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 17/46] clk: qcom: ipq8074: dont disable gcc_sleep_clk_src Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 18/46] uacce: Handle parent device removal or parent driver module rmmod Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 19/46] zram: do not lookup algorithm in backends table Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 20/46] clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 21/46] scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user input Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 22/46] scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 23/46] gadgetfs: ep_io - wait until IRQ finishes Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 24/46] coresight: etm4x: avoid build failure with unrolled loops Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 25/46] habanalabs/gaudi: fix shift out of bounds Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 26/46] habanalabs/gaudi: mask constant value before cast Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 27/46] mmc: tmio: avoid glitches when resetting Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 28/46] pinctrl: intel: Check against matching data instead of ACPI companion Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 29/46] cxl: Fix a memory leak in an error handling path Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 30/46] PCI/ACPI: Guard ARM64-specific mcfg_quirks Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 31/46] um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 32/46] dmaengine: dw-axi-dmac: do not print NULL LLI during error Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 33/46] dmaengine: dw-axi-dmac: ignore interrupt if no descriptor Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 34/46] RDMA/rxe: Limit the number of calls to each tasklet Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 35/46] csky/kprobe: reclaim insn_slot on kprobe unregistration Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 36/46] selftests/kprobe: Do not test for GRP/ without event failures Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 37/46] dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 38/46] ARM: 9202/1: kasan: support CONFIG_KASAN_VMALLOC Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 39/46] ARM: 9203/1: kconfig: fix MODULE_PLTS for KASAN with KASAN_VMALLOC Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 40/46] openrisc: io: Define iounmap argument as volatile Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 41/46] phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 42/46] md: Notify sysfs sync_completed in md_reap_sync_thread() Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 43/46] nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 44/46] drivers:md:fix a potential use-after-free bug Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 45/46] ext4: avoid remove directory when directory is corrupted Sasha Levin
2022-08-14 15:32 ` [PATCH AUTOSEL 5.15 46/46] ext4: avoid resizing to a partial cluster size Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220814153247.2378312-12-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=bvanassche@acm.org \
--cc=jejb@linux.ibm.com \
--cc=linmq006@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=matthias.bgg@gmail.com \
--cc=peter.wang@mediatek.com \
--cc=powen.kao@mediatek.com \
--cc=stable@vger.kernel.org \
--cc=stanley.chu@mediatek.com \
--cc=ye.guojin@zte.com.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.