| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Can Guo <cang@codeaurora.org> |
| Date: Thu, 5 Dec 2019 18:16:12 -0800 |
| Subject: NOUPSTREAM: ANDROID: scsi: SCSI/UFS Exports |
| |
| Vendor drivers may need to send query requests in proprietary |
| implementations. Hence, export the query request interfaces |
| so that vendor drivers can use them. |
| |
| Removed export of internal helper functions: |
| ufshcd_query_attr_retry and ufshcd_query_flag_retry |
| |
| [CPNOTE: 25/05/21] Lee: NACKed upstream patch - still exported in android12-5.10 |
| |
| Squash: |
| NOUPSTREAM: ANDROID: export bkops and query/flag query functions |
| |
| Bug: 146013342 |
| Bug: 158050260 |
| Change-Id: Ibe3082097554e89e03b33a926ef013503bac0e74 |
| Signed-off-by: Lee Jones <lee.jones@linaro.org> |
| Signed-off-by: Lee Jones <joneslee@google.com> |
| --- |
| drivers/ufs/core/ufshcd.c | 11 +++++++++-- |
| include/ufs/ufshcd.h | 8 ++++++++ |
| 2 files changed, 17 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c |
| --- a/drivers/ufs/core/ufshcd.c |
| +++ b/drivers/ufs/core/ufshcd.c |
| @@ -3100,7 +3100,7 @@ static inline void ufshcd_init_query(struct ufs_hba *hba, |
| (*request)->upiu_req.selector = selector; |
| } |
| |
| -static int ufshcd_query_flag_retry(struct ufs_hba *hba, |
| +int ufshcd_query_flag_retry(struct ufs_hba *hba, |
| enum query_opcode opcode, enum flag_idn idn, u8 index, bool *flag_res) |
| { |
| int ret; |
| @@ -3122,6 +3122,7 @@ static int ufshcd_query_flag_retry(struct ufs_hba *hba, |
| __func__, opcode, idn, ret, retries); |
| return ret; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_query_flag_retry); |
| |
| /** |
| * ufshcd_query_flag() - API function for sending flag query requests |
| @@ -3190,6 +3191,7 @@ int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode, |
| ufshcd_release(hba); |
| return err; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_query_flag); |
| |
| /** |
| * ufshcd_query_attr - API function for sending attribute requests |
| @@ -3253,6 +3255,7 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode, |
| ufshcd_release(hba); |
| return err; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_query_attr); |
| |
| /** |
| * ufshcd_query_attr_retry() - API function for sending query |
| @@ -3290,6 +3293,7 @@ int ufshcd_query_attr_retry(struct ufs_hba *hba, |
| __func__, idn, ret, QUERY_REQ_RETRIES); |
| return ret; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_query_attr_retry); |
| |
| static int __ufshcd_query_descriptor(struct ufs_hba *hba, |
| enum query_opcode opcode, enum desc_idn idn, u8 index, |
| @@ -3385,6 +3389,7 @@ int ufshcd_query_descriptor_retry(struct ufs_hba *hba, |
| |
| return err; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_query_descriptor_retry); |
| |
| /** |
| * ufshcd_map_desc_id_to_length - map descriptor IDN to its length |
| @@ -3503,6 +3508,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, |
| kfree(desc_buf); |
| return ret; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_read_desc_param); |
| |
| /** |
| * struct uc_string_id - unicode string |
| @@ -5663,7 +5669,7 @@ static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status) |
| * to know whether auto bkops is enabled or disabled after this function |
| * returns control to it. |
| */ |
| -static int ufshcd_bkops_ctrl(struct ufs_hba *hba, |
| +int ufshcd_bkops_ctrl(struct ufs_hba *hba, |
| enum bkops_status status) |
| { |
| int err; |
| @@ -5688,6 +5694,7 @@ static int ufshcd_bkops_ctrl(struct ufs_hba *hba, |
| out: |
| return err; |
| } |
| +EXPORT_SYMBOL_GPL(ufshcd_bkops_ctrl); |
| |
| /** |
| * ufshcd_urgent_bkops - handle urgent bkops exception event |
| diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h |
| --- a/include/ufs/ufshcd.h |
| +++ b/include/ufs/ufshcd.h |
| @@ -1200,6 +1200,14 @@ static inline int ufshcd_disable_host_tx_lcc(struct ufs_hba *hba) |
| return ufshcd_dme_set(hba, UIC_ARG_MIB(PA_LOCAL_TX_LCC_ENABLE), 0); |
| } |
| |
| +int ufshcd_query_attr_retry(struct ufs_hba *hba, |
| + enum query_opcode opcode, enum attr_idn idn, u8 index, u8 selector, |
| + u32 *attr_val); |
| +int ufshcd_query_flag_retry(struct ufs_hba *hba, |
| + enum query_opcode opcode, enum flag_idn idn, u8 index, bool *flag_res); |
| + |
| +int ufshcd_bkops_ctrl(struct ufs_hba *hba, enum bkops_status status); |
| + |
| void ufshcd_auto_hibern8_enable(struct ufs_hba *hba); |
| void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit); |
| void ufshcd_fixup_dev_quirks(struct ufs_hba *hba, |