• Home
  • Raw
  • Download

Lines Matching refs:s3c_freq

92 	struct s3c2416_data *s3c_freq = &s3c2416_cpufreq;  in s3c2416_cpufreq_get_speed()  local
98 if (s3c_freq->is_dvs) in s3c2416_cpufreq_get_speed()
101 return clk_get_rate(s3c_freq->armclk) / 1000; in s3c2416_cpufreq_get_speed()
104 static int s3c2416_cpufreq_set_armdiv(struct s3c2416_data *s3c_freq, in s3c2416_cpufreq_set_armdiv() argument
109 if (clk_get_rate(s3c_freq->armdiv) / 1000 != freq) { in s3c2416_cpufreq_set_armdiv()
110 ret = clk_set_rate(s3c_freq->armdiv, freq * 1000); in s3c2416_cpufreq_set_armdiv()
121 static int s3c2416_cpufreq_enter_dvs(struct s3c2416_data *s3c_freq, int idx) in s3c2416_cpufreq_enter_dvs() argument
128 if (s3c_freq->is_dvs) { in s3c2416_cpufreq_enter_dvs()
134 clk_get_rate(s3c_freq->hclk) / 1000); in s3c2416_cpufreq_enter_dvs()
135 ret = clk_set_parent(s3c_freq->armclk, s3c_freq->hclk); in s3c2416_cpufreq_enter_dvs()
143 if (s3c_freq->vddarm) { in s3c2416_cpufreq_enter_dvs()
148 ret = regulator_set_voltage(s3c_freq->vddarm, in s3c2416_cpufreq_enter_dvs()
158 s3c_freq->is_dvs = 1; in s3c2416_cpufreq_enter_dvs()
163 static int s3c2416_cpufreq_leave_dvs(struct s3c2416_data *s3c_freq, int idx) in s3c2416_cpufreq_leave_dvs() argument
170 if (!s3c_freq->is_dvs) { in s3c2416_cpufreq_leave_dvs()
176 if (s3c_freq->vddarm) { in s3c2416_cpufreq_leave_dvs()
181 ret = regulator_set_voltage(s3c_freq->vddarm, in s3c2416_cpufreq_leave_dvs()
192 if (clk_get_rate(s3c_freq->armdiv) > clk_get_rate(s3c_freq->hclk)) { in s3c2416_cpufreq_leave_dvs()
194 clk_get_rate(s3c_freq->hclk) / 1000); in s3c2416_cpufreq_leave_dvs()
195 ret = s3c2416_cpufreq_set_armdiv(s3c_freq, in s3c2416_cpufreq_leave_dvs()
196 clk_get_rate(s3c_freq->hclk) / 1000); in s3c2416_cpufreq_leave_dvs()
199 clk_get_rate(s3c_freq->hclk) / 1000, ret); in s3c2416_cpufreq_leave_dvs()
205 clk_get_rate(s3c_freq->armdiv) / 1000); in s3c2416_cpufreq_leave_dvs()
207 ret = clk_set_parent(s3c_freq->armclk, s3c_freq->armdiv); in s3c2416_cpufreq_leave_dvs()
214 s3c_freq->is_dvs = 0; in s3c2416_cpufreq_leave_dvs()
222 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; in s3c2416_cpufreq_set_target() local
228 idx = s3c_freq->freq_table[index].driver_data; in s3c2416_cpufreq_set_target()
234 if (to_dvs && s3c_freq->disable_dvs) { in s3c2416_cpufreq_set_target()
244 new_freq = (s3c_freq->is_dvs && !to_dvs) in s3c2416_cpufreq_set_target()
245 ? clk_get_rate(s3c_freq->hclk) / 1000 in s3c2416_cpufreq_set_target()
246 : s3c_freq->freq_table[index].frequency; in s3c2416_cpufreq_set_target()
250 ret = s3c2416_cpufreq_enter_dvs(s3c_freq, idx); in s3c2416_cpufreq_set_target()
251 } else if (s3c_freq->is_dvs) { in s3c2416_cpufreq_set_target()
253 ret = s3c2416_cpufreq_leave_dvs(s3c_freq, idx); in s3c2416_cpufreq_set_target()
256 ret = s3c2416_cpufreq_set_armdiv(s3c_freq, new_freq); in s3c2416_cpufreq_set_target()
266 static void s3c2416_cpufreq_cfg_regulator(struct s3c2416_data *s3c_freq) in s3c2416_cpufreq_cfg_regulator() argument
272 count = regulator_count_voltages(s3c_freq->vddarm); in s3c2416_cpufreq_cfg_regulator()
281 cpufreq_for_each_valid_entry(pos, s3c_freq->freq_table) { in s3c2416_cpufreq_cfg_regulator()
287 v = regulator_list_voltage(s3c_freq->vddarm, i); in s3c2416_cpufreq_cfg_regulator()
301 s3c_freq->regulator_latency = 1 * 1000 * 1000; in s3c2416_cpufreq_cfg_regulator()
308 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; in s3c2416_cpufreq_reboot_notifier_evt() local
314 s3c_freq->disable_dvs = 1; in s3c2416_cpufreq_reboot_notifier_evt()
322 if (s3c_freq->is_dvs) { in s3c2416_cpufreq_reboot_notifier_evt()
338 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; in s3c2416_cpufreq_driver_init() local
363 s3c_freq->freq_table = s3c2416_freq_table; in s3c2416_cpufreq_driver_init()
368 s3c_freq->freq_table = s3c2450_freq_table; in s3c2416_cpufreq_driver_init()
375 if (s3c_freq->freq_table == NULL) { in s3c2416_cpufreq_driver_init()
381 s3c_freq->is_dvs = 0; in s3c2416_cpufreq_driver_init()
383 s3c_freq->armdiv = clk_get(NULL, "armdiv"); in s3c2416_cpufreq_driver_init()
384 if (IS_ERR(s3c_freq->armdiv)) { in s3c2416_cpufreq_driver_init()
385 ret = PTR_ERR(s3c_freq->armdiv); in s3c2416_cpufreq_driver_init()
390 s3c_freq->hclk = clk_get(NULL, "hclk"); in s3c2416_cpufreq_driver_init()
391 if (IS_ERR(s3c_freq->hclk)) { in s3c2416_cpufreq_driver_init()
392 ret = PTR_ERR(s3c_freq->hclk); in s3c2416_cpufreq_driver_init()
400 rate = clk_get_rate(s3c_freq->hclk); in s3c2416_cpufreq_driver_init()
407 s3c_freq->armclk = clk_get(NULL, "armclk"); in s3c2416_cpufreq_driver_init()
408 if (IS_ERR(s3c_freq->armclk)) { in s3c2416_cpufreq_driver_init()
409 ret = PTR_ERR(s3c_freq->armclk); in s3c2416_cpufreq_driver_init()
415 s3c_freq->vddarm = regulator_get(NULL, "vddarm"); in s3c2416_cpufreq_driver_init()
416 if (IS_ERR(s3c_freq->vddarm)) { in s3c2416_cpufreq_driver_init()
417 ret = PTR_ERR(s3c_freq->vddarm); in s3c2416_cpufreq_driver_init()
422 s3c2416_cpufreq_cfg_regulator(s3c_freq); in s3c2416_cpufreq_driver_init()
424 s3c_freq->regulator_latency = 0; in s3c2416_cpufreq_driver_init()
427 cpufreq_for_each_entry(pos, s3c_freq->freq_table) { in s3c2416_cpufreq_driver_init()
430 if (!s3c_freq->hclk) { in s3c2416_cpufreq_driver_init()
440 rate = clk_round_rate(s3c_freq->armdiv, in s3c2416_cpufreq_driver_init()
453 ret = cpufreq_generic_init(policy, s3c_freq->freq_table, in s3c2416_cpufreq_driver_init()
454 (500 * 1000) + s3c_freq->regulator_latency); in s3c2416_cpufreq_driver_init()
464 regulator_put(s3c_freq->vddarm); in s3c2416_cpufreq_driver_init()
467 clk_put(s3c_freq->armclk); in s3c2416_cpufreq_driver_init()
469 clk_put(s3c_freq->hclk); in s3c2416_cpufreq_driver_init()
471 clk_put(s3c_freq->armdiv); in s3c2416_cpufreq_driver_init()