diff mbox series

[v4,1/2] scsi: ufs: export hibern8 entry

Message ID 186237103353b5a79c3496e619fca894dbc78600.1589997078.git.asutoshd@codeaurora.org
State New
Headers show
Series [v4,1/2] scsi: ufs: export hibern8 entry | expand

Commit Message

Asutosh Das (asd) May 20, 2020, 5:53 p.m. UTC
Qualcomm controllers need to be in hibern8 before scaling up
or down the clocks. Hence, export the hibern8 entry function.

Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
---
 drivers/scsi/ufs/ufshcd.c | 4 ++--
 drivers/scsi/ufs/ufshcd.h | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

Asutosh Das (asd) May 20, 2020, 9:59 p.m. UTC | #1
Hi Avri,

On 5/20/2020 2:33 PM, Avri Altman wrote:
> Hi,
> 
>>
>>
>> Qualcomm controller needs to be in hibern8 before scaling clocks.
>> This change puts the controller in hibern8 state before scaling
>> and brings it out after scaling of clocks.
>>
>> Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
> 
> I guess that your previous versions are pretty far back - ,
> I noticed a comment by Pedro, so you might want to resend this series.
> 
Ok.

> What happens if the pre-change is successful,
> but you are not getting to the post change because, e.g. ufshcd_set_clk_freq failed?
> 
I agree. Let me check this.

> Also, this piece of code is ~5 years old, so you might want to elaborate on how come hibernation is now needed.
> 
> Thanks,
> Avri
> 

Thanks for the review. Hibernation was needed since long actually.
I guess it was never pushed upstream.

Thanks,
-asd
Asutosh Das (asd) May 25, 2021, 4:44 p.m. UTC | #2
On 5/25/2021 12:57 AM, Lee Jones wrote:
> On Wed, 20 May 2020 at 22:59, Asutosh Das (asd) <asutoshd@codeaurora.org 
> <mailto:asutoshd@codeaurora.org>> wrote:
> 
>     Hi Avri,
> 
>     On 5/20/2020 2:33 PM, Avri Altman wrote:
>      > Hi,
>      >
>      >>
>      >>
>      >> Qualcomm controller needs to be in hibern8 before scaling clocks.
>      >> This change puts the controller in hibern8 state before scaling
>      >> and brings it out after scaling of clocks.
>      >>
>      >> Signed-off-by: Asutosh Das <asutoshd@codeaurora.org
>     <mailto:asutoshd@codeaurora.org>>
>      >
>      > I guess that your previous versions are pretty far back - ,
>      > I noticed a comment by Pedro, so you might want to resend this
>     series.
>      >
>     Ok.
> 
>      > What happens if the pre-change is successful,
>      > but you are not getting to the post change because, e.g.
>     ufshcd_set_clk_freq failed?
>      >
>     I agree. Let me check this.
> 
>      > Also, this piece of code is ~5 years old, so you might want to
>     elaborate on how come hibernation is now needed.
>      >
>      > Thanks,
>      > Avri
>      >
> 
>     Thanks for the review. Hibernation was needed since long actually.
>     I guess it was never pushed upstream.
> 
> 
> Good morning Asd,
> 
> Any luck with getting this upstream?
> 
> Looks like this was the last submission.
> 
> Did something change?  Is this no longer required?
> 
Hi Lee
This slipped away. I may not get to this soon.
I'd prefer to drop it for now and come back to it when I've some time.

Thanks,
-asd

> -- 
> Lee Jones [李琼斯]
> Linaro Services Senior Technical Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
diff mbox series

Patch

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index c3389c9..aaf4adf 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -243,7 +243,6 @@  static int ufshcd_probe_hba(struct ufs_hba *hba, bool async);
 static int __ufshcd_setup_clocks(struct ufs_hba *hba, bool on,
 				 bool skip_ref_clk);
 static int ufshcd_setup_clocks(struct ufs_hba *hba, bool on);
-static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
 static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba);
 static int ufshcd_host_reset_and_restore(struct ufs_hba *hba);
 static void ufshcd_resume_clkscaling(struct ufs_hba *hba);
@@ -3877,7 +3876,7 @@  static int __ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
 	return ret;
 }
 
-static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
 {
 	int ret = 0, retries;
 
@@ -3889,6 +3888,7 @@  static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
 out:
 	return ret;
 }
+EXPORT_SYMBOL_GPL(ufshcd_uic_hibern8_enter);
 
 int ufshcd_uic_hibern8_exit(struct ufs_hba *hba)
 {
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index 88d4202..defc12c 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -835,6 +835,7 @@  int ufshcd_wait_for_register(struct ufs_hba *hba, u32 reg, u32 mask,
 void ufshcd_parse_dev_ref_clk_freq(struct ufs_hba *hba, struct clk *refclk);
 void ufshcd_update_reg_hist(struct ufs_err_reg_hist *reg_hist,
 			    u32 reg);
+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
 
 static inline void check_upiu_size(void)
 {