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
93c846f9
Commit
93c846f9
authored
Oct 19, 2007
by
Ralf Baechle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[MIPS] time: Helpers to compute clocksource/event shift and mult values.
Signed-off-by:
Ralf Baechle
<
ralf@linux-mips.org
>
parent
f887b93e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
8 deletions
+36
-8
arch/mips/kernel/time.c
arch/mips/kernel/time.c
+31
-8
include/asm-mips/time.h
include/asm-mips/time.h
+5
-0
No files found.
arch/mips/kernel/time.c
View file @
93c846f9
...
...
@@ -171,25 +171,48 @@ struct clocksource clocksource_mips = {
.
flags
=
CLOCK_SOURCE_IS_CONTINUOUS
,
};
static
void
__init
init_mips_clocksource
(
void
)
void
__init
clocksource_set_clock
(
struct
clocksource
*
cs
,
unsigned
int
clock
)
{
u64
temp
;
u32
shift
;
if
(
!
mips_hpt_frequency
||
clocksource_mips
.
read
==
null_hpt_read
)
return
;
/* Find a shift value */
for
(
shift
=
32
;
shift
>
0
;
shift
--
)
{
temp
=
(
u64
)
NSEC_PER_SEC
<<
shift
;
do_div
(
temp
,
clock
);
if
((
temp
>>
32
)
==
0
)
break
;
}
cs
->
shift
=
shift
;
cs
->
mult
=
(
u32
)
temp
;
}
void
__cpuinit
clockevent_set_clock
(
struct
clock_event_device
*
cd
,
unsigned
int
clock
)
{
u64
temp
;
u32
shift
;
/* Calclate a somewhat reasonable rating value */
clocksource_mips
.
rating
=
200
+
mips_hpt_frequency
/
10000000
;
/* Find a shift value */
for
(
shift
=
32
;
shift
>
0
;
shift
--
)
{
temp
=
(
u64
)
NSEC_PER_SEC
<<
shift
;
do_div
(
temp
,
mips_hpt_frequency
);
do_div
(
temp
,
clock
);
if
((
temp
>>
32
)
==
0
)
break
;
}
clocksource_mips
.
shift
=
shift
;
clocksource_mips
.
mult
=
(
u32
)
temp
;
cd
->
shift
=
shift
;
cd
->
mult
=
(
u32
)
temp
;
}
static
void
__init
init_mips_clocksource
(
void
)
{
if
(
!
mips_hpt_frequency
||
clocksource_mips
.
read
==
null_hpt_read
)
return
;
/* Calclate a somewhat reasonable rating value */
clocksource_mips
.
rating
=
200
+
mips_hpt_frequency
/
10000000
;
clocksource_set_clock
(
&
clocksource_mips
,
mips_hpt_frequency
);
clocksource_register
(
&
clocksource_mips
);
}
...
...
include/asm-mips/time.h
View file @
93c846f9
...
...
@@ -21,6 +21,7 @@
#include <linux/ptrace.h>
#include <linux/rtc.h>
#include <linux/spinlock.h>
#include <linux/clockchips.h>
#include <linux/clocksource.h>
extern
spinlock_t
rtc_lock
;
...
...
@@ -83,4 +84,8 @@ static inline void mips_clockevent_init(void)
}
#endif
extern
void
clocksource_set_clock
(
struct
clocksource
*
cs
,
unsigned
int
clock
);
extern
void
clockevent_set_clock
(
struct
clock_event_device
*
cd
,
unsigned
int
clock
);
#endif
/* _ASM_TIME_H */
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