[PATCH v2 1/2] ufs: core: Add ufshcd_dme_enable() and ufshcd_dme_reset()
Shawn Lin
shawn.lin at rock-chips.com
Mon Oct 20 03:29:13 CEST 2025
In order for host drivers to use.
Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
---
drivers/ufs/ufs.c | 30 ++++++++++++++++++++++++++++++
drivers/ufs/ufs.h | 2 ++
2 files changed, 32 insertions(+)
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 57e6e8c013b..92cd9ad239f 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -368,6 +368,36 @@ static int ufshcd_dme_link_startup(struct ufs_hba *hba)
return ret;
}
+int ufshcd_dme_enable(struct ufs_hba *hba)
+{
+ struct uic_command uic_cmd = {0};
+ int ret;
+
+ uic_cmd.command = UIC_CMD_DME_ENABLE;
+
+ ret = ufshcd_send_uic_cmd(hba, &uic_cmd);
+ if (ret)
+ dev_dbg(hba->dev,
+ "dme-enable: error code %d\n", ret);
+
+ return ret;
+}
+
+int ufshcd_dme_reset(struct ufs_hba *hba)
+{
+ struct uic_command uic_cmd = {0};
+ int ret;
+
+ uic_cmd.command = UIC_CMD_DME_RESET;
+
+ ret = ufshcd_send_uic_cmd(hba, &uic_cmd);
+ if (ret)
+ dev_dbg(hba->dev,
+ "dme-reset: error code %d\n", ret);
+
+ return ret;
+}
+
/**
* ufshcd_disable_intr_aggr - Disables interrupt aggregation.
*
diff --git a/drivers/ufs/ufs.h b/drivers/ufs/ufs.h
index 0337ac5996b..ebbd5d6cad7 100644
--- a/drivers/ufs/ufs.h
+++ b/drivers/ufs/ufs.h
@@ -435,6 +435,8 @@ int ufshcd_dme_set_attr(struct ufs_hba *hba, u32 attr_sel,
u8 attr_set, u32 mib_val, u8 peer);
int ufshcd_dme_get_attr(struct ufs_hba *hba, u32 attr_sel,
u32 *mib_val, u8 peer);
+int ufshcd_dme_enable(struct ufs_hba *hba);
+int ufshcd_dme_reset(struct ufs_hba *hba);
static inline int ufshcd_dme_set(struct ufs_hba *hba, u32 attr_sel,
u32 mib_val)
--
2.43.0
More information about the U-Boot
mailing list