Lines Matching +full:exit +full:- +full:latency
41 struct scpi_data *priv = policy->driver_data; in scpi_cpufreq_get_rate()
42 unsigned long rate = clk_get_rate(priv->clk); in scpi_cpufreq_get_rate()
50 u64 rate = policy->freq_table[index].frequency * 1000; in scpi_cpufreq_set_target()
51 struct scpi_data *priv = policy->driver_data; in scpi_cpufreq_set_target()
54 ret = clk_set_rate(priv->clk, rate); in scpi_cpufreq_set_target()
59 if (clk_get_rate(priv->clk) != rate) in scpi_cpufreq_set_target()
60 return -EIO; in scpi_cpufreq_set_target()
71 domain = scpi_ops->device_domain_id(cpu_dev); in scpi_get_sharing_cpus()
76 if (cpu == cpu_dev->id) in scpi_get_sharing_cpus()
83 tdomain = scpi_ops->device_domain_id(tcpu_dev); in scpi_get_sharing_cpus()
94 unsigned int latency; in scpi_cpufreq_init() local
99 cpu_dev = get_cpu_device(policy->cpu); in scpi_cpufreq_init()
101 pr_err("failed to get cpu%d device\n", policy->cpu); in scpi_cpufreq_init()
102 return -ENODEV; in scpi_cpufreq_init()
105 ret = scpi_ops->add_opps_to_device(cpu_dev); in scpi_cpufreq_init()
111 ret = scpi_get_sharing_cpus(cpu_dev, policy->cpus); in scpi_cpufreq_init()
117 ret = dev_pm_opp_set_sharing_cpus(cpu_dev, policy->cpus); in scpi_cpufreq_init()
127 ret = -EPROBE_DEFER; in scpi_cpufreq_init()
133 ret = -ENOMEM; in scpi_cpufreq_init()
143 priv->cpu_dev = cpu_dev; in scpi_cpufreq_init()
144 priv->clk = clk_get(cpu_dev, NULL); in scpi_cpufreq_init()
145 if (IS_ERR(priv->clk)) { in scpi_cpufreq_init()
147 __func__, cpu_dev->id); in scpi_cpufreq_init()
148 ret = PTR_ERR(priv->clk); in scpi_cpufreq_init()
152 policy->driver_data = priv; in scpi_cpufreq_init()
153 policy->freq_table = freq_table; in scpi_cpufreq_init()
156 policy->dvfs_possible_from_any_cpu = true; in scpi_cpufreq_init()
158 latency = scpi_ops->get_transition_latency(cpu_dev); in scpi_cpufreq_init()
159 if (!latency) in scpi_cpufreq_init()
160 latency = CPUFREQ_ETERNAL; in scpi_cpufreq_init()
162 policy->cpuinfo.transition_latency = latency; in scpi_cpufreq_init()
164 policy->fast_switch_possible = false; in scpi_cpufreq_init()
166 dev_pm_opp_of_register_em(cpu_dev, policy->cpus); in scpi_cpufreq_init()
182 struct scpi_data *priv = policy->driver_data; in scpi_cpufreq_exit()
184 clk_put(priv->clk); in scpi_cpufreq_exit()
185 dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table); in scpi_cpufreq_exit()
186 dev_pm_opp_remove_all_dynamic(priv->cpu_dev); in scpi_cpufreq_exit()
193 .name = "scpi-cpufreq",
201 .exit = scpi_cpufreq_exit,
211 return -EIO; in scpi_cpufreq_probe()
215 dev_err(&pdev->dev, "%s: registering cpufreq failed, err: %d\n", in scpi_cpufreq_probe()
229 .name = "scpi-cpufreq",