Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
f3ed8b44
Commit
f3ed8b44
authored
Aug 18, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
parents
6fc8b9e7
2cab224d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
13 deletions
+52
-13
arch/sparc64/kernel/us2e_cpufreq.c
arch/sparc64/kernel/us2e_cpufreq.c
+27
-9
arch/sparc64/kernel/us3_cpufreq.c
arch/sparc64/kernel/us3_cpufreq.c
+25
-4
No files found.
arch/sparc64/kernel/us2e_cpufreq.c
View file @
f3ed8b44
...
@@ -88,7 +88,6 @@ static void frob_mem_refresh(int cpu_slowing_down,
...
@@ -88,7 +88,6 @@ static void frob_mem_refresh(int cpu_slowing_down,
{
{
unsigned
long
old_refr_count
,
refr_count
,
mctrl
;
unsigned
long
old_refr_count
,
refr_count
,
mctrl
;
refr_count
=
(
clock_tick
*
MCTRL0_REFR_INTERVAL
);
refr_count
=
(
clock_tick
*
MCTRL0_REFR_INTERVAL
);
refr_count
/=
(
MCTRL0_REFR_CLKS_P_CNT
*
divisor
*
1000000000UL
);
refr_count
/=
(
MCTRL0_REFR_CLKS_P_CNT
*
divisor
*
1000000000UL
);
...
@@ -230,6 +229,25 @@ static unsigned long estar_to_divisor(unsigned long estar)
...
@@ -230,6 +229,25 @@ static unsigned long estar_to_divisor(unsigned long estar)
return
ret
;
return
ret
;
}
}
static
unsigned
int
us2e_freq_get
(
unsigned
int
cpu
)
{
cpumask_t
cpus_allowed
;
unsigned
long
clock_tick
,
estar
;
if
(
!
cpu_online
(
cpu
))
return
0
;
cpus_allowed
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
clock_tick
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
estar
=
read_hbreg
(
HBIRD_ESTAR_MODE_ADDR
);
set_cpus_allowed
(
current
,
cpus_allowed
);
return
clock_tick
/
estar_to_divisor
(
estar
);
}
static
void
us2e_set_cpu_divider_index
(
unsigned
int
cpu
,
unsigned
int
index
)
static
void
us2e_set_cpu_divider_index
(
unsigned
int
cpu
,
unsigned
int
index
)
{
{
unsigned
long
new_bits
,
new_freq
;
unsigned
long
new_bits
,
new_freq
;
...
@@ -243,7 +261,7 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
...
@@ -243,7 +261,7 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
cpus_allowed
=
current
->
cpus_allowed
;
cpus_allowed
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
new_freq
=
clock_tick
=
sparc64_get_clock_tick
(
cpu
);
new_freq
=
clock_tick
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
new_bits
=
index_to_estar_mode
(
index
);
new_bits
=
index_to_estar_mode
(
index
);
divisor
=
index_to_divisor
(
index
);
divisor
=
index_to_divisor
(
index
);
new_freq
/=
divisor
;
new_freq
/=
divisor
;
...
@@ -258,7 +276,8 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
...
@@ -258,7 +276,8 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
if
(
old_divisor
!=
divisor
)
if
(
old_divisor
!=
divisor
)
us2e_transition
(
estar
,
new_bits
,
clock_tick
,
old_divisor
,
divisor
);
us2e_transition
(
estar
,
new_bits
,
clock_tick
*
1000
,
old_divisor
,
divisor
);
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
...
@@ -272,10 +291,8 @@ static int us2e_freq_target(struct cpufreq_policy *policy,
...
@@ -272,10 +291,8 @@ static int us2e_freq_target(struct cpufreq_policy *policy,
unsigned
int
new_index
=
0
;
unsigned
int
new_index
=
0
;
if
(
cpufreq_frequency_table_target
(
policy
,
if
(
cpufreq_frequency_table_target
(
policy
,
&
us2e_freq_table
[
policy
->
cpu
].
table
[
0
],
&
us2e_freq_table
[
policy
->
cpu
].
table
[
0
],
target_freq
,
target_freq
,
relation
,
&
new_index
))
relation
,
&
new_index
))
return
-
EINVAL
;
return
-
EINVAL
;
us2e_set_cpu_divider_index
(
policy
->
cpu
,
new_index
);
us2e_set_cpu_divider_index
(
policy
->
cpu
,
new_index
);
...
@@ -292,7 +309,7 @@ static int us2e_freq_verify(struct cpufreq_policy *policy)
...
@@ -292,7 +309,7 @@ static int us2e_freq_verify(struct cpufreq_policy *policy)
static
int
__init
us2e_freq_cpu_init
(
struct
cpufreq_policy
*
policy
)
static
int
__init
us2e_freq_cpu_init
(
struct
cpufreq_policy
*
policy
)
{
{
unsigned
int
cpu
=
policy
->
cpu
;
unsigned
int
cpu
=
policy
->
cpu
;
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
);
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
struct
cpufreq_frequency_table
*
table
=
struct
cpufreq_frequency_table
*
table
=
&
us2e_freq_table
[
cpu
].
table
[
0
];
&
us2e_freq_table
[
cpu
].
table
[
0
];
...
@@ -351,9 +368,10 @@ static int __init us2e_freq_init(void)
...
@@ -351,9 +368,10 @@ static int __init us2e_freq_init(void)
memset
(
us2e_freq_table
,
0
,
memset
(
us2e_freq_table
,
0
,
(
NR_CPUS
*
sizeof
(
struct
us2e_freq_percpu_info
)));
(
NR_CPUS
*
sizeof
(
struct
us2e_freq_percpu_info
)));
driver
->
init
=
us2e_freq_cpu_init
;
driver
->
verify
=
us2e_freq_verify
;
driver
->
verify
=
us2e_freq_verify
;
driver
->
target
=
us2e_freq_target
;
driver
->
target
=
us2e_freq_target
;
driver
->
init
=
us2e_freq_cpu_ini
t
;
driver
->
get
=
us2e_freq_ge
t
;
driver
->
exit
=
us2e_freq_cpu_exit
;
driver
->
exit
=
us2e_freq_cpu_exit
;
driver
->
owner
=
THIS_MODULE
,
driver
->
owner
=
THIS_MODULE
,
strcpy
(
driver
->
name
,
"UltraSPARC-IIe"
);
strcpy
(
driver
->
name
,
"UltraSPARC-IIe"
);
...
...
arch/sparc64/kernel/us3_cpufreq.c
View file @
f3ed8b44
...
@@ -56,7 +56,7 @@ static void write_safari_cfg(unsigned long val)
...
@@ -56,7 +56,7 @@ static void write_safari_cfg(unsigned long val)
static
unsigned
long
get_current_freq
(
unsigned
int
cpu
,
unsigned
long
safari_cfg
)
static
unsigned
long
get_current_freq
(
unsigned
int
cpu
,
unsigned
long
safari_cfg
)
{
{
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
);
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
unsigned
long
ret
;
unsigned
long
ret
;
switch
(
safari_cfg
&
SAFARI_CFG_DIV_MASK
)
{
switch
(
safari_cfg
&
SAFARI_CFG_DIV_MASK
)
{
...
@@ -76,6 +76,26 @@ static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg
...
@@ -76,6 +76,26 @@ static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg
return
ret
;
return
ret
;
}
}
static
unsigned
int
us3_freq_get
(
unsigned
int
cpu
)
{
cpumask_t
cpus_allowed
;
unsigned
long
reg
;
unsigned
int
ret
;
if
(
!
cpu_online
(
cpu
))
return
0
;
cpus_allowed
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
reg
=
read_safari_cfg
();
ret
=
get_current_freq
(
cpu
,
reg
);
set_cpus_allowed
(
current
,
cpus_allowed
);
return
ret
;
}
static
void
us3_set_cpu_divider_index
(
unsigned
int
cpu
,
unsigned
int
index
)
static
void
us3_set_cpu_divider_index
(
unsigned
int
cpu
,
unsigned
int
index
)
{
{
unsigned
long
new_bits
,
new_freq
,
reg
;
unsigned
long
new_bits
,
new_freq
,
reg
;
...
@@ -88,7 +108,7 @@ static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
...
@@ -88,7 +108,7 @@ static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
cpus_allowed
=
current
->
cpus_allowed
;
cpus_allowed
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
cpu
));
new_freq
=
sparc64_get_clock_tick
(
cpu
);
new_freq
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
switch
(
index
)
{
switch
(
index
)
{
case
0
:
case
0
:
new_bits
=
SAFARI_CFG_DIV_1
;
new_bits
=
SAFARI_CFG_DIV_1
;
...
@@ -150,7 +170,7 @@ static int us3_freq_verify(struct cpufreq_policy *policy)
...
@@ -150,7 +170,7 @@ static int us3_freq_verify(struct cpufreq_policy *policy)
static
int
__init
us3_freq_cpu_init
(
struct
cpufreq_policy
*
policy
)
static
int
__init
us3_freq_cpu_init
(
struct
cpufreq_policy
*
policy
)
{
{
unsigned
int
cpu
=
policy
->
cpu
;
unsigned
int
cpu
=
policy
->
cpu
;
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
);
unsigned
long
clock_tick
=
sparc64_get_clock_tick
(
cpu
)
/
1000
;
struct
cpufreq_frequency_table
*
table
=
struct
cpufreq_frequency_table
*
table
=
&
us3_freq_table
[
cpu
].
table
[
0
];
&
us3_freq_table
[
cpu
].
table
[
0
];
...
@@ -206,9 +226,10 @@ static int __init us3_freq_init(void)
...
@@ -206,9 +226,10 @@ static int __init us3_freq_init(void)
memset
(
us3_freq_table
,
0
,
memset
(
us3_freq_table
,
0
,
(
NR_CPUS
*
sizeof
(
struct
us3_freq_percpu_info
)));
(
NR_CPUS
*
sizeof
(
struct
us3_freq_percpu_info
)));
driver
->
init
=
us3_freq_cpu_init
;
driver
->
verify
=
us3_freq_verify
;
driver
->
verify
=
us3_freq_verify
;
driver
->
target
=
us3_freq_target
;
driver
->
target
=
us3_freq_target
;
driver
->
init
=
us3_freq_cpu_ini
t
;
driver
->
get
=
us3_freq_ge
t
;
driver
->
exit
=
us3_freq_cpu_exit
;
driver
->
exit
=
us3_freq_cpu_exit
;
driver
->
owner
=
THIS_MODULE
,
driver
->
owner
=
THIS_MODULE
,
strcpy
(
driver
->
name
,
"UltraSPARC-III"
);
strcpy
(
driver
->
name
,
"UltraSPARC-III"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment