@ -109,6 +109,10 @@ static struct cpufreq_frequency_table
static struct cpufreq_frequency_table
pxa255_turbo_freq_table [ NUM_PXA25x_TURBO_FREQS + 1 ] ;
static unsigned int pxa255_turbo_table ;
module_param ( pxa255_turbo_table , uint , 0 ) ;
MODULE_PARM_DESC ( pxa255_turbo_table , " Selects the frequency table (0 = run table, !0 = turbo table) " ) ;
/*
* PXA270 definitions
*
@ -158,22 +162,16 @@ static struct cpufreq_frequency_table
extern unsigned get_clk_frequency_khz ( int info ) ;
static void find_freq_tables ( struct cpufreq_policy * policy ,
struct cpufreq_frequency_table * * freq_table ,
static void find_freq_tables ( struct cpufreq_frequency_table * * freq_table ,
pxa_freqs_t * * pxa_freqs )
{
if ( cpu_is_pxa25x ( ) ) {
if ( policy - > policy = = CPUFREQ_POLICY_PERFORMANCE ) {
if ( ! pxa255_turbo_table ) {
* pxa_freqs = pxa255_run_freqs ;
* freq_table = pxa255_run_freq_table ;
} else if ( policy - > policy = = CPUFREQ_POLICY_POWERSAVE ) {
} else {
* pxa_freqs = pxa255_turbo_freqs ;
* freq_table = pxa255_turbo_freq_table ;
} else {
printk ( " CPU PXA: Unknown policy found. "
" Using CPUFREQ_POLICY_PERFORMANCE \n " ) ;
* pxa_freqs = pxa255_run_freqs ;
* freq_table = pxa255_run_freq_table ;
}
}
if ( cpu_is_pxa27x ( ) ) {
@ -212,7 +210,7 @@ static int pxa_verify_policy(struct cpufreq_policy *policy)
pxa_freqs_t * pxa_freqs ;
int ret ;
find_freq_tables ( policy , & pxa_freqs_table , & pxa_freqs ) ;
find_freq_tables ( & pxa_freqs_table , & pxa_freqs ) ;
ret = cpufreq_frequency_table_verify ( policy , pxa_freqs_table ) ;
if ( freq_debug )
@ -240,7 +238,7 @@ static int pxa_set_target(struct cpufreq_policy *policy,
unsigned int unused , preset_mdrefr , postset_mdrefr , cclkcfg ;
/* Get the current policy */
find_freq_tables ( policy , & pxa_freqs_table , & pxa_freq_settings ) ;
find_freq_tables ( & pxa_freqs_table , & pxa_freq_settings ) ;
/* Lookup the next frequency */
if ( cpufreq_frequency_table_target ( policy , pxa_freqs_table ,
@ -329,6 +327,8 @@ static __init int pxa_cpufreq_init(struct cpufreq_policy *policy)
{
int i ;
unsigned int freq ;
struct cpufreq_frequency_table * pxa255_freq_table ;
pxa_freqs_t * pxa255_freqs ;
/* try to guess pxa27x cpu */
if ( cpu_is_pxa27x ( ) )
@ -354,6 +354,8 @@ static __init int pxa_cpufreq_init(struct cpufreq_policy *policy)
}
pxa255_turbo_freq_table [ i ] . frequency = CPUFREQ_TABLE_END ;
pxa255_turbo_table = ! ! pxa255_turbo_table ;
/* Generate the pxa27x cpufreq_frequency_table struct */
for ( i = 0 ; i < NUM_PXA27x_FREQS ; i + + ) {
freq = pxa27x_freqs [ i ] . khz ;
@ -368,8 +370,12 @@ static __init int pxa_cpufreq_init(struct cpufreq_policy *policy)
* Set the policy ' s minimum and maximum frequencies from the tables
* just constructed . This sets cpuinfo . mxx_freq , min and max .
*/
if ( cpu_is_pxa25x ( ) )
cpufreq_frequency_table_cpuinfo ( policy , pxa255_run_freq_table ) ;
if ( cpu_is_pxa25x ( ) ) {
find_freq_tables ( & pxa255_freq_table , & pxa255_freqs ) ;
pr_info ( " PXA255 cpufreq using %s frequency table \n " ,
pxa255_turbo_table ? " turbo " : " run " ) ;
cpufreq_frequency_table_cpuinfo ( policy , pxa255_freq_table ) ;
}
else if ( cpu_is_pxa27x ( ) )
cpufreq_frequency_table_cpuinfo ( policy , pxa27x_freq_table ) ;