summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorShawn Lin <[email protected]>2025-10-20 16:16:21 +0800
committerNeil Armstrong <[email protected]>2025-10-28 17:20:17 +0100
commit84919722e6a7af63729e2289588f4dfb37b43879 (patch)
tree14da097e2860d60df0ad9447f699952b4de07490 /drivers
parentc7327ac29590952089bf3d8994d0951e58cc2322 (diff)
ufs: core: Add ufshcd_dme_enable() and ufshcd_dme_reset()
In order for host drivers to use. Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Shawn Lin <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ufs/ufs.c30
-rw-r--r--drivers/ufs/ufs.h2
2 files changed, 32 insertions, 0 deletions
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 2125e70a054..b4f994c5bc0 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -369,6 +369,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 d38b6fec2ca..bc839a43704 100644
--- a/drivers/ufs/ufs.h
+++ b/drivers/ufs/ufs.h
@@ -447,6 +447,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)