diff options
| author | Sahitya Tummala <stummala@codeaurora.org> | 2014-01-13 15:24:18 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 10:56:32 -0700 |
| commit | 57e694f677e91e604222b810dfdbebe66260e2af (patch) | |
| tree | 8da0b958cfa3211576495a7f06b7087146bd1d23 /drivers/scsi | |
| parent | af960ab1545c0e57890d5ceb143e80e4ace087ca (diff) | |
scsi: ufs-msm: Add hba->vops->clk_scale_notify()
Add hba->vops->clk_scale_notify() to get notified about clock
scaling and thus to configure phy timers and to update the
bus bandwidth vote accordingly.
Change-Id: I2f0cae8e787d0b4e764dc210db035add880428ce
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
Diffstat (limited to 'drivers/scsi')
| -rw-r--r-- | drivers/scsi/ufs/ufs-msm.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/scsi/ufs/ufs-msm.c b/drivers/scsi/ufs/ufs-msm.c index 366bbc44403d..454be80436dd 100644 --- a/drivers/scsi/ufs/ufs-msm.c +++ b/drivers/scsi/ufs/ufs-msm.c @@ -1216,6 +1216,7 @@ msm_ufs_cfg_timers(struct ufs_hba *hba, u32 gear, u32 hs, u32 rate) u32 core_clk_period_in_ns; u32 tx_clk_cycles_per_us = 0; unsigned long core_clk_rate = 0; + u32 core_clk_cycles_per_us = 0; static u32 pwm_fr_table[][2] = { {UFS_PWM_G1, 0x1}, @@ -1248,6 +1249,9 @@ msm_ufs_cfg_timers(struct ufs_hba *hba, u32 gear, u32 hs, u32 rate) if (core_clk_rate < DEFAULT_CLK_RATE_HZ) core_clk_rate = DEFAULT_CLK_RATE_HZ; + core_clk_cycles_per_us = core_clk_rate / USEC_PER_SEC; + ufshcd_writel(hba, core_clk_cycles_per_us, REG_UFS_SYS1CLK_1US); + core_clk_period_in_ns = NSEC_PER_SEC / core_clk_rate; core_clk_period_in_ns <<= OFFSET_CLK_NS_REG; core_clk_period_in_ns &= MASK_CLK_NS_REG; @@ -2119,6 +2123,19 @@ static int msm_ufs_phy_remove(struct platform_device *pdev) return 0; } +void msm_ufs_clk_scale_notify(struct ufs_hba *hba) +{ + struct msm_ufs_host *host = hba->priv; + struct ufs_pa_layer_attr *dev_req_params = &host->dev_req_params; + + if (!dev_req_params) + return; + + msm_ufs_cfg_timers(hba, dev_req_params->gear_rx, + dev_req_params->pwr_rx, + dev_req_params->hs_rate); + msm_ufs_update_bus_bw_vote(host); +} /** * struct ufs_hba_msm_vops - UFS MSM specific variant operations * @@ -2129,6 +2146,7 @@ const struct ufs_hba_variant_ops ufs_hba_msm_vops = { .name = "msm", .init = msm_ufs_init, .exit = msm_ufs_exit, + .clk_scale_notify = msm_ufs_clk_scale_notify, .setup_clocks = msm_ufs_setup_clocks, .hce_enable_notify = msm_ufs_hce_enable_notify, .link_startup_notify = msm_ufs_link_startup_notify, |
