diff options
| author | Shawn Lin <[email protected]> | 2025-10-20 16:16:21 +0800 |
|---|---|---|
| committer | Neil Armstrong <[email protected]> | 2025-10-28 17:20:17 +0100 |
| commit | 84919722e6a7af63729e2289588f4dfb37b43879 (patch) | |
| tree | 14da097e2860d60df0ad9447f699952b4de07490 /drivers | |
| parent | c7327ac29590952089bf3d8994d0951e58cc2322 (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.c | 30 | ||||
| -rw-r--r-- | drivers/ufs/ufs.h | 2 |
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) |
