Thread (42 messages) 42 messages, 4 authors, 2021-09-28

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 index
753b22358186..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(struct
ufs_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(struct
ufs_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 index
a0899aaa902e..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
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help