Lines Matching refs:clk_scaling

1127 				clki->name, hba->clk_scaling.target_freq, freq);  in ufshcd_opp_config_clks()
1213 return freq != hba->clk_scaling.target_freq; in ufshcd_is_devfreq_scaling_required()
1327 memcpy(&new_pwr_info, &hba->clk_scaling.saved_pwr_info, in ufshcd_scale_gear()
1333 if (hba->pwr_info.gear_tx > hba->clk_scaling.min_gear || in ufshcd_scale_gear()
1334 hba->pwr_info.gear_rx > hba->clk_scaling.min_gear) { in ufshcd_scale_gear()
1336 memcpy(&hba->clk_scaling.saved_pwr_info, in ufshcd_scale_gear()
1341 new_pwr_info.gear_tx = hba->clk_scaling.min_gear; in ufshcd_scale_gear()
1342 new_pwr_info.gear_rx = hba->clk_scaling.min_gear; in ufshcd_scale_gear()
1374 if (!hba->clk_scaling.is_allowed || in ufshcd_clock_scaling_prepare()
1454 clk_scaling.suspend_work); in ufshcd_clk_scaling_suspend_work()
1456 scoped_guard(spinlock_irqsave, &hba->clk_scaling.lock) in ufshcd_clk_scaling_suspend_work()
1458 if (hba->clk_scaling.active_reqs || in ufshcd_clk_scaling_suspend_work()
1459 hba->clk_scaling.is_suspended) in ufshcd_clk_scaling_suspend_work()
1462 hba->clk_scaling.is_suspended = true; in ufshcd_clk_scaling_suspend_work()
1463 hba->clk_scaling.window_start_t = 0; in ufshcd_clk_scaling_suspend_work()
1472 clk_scaling.resume_work); in ufshcd_clk_scaling_resume_work()
1474 scoped_guard(spinlock_irqsave, &hba->clk_scaling.lock) in ufshcd_clk_scaling_resume_work()
1476 if (!hba->clk_scaling.is_suspended) in ufshcd_clk_scaling_resume_work()
1478 hba->clk_scaling.is_suspended = false; in ufshcd_clk_scaling_resume_work()
1513 scoped_guard(spinlock_irqsave, &hba->clk_scaling.lock) in ufshcd_devfreq_target()
1519 if (hba->clk_scaling.is_suspended) { in ufshcd_devfreq_target()
1524 if (!hba->clk_scaling.active_reqs) in ufshcd_devfreq_target()
1532 scale_up = *freq > hba->clk_scaling.target_freq; in ufshcd_devfreq_target()
1549 hba->clk_scaling.target_freq = *freq; in ufshcd_devfreq_target()
1557 (!scale_up || hba->clk_scaling.suspend_on_no_request)) in ufshcd_devfreq_target()
1558 queue_work(hba->clk_scaling.workq, in ufshcd_devfreq_target()
1559 &hba->clk_scaling.suspend_work); in ufshcd_devfreq_target()
1568 struct ufs_clk_scaling *scaling = &hba->clk_scaling; in ufshcd_devfreq_get_dev_status()
1576 guard(spinlock_irqsave)(&hba->clk_scaling.lock); in ufshcd_devfreq_get_dev_status()
1588 stat->current_frequency = hba->clk_scaling.target_freq; in ufshcd_devfreq_get_dev_status()
1679 cancel_work_sync(&hba->clk_scaling.suspend_work); in ufshcd_suspend_clkscaling()
1680 cancel_work_sync(&hba->clk_scaling.resume_work); in ufshcd_suspend_clkscaling()
1682 scoped_guard(spinlock_irqsave, &hba->clk_scaling.lock) in ufshcd_suspend_clkscaling()
1684 if (!hba->clk_scaling.is_suspended) { in ufshcd_suspend_clkscaling()
1686 hba->clk_scaling.is_suspended = true; in ufshcd_suspend_clkscaling()
1687 hba->clk_scaling.window_start_t = 0; in ufshcd_suspend_clkscaling()
1699 scoped_guard(spinlock_irqsave, &hba->clk_scaling.lock) in ufshcd_resume_clkscaling()
1701 if (hba->clk_scaling.is_suspended) { in ufshcd_resume_clkscaling()
1703 hba->clk_scaling.is_suspended = false; in ufshcd_resume_clkscaling()
1716 return sysfs_emit(buf, "%d\n", hba->clk_scaling.is_enabled); in ufshcd_clkscale_enable_show()
1736 if (value == hba->clk_scaling.is_enabled) in ufshcd_clkscale_enable_store()
1742 hba->clk_scaling.is_enabled = value; in ufshcd_clkscale_enable_store()
1763 hba->clk_scaling.enable_attr.show = ufshcd_clkscale_enable_show; in ufshcd_init_clk_scaling_sysfs()
1764 hba->clk_scaling.enable_attr.store = ufshcd_clkscale_enable_store; in ufshcd_init_clk_scaling_sysfs()
1765 sysfs_attr_init(&hba->clk_scaling.enable_attr.attr); in ufshcd_init_clk_scaling_sysfs()
1766 hba->clk_scaling.enable_attr.attr.name = "clkscale_enable"; in ufshcd_init_clk_scaling_sysfs()
1767 hba->clk_scaling.enable_attr.attr.mode = 0644; in ufshcd_init_clk_scaling_sysfs()
1768 if (device_create_file(hba->dev, &hba->clk_scaling.enable_attr)) in ufshcd_init_clk_scaling_sysfs()
1774 if (hba->clk_scaling.enable_attr.attr.name) in ufshcd_remove_clk_scaling_sysfs()
1775 device_remove_file(hba->dev, &hba->clk_scaling.enable_attr); in ufshcd_remove_clk_scaling_sysfs()
1783 if (!hba->clk_scaling.min_gear) in ufshcd_init_clk_scaling()
1784 hba->clk_scaling.min_gear = UFS_HS_G1; in ufshcd_init_clk_scaling()
1786 INIT_WORK(&hba->clk_scaling.suspend_work, in ufshcd_init_clk_scaling()
1788 INIT_WORK(&hba->clk_scaling.resume_work, in ufshcd_init_clk_scaling()
1791 spin_lock_init(&hba->clk_scaling.lock); in ufshcd_init_clk_scaling()
1793 hba->clk_scaling.workq = alloc_ordered_workqueue( in ufshcd_init_clk_scaling()
1796 hba->clk_scaling.is_initialized = true; in ufshcd_init_clk_scaling()
1801 if (!hba->clk_scaling.is_initialized) in ufshcd_exit_clk_scaling()
1805 destroy_workqueue(hba->clk_scaling.workq); in ufshcd_exit_clk_scaling()
1807 hba->clk_scaling.is_initialized = false; in ufshcd_exit_clk_scaling()
2156 guard(spinlock_irqsave)(&hba->clk_scaling.lock); in ufshcd_clk_scaling_start_busy()
2158 if (!hba->clk_scaling.active_reqs++) in ufshcd_clk_scaling_start_busy()
2161 if (!hba->clk_scaling.is_enabled || hba->pm_op_in_progress) in ufshcd_clk_scaling_start_busy()
2165 queue_work(hba->clk_scaling.workq, in ufshcd_clk_scaling_start_busy()
2166 &hba->clk_scaling.resume_work); in ufshcd_clk_scaling_start_busy()
2168 if (!hba->clk_scaling.window_start_t) { in ufshcd_clk_scaling_start_busy()
2169 hba->clk_scaling.window_start_t = curr_t; in ufshcd_clk_scaling_start_busy()
2170 hba->clk_scaling.tot_busy_t = 0; in ufshcd_clk_scaling_start_busy()
2171 hba->clk_scaling.is_busy_started = false; in ufshcd_clk_scaling_start_busy()
2174 if (!hba->clk_scaling.is_busy_started) { in ufshcd_clk_scaling_start_busy()
2175 hba->clk_scaling.busy_start_t = curr_t; in ufshcd_clk_scaling_start_busy()
2176 hba->clk_scaling.is_busy_started = true; in ufshcd_clk_scaling_start_busy()
2182 struct ufs_clk_scaling *scaling = &hba->clk_scaling; in ufshcd_clk_scaling_update_busy()
2187 guard(spinlock_irqsave)(&hba->clk_scaling.lock); in ufshcd_clk_scaling_update_busy()
2189 hba->clk_scaling.active_reqs--; in ufshcd_clk_scaling_update_busy()
6323 hba->clk_scaling.is_allowed = allow; in ufshcd_clk_scaling_allow()
6331 if (hba->clk_scaling.is_enabled) in ufshcd_clk_scaling_suspend()
6336 if (hba->clk_scaling.is_enabled) in ufshcd_clk_scaling_suspend()
6366 hba->clk_scaling.is_enabled) in ufshcd_err_handling_prepare()
8592 memcpy(&hba->clk_scaling.saved_pwr_info, in ufshcd_add_lus()
8595 hba->clk_scaling.is_allowed = true; in ufshcd_add_lus()
8601 hba->clk_scaling.is_enabled = true; in ufshcd_add_lus()