Lines Matching +full:switch +full:- +full:mode +full:- +full:frequency
2 * CPU frequency scaling for Broadcom BMIPS SoCs
25 #define BMIPS_CPUFREQ_NAME BMIPS_CPUFREQ_PREFIX "-cpufreq"
72 cpu_freq = htp_freq_to_cpu_freq(priv->clk_mult); in bmips_cpufreq_get_freq_table()
74 table = kmalloc_array(priv->max_freqs + 1, sizeof(*table), GFP_KERNEL); in bmips_cpufreq_get_freq_table()
76 return ERR_PTR(-ENOMEM); in bmips_cpufreq_get_freq_table()
78 for (i = 0; i < priv->max_freqs; i++) { in bmips_cpufreq_get_freq_table()
79 table[i].frequency = cpu_freq / (1 << i); in bmips_cpufreq_get_freq_table()
82 table[i].frequency = CPUFREQ_TABLE_END; in bmips_cpufreq_get_freq_table()
90 uint32_t mode; in bmips_cpufreq_get() local
92 switch (priv->bmips_type) { in bmips_cpufreq_get()
95 mode = read_c0_brcm_mode(); in bmips_cpufreq_get()
96 div = ((mode >> BMIPS5_CLK_DIV_SHIFT) & BMIPS5_CLK_DIV_MASK); in bmips_cpufreq_get()
102 return htp_freq_to_cpu_freq(priv->clk_mult) / (1 << div); in bmips_cpufreq_get()
108 unsigned int div = policy->freq_table[index].driver_data; in bmips_cpufreq_target_index()
110 switch (priv->bmips_type) { in bmips_cpufreq_target_index()
118 return -ENOTSUPP; in bmips_cpufreq_target_index()
126 kfree(policy->freq_table); in bmips_cpufreq_exit()
137 pr_err("%s: couldn't determine frequency table (%ld).\n", in bmips_cpufreq_init()
164 for (cc = bmips_cpufreq_compat; cc->compatible; cc++) { in bmips_cpufreq_driver_init()
165 np = of_find_compatible_node(NULL, "cpu", cc->compatible); in bmips_cpufreq_driver_init()
174 if (!cc->compatible) in bmips_cpufreq_driver_init()
175 return -ENODEV; in bmips_cpufreq_driver_init()