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
nexedi
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