Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 596 → Rev 597

/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;
}