/shark/trunk/drivers/cpu/include/drivers/shark_cpu26.h |
---|
31,6 → 31,11 |
#define DVS_SS_ICH 7 |
#define DVS_SS_SMI 8 |
#define DVS_RELATION_L 0 /* lowest frequency at or above target */ |
#define DVS_RELATION_H 1 /* highest frequency below or at target */ |
#define DVS_LATENCY_ETERNAL (-1) |
int CPU26_installed(void); |
int CPU26_init(void); |
int CPU26_close(void); |
40,5 → 45,11 |
int CPU26_initDVS(void); |
int CPU26_closeDVS(void); |
int CPU26_set_frequency(unsigned int target_freq, unsigned int relation); |
int CPU26_get_cur_frequency(void); |
int CPU26_get_min_frequency(void); |
int CPU26_get_max_frequency(void); |
int CPU26_get_latency(void); |
#endif |
/shark/trunk/drivers/cpu/cpufreq/cpufreq.c |
---|
43,8 → 43,9 |
* level driver of CPUFreq support, and its spinlock. This lock |
* also protects the cpufreq_cpu_data array. |
*/ |
static struct cpufreq_policy cpufreq_cpu_policy; |
static struct cpufreq_policy *cpufreq_cpu_data = &cpufreq_cpu_policy; |
static struct cpufreq_driver *cpufreq_driver; |
static struct cpufreq_policy *cpufreq_cpu_data; |
static spinlock_t cpufreq_driver_lock = SPIN_LOCK_UNLOCKED; |
/********************************************************************* |
56,6 → 57,26 |
return cpufreq_driver_target(cpufreq_cpu_data, target_freq, relation); |
} |
int cpufreq_get_cur_freq(void) |
{ |
return cpufreq_cpu_data->cur; |
} |
int cpufreq_get_min_freq(void) |
{ |
return cpufreq_cpu_data->min; |
} |
int cpufreq_get_max_freq(void) |
{ |
return cpufreq_cpu_data->max; |
} |
int cpufreq_get_latency(void) |
{ |
return cpufreq_cpu_data->cpuinfo.transition_latency; |
} |
/********************************************************************* |
* GOVERNOR * |
*********************************************************************/ |
75,6 → 96,22 |
} |
/********************************************************************* |
* NOTIFIER * |
*********************************************************************/ |
void cpufreq_notify_transition(struct cpufreq_freqs *freqs, unsigned int state) |
{ |
switch (state) { |
case CPUFREQ_PRECHANGE: |
//adjust_jiffies(CPUFREQ_PRECHANGE, freqs); |
break; |
case CPUFREQ_POSTCHANGE: |
//adjust_jiffies(CPUFREQ_POSTCHANGE, freqs); |
cpufreq_cpu_data->cur = freqs->new; |
break; |
} |
} |
/********************************************************************* |
* REGISTER / UNREGISTER CPUFREQ DRIVER * |
*********************************************************************/ |
/shark/trunk/drivers/cpu/shark/shark_cpu.c |
---|
51,44 → 51,40 |
/*extern int speedstep_smi_init(void); |
extern void speedstep_smi_exit(void);*/ |
/* DVS function */ |
extern int cpufreq_target(unsigned int target_freq, unsigned int relation); |
extern int cpufreq_get_cur_freq(void); |
extern int cpufreq_get_min_freq(void); |
extern int cpufreq_get_max_freq(void); |
extern int cpufreq_get_latency(void); |
static int cpu_installed = FALSE; |
static int dvs_installed = DVS_NONE; |
/* Init the Linux CPU Layer */ |
int CPU26_installed(void) |
/* DVS user function */ |
int CPU26_set_frequency(unsigned int target_freq, unsigned int relation) |
{ |
return cpu_installed; |
return cpufreq_target(target_freq, relation); |
} |
void CPU26_showinfo(void) |
int CPU26_get_cur_frequency() |
{ |
print_cpu_info_0(); |
return cpufreq_get_cur_freq(); |
} |
int CPU26_init(void) |
int CPU26_get_min_frequency() |
{ |
int ret = 0; |
if (cpu_installed == TRUE) return 0; |
return cpufreq_get_min_freq(); |
} |
early_cpu_init(); |
identify_cpu_0(); |
printk(KERN_INFO); |
print_cpu_info_0(); |
cpu_installed = TRUE; |
return ret; |
int CPU26_get_max_frequency() |
{ |
return cpufreq_get_max_freq(); |
} |
int CPU26_close(void) |
int CPU26_get_latency() |
{ |
if (cpu_installed == TRUE) { |
return 0; |
} else |
return -1; |
return cpufreq_get_latency(); |
} |
int CPU26_initDVS(void) |
210,3 → 206,40 |
dvs_installed = DVS_NONE; |
return 0; |
} |
/* Init the Linux CPU Layer */ |
int CPU26_installed(void) |
{ |
return cpu_installed; |
} |
void CPU26_showinfo(void) |
{ |
print_cpu_info_0(); |
} |
int CPU26_init(void) |
{ |
int ret = 0; |
if (cpu_installed == TRUE) return 0; |
early_cpu_init(); |
identify_cpu_0(); |
printk(KERN_INFO); |
print_cpu_info_0(); |
cpu_installed = TRUE; |
return ret; |
} |
int CPU26_close(void) |
{ |
if (cpu_installed == TRUE) { |
return 0; |
} else |
return -1; |
} |