• Home
  • Raw
  • Download

Lines Matching +full:max +full:- +full:freq

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2006-2009 Simtec Electronics
23 #include <linux/soc/samsung/s3c-cpufreq-core.h>
24 #include <linux/soc/samsung/s3c-pm.h>
54 long diff = a - b; in within_khz()
56 return (diff >= -1000 && diff <= 1000); in within_khz()
60 * s3c2440_cpufreq_calcdivs - calculate divider settings
73 fclk = cfg->freq.fclk; in s3c2440_cpufreq_calcdivs()
74 armclk = cfg->freq.armclk; in s3c2440_cpufreq_calcdivs()
75 hclk_max = cfg->max.hclk; in s3c2440_cpufreq_calcdivs()
77 s3c_freq_dbg("%s: fclk is %lu, armclk %lu, max hclk %lu\n", in s3c2440_cpufreq_calcdivs()
103 pdiv = (hclk > cfg->max.pclk) ? 2 : 1; in s3c2440_cpufreq_calcdivs()
105 if ((hclk / pdiv) > cfg->max.pclk) in s3c2440_cpufreq_calcdivs()
124 cfg->divs.dvs = 1; in s3c2440_cpufreq_calcdivs()
127 cfg->divs.dvs = 0; in s3c2440_cpufreq_calcdivs()
129 cfg->freq.armclk = armclk; in s3c2440_cpufreq_calcdivs()
133 cfg->divs.h_divisor = hdiv; in s3c2440_cpufreq_calcdivs()
134 cfg->divs.p_divisor = pdiv; in s3c2440_cpufreq_calcdivs()
139 return -EINVAL; in s3c2440_cpufreq_calcdivs()
146 * s3c2440_cpufreq_setdivs - set the cpu frequency divider settings
157 cfg->divs.h_divisor, cfg->divs.p_divisor); in s3c2440_cpufreq_setdivs()
165 switch (cfg->divs.h_divisor) { in s3c2440_cpufreq_setdivs()
190 if (cfg->divs.p_divisor != cfg->divs.h_divisor) in s3c2440_cpufreq_setdivs()
193 /* todo - set pclk. */ in s3c2440_cpufreq_setdivs()
196 * when we write clkdiv we will under-frequency instead of over. We in s3c2440_cpufreq_setdivs()
206 clk_set_parent(armclk, cfg->divs.dvs ? hclk : fclk); in s3c2440_cpufreq_setdivs()
214 unsigned long freq; in run_freq_for() local
219 freq = fclk / div; in run_freq_for()
221 if (freq > max_hclk && div != 1) in run_freq_for()
224 freq /= 1000; /* table is in kHz */ in run_freq_for()
225 index = s3c_cpufreq_addfreq(table, index, table_size, freq); in run_freq_for()
233 static int hclk_divs[] = { 1, 2, 3, 4, 6, 8, -1 };
241 WARN_ON(cfg->info == NULL); in s3c2440_cpufreq_calctable()
242 WARN_ON(cfg->board == NULL); in s3c2440_cpufreq_calctable()
244 ret = run_freq_for(cfg->info->max.hclk, in s3c2440_cpufreq_calctable()
245 cfg->info->max.fclk, in s3c2440_cpufreq_calctable()
255 .max = {
289 return -ENOENT; in s3c2440_cpufreq_add()