Lines Matching refs:clk_gating
536 clk_gating.ungate_work); in ufshcd_ungate_work()
538 cancel_delayed_work_sync(&hba->clk_gating.gate_work); in ufshcd_ungate_work()
541 if (hba->clk_gating.state == CLKS_ON) { in ufshcd_ungate_work()
552 hba->clk_gating.is_suspended = true; in ufshcd_ungate_work()
561 hba->clk_gating.is_suspended = false; in ufshcd_ungate_work()
583 hba->clk_gating.active_reqs++; in ufshcd_hold()
586 switch (hba->clk_gating.state) { in ufshcd_hold()
590 if (cancel_delayed_work(&hba->clk_gating.gate_work)) { in ufshcd_hold()
591 hba->clk_gating.state = CLKS_ON; in ufshcd_hold()
601 hba->clk_gating.state = REQ_CLKS_ON; in ufshcd_hold()
602 schedule_work(&hba->clk_gating.ungate_work); in ufshcd_hold()
610 hba->clk_gating.active_reqs--; in ufshcd_hold()
615 flush_work(&hba->clk_gating.ungate_work); in ufshcd_hold()
621 __func__, hba->clk_gating.state); in ufshcd_hold()
633 clk_gating.gate_work.work); in ufshcd_gate_work()
637 if (hba->clk_gating.is_suspended) { in ufshcd_gate_work()
638 hba->clk_gating.state = CLKS_ON; in ufshcd_gate_work()
642 if (hba->clk_gating.active_reqs in ufshcd_gate_work()
653 hba->clk_gating.state = CLKS_ON; in ufshcd_gate_work()
680 if (hba->clk_gating.state == REQ_CLKS_OFF) in ufshcd_gate_work()
681 hba->clk_gating.state = CLKS_OFF; in ufshcd_gate_work()
695 hba->clk_gating.active_reqs--; in __ufshcd_release()
697 if (hba->clk_gating.active_reqs || hba->clk_gating.is_suspended in __ufshcd_release()
703 hba->clk_gating.state = REQ_CLKS_OFF; in __ufshcd_release()
704 schedule_delayed_work(&hba->clk_gating.gate_work, in __ufshcd_release()
705 msecs_to_jiffies(hba->clk_gating.delay_ms)); in __ufshcd_release()
723 return snprintf(buf, PAGE_SIZE, "%lu\n", hba->clk_gating.delay_ms); in ufshcd_clkgate_delay_show()
736 hba->clk_gating.delay_ms = value; in ufshcd_clkgate_delay_store()
746 hba->clk_gating.delay_ms = 150; in ufshcd_init_clk_gating()
747 INIT_DELAYED_WORK(&hba->clk_gating.gate_work, ufshcd_gate_work); in ufshcd_init_clk_gating()
748 INIT_WORK(&hba->clk_gating.ungate_work, ufshcd_ungate_work); in ufshcd_init_clk_gating()
750 hba->clk_gating.delay_attr.show = ufshcd_clkgate_delay_show; in ufshcd_init_clk_gating()
751 hba->clk_gating.delay_attr.store = ufshcd_clkgate_delay_store; in ufshcd_init_clk_gating()
752 sysfs_attr_init(&hba->clk_gating.delay_attr.attr); in ufshcd_init_clk_gating()
753 hba->clk_gating.delay_attr.attr.name = "clkgate_delay_ms"; in ufshcd_init_clk_gating()
754 hba->clk_gating.delay_attr.attr.mode = S_IRUGO | S_IWUSR; in ufshcd_init_clk_gating()
755 if (device_create_file(hba->dev, &hba->clk_gating.delay_attr)) in ufshcd_init_clk_gating()
763 device_remove_file(hba->dev, &hba->clk_gating.delay_attr); in ufshcd_exit_clk_gating()
764 cancel_work_sync(&hba->clk_gating.ungate_work); in ufshcd_exit_clk_gating()
765 cancel_delayed_work_sync(&hba->clk_gating.gate_work); in ufshcd_exit_clk_gating()
1335 WARN_ON(hba->clk_gating.state != CLKS_ON); in ufshcd_queuecommand()
4583 hba->clk_gating.state = CLKS_ON; in __ufshcd_setup_clocks()
4981 hba->clk_gating.is_suspended = true; in ufshcd_suspend()
5059 hba->clk_gating.state = CLKS_OFF; in ufshcd_suspend()
5081 hba->clk_gating.is_suspended = false; in ufshcd_suspend()
5157 hba->clk_gating.is_suspended = false; in ufshcd_resume()