RE: [PATCH v3 13/17] scsi: ufs: ufs-exynos: add pre/post_hce_enable drv callbacks
From: "Alim Akhtar" <alim.akhtar@samsung.com>
Date: 2021-09-23 04:55:30
Also in:
linux-samsung-soc
Hi Chanho
-----Original Message----- From: Chanho Park [mailto:chanho61.park@samsung.com] Sent: Friday, September 17, 2021 12:25 PM To: Alim Akhtar <alim.akhtar@samsung.com>; Avri Altman [off-list ref]; James E . J . Bottomley [off-list ref]; Martin K . Petersen [off-list ref]; Krzysztof Kozlowski [off-list ref] Cc: Bean Huo <redacted>; Bart Van Assche [off-list ref]; Adrian Hunter [off-list ref]; Christoph Hellwig [off-list ref]; Can Guo [off-list ref]; Jaegeuk Kim [off-list ref]; Gyunghoon Kwon [off-list ref]; linux-samsung-soc@vger.kernel.org; linux-scsi@vger.kernel.org; Chanho Park [off-list ref]; Kiwoong Kim [off-list ref] Subject: [PATCH v3 13/17] scsi: ufs: ufs-exynos: add pre/post_hce_enable drv callbacks This patch adds driver-specific pre/post_hce_enable callbacks to execute extra initializations before and after hce_enable_notify callback. Cc: Alim Akhtar <alim.akhtar@samsung.com> Cc: Kiwoong Kim <redacted> Cc: Krzysztof Kozlowski <redacted> Signed-off-by: Chanho Park <redacted> ---
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
quoted hunk ↗ jump to hunk
drivers/scsi/ufs/ufs-exynos.c | 10 ++++++++++ drivers/scsi/ufs/ufs-exynos.h | 2 ++ 2 files changed, 12 insertions(+)diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/scsi/ufs/ufs-exynos.c index753b22358186..7fb4514f700d 100644--- a/drivers/scsi/ufs/ufs-exynos.c +++ b/drivers/scsi/ufs/ufs-exynos.c@@ -1141,6 +1141,12 @@ static int exynos_ufs_hce_enable_notify(structufs_hba *hba, switch (status) { case PRE_CHANGE: + if (ufs->drv_data->pre_hce_enable) { + ret = ufs->drv_data->pre_hce_enable(ufs); + if (ret) + return ret; + } + ret = exynos_ufs_host_reset(hba); if (ret) return ret;@@ -1150,6 +1156,10 @@ static int exynos_ufs_hce_enable_notify(structufs_hba *hba, exynos_ufs_calc_pwm_clk_div(ufs); if (!(ufs->opts & EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL)) exynos_ufs_enable_auto_ctrl_hcc(ufs); + + if (ufs->drv_data->post_hce_enable) + ret = ufs->drv_data->post_hce_enable(ufs); + break; }diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/scsi/ufs/ufs-exynos.h indexa0899aaa902e..c291ae51dd41 100644--- a/drivers/scsi/ufs/ufs-exynos.h +++ b/drivers/scsi/ufs/ufs-exynos.h@@ -154,6 +154,8 @@ struct exynos_ufs_drv_data {struct ufs_pa_layer_attr *pwr); int (*post_pwr_change)(struct exynos_ufs *ufs, struct ufs_pa_layer_attr *pwr); + int (*pre_hce_enable)(struct exynos_ufs *ufs); + int (*post_hce_enable)(struct exynos_ufs *ufs); }; struct ufs_phy_time_cfg { -- 2.33.0