From 5cdbfe11ca75af09b97123498075b56a7fa02b8d Mon Sep 17 00:00:00 2001 From: Gilad Broner Date: Sun, 21 Dec 2014 10:48:42 +0200 Subject: scsi: ufs-qcom: set device ref. clk bit As of HW major version 2, a new bit 'UFS_DEV_REF_CLK_EN' was added to UFS_CFG1 register which needs to be set as part of hibernate enter/exit sequences during suspend/resume. Change-Id: I66a6a75dc5a1cf130b1cee90ae20f9f950edfb3a Signed-off-by: Gilad Broner [imaund@codeaurora.org: Resolved context conflicts and updated a conditional in ufs_qcom_advertise_quirks to use the ufs_qcom_host struct when querying major hw versions] Signed-off-by: Ian Maund [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani [venkatg@codeaurora.org: resolved trivial merge conflicts, drop changes to include/linux/phy/phy-qcom-ufs.h] Signed-off-by: Venkat Gopalakrishnan --- include/linux/scsi/ufs/ufs-qcom.h | 10 ++++++++++ include/linux/scsi/ufs/ufshcd.h | 9 +++++++++ 2 files changed, 19 insertions(+) (limited to 'include/linux') diff --git a/include/linux/scsi/ufs/ufs-qcom.h b/include/linux/scsi/ufs/ufs-qcom.h index 047d38987f85..dee92b9ee54f 100644 --- a/include/linux/scsi/ufs/ufs-qcom.h +++ b/include/linux/scsi/ufs/ufs-qcom.h @@ -182,6 +182,13 @@ struct ufs_qcom_ice_data { bool crypto_engine_err; }; +/* Host controller hardware version: major.minor.step */ +struct ufs_hw_version { + u16 step; + u16 minor; + u8 major; +}; + struct ufs_qcom_host { /* * Set this capability if host controller supports the QUniPro mode @@ -203,6 +210,9 @@ struct ufs_qcom_host { bool is_lane_clks_enabled; bool sec_cfg_updated; struct ufs_qcom_ice_data ice; + void __iomem *dev_ref_clk_ctrl_mmio; + bool is_dev_ref_clk_enabled; + struct ufs_hw_version hw_ver; }; #define ufs_qcom_is_link_off(hba) ufshcd_is_link_off(hba) diff --git a/include/linux/scsi/ufs/ufshcd.h b/include/linux/scsi/ufs/ufshcd.h index e3a5c23f39ea..b4d7b5f60995 100644 --- a/include/linux/scsi/ufs/ufshcd.h +++ b/include/linux/scsi/ufs/ufshcd.h @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -940,6 +941,14 @@ static inline int ufshcd_dme_peer_get(struct ufs_hba *hba, int ufshcd_read_device_desc(struct ufs_hba *hba, u8 *buf, u32 size); +static inline bool ufshcd_is_hs_mode(struct ufs_pa_layer_attr *pwr_info) +{ + return (pwr_info->pwr_rx == FAST_MODE || + pwr_info->pwr_rx == FASTAUTO_MODE) && + (pwr_info->pwr_tx == FAST_MODE || + pwr_info->pwr_tx == FASTAUTO_MODE); +} + #define ASCII_STD true #define UTF16_STD false int ufshcd_read_string_desc(struct ufs_hba *hba, int desc_index, u8 *buf, -- cgit v1.2.3