scsi: allow host change auto suspend timer
Subsystems (4)
[email protected]
maintainercover scsi: allow host change auto suspend timer
From: Peter Wang <[email protected]>
This patch allow MediaTek platform driver change auto suspend timer.
Peter Wang (2):
scsi: core: move auto suspend timer to Scsi_Host
ufs: host: mediatek: change default auto suspend timer
drivers/scsi/sd.c | 2 +- drivers/ufs/core/ufshcd.c | 9 +++++++-- drivers/ufs/host/ufs-mediatek.c | 4 ++++ drivers/ufs/host/ufs-mediatek.h | 3 +++ include/scsi/scsi_host.h | 6 +++--- 5 files changed, 18 insertions(+), 6 deletions(-)
Signature · 1 line
2.18.0
[email protected]
maintainerPATCH 1/2 scsi: core: move auto suspend timer to Scsi_Host
From: Peter Wang <[email protected]>
Runtime suspend timer is a const value in scsi_host_template, which host cannot modify this value.
Move it to Scsi_Host for host flexible use.
--- drivers/scsi/sd.c | 2 +- drivers/ufs/core/ufshcd.c | 9 +++++++-- include/scsi/scsi_host.h | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-)
drivers/scsi/sd.c +1 -1
@@ -3731,7 +3731,7 @@ static int sd_probe(struct device *dev)blk_pm_runtime_init (sdp->request_queue, dev);if (sdp->rpm_autosuspend) {pm_runtime_set_autosuspend_delay (dev, - sdp->host->hostt->rpm_autosuspend_delay); + sdp->host->rpm_autosuspend_delay); } error =device_add_disk (dev, gd,NULL );
drivers/ufs/core/ufshcd.c +7 -2
@@ -7982,11 +7982,13 @@ static void ufshcd_set_active_icc_lvl(struct ufs_hba *hba)static inline void ufshcd_blk_pm_runtime_init (struct scsi_device *sdev) { +struct Scsi_Host *shost = sdev->host; +scsi_autopm_get_device (sdev);blk_pm_runtime_init (sdev->request_queue, &sdev->sdev_gendev);if (sdev->rpm_autosuspend)pm_runtime_set_autosuspend_delay (&sdev->sdev_gendev, -RPM_AUTOSUSPEND_DELAY_MS ); + shost->rpm_autosuspend_delay);scsi_autopm_put_device (sdev); }
@@ -8988,7 +8990,6 @@ static const struct scsi_host_template ufshcd_driver_template = { .track_queue_depth = 1, .skip_settle_delay = 1, .sdev_groups = ufshcd_driver_groups, - .rpm_autosuspend_delay = RPM_AUTOSUSPEND_DELAY_MS, }; static int ufshcd_config_vreg_load(struct device *dev, struct ufs_vreg *vreg,
@@ -10439,6 +10440,10 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) host->max_cmd_len =UFS_CDB_SIZE ; host->queuecommand_may_block = !!(hba->caps &UFSHCD_CAP_CLK_GATING ); +/* Use default RPM delay if host not set */ +if (host->rpm_autosuspend_delay ==0 ) + host->rpm_autosuspend_delay =RPM_AUTOSUSPEND_DELAY_MS ; + hba->max_pwr_info.is_valid = false;/* Initialize work queues */
include/scsi/scsi_host.h +3 -3
@@ -497,9 +497,6 @@ struct scsi_host_template {* scsi_netlink.h */ u64 vendor_id; - -/* Delay for runtime autosuspend */ -int rpm_autosuspend_delay; };/*
@@ -713,6 +710,9 @@ struct Scsi_Host {*/ struct device *dma_dev; +/* Delay for runtime autosuspend */ +int rpm_autosuspend_delay; +/* * We should ensure that this is aligned, both for better performance * and also because some compilers (m68k) don't automatically force
Signature · 1 line
2.18.0
Re: [PATCH v1 1/2] scsi: core: move auto suspend timer to Scsi_Host
Quoted 3 lines · On 1/9/24 04:40, [email protected] wrote:
Runtime suspend timer is a const value in
scsi_host_template, which host cannot modify this value.
Move it toScsi_Hostfor host flexible use.
It would help to mention in the cover letter that the UFSHCI driver is the only driver that sets .rpm_autosuspend_delay in the SCSI host template and hence that this patch does not break any SCSI drivers. Anyway:
[email protected]
maintainerPATCH 2/2 ufs: host: mediatek: change default auto suspend timer
In reply to [email protected]From: Peter Wang <[email protected]>
Mediatek ufs driver change default auto suspend timer from 2000 ms to 500 ms.
--- drivers/ufs/host/ufs-mediatek.c | 4 ++++ drivers/ufs/host/ufs-mediatek.h | 3 +++ 2 files changed, 7 insertions(+)
drivers/ufs/host/ufs-mediatek.c +4 -0
@@ -893,6 +893,7 @@ static int ufs_mtk_init(struct ufs_hba *hba)const struct of_device_id *id;struct device *dev = hba->dev;struct ufs_mtk_host *host; +struct Scsi_Host *shost = hba->host;int err =0 ; host =devm_kzalloc (dev,sizeof (*host),GFP_KERNEL );
@@ -937,6 +938,9 @@ static int ufs_mtk_init(struct ufs_hba *hba)/* Enable clk scaling*/ hba->caps |=UFSHCD_CAP_CLK_SCALING ; +/* Set runtime pm delay to replace default */ + shost->rpm_autosuspend_delay =MTK_RPM_AUTOSUSPEND_DELAY_MS ; + hba->quirks |=UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL ; hba->quirks |=UFSHCD_QUIRK_MCQ_BROKEN_INTR ; hba->quirks |=UFSHCD_QUIRK_MCQ_BROKEN_RTC ;
drivers/ufs/host/ufs-mediatek.h +3 -0
@@ -190,6 +190,9 @@ struct ufs_mtk_host {struct ufs_mtk_mcq_intr_info mcq_intr_info[UFSHCD_MAX_Q_NR ]; }; +/* MTK delay of autosuspend: 500 ms */ +#define MTK_RPM_AUTOSUSPEND_DELAY_MS 500 +/* * Multi-VCC by Numbering */
Signature · 1 line
2.18.0
Martin K. Petersen
AppliedQuoted 2 lines
This patch allow MediaTek platform driver change auto suspend timer.
Applied to 6.9/scsi-staging, thanks!
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering
Martin K. Petersen
AppliedQuoted 6 lines · On Tue, 09 Jan 2024 20:40:13 +0800, [email protected] wrote:
This patch allow MediaTek platform driver change auto suspend timer.
Peter Wang (2):
scsi: core: move auto suspend timer toScsi_Host
ufs: host: mediatek: change default auto suspend timer
Quoted 8 lines
drivers/scsi/sd.c| 2 +-drivers/ufs/core/ufshcd.c | 9 +++++++-- drivers/ufs/host/ufs-mediatek.c | 4 ++++ drivers/ufs/host/ufs-mediatek.h | 3 +++ include/scsi/scsi_host.h | 6 +++--- 5 files changed, 18 insertions(+), 6 deletions(-)[...]
Applied to 6.9/scsi-queue, thanks!
[1/2] scsi: core: move auto suspend timer to Scsi_Host
https://git.kernel.org/mkp/scsi/c/4380e64a94e1 [2/2] ufs: host: mediatek: change default auto suspend timer https://git.kernel.org/mkp/scsi/c/332973850054
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering