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
492ac38a
Commit
492ac38a
authored
Oct 19, 2004
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-timer
into flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-rmk
parents
e31e8687
8e6ad938
Changes
109
Hide whitespace changes
Inline
Side-by-side
Showing
109 changed files
with
601 additions
and
632 deletions
+601
-632
arch/arm/common/time-acorn.c
arch/arm/common/time-acorn.c
+30
-2
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+1
-1
arch/arm/kernel/time.c
arch/arm/kernel/time.c
+49
-10
arch/arm/mach-clps711x/autcpu12.c
arch/arm/mach-clps711x/autcpu12.c
+2
-4
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/cdb89712.c
+2
-12
arch/arm/mach-clps711x/ceiva.c
arch/arm/mach-clps711x/ceiva.c
+2
-3
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/clep7312.c
+2
-4
arch/arm/mach-clps711x/common.h
arch/arm/mach-clps711x/common.h
+11
-0
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/edb7211-arch.c
+3
-3
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/fortunet.c
+2
-4
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps711x/p720t.c
+2
-4
arch/arm/mach-clps711x/time.c
arch/arm/mach-clps711x/time.c
+6
-2
arch/arm/mach-clps7500/core.c
arch/arm/mach-clps7500/core.c
+8
-2
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/core.c
+7
-4
arch/arm/mach-epxa10db/arch.c
arch/arm/mach-epxa10db/arch.c
+2
-2
arch/arm/mach-epxa10db/time.c
arch/arm/mach-epxa10db/time.c
+4
-1
arch/arm/mach-footbridge/Makefile
arch/arm/mach-footbridge/Makefile
+5
-2
arch/arm/mach-footbridge/arch.c
arch/arm/mach-footbridge/arch.c
+6
-8
arch/arm/mach-footbridge/common.h
arch/arm/mach-footbridge/common.h
+9
-0
arch/arm/mach-footbridge/dc21285-timer.c
arch/arm/mach-footbridge/dc21285-timer.c
+64
-0
arch/arm/mach-footbridge/isa-timer.c
arch/arm/mach-footbridge/isa-timer.c
+93
-0
arch/arm/mach-footbridge/time.c
arch/arm/mach-footbridge/time.c
+3
-119
arch/arm/mach-imx/generic.h
arch/arm/mach-imx/generic.h
+3
-1
arch/arm/mach-imx/mx1ads.c
arch/arm/mach-imx/mx1ads.c
+1
-1
arch/arm/mach-imx/time.c
arch/arm/mach-imx/time.c
+7
-3
arch/arm/mach-integrator/common.h
arch/arm/mach-integrator/common.h
+2
-0
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/core.c
+3
-4
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_ap.c
+9
-2
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-integrator/integrator_cp.c
+9
-2
arch/arm/mach-iop3xx/arch.c
arch/arm/mach-iop3xx/arch.c
+0
-50
arch/arm/mach-iop3xx/iop321-setup.c
arch/arm/mach-iop3xx/iop321-setup.c
+4
-4
arch/arm/mach-iop3xx/iop321-time.c
arch/arm/mach-iop3xx/iop321-time.c
+5
-5
arch/arm/mach-iop3xx/iop331-setup.c
arch/arm/mach-iop3xx/iop331-setup.c
+2
-2
arch/arm/mach-iop3xx/iop331-time.c
arch/arm/mach-iop3xx/iop331-time.c
+5
-5
arch/arm/mach-ixp2000/core.c
arch/arm/mach-ixp2000/core.c
+1
-3
arch/arm/mach-ixp2000/enp2611.c
arch/arm/mach-ixp2000/enp2611.c
+7
-2
arch/arm/mach-ixp2000/ixdp2400.c
arch/arm/mach-ixp2000/ixdp2400.c
+7
-2
arch/arm/mach-ixp2000/ixdp2800.c
arch/arm/mach-ixp2000/ixdp2800.c
+7
-2
arch/arm/mach-ixp2000/ixdp2x01.c
arch/arm/mach-ixp2000/ixdp2x01.c
+8
-3
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/common.c
+5
-4
arch/arm/mach-ixp4xx/coyote-setup.c
arch/arm/mach-ixp4xx/coyote-setup.c
+1
-1
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-ixp4xx/ixdp425-setup.c
+3
-3
arch/arm/mach-ixp4xx/prpmc1100-setup.c
arch/arm/mach-ixp4xx/prpmc1100-setup.c
+1
-1
arch/arm/mach-lh7a40x/arch-kev7a400.c
arch/arm/mach-lh7a40x/arch-kev7a400.c
+3
-4
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
+4
-9
arch/arm/mach-lh7a40x/common.h
arch/arm/mach-lh7a40x/common.h
+9
-0
arch/arm/mach-lh7a40x/time.c
arch/arm/mach-lh7a40x/time.c
+5
-1
arch/arm/mach-omap/board-generic.c
arch/arm/mach-omap/board-generic.c
+1
-3
arch/arm/mach-omap/board-h2.c
arch/arm/mach-omap/board-h2.c
+1
-3
arch/arm/mach-omap/board-h3.c
arch/arm/mach-omap/board-h3.c
+1
-3
arch/arm/mach-omap/board-innovator.c
arch/arm/mach-omap/board-innovator.c
+1
-3
arch/arm/mach-omap/board-osk.c
arch/arm/mach-omap/board-osk.c
+1
-3
arch/arm/mach-omap/board-perseus2.c
arch/arm/mach-omap/board-perseus2.c
+1
-3
arch/arm/mach-omap/common.h
arch/arm/mach-omap/common.h
+3
-2
arch/arm/mach-omap/time.c
arch/arm/mach-omap/time.c
+5
-3
arch/arm/mach-pxa/generic.h
arch/arm/mach-pxa/generic.h
+3
-1
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/idp.c
+1
-1
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+3
-1
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mainstone.c
+1
-1
arch/arm/mach-pxa/pm.c
arch/arm/mach-pxa/pm.c
+0
-19
arch/arm/mach-pxa/time.c
arch/arm/mach-pxa/time.c
+37
-2
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-rpc/riscpc.c
+2
-26
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-bast.c
+1
-6
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-h1940.c
+1
-6
arch/arm/mach-s3c2410/mach-smdk2410.c
arch/arm/mach-s3c2410/mach-smdk2410.c
+1
-6
arch/arm/mach-s3c2410/mach-vr1000.c
arch/arm/mach-s3c2410/mach-vr1000.c
+1
-6
arch/arm/mach-s3c2410/s3c2410.h
arch/arm/mach-s3c2410/s3c2410.h
+2
-1
arch/arm/mach-s3c2410/time.c
arch/arm/mach-s3c2410/time.c
+5
-5
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/adsbitsy.c
+1
-1
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/assabet.c
+1
-1
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/badge4.c
+1
-1
arch/arm/mach-sa1100/brutus.c
arch/arm/mach-sa1100/brutus.c
+1
-1
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/cerf.c
+1
-1
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/collie.c
+1
-1
arch/arm/mach-sa1100/empeg.c
arch/arm/mach-sa1100/empeg.c
+1
-1
arch/arm/mach-sa1100/flexanet.c
arch/arm/mach-sa1100/flexanet.c
+1
-1
arch/arm/mach-sa1100/freebird.c
arch/arm/mach-sa1100/freebird.c
+1
-1
arch/arm/mach-sa1100/generic.h
arch/arm/mach-sa1100/generic.h
+3
-1
arch/arm/mach-sa1100/graphicsclient.c
arch/arm/mach-sa1100/graphicsclient.c
+1
-1
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/graphicsmaster.c
+1
-1
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/h3600.c
+3
-3
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/hackkit.c
+1
-1
arch/arm/mach-sa1100/huw_webpanel.c
arch/arm/mach-sa1100/huw_webpanel.c
+1
-1
arch/arm/mach-sa1100/itsy.c
arch/arm/mach-sa1100/itsy.c
+1
-1
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/jornada720.c
+1
-1
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/lart.c
+1
-1
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/nanoengine.c
+1
-1
arch/arm/mach-sa1100/omnimeter.c
arch/arm/mach-sa1100/omnimeter.c
+1
-1
arch/arm/mach-sa1100/pangolin.c
arch/arm/mach-sa1100/pangolin.c
+1
-1
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/pfs168.c
+1
-1
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/pleb.c
+1
-1
arch/arm/mach-sa1100/pm.c
arch/arm/mach-sa1100/pm.c
+0
-18
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/shannon.c
+1
-1
arch/arm/mach-sa1100/sherman.c
arch/arm/mach-sa1100/sherman.c
+1
-1
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-sa1100/simpad.c
+1
-1
arch/arm/mach-sa1100/stork.c
arch/arm/mach-sa1100/stork.c
+1
-1
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/system3.c
+1
-1
arch/arm/mach-sa1100/time.c
arch/arm/mach-sa1100/time.c
+38
-2
arch/arm/mach-sa1100/trizeps.c
arch/arm/mach-sa1100/trizeps.c
+1
-1
arch/arm/mach-sa1100/xp860.c
arch/arm/mach-sa1100/xp860.c
+1
-1
arch/arm/mach-sa1100/yopy.c
arch/arm/mach-sa1100/yopy.c
+1
-1
arch/arm/mach-shark/core.c
arch/arm/mach-shark/core.c
+5
-2
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/core.c
+7
-5
include/asm-arm/arch-integrator/platform.h
include/asm-arm/arch-integrator/platform.h
+0
-4
include/asm-arm/arch-integrator/time.h
include/asm-arm/arch-integrator/time.h
+0
-156
include/asm-arm/arch-ixp2000/platform.h
include/asm-arm/arch-ixp2000/platform.h
+1
-0
include/asm-arm/arch-ixp4xx/platform.h
include/asm-arm/arch-ixp4xx/platform.h
+3
-1
include/asm-arm/mach/arch.h
include/asm-arm/mach/arch.h
+2
-4
include/asm-arm/mach/time.h
include/asm-arm/mach/time.h
+14
-2
No files found.
arch/arm/common/time-acorn.c
View file @
492ac38a
...
...
@@ -15,6 +15,7 @@
*/
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <asm/hardware.h>
#include <asm/io.h>
...
...
@@ -22,7 +23,7 @@
#include <asm/mach/time.h>
static
unsigned
long
ioctime
_gettimeoffset
(
void
)
unsigned
long
ioc_timer
_gettimeoffset
(
void
)
{
unsigned
int
count1
,
count2
,
status
;
long
offset
;
...
...
@@ -62,6 +63,33 @@ void __init ioctime_init(void)
ioc_writeb
(
LATCH
&
255
,
IOC_T0LTCHL
);
ioc_writeb
(
LATCH
>>
8
,
IOC_T0LTCHH
);
ioc_writeb
(
0
,
IOC_T0GO
);
}
static
irqreturn_t
ioc_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
gettimeoffset
=
ioctime_gettimeoffset
;
return
IRQ_HANDLED
;
}
static
struct
irqaction
ioc_timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
ioc_timer_interrupt
};
/*
* Set up timer interrupt.
*/
static
void
__init
ioc_timer_init
(
void
)
{
ioctime_init
();
setup_irq
(
IRQ_TIMER
,
&
ioc_timer_irq
);
}
struct
sys_timer
ioc_timer
=
{
.
init
=
ioc_timer_init
,
.
offset
=
ioc_timer_gettimeoffset
,
};
arch/arm/kernel/setup.c
View file @
492ac38a
...
...
@@ -726,7 +726,7 @@ void __init setup_arch(char **cmdline_p)
* Set up various architecture-specific pointers
*/
init_arch_irq
=
mdesc
->
init_irq
;
init_arch_time
=
mdesc
->
init_time
;
system_timer
=
mdesc
->
timer
;
init_machine
=
mdesc
->
init_machine
;
#ifdef CONFIG_VT
...
...
arch/arm/kernel/time.c
View file @
492ac38a
...
...
@@ -40,6 +40,11 @@ u64 jiffies_64 = INITIAL_JIFFIES;
EXPORT_SYMBOL
(
jiffies_64
);
/*
* Our system timer.
*/
struct
sys_timer
*
system_timer
;
extern
unsigned
long
wall_jiffies
;
/* this needs a better home */
...
...
@@ -77,12 +82,6 @@ static unsigned long dummy_gettimeoffset(void)
return
0
;
}
/*
* hook for getting the time offset. Note that it is
* always called with interrupts disabled.
*/
unsigned
long
(
*
gettimeoffset
)(
void
)
=
dummy_gettimeoffset
;
/*
* Scheduler clock - returns current time in nanosec units.
* This is the default implementation. Sub-architecture
...
...
@@ -247,7 +246,7 @@ void do_gettimeofday(struct timeval *tv)
do
{
seq
=
read_seqbegin_irqsave
(
&
xtime_lock
,
flags
);
usec
=
gettime
offset
();
usec
=
system_timer
->
offset
();
lost
=
jiffies
-
wall_jiffies
;
if
(
lost
)
...
...
@@ -284,7 +283,7 @@ int do_settimeofday(struct timespec *tv)
* wall time. Discover what correction gettimeofday() would have
* done, and then undo it!
*/
nsec
-=
gettime
offset
()
*
NSEC_PER_USEC
;
nsec
-=
system_timer
->
offset
()
*
NSEC_PER_USEC
;
nsec
-=
(
jiffies
-
wall_jiffies
)
*
TICK_NSEC
;
wtm_sec
=
wall_to_monotonic
.
tv_sec
+
(
xtime
.
tv_sec
-
sec
);
...
...
@@ -337,6 +336,9 @@ void restore_time_delta(struct timespec *delta, struct timespec *rtc)
}
EXPORT_SYMBOL
(
restore_time_delta
);
/*
* Kernel system timer support.
*/
void
timer_tick
(
struct
pt_regs
*
regs
)
{
profile_tick
(
CPU_PROFILING
,
regs
);
...
...
@@ -345,10 +347,47 @@ void timer_tick(struct pt_regs *regs)
do_timer
(
regs
);
}
void
(
*
init_arch_time
)(
void
);
#ifdef CONFIG_PM
static
int
timer_suspend
(
struct
sys_device
*
dev
,
u32
state
)
{
struct
sys_timer
*
timer
=
container_of
(
dev
,
struct
sys_timer
,
dev
);
timer
->
suspend
();
return
0
;
}
static
int
timer_resume
(
struct
sys_device
*
dev
)
{
struct
sys_timer
*
timer
=
container_of
(
dev
,
struct
sys_timer
,
dev
);
timer
->
resume
();
return
0
;
}
#else
#define timer_suspend NULL
#define timer_resume NULL
#endif
static
struct
sysdev_class
timer_sysclass
=
{
set_kset_name
(
"timer"
),
.
suspend
=
timer_suspend
,
.
resume
=
timer_resume
,
};
static
int
__init
timer_init_sysfs
(
void
)
{
int
ret
=
sysdev_class_register
(
&
timer_sysclass
);
if
(
ret
==
0
)
{
system_timer
->
dev
.
cls
=
&
timer_sysclass
;
ret
=
sysdev_register
(
&
system_timer
->
dev
);
}
return
ret
;
}
device_initcall
(
timer_init_sysfs
);
void
__init
time_init
(
void
)
{
init_arch_time
();
if
(
system_timer
->
offset
==
NULL
)
system_timer
->
offset
=
dummy_gettimeoffset
;
system_timer
->
init
();
}
arch/arm/mach-clps711x/autcpu12.c
View file @
492ac38a
...
...
@@ -35,9 +35,7 @@
#include <asm/mach/map.h>
#include <asm/arch/autcpu12.h>
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
/*
* The on-chip registers are given a size of 1MB so that a section can
...
...
@@ -66,6 +64,6 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
BOOT_PARAMS
(
0xc0020000
)
MAPIO
(
autcpu12_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/cdb89712.c
View file @
492ac38a
...
...
@@ -32,9 +32,7 @@
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
/*
* Map the CS89712 Ethernet port. That should be moved to the
...
...
@@ -56,13 +54,5 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
cdb89712_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
static
int
cdb89712_hw_init
(
void
)
{
return
0
;
}
__initcall
(
cdb89712_hw_init
);
arch/arm/mach-clps711x/ceiva.c
View file @
492ac38a
...
...
@@ -34,8 +34,7 @@
#include <asm/mach/map.h>
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
static
struct
map_desc
ceiva_io_desc
[]
__initdata
=
{
/* virtual, physical, length, type */
...
...
@@ -59,5 +58,5 @@ MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
ceiva_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/clep7312.c
View file @
492ac38a
...
...
@@ -23,9 +23,7 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
static
void
__init
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
...
...
@@ -45,6 +43,6 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
FIXUP
(
fixup_clep7312
)
MAPIO
(
clps711x_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/common.h
0 → 100644
View file @
492ac38a
/*
* linux/arch/arm/mach-clps711x/common.h
*
* Common bits.
*/
struct
sys_timer
;
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
struct
sys_timer
clps711x_timer
;
arch/arm/mach-clps711x/edb7211-arch.c
View file @
492ac38a
...
...
@@ -25,9 +25,9 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
extern
void
clps711x_init_irq
(
void
);
#include "common.h"
extern
void
edb7211_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
static
void
__init
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
...
...
@@ -57,5 +57,5 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
FIXUP
(
fixup_edb7211
)
MAPIO
(
edb7211_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/fortunet.c
View file @
492ac38a
...
...
@@ -31,9 +31,7 @@
#include <asm/mach/arch.h>
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
struct
meminfo
memmap
=
{
.
nr_banks
=
1
,
...
...
@@ -83,5 +81,5 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
FIXUP
(
fortunet_fixup
)
MAPIO
(
clps711x_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/p720t.c
View file @
492ac38a
...
...
@@ -34,9 +34,7 @@
#include <asm/mach/map.h>
#include <asm/arch/syspld.h>
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
#include "common.h"
/*
* Map the P720T system PLD. It occupies two address spaces:
...
...
@@ -87,7 +85,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
FIXUP
(
fixup_p720t
)
MAPIO
(
p720t_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
.
timer
=
&
clps711x_timer
,
MACHINE_END
static
int
p720t_hw_init
(
void
)
...
...
arch/arm/mach-clps711x/time.c
View file @
492ac38a
...
...
@@ -59,7 +59,7 @@ static struct irqaction clps711x_timer_irq = {
.
handler
=
p720t_timer_interrupt
};
void
__init
clps711x_init_time
(
void
)
static
void
__init
clps711x_timer_init
(
void
)
{
struct
timespec
tv
;
unsigned
int
syscon
;
...
...
@@ -71,9 +71,13 @@ void __init clps711x_init_time(void)
clps_writel
(
LATCH
-
1
,
TC2D
);
/* 512kHz / 100Hz - 1 */
setup_irq
(
IRQ_TC2OI
,
&
clps711x_timer_irq
);
gettimeoffset
=
clps711x_gettimeoffset
;
tv
.
tv_nsec
=
0
;
tv
.
tv_sec
=
clps_readl
(
RTCDR
);
do_settimeofday
(
&
tv
);
}
struct
sys_timer
clps711x_timer
=
{
.
init
=
clps711x_timer_init
,
.
offset
=
clps711x_gettimeoffset
,
};
arch/arm/mach-clps7500/core.c
View file @
492ac38a
...
...
@@ -267,6 +267,7 @@ static void __init clps7500_map_io(void)
}
extern
void
ioctime_init
(
void
);
extern
unsigned
long
ioc_timer_gettimeoffset
(
void
);
static
irqreturn_t
clps7500_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
...
...
@@ -295,18 +296,23 @@ static struct irqaction clps7500_timer_irq = {
/*
* Set up timer interrupt.
*/
void
__init
clps7500_init_time
(
void
)
static
void
__init
clps7500_timer_init
(
void
)
{
ioctime_init
();
setup_irq
(
IRQ_TIMER
,
&
clps7500_timer_irq
);
}
static
struct
clps7500_timer
=
{
.
init
=
clps7500_timer_init
,
.
offset
=
ioc_timer_gettimeoffset
,
};
MACHINE_START
(
CLPS7500
,
"CL-PS7500"
)
MAINTAINER
(
"Philip Blundell"
)
BOOT_MEM
(
0x10000000
,
0x03000000
,
0xe0000000
)
MAPIO
(
clps7500_map_io
)
INITIRQ
(
clps7500_init_irq
)
INITTIME
(
clps7500_init_time
)
.
timer
=
&
clps7500_timer
,
MACHINE_END
arch/arm/mach-ebsa110/core.c
View file @
492ac38a
...
...
@@ -175,7 +175,7 @@ static struct irqaction ebsa110_timer_irq = {
/*
* Set up timer interrupt.
*/
static
void
__init
ebsa110_
init_time
(
void
)
static
void
__init
ebsa110_
timer_init
(
void
)
{
/*
* Timer 1, mode 2, LSB/MSB
...
...
@@ -184,11 +184,14 @@ static void __init ebsa110_init_time(void)
__raw_writeb
(
COUNT
&
0xff
,
PIT_T1
);
__raw_writeb
(
COUNT
>>
8
,
PIT_T1
);
gettimeoffset
=
ebsa110_gettimeoffset
;
setup_irq
(
IRQ_EBSA110_TIMER0
,
&
ebsa110_timer_irq
);
}
static
struct
sys_timer
ebsa110_timer
=
{
.
init
=
ebsa110_timer_init
,
.
offset
=
ebsa110_gettimeoffset
,
};
MACHINE_START
(
EBSA110
,
"EBSA110"
)
MAINTAINER
(
"Russell King"
)
BOOT_MEM
(
0x00000000
,
0xe0000000
,
0xe0000000
)
...
...
@@ -198,5 +201,5 @@ MACHINE_START(EBSA110, "EBSA110")
SOFT_REBOOT
MAPIO
(
ebsa110_map_io
)
INITIRQ
(
ebsa110_init_irq
)
INITTIME
(
ebsa110_init_time
)
.
timer
=
&
ebsa110_timer
,
MACHINE_END
arch/arm/mach-epxa10db/arch.c
View file @
492ac38a
...
...
@@ -29,13 +29,13 @@
extern
void
epxa10db_map_io
(
void
);
extern
void
epxa10db_init_irq
(
void
);
extern
void
epxa10db_init_time
(
void
)
;
extern
struct
sys_timer
epxa10db_timer
;
MACHINE_START
(
CAMELOT
,
"Altera Epxa10db"
)
MAINTAINER
(
"Altera Corporation"
)
BOOT_MEM
(
0x00000000
,
0x7fffc000
,
0xffffc000
)
MAPIO
(
epxa10db_map_io
)
INITIRQ
(
epxa10db_init_irq
)
INITTIME
(
epxa10db_init_time
)
.
timer
=
&
epxa10db_timer
,
MACHINE_END
arch/arm/mach-epxa10db/time.c
View file @
492ac38a
...
...
@@ -61,7 +61,7 @@ static struct irqaction epxa10db_timer_irq = {
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
epxa10db_init_time
(
void
)
static
void
__init
epxa10db_timer_init
(
void
)
{
/* Start the timer */
*
TIMER0_LIMIT
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
(
unsigned
int
)(
EXC_AHB2_CLK_FREQUENCY
/
200
);
...
...
@@ -71,3 +71,6 @@ void __init epxa10db_init_time(void)
setup_irq
(
IRQ_TIMER0
,
&
epxa10db_timer_irq
);
}
struct
sys_timer
epxa10db_timer
=
{
.
init
=
epxa10db_timer_init
,
};
arch/arm/mach-footbridge/Makefile
View file @
492ac38a
...
...
@@ -18,8 +18,11 @@ leds-$(CONFIG_ARCH_CO285) += ebsa285-leds.o
leds-$(CONFIG_ARCH_EBSA285)
+=
ebsa285-leds.o
leds-$(CONFIG_ARCH_NETWINDER)
+=
netwinder-leds.o
obj-$(CONFIG_ARCH_CATS)
+=
cats-hw.o
obj-$(CONFIG_ARCH_NETWINDER)
+=
netwinder-hw.o
obj-$(CONFIG_ARCH_CATS)
+=
cats-hw.o isa-timer.o
obj-$(CONFIG_ARCH_CO285)
+=
dc21285-timer.o
obj-$(CONFIG_ARCH_EBSA285)
+=
dc21285-timer.o
obj-$(CONFIG_ARCH_NETWINDER)
+=
netwinder-hw.o isa-timer.o
obj-$(CONFIG_ARCH_PERSONAL_SERVER)
+=
dc21285-timer.o
obj-$(CONFIG_PCI)
+=
$
(
pci-y
)
obj-$(CONFIG_LEDS)
+=
$
(
leds-y
)
arch/arm/mach-footbridge/arch.c
View file @
492ac38a
...
...
@@ -20,9 +20,7 @@
#include <asm/mach/arch.h>
extern
void
footbridge_map_io
(
void
);
extern
void
footbridge_init_irq
(
void
);
extern
void
footbridge_init_time
(
void
);
#include "common.h"
unsigned
int
mem_fclk_21285
=
50000000
;
...
...
@@ -44,7 +42,7 @@ MACHINE_START(EBSA285, "EBSA285")
VIDEO
(
0x000a0000
,
0x000bffff
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
.
timer
=
&
footbridge_timer
,
MACHINE_END
#endif
...
...
@@ -80,7 +78,7 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")
FIXUP
(
fixup_netwinder
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
.
timer
=
&
isa_timer
,
MACHINE_END
#endif
...
...
@@ -106,7 +104,7 @@ MACHINE_START(CATS, "Chalice-CATS")
FIXUP
(
fixup_cats
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
.
timer
=
&
isa_timer
,
MACHINE_END
#endif
...
...
@@ -133,7 +131,7 @@ MACHINE_START(CO285, "co-EBSA285")
FIXUP
(
fixup_coebsa285
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
.
timer
=
&
footbridge_timer
,
MACHINE_END
#endif
...
...
@@ -144,6 +142,6 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
.
timer
=
&
footbridge_timer
,
MACHINE_END
#endif
arch/arm/mach-footbridge/common.h
0 → 100644
View file @
492ac38a
extern
struct
sys_timer
footbridge_timer
;
extern
struct
sys_timer
isa_timer
;
extern
void
isa_rtc_init
(
void
);
extern
void
footbridge_map_io
(
void
);
extern
void
footbridge_init_irq
(
void
);
arch/arm/mach-footbridge/dc21285-timer.c
0 → 100644
View file @
492ac38a
/*
* linux/arch/arm/mach-footbridge/dc21285-timer.c
*
* Copyright (C) 1998 Russell King.
* Copyright (C) 1998 Phil Blundell
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <asm/irq.h>
#include <asm/hardware/dec21285.h>
#include <asm/mach/time.h>
#include "common.h"
/*
* Footbridge timer 1 support.
*/
static
unsigned
long
timer1_latch
;
static
unsigned
long
timer1_gettimeoffset
(
void
)
{
unsigned
long
value
=
timer1_latch
-
*
CSR_TIMER1_VALUE
;
return
((
tick_nsec
/
1000
)
*
value
)
/
timer1_latch
;
}
static
irqreturn_t
timer1_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
*
CSR_TIMER1_CLR
=
0
;
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
footbridge_timer_irq
=
{
.
name
=
"Timer1 timer tick"
,
.
handler
=
timer1_interrupt
,
.
flags
=
SA_INTERRUPT
,
};
/*
* Set up timer interrupt.
*/
static
void
__init
footbridge_timer_init
(
void
)
{
isa_rtc_init
();
timer1_latch
=
(
mem_fclk_21285
+
8
*
HZ
)
/
(
16
*
HZ
);
*
CSR_TIMER1_CLR
=
0
;
*
CSR_TIMER1_LOAD
=
timer1_latch
;
*
CSR_TIMER1_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
|
TIMER_CNTL_DIV16
;
setup_irq
(
IRQ_TIMER1
,
&
footbridge_timer_irq
);
}
struct
sys_timer
footbridge_timer
=
{
.
init
=
footbridge_timer_init
,
.
offset
=
timer1_gettimeoffset
,
};
arch/arm/mach-footbridge/isa-timer.c
0 → 100644
View file @
492ac38a
/*
* linux/arch/arm/mach-footbridge/isa-timer.c
*
* Copyright (C) 1998 Russell King.
* Copyright (C) 1998 Phil Blundell
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/mach/time.h>
#include "common.h"
/*
* ISA timer tick support
*/
#define mSEC_10_from_14 ((14318180 + 100) / 200)
static
unsigned
long
isa_gettimeoffset
(
void
)
{
int
count
;
static
int
count_p
=
(
mSEC_10_from_14
/
6
);
/* for the first call after boot */
static
unsigned
long
jiffies_p
=
0
;
/*
* cache volatile jiffies temporarily; we have IRQs turned off.
*/
unsigned
long
jiffies_t
;
/* timer count may underflow right here */
outb_p
(
0x00
,
0x43
);
/* latch the count ASAP */
count
=
inb_p
(
0x40
);
/* read the latched count */
/*
* We do this guaranteed double memory access instead of a _p
* postfix in the previous port access. Wheee, hackady hack
*/
jiffies_t
=
jiffies
;
count
|=
inb_p
(
0x40
)
<<
8
;
/* Detect timer underflows. If we haven't had a timer tick since
the last time we were called, and time is apparently going
backwards, the counter must have wrapped during this routine. */
if
((
jiffies_t
==
jiffies_p
)
&&
(
count
>
count_p
))
count
-=
(
mSEC_10_from_14
/
6
);
else
jiffies_p
=
jiffies_t
;
count_p
=
count
;
count
=
(((
mSEC_10_from_14
/
6
)
-
1
)
-
count
)
*
(
tick_nsec
/
1000
);
count
=
(
count
+
(
mSEC_10_from_14
/
6
)
/
2
)
/
(
mSEC_10_from_14
/
6
);
return
count
;
}
static
irqreturn_t
isa_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
isa_timer_irq
=
{
.
name
=
"ISA timer tick"
,
.
handler
=
isa_timer_interrupt
,
.
flags
=
SA_INTERRUPT
,
};
static
void
__init
isa_timer_init
(
void
)
{
isa_rtc_init
();
/* enable PIT timer */
/* set for periodic (4) and LSB/MSB write (0x30) */
outb
(
0x34
,
0x43
);
outb
((
mSEC_10_from_14
/
6
)
&
0xFF
,
0x40
);
outb
((
mSEC_10_from_14
/
6
)
>>
8
,
0x40
);
setup_irq
(
IRQ_ISA_TIMER
,
&
isa_timer_irq
);
}
struct
sys_timer
isa_timer
=
{
.
init
=
isa_timer_init
,
.
offset
=
isa_gettimeoffset
,
};
arch/arm/mach-footbridge/time.c
View file @
492ac38a
...
...
@@ -19,75 +19,18 @@
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/mc146818rtc.h>
#include <linux/bcd.h>
#include <asm/hardware/dec21285.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/leds.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <asm/hardware/clps7111.h>
#include <asm/mach/time.h>
#include "common.h"
static
int
rtc_base
;
#define mSEC_10_from_14 ((14318180 + 100) / 200)
static
unsigned
long
isa_gettimeoffset
(
void
)
{
int
count
;
static
int
count_p
=
(
mSEC_10_from_14
/
6
);
/* for the first call after boot */
static
unsigned
long
jiffies_p
=
0
;
/*
* cache volatile jiffies temporarily; we have IRQs turned off.
*/
unsigned
long
jiffies_t
;
/* timer count may underflow right here */
outb_p
(
0x00
,
0x43
);
/* latch the count ASAP */
count
=
inb_p
(
0x40
);
/* read the latched count */
/*
* We do this guaranteed double memory access instead of a _p
* postfix in the previous port access. Wheee, hackady hack
*/
jiffies_t
=
jiffies
;
count
|=
inb_p
(
0x40
)
<<
8
;
/* Detect timer underflows. If we haven't had a timer tick since
the last time we were called, and time is apparently going
backwards, the counter must have wrapped during this routine. */
if
((
jiffies_t
==
jiffies_p
)
&&
(
count
>
count_p
))
count
-=
(
mSEC_10_from_14
/
6
);
else
jiffies_p
=
jiffies_t
;
count_p
=
count
;
count
=
(((
mSEC_10_from_14
/
6
)
-
1
)
-
count
)
*
(
tick_nsec
/
1000
);
count
=
(
count
+
(
mSEC_10_from_14
/
6
)
/
2
)
/
(
mSEC_10_from_14
/
6
);
return
count
;
}
static
irqreturn_t
isa_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
unsigned
long
__init
get_isa_cmos_time
(
void
)
{
unsigned
int
year
,
mon
,
day
,
hour
,
min
,
sec
;
...
...
@@ -133,8 +76,7 @@ static unsigned long __init get_isa_cmos_time(void)
return
mktime
(
year
,
mon
,
day
,
hour
,
min
,
sec
);
}
static
int
set_isa_cmos_time
(
void
)
static
int
set_isa_cmos_time
(
void
)
{
int
retval
=
0
;
int
real_seconds
,
real_minutes
,
cmos_minutes
;
...
...
@@ -186,34 +128,7 @@ set_isa_cmos_time(void)
return
retval
;
}
static
unsigned
long
timer1_latch
;
static
unsigned
long
timer1_gettimeoffset
(
void
)
{
unsigned
long
value
=
timer1_latch
-
*
CSR_TIMER1_VALUE
;
return
((
tick_nsec
/
1000
)
*
value
)
/
timer1_latch
;
}
static
irqreturn_t
timer1_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
*
CSR_TIMER1_CLR
=
0
;
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
footbridge_timer_irq
=
{
.
flags
=
SA_INTERRUPT
};
/*
* Set up timer interrupt.
*/
void
__init
footbridge_init_time
(
void
)
void
__init
isa_rtc_init
(
void
)
{
if
(
machine_is_co285
()
||
machine_is_personal_server
())
...
...
@@ -262,35 +177,4 @@ void __init footbridge_init_time(void)
}
else
rtc_base
=
0
;
}
if
(
machine_is_ebsa285
()
||
machine_is_co285
()
||
machine_is_personal_server
())
{
gettimeoffset
=
timer1_gettimeoffset
;
timer1_latch
=
(
mem_fclk_21285
+
8
*
HZ
)
/
(
16
*
HZ
);
*
CSR_TIMER1_CLR
=
0
;
*
CSR_TIMER1_LOAD
=
timer1_latch
;
*
CSR_TIMER1_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
|
TIMER_CNTL_DIV16
;
footbridge_timer_irq
.
name
=
"Timer1 Timer Tick"
;
footbridge_timer_irq
.
handler
=
timer1_interrupt
;
setup_irq
(
IRQ_TIMER1
,
&
footbridge_timer_irq
);
}
else
{
/* enable PIT timer */
/* set for periodic (4) and LSB/MSB write (0x30) */
outb
(
0x34
,
0x43
);
outb
((
mSEC_10_from_14
/
6
)
&
0xFF
,
0x40
);
outb
((
mSEC_10_from_14
/
6
)
>>
8
,
0x40
);
gettimeoffset
=
isa_gettimeoffset
;
footbridge_timer_irq
.
name
=
"ISA Timer Tick"
;
footbridge_timer_irq
.
handler
=
isa_timer_interrupt
;
setup_irq
(
IRQ_ISA_TIMER
,
&
footbridge_timer_irq
);
}
}
arch/arm/mach-imx/generic.h
View file @
492ac38a
...
...
@@ -11,4 +11,6 @@
extern
void
__init
imx_map_io
(
void
);
extern
void
__init
imx_init_irq
(
void
);
extern
void
__init
imx_init_time
(
void
);
struct
sys_timer
;
extern
struct
sys_timer
imx_timer
;
arch/arm/mach-imx/mx1ads.c
View file @
492ac38a
...
...
@@ -83,6 +83,6 @@ MACHINE_START(MX1ADS, "Motorola MX1ADS")
BOOT_PARAMS
(
0x08000100
)
MAPIO
(
mx1ads_map_io
)
INITIRQ
(
imx_init_irq
)
INITTIME
(
imx_init_time
)
.
timer
=
&
imx_timer
,
INIT_MACHINE
(
mx1ads_init
)
MACHINE_END
arch/arm/mach-imx/time.c
View file @
492ac38a
...
...
@@ -76,8 +76,8 @@ static struct irqaction imx_timer_irq = {
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
imx_
init_time
(
void
)
static
void
__init
imx_
timer_init
(
void
)
{
/*
* Initialise to a known state (all timers off, and timing reset)
...
...
@@ -91,5 +91,9 @@ imx_init_time(void)
* Make irqs happen for the system timer
*/
setup_irq
(
TIM1_INT
,
&
imx_timer_irq
);
gettimeoffset
=
imx_gettimeoffset
;
}
struct
imx_timer
=
{
.
init
=
imx_timer_init
,
.
offset
=
imx_gettimeoffset
,
};
arch/arm/mach-integrator/common.h
0 → 100644
View file @
492ac38a
extern
void
integrator_time_init
(
unsigned
long
,
unsigned
int
);
extern
unsigned
long
integrator_gettimeoffset
(
void
);
arch/arm/mach-integrator/core.c
View file @
492ac38a
...
...
@@ -24,6 +24,8 @@
#include <asm/leds.h>
#include <asm/mach/time.h>
#include "common.h"
static
struct
amba_device
rtc_device
=
{
.
dev
=
{
.
bus_id
=
"mb:15"
,
...
...
@@ -163,15 +165,13 @@ typedef struct TimerStruct {
unsigned
long
TimerClear
;
}
TimerStruct_t
;
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
static
unsigned
long
timer_reload
;
/*
* Returns number of ms since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
*/
static
unsigned
long
integrator_gettimeoffset
(
void
)
unsigned
long
integrator_gettimeoffset
(
void
)
{
volatile
TimerStruct_t
*
timer1
=
(
TimerStruct_t
*
)
TIMER1_VA_BASE
;
unsigned
long
ticks1
,
ticks2
,
status
;
...
...
@@ -264,5 +264,4 @@ void __init integrator_time_init(unsigned long reload, unsigned int ctrl)
* Make irqs happen for the system timer
*/
setup_irq
(
IRQ_TIMERINT1
,
&
integrator_timer_irq
);
gettimeoffset
=
integrator_gettimeoffset
;
}
arch/arm/mach-integrator/integrator_ap.c
View file @
492ac38a
...
...
@@ -40,7 +40,9 @@
#include <asm/mach/flash.h>
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>
#include "common.h"
/*
* All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx
...
...
@@ -281,17 +283,22 @@ static void __init ap_init(void)
}
}
static
void
ap_time_init
(
void
)
static
void
__init
ap_init_timer
(
void
)
{
integrator_time_init
(
1000000
*
TICKS_PER_uSEC
/
HZ
,
0
);
}
static
struct
sys_timer
ap_timer
=
{
.
init
=
ap_init_timer
,
.
offset
=
integrator_gettimeoffset
,
};
MACHINE_START
(
INTEGRATOR
,
"ARM-Integrator"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ap_map_io
)
INITIRQ
(
ap_init_irq
)
INITTIME
(
ap_time_init
)
.
timer
=
&
ap_timer
,
INIT_MACHINE
(
ap_init
)
MACHINE_END
arch/arm/mach-integrator/integrator_cp.c
View file @
492ac38a
...
...
@@ -35,7 +35,9 @@
#include <asm/mach/irq.h>
#include <asm/mach/mmc.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>
#include "common.h"
#include "clock.h"
#define INTCP_PA_MMC_BASE 0x1c000000
...
...
@@ -496,17 +498,22 @@ static void __init intcp_init(void)
#define TIMER_CTRL_IE (1 << 5)
/* Interrupt Enable */
static
void
__init
intcp_
init_time
(
void
)
static
void
__init
intcp_
timer_init
(
void
)
{
integrator_time_init
(
1000000
/
HZ
,
TIMER_CTRL_IE
);
}
static
struct
sys_timer
cp_timer
=
{
.
init
=
intcp_timer_init
,
.
offset
=
integrator_gettimeoffset
,
};
MACHINE_START
(
CINTEGRATOR
,
"ARM-IntegratorCP"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
intcp_map_io
)
INITIRQ
(
intcp_init_irq
)
INITTIME
(
intcp_init_time
)
.
timer
=
&
cp_timer
,
INIT_MACHINE
(
intcp_init
)
MACHINE_END
arch/arm/mach-iop3xx/arch.c
View file @
492ac38a
/*
* linux/arch/arm/mach-iop3xx/arch.c
*
* Author: Nicolas Pitre <nico@cam.org>
* Copyright (C) 2001 MontaVista Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
#include <linux/config.h>
#include <linux/init.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <asm/setup.h>
#include <asm/system.h>
#include <asm/memory.h>
#include <asm/hardware.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#ifdef CONFIG_ARCH_IQ80331
extern
void
iq80331_map_io
(
void
);
extern
void
iop331_init_irq
(
void
);
extern
void
iop331_init_time
(
void
);
#endif
#ifdef CONFIG_ARCH_IQ80331
static
void
__init
fixup_iop331
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
}
#endif
#if defined(CONFIG_ARCH_IQ80331)
MACHINE_START
(
IQ80331
,
"Intel IQ80331"
)
MAINTAINER
(
"Intel Corp."
)
BOOT_MEM
(
PHYS_OFFSET
,
0xfff01000
,
0xfffff000
)
// virtual, physical
// BOOT_MEM(PHYS_OFFSET, IQ80331_UART0_VIRT, IQ80331_UART0_PHYS)
MAPIO
(
iq80331_map_io
)
INITIRQ
(
iop331_init_irq
)
INITTIME
(
iop331_init_time
)
BOOT_PARAMS
(
0x0100
)
MACHINE_END
#else
#error No machine descriptor defined for this IOP3xx implementation
#endif
arch/arm/mach-iop3xx/iop321-setup.c
View file @
492ac38a
...
...
@@ -23,13 +23,13 @@
#ifdef CONFIG_ARCH_IQ80321
extern
void
iq80321_map_io
(
void
);
extern
void
iop321_init_irq
(
void
)
;
extern
struct
sys_timer
iop321_timer
;
extern
void
iop321_init_time
(
void
);
#endif
#ifdef CONFIG_ARCH_IQ31244
extern
void
iq31244_map_io
(
void
);
extern
void
iop321_init_irq
(
void
)
;
extern
struct
sys_timer
iop321_timer
;
extern
void
iop321_init_time
(
void
);
#endif
...
...
@@ -46,7 +46,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")
FIXUP
(
fixup_iop321
)
MAPIO
(
iq80321_map_io
)
INITIRQ
(
iop321_init_irq
)
INITTIME
(
iop321_init_time
)
.
timer
=
&
iop331_timer
,
BOOT_PARAMS
(
0xa0000100
)
MACHINE_END
#elif defined(CONFIG_ARCH_IQ31244)
...
...
@@ -55,7 +55,7 @@ MACHINE_END
BOOT_MEM
(
PHYS_OFFSET
,
IQ31244_UART
,
IQ31244_UART
)
MAPIO
(
iq31244_map_io
)
INITIRQ
(
iop321_init_irq
)
INITTIME
(
iop321_init_time
)
.
timer
=
&
iop331_timer
,
BOOT_PARAMS
(
0xa0000100
)
MACHINE_END
#else
...
...
arch/arm/mach-iop3xx/iop321-time.c
View file @
492ac38a
...
...
@@ -110,14 +110,11 @@ static struct irqaction iop321_timer_irq = {
.
flags
=
SA_INTERRUPT
};
extern
int
setup_arm_irq
(
int
,
struct
irqaction
*
);
void
__init
iop321_init_time
(
void
)
static
void
__init
iop321_timer_init
(
void
)
{
u32
timer_ctl
;
iop321_latch
=
(
CLOCK_TICK_RATE
+
HZ
/
2
)
/
HZ
;
gettimeoffset
=
iop321_gettimeoffset
;
setup_irq
(
IRQ_IOP321_TIMER0
,
&
iop321_timer_irq
);
timer_ctl
=
IOP321_TMR_EN
|
IOP321_TMR_PRIVILEGED
|
IOP321_TMR_RELOAD
|
...
...
@@ -138,4 +135,7 @@ void __init iop321_init_time(void)
#endif
}
struct
sys_timer
iop321_timer
=
{
.
init
=
&
iop321_timer_init
,
.
offset
=
iop321_gettimeoffset
,
};
arch/arm/mach-iop3xx/iop331-setup.c
View file @
492ac38a
...
...
@@ -81,7 +81,7 @@ void __init iop331_map_io(void)
#ifdef CONFIG_ARCH_IQ80331
extern
void
iop331_init_irq
(
void
);
extern
void
iop331_init_time
(
void
)
;
extern
struct
sys_timer
iop331_timer
;
extern
void
iq80331_map_io
(
void
);
#endif
...
...
@@ -92,7 +92,7 @@ MACHINE_START(IQ80331, "Intel IQ80331")
//BOOT_MEM(PHYS_OFFSET, IQ80331_UART0_VIRT, IQ80331_UART0_PHYS)
MAPIO
(
iq80331_map_io
)
INITIRQ
(
iop331_init_irq
)
INITTIME
(
iop331_init_time
)
.
timer
=
&
iop331_timer
,
BOOT_PARAMS
(
0x0100
)
MACHINE_END
#else
...
...
arch/arm/mach-iop3xx/iop331-time.c
View file @
492ac38a
...
...
@@ -110,14 +110,11 @@ static struct irqaction iop331_timer_irq = {
.
flags
=
SA_INTERRUPT
};
extern
int
setup_arm_irq
(
int
,
struct
irqaction
*
);
void
__init
iop331_init_time
(
void
)
static
void
__init
iop331_timer_init
(
void
)
{
u32
timer_ctl
;
iop331_latch
=
(
CLOCK_TICK_RATE
+
HZ
/
2
)
/
HZ
;
gettimeoffset
=
iop331_gettimeoffset
;
setup_irq
(
IRQ_IOP331_TIMER0
,
&
iop331_timer_irq
);
timer_ctl
=
IOP331_TMR_EN
|
IOP331_TMR_PRIVILEGED
|
IOP331_TMR_RELOAD
|
...
...
@@ -138,4 +135,7 @@ void __init iop331_init_time(void)
#endif
}
struct
sys_timer
iop331_timer
=
{
.
init
=
iop331_timer_init
,
.
offset
=
iop331_gettimeoffset
,
};
arch/arm/mach-ixp2000/core.c
View file @
492ac38a
...
...
@@ -170,7 +170,7 @@ void __init ixp2000_map_io(void)
static
unsigned
ticks_per_jiffy
;
static
unsigned
ticks_per_usec
;
static
unsigned
long
ixp2000_gettimeoffset
(
void
)
unsigned
long
ixp2000_gettimeoffset
(
void
)
{
unsigned
long
elapsed
;
...
...
@@ -198,8 +198,6 @@ static struct irqaction ixp2000_timer_irq = {
void
__init
ixp2000_init_time
(
unsigned
long
tick_rate
)
{
gettimeoffset
=
ixp2000_gettimeoffset
;
ixp2000_reg_write
(
IXP2000_T1_CLR
,
0
);
ixp2000_reg_write
(
IXP2000_T2_CLR
,
0
);
...
...
arch/arm/mach-ixp2000/enp2611.c
View file @
492ac38a
...
...
@@ -55,11 +55,16 @@
/*************************************************************************
* ENP-2611 timer tick configuration
*************************************************************************/
static
void
__init
enp2611_
init_time
(
void
)
static
void
__init
enp2611_
timer_init
(
void
)
{
ixp2000_init_time
(
50
*
1000
*
1000
);
}
static
struct
enp2611_timer
=
{
.
init
=
enp2611_timer_init
,
.
offset
=
ixp2000_gettimeoffset
,
};
/*************************************************************************
* ENP-2611 PCI
...
...
@@ -202,7 +207,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ixp2000_map_io
)
INITIRQ
(
ixp2000_init_irq
)
INITTIME
(
enp2611_init_time
)
.
timer
=
&
enp2611_timer
,
INIT_MACHINE
(
enp2611_init_machine
)
MACHINE_END
#endif
...
...
arch/arm/mach-ixp2000/ixdp2400.c
View file @
492ac38a
...
...
@@ -48,7 +48,7 @@
/*************************************************************************
* IXDP2400 timer tick
*************************************************************************/
static
void
__init
ixdp2400_
init_time
(
void
)
static
void
__init
ixdp2400_
timer_init
(
void
)
{
int
numerator
,
denominator
;
int
denom_array
[]
=
{
2
,
4
,
8
,
16
,
1
,
2
,
4
,
8
};
...
...
@@ -59,6 +59,11 @@ static void __init ixdp2400_init_time(void)
ixp2000_init_time
(((
3125000
*
numerator
)
/
(
denominator
))
/
2
);
}
static
struct
timer
ixdp2400_timer
=
{
.
init
=
ixdp2400_timer_init
,
.
offset
=
ixp2000_gettimeoffset
,
};
/*************************************************************************
* IXDP2400 PCI
*************************************************************************/
...
...
@@ -171,7 +176,7 @@ MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ixdp2x00_map_io
)
INITIRQ
(
ixdp2400_init_irq
)
INITTIME
(
ixdp2400_init_time
)
.
timer
=
&
ixdp2400_timer
,
INIT_MACHINE
(
ixdp2x00_init_machine
)
MACHINE_END
arch/arm/mach-ixp2000/ixdp2800.c
View file @
492ac38a
...
...
@@ -55,11 +55,16 @@ void ixdp2400_init_irq(void)
* IXDP2800 timer tick
*************************************************************************/
static
void
__init
ixdp2800_
init_time
(
void
)
static
void
__init
ixdp2800_
timer_init
(
void
)
{
ixp2000_init_time
(
50000000
);
}
static
struct
sys_timer
ixdp2800_timer
=
{
.
init
=
ixdp2800_timer_init
,
.
offset
=
ixp2000_gettimeoffset
,
};
/*************************************************************************
* IXDP2800 PCI
*************************************************************************/
...
...
@@ -172,7 +177,7 @@ MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ixdp2x00_map_io
)
INITIRQ
(
ixdp2800_init_irq
)
INITTIME
(
ixdp2800_init_time
)
.
timer
=
&
ixdp2800_timer
,
INIT_MACHINE
(
ixdp2x00_init_machine
)
MACHINE_END
arch/arm/mach-ixp2000/ixdp2x01.c
View file @
492ac38a
...
...
@@ -193,7 +193,7 @@ static int __init ixdp2x01_clock_setup(char *str)
__setup
(
"ixdp2x01_clock="
,
ixdp2x01_clock_setup
);
static
void
__init
ixdp2x01_
init_time
(
void
)
static
void
__init
ixdp2x01_
timer_init
(
void
)
{
if
(
!
ixdp2x01_clock
)
ixdp2x01_clock
=
50000000
;
...
...
@@ -201,6 +201,11 @@ static void __init ixdp2x01_init_time(void)
ixp2000_init_time
(
ixdp2x01_clock
);
}
static
struct
sys_timer
ixdp2x01_timer
=
{
.
init
=
ixdp2x01_timer_init
,
.
offset
=
ixp2000_gettimeoffset
,
};
/*************************************************************************
* IXDP2x01 PCI
*************************************************************************/
...
...
@@ -361,7 +366,7 @@ MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ixdp2x01_map_io
)
INITIRQ
(
ixdp2x01_init_irq
)
INITTIME
(
ixdp2x01_init_time
)
.
timer
=
&
ixdp2x01_timer
,
INIT_MACHINE
(
ixdp2x01_init_machine
)
MACHINE_END
#endif
...
...
@@ -373,7 +378,7 @@ MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ixdp2x01_map_io
)
INITIRQ
(
ixdp2x01_init_irq
)
INITTIME
(
ixdp2x01_init_time
)
.
timer
=
&
ixdp2x01_timer
,
INIT_MACHINE
(
ixdp2x01_init_machine
)
MACHINE_END
#endif
...
...
arch/arm/mach-ixp4xx/common.c
View file @
492ac38a
...
...
@@ -241,10 +241,8 @@ static struct irqaction ixp4xx_timer_irq = {
.
handler
=
ixp4xx_timer_interrupt
};
void
__init
ixp4xx_init_time
(
void
)
static
void
__init
ixp4xx_timer_init
(
void
)
{
gettimeoffset
=
ixp4xx_gettimeoffset
;
/* Clear Pending Interrupt by writing '1' to it */
*
IXP4XX_OSST
=
IXP4XX_OSST_TIMER_1_PEND
;
...
...
@@ -259,4 +257,7 @@ void __init ixp4xx_init_time(void)
setup_irq
(
IRQ_IXP4XX_TIMER1
,
&
ixp4xx_timer_irq
);
}
struct
ixp4xx_timer
=
{
.
init
=
ixp4xx_timer_init
,
.
offset
=
ixp4xx_gettimeoffset
,
};
arch/arm/mach-ixp4xx/coyote-setup.c
View file @
492ac38a
...
...
@@ -88,7 +88,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering IXP4XX Coyote Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
coyote_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
coyote_init
)
MACHINE_END
...
...
arch/arm/mach-ixp4xx/ixdp425-setup.c
View file @
492ac38a
...
...
@@ -117,7 +117,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
...
...
@@ -128,7 +128,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
...
...
@@ -146,7 +146,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
...
...
arch/arm/mach-ixp4xx/prpmc1100-setup.c
View file @
492ac38a
...
...
@@ -88,7 +88,7 @@ MACHINE_START(PRPMC1100, "Motorola PrPMC1100")
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
prpmc1100_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
prpmc1100_init
)
MACHINE_END
...
...
arch/arm/mach-lh7a40x/arch-kev7a400.c
View file @
492ac38a
...
...
@@ -11,6 +11,7 @@
#include <linux/tty.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/interrupt.h>
#include <asm/hardware.h>
#include <asm/setup.h>
...
...
@@ -21,11 +22,9 @@
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include
<linux/interrupt.h>
#include
"common.h"
/* This function calls the board specific IRQ initialization function. */
extern
void
lh7a400_init_irq
(
void
);
extern
void
lh7a40x_init_time
(
void
);
static
struct
map_desc
kev7a400_io_desc
[]
__initdata
=
{
{
IO_VIRT
,
IO_PHYS
,
IO_SIZE
,
MT_DEVICE
},
...
...
@@ -109,5 +108,5 @@ MACHINE_START (KEV7A400, "Sharp KEV7a400")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
kev7a400_map_io
)
INITIRQ
(
lh7a400_init_irq
)
INITTIME
(
lh7a40x_init_time
)
.
timer
=
&
lh7a40x_timer
,
MACHINE_END
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
View file @
492ac38a
...
...
@@ -11,6 +11,7 @@
#include <linux/tty.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/interrupt.h>
#include <asm/hardware.h>
#include <asm/setup.h>
...
...
@@ -21,7 +22,7 @@
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include
<linux/interrupt.h>
#include
"common.h"
static
struct
resource
smc91x_resources
[]
=
{
[
0
]
=
{
...
...
@@ -261,16 +262,13 @@ lpd7a400_map_io(void)
#ifdef CONFIG_MACH_LPD7A400
extern
void
lh7a400_init_irq
(
void
);
extern
void
lh7a40x_init_time
(
void
);
MACHINE_START
(
LPD7A400
,
"Logic Product Development LPD7A400-10"
)
MAINTAINER
(
"Marc Singer"
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
io_p2v
(
0x80000000
))
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
lpd7a400_map_io
)
INITIRQ
(
lh7a400_init_irq
)
INITTIME
(
lh7a40x_init_time
)
.
timer
=
&
lpd7a40x_timer
,
INIT_MACHINE
(
lpd7a40x_init
)
MACHINE_END
...
...
@@ -278,16 +276,13 @@ MACHINE_END
#ifdef CONFIG_MACH_LPD7A404
extern
void
lh7a404_init_irq
(
void
);
extern
void
lh7a40x_init_time
(
void
);
MACHINE_START
(
LPD7A404
,
"Logic Product Development LPD7A404-10"
)
MAINTAINER
(
"Marc Singer"
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
io_p2v
(
0x80000000
))
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
lpd7a400_map_io
)
INITIRQ
(
lh7a404_init_irq
)
INITTIME
(
lh7a40x_init_time
)
.
timer
=
&
lpd7a40x_timer
,
INIT_MACHINE
(
lpd7a40x_init
)
MACHINE_END
...
...
arch/arm/mach-lh7a40x/common.h
0 → 100644
View file @
492ac38a
/*
* linux/arch/arm/mach-lh7a40x/common.h
*
* Header file for common stuff.
*/
struct
sys_timer
;
extern
struct
sys_timer
lh7a40x_timer
;
extern
void
lh7a400_init_irq
(
void
);
arch/arm/mach-lh7a40x/time.c
View file @
492ac38a
...
...
@@ -20,6 +20,7 @@
#include <asm/leds.h>
#include <asm/mach/time.h>
#include "common.h"
#if HZ < 100
# define TIMER_CONTROL TIMER_CONTROL2
...
...
@@ -52,7 +53,7 @@ static struct irqaction lh7a40x_timer_irq = {
.
handler
=
lh7a40x_timer_interrupt
};
void
__init
lh7a40x_init_time
(
void
)
static
void
__init
lh7a40x_timer_init
(
void
)
{
/* Stop/disable all timers */
TIMER_CONTROL1
=
0
;
...
...
@@ -65,3 +66,6 @@ void __init lh7a40x_init_time(void)
TIMER_CONTROL
=
TIMER_MODE
;
}
struct
sys_timer
lh7a40x_timer
=
{
.
init
=
&
lh7a40x_timer
,
};
arch/arm/mach-omap/board-generic.c
View file @
492ac38a
...
...
@@ -30,8 +30,6 @@
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
static
void
__init
omap_generic_init_irq
(
void
)
{
omap_init_irq
();
...
...
@@ -118,5 +116,5 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
MAPIO
(
omap_generic_map_io
)
INITIRQ
(
omap_generic_init_irq
)
INIT_MACHINE
(
omap_generic_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/board-h2.c
View file @
492ac38a
...
...
@@ -35,8 +35,6 @@
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
static
struct
map_desc
h2_io_desc
[]
__initdata
=
{
{
OMAP1610_ETHR_BASE
,
OMAP1610_ETHR_START
,
OMAP1610_ETHR_SIZE
,
MT_DEVICE
},
{
OMAP1610_NOR_FLASH_BASE
,
OMAP1610_NOR_FLASH_START
,
OMAP1610_NOR_FLASH_SIZE
,
...
...
@@ -111,5 +109,5 @@ MACHINE_START(OMAP_H2, "TI-H2")
MAPIO
(
h2_map_io
)
INITIRQ
(
h2_init_irq
)
INIT_MACHINE
(
h2_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/board-h3.c
View file @
492ac38a
...
...
@@ -32,8 +32,6 @@
#include <asm/mach-types.h>
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
void
h3_init_irq
(
void
)
{
omap_init_irq
();
...
...
@@ -86,5 +84,5 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
MAPIO
(
h3_map_io
)
INITIRQ
(
h3_init_irq
)
INIT_MACHINE
(
h3_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/board-innovator.c
View file @
492ac38a
...
...
@@ -33,8 +33,6 @@
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
#ifdef CONFIG_ARCH_OMAP1510
extern
int
omap_gpio_init
(
void
);
...
...
@@ -203,5 +201,5 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
MAPIO
(
innovator_map_io
)
INITIRQ
(
innovator_init_irq
)
INIT_MACHINE
(
innovator_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/board-osk.c
View file @
492ac38a
...
...
@@ -41,8 +41,6 @@
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
static
struct
map_desc
osk5912_io_desc
[]
__initdata
=
{
{
OMAP_OSK_ETHR_BASE
,
OMAP_OSK_ETHR_START
,
OMAP_OSK_ETHR_SIZE
,
MT_DEVICE
},
{
OMAP_OSK_NOR_FLASH_BASE
,
OMAP_OSK_NOR_FLASH_START
,
OMAP_OSK_NOR_FLASH_SIZE
,
...
...
@@ -97,5 +95,5 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
MAPIO
(
osk_map_io
)
INITIRQ
(
osk_init_irq
)
INIT_MACHINE
(
osk_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/board-perseus2.c
View file @
492ac38a
...
...
@@ -27,8 +27,6 @@
#include "common.h"
extern
void
__init
omap_init_time
(
void
);
void
omap_perseus2_init_irq
(
void
)
{
omap_init_irq
();
...
...
@@ -115,5 +113,5 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
MAPIO
(
omap_perseus2_map_io
)
INITIRQ
(
omap_perseus2_init_irq
)
INIT_MACHINE
(
omap_perseus2_init
)
INITTIME
(
omap_init_time
)
.
timer
=
&
omap_timer
,
MACHINE_END
arch/arm/mach-omap/common.h
View file @
492ac38a
...
...
@@ -27,8 +27,9 @@
#ifndef __ARCH_ARM_MACH_OMAP_COMMON_H
#define __ARCH_ARM_MACH_OMAP_COMMON_H
struct
sys_timer
;
extern
void
omap_map_io
(
void
);
extern
struct
sys_timer
omap_timer
;
#endif
/* __ARCH_ARM_MACH_OMAP_COMMON_H */
arch/arm/mach-omap/time.c
View file @
492ac38a
...
...
@@ -199,11 +199,9 @@ static struct irqaction omap_timer_irq = {
.
handler
=
omap_timer_interrupt
};
void
__init
omap_init_time
(
void
)
static
void
__init
omap_timer_init
(
void
)
{
/* Since we don't call request_irq, we must init the structure */
gettimeoffset
=
omap_gettimeoffset
;
#ifdef OMAP1510_USE_32KHZ_TIMER
timer32k_write
(
TIMER32k_CR
,
0x0
);
timer32k_write
(
TIMER32k_TVR
,
TIMER32k_PERIOD
);
...
...
@@ -215,3 +213,7 @@ void __init omap_init_time(void)
#endif
}
struct
sys_timer
omap_timer
=
{
.
init
=
omap_timer_init
,
.
offset
=
omap_gettimeoffset
,
};
arch/arm/mach-pxa/generic.h
View file @
492ac38a
...
...
@@ -9,9 +9,11 @@
* published by the Free Software Foundation.
*/
struct
sys_timer
;
extern
struct
sys_timer
pxa_timer
;
extern
void
__init
pxa_map_io
(
void
);
extern
void
__init
pxa_init_irq
(
void
);
extern
void
__init
pxa_init_time
(
void
);
extern
unsigned
int
get_clk_frequency_khz
(
int
info
);
...
...
arch/arm/mach-pxa/idp.c
View file @
492ac38a
...
...
@@ -119,6 +119,6 @@ MACHINE_START(PXA_IDP, "Accelent Xscale IDP")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
idp_map_io
)
INITIRQ
(
idp_init_irq
)
INITTIME
(
pxa_init_time
)
.
timer
=
&
pxa_timer
,
INIT_MACHINE
(
idp_init
)
MACHINE_END
arch/arm/mach-pxa/lubbock.c
View file @
492ac38a
...
...
@@ -38,6 +38,8 @@
#include "generic.h"
#define LUB_MISC_WR __LUB_REG(LUBBOCK_FPGA_PHYS + 0x080)
void
lubbock_set_misc_wr
(
unsigned
int
mask
,
unsigned
int
set
)
{
unsigned
long
flags
;
...
...
@@ -221,6 +223,6 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
lubbock_map_io
)
INITIRQ
(
lubbock_init_irq
)
INITTIME
(
pxa_init_time
)
.
timer
=
&
pxa_timer
,
INIT_MACHINE
(
lubbock_init
)
MACHINE_END
arch/arm/mach-pxa/mainstone.c
View file @
492ac38a
...
...
@@ -198,6 +198,6 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
mainstone_map_io
)
INITIRQ
(
mainstone_init_irq
)
INITTIME
(
pxa_init_time
)
.
timer
=
&
pxa_timer
,
INIT_MACHINE
(
mainstone_init
)
MACHINE_END
arch/arm/mach-pxa/pm.c
View file @
492ac38a
...
...
@@ -47,9 +47,6 @@ extern void pxa_cpu_resume(void);
*/
enum
{
SLEEP_SAVE_START
=
0
,
SLEEP_SAVE_OIER
,
SLEEP_SAVE_OSMR0
,
SLEEP_SAVE_OSMR1
,
SLEEP_SAVE_OSMR2
,
SLEEP_SAVE_OSMR3
,
SLEEP_SAVE_GPLR0
,
SLEEP_SAVE_GPLR1
,
SLEEP_SAVE_GPLR2
,
SLEEP_SAVE_GPDR0
,
SLEEP_SAVE_GPDR1
,
SLEEP_SAVE_GPDR2
,
SLEEP_SAVE_GRER0
,
SLEEP_SAVE_GRER1
,
SLEEP_SAVE_GRER2
,
...
...
@@ -81,13 +78,6 @@ static int pxa_pm_enter(u32 state)
rtc
.
tv_nsec
=
0
;
save_time_delta
(
&
delta
,
&
rtc
);
/* save vital registers */
SAVE
(
OSMR0
);
SAVE
(
OSMR1
);
SAVE
(
OSMR2
);
SAVE
(
OSMR3
);
SAVE
(
OIER
);
SAVE
(
GPLR0
);
SAVE
(
GPLR1
);
SAVE
(
GPLR2
);
SAVE
(
GPDR0
);
SAVE
(
GPDR1
);
SAVE
(
GPDR2
);
SAVE
(
GRER0
);
SAVE
(
GRER1
);
SAVE
(
GRER2
);
...
...
@@ -148,15 +138,6 @@ static int pxa_pm_enter(u32 state)
PSSR
=
PSSR_RDH
|
PSSR_PH
;
RESTORE
(
OSMR0
);
RESTORE
(
OSMR1
);
RESTORE
(
OSMR2
);
RESTORE
(
OSMR3
);
RESTORE
(
OIER
);
/* OSMR0 is the system timer: make sure OSCR is sufficiently behind */
OSCR
=
OSMR0
-
LATCH
;
RESTORE
(
CKEN
);
ICLR
=
0
;
...
...
arch/arm/mach-pxa/time.c
View file @
492ac38a
...
...
@@ -105,11 +105,10 @@ static struct irqaction pxa_timer_irq = {
.
handler
=
pxa_timer_interrupt
};
void
__init
pxa_init_time
(
void
)
static
void
__init
pxa_timer_init
(
void
)
{
struct
timespec
tv
;
gettimeoffset
=
pxa_gettimeoffset
;
set_rtc
=
pxa_set_rtc
;
tv
.
tv_nsec
=
0
;
...
...
@@ -123,3 +122,39 @@ void __init pxa_init_time(void)
OSCR
=
0
;
/* initialize free-running timer, force first match */
}
#ifdef CONFIG_PM
static
unsigned
long
osmr
[
4
],
oier
;
static
void
pxa_timer_suspend
(
void
)
{
osmr
[
0
]
=
OSMR0
;
osmr
[
1
]
=
OSMR1
;
osmr
[
2
]
=
OSMR2
;
osmr
[
3
]
=
OSMR3
;
oier
=
OIER
;
}
static
void
pxa_timer_resume
(
void
)
{
OSMR0
=
osmr
[
0
];
OSMR1
=
osmr
[
1
];
OSMR2
=
osmr
[
2
];
OSMR3
=
osmr
[
3
];
OIER
=
oier
;
/*
* OSMR0 is the system timer: make sure OSCR is sufficiently behind
*/
OSCR
=
OSMR0
-
LATCH
;
}
#else
#define pxa_timer_suspend NULL
#define pxa_timer_resume NULL
#endif
struct
sys_timer
pxa_timer
=
{
.
init
=
pxa_timer_init
,
.
suspend
=
pxa_timer_suspend
,
.
resume
=
pxa_timer_resume
,
.
offset
=
pxa_gettimeoffset
,
};
arch/arm/mach-rpc/riscpc.c
View file @
492ac38a
...
...
@@ -15,7 +15,6 @@
#include <linux/pm.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <asm/elf.h>
#include <asm/io.h>
...
...
@@ -85,30 +84,7 @@ void __init rpc_map_io(void)
elf_hwcap
&=
~
HWCAP_HALF
;
}
static
irqreturn_t
rpc_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
rpc_timer_irq
=
{
.
name
=
"RiscPC Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
rpc_timer_interrupt
};
/*
* Set up timer interrupt.
*/
void
__init
rpc_init_time
(
void
)
{
extern
void
ioctime_init
(
void
);
ioctime_init
();
setup_irq
(
IRQ_TIMER
,
&
rpc_timer_irq
);
}
extern
struct
sys_timer
ioc_timer
;
MACHINE_START
(
RISCPC
,
"Acorn-RiscPC"
)
MAINTAINER
(
"Russell King"
)
...
...
@@ -118,5 +94,5 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
DISABLE_PARPORT
(
1
)
MAPIO
(
rpc_map_io
)
INITIRQ
(
rpc_init_irq
)
INITTIME
(
rpc_init_time
)
.
timer
=
&
ioc_timer
,
MACHINE_END
arch/arm/mach-s3c2410/mach-bast.c
View file @
492ac38a
...
...
@@ -225,16 +225,11 @@ void __init bast_init_irq(void)
s3c2410_init_irq
();
}
void
__init
bast_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
BAST
,
"Simtec-BAST"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
bast_map_io
)
INITIRQ
(
bast_init_irq
)
INITTIME
(
bast_init_time
)
.
timer
=
&
s3c2410_timer
,
MACHINE_END
arch/arm/mach-s3c2410/mach-h1940.c
View file @
492ac38a
...
...
@@ -110,16 +110,11 @@ void __init h1940_init_irq(void)
}
void
__init
h1940_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
H1940
,
"IPAQ-H1940"
)
MAINTAINER
(
"Ben Dooks <ben@fluff.org>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
h1940_map_io
)
INITIRQ
(
h1940_init_irq
)
INITTIME
(
h1940_init_time
)
.
timer
=
&
s3c2410_timer
,
MACHINE_END
arch/arm/mach-s3c2410/mach-smdk2410.c
View file @
492ac38a
...
...
@@ -113,11 +113,6 @@ void __init smdk2410_init_irq(void)
s3c2410_init_irq
();
}
void
__init
smdk2410_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
SMDK2410
,
"SMDK2410"
)
/* @TODO: request a new identifier and switch
* to SMDK2410 */
MAINTAINER
(
"Jonas Dietsche"
)
...
...
@@ -125,7 +120,7 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
smdk2410_map_io
)
INITIRQ
(
smdk2410_init_irq
)
INITTIME
(
smdk2410_init_time
)
.
timer
=
&
s3c2410_timer
,
MACHINE_END
arch/arm/mach-s3c2410/mach-vr1000.c
View file @
492ac38a
...
...
@@ -170,16 +170,11 @@ void __init vr1000_init_irq(void)
s3c2410_init_irq
();
}
void
__init
vr1000_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
VR1000
,
"Thorcom-VR1000"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
vr1000_map_io
)
INITIRQ
(
vr1000_init_irq
)
INITTIME
(
vr1000_init_time
)
.
timer
=
&
s3c2410_timer
,
MACHINE_END
arch/arm/mach-s3c2410/s3c2410.h
View file @
492ac38a
...
...
@@ -23,7 +23,8 @@ extern void s3c2410_init_uarts(struct s3c2410_uartcfg *, int no);
extern
void
s3c2410_init_irq
(
void
);
extern
void
s3c2410_init_time
(
void
);
struct
sys_timer
;
extern
struct
sys_timer
s3c2410_timer
;
/* the board structure is used at first initialsation time
* to get info such as the devices to register for this
...
...
arch/arm/mach-s3c2410/time.c
View file @
492ac38a
...
...
@@ -105,15 +105,13 @@ static struct irqaction s3c2410_timer_irq = {
* Currently we only use timer4, as it is the only timer which has no
* other function that can be exploited externally
*/
void
__init
s3c2410_init_time
(
void
)
static
void
__init
s3c2410_timer_init
(
void
)
{
unsigned
long
tcon
;
unsigned
long
tcnt
;
unsigned
long
tcfg1
;
unsigned
long
tcfg0
;
gettimeoffset
=
s3c2410_gettimeoffset
;
tcnt
=
0xffff
;
/* default value for tcnt */
/* read the current timer configuration bits */
...
...
@@ -186,5 +184,7 @@ void __init s3c2410_init_time (void)
__raw_writel
(
tcon
,
S3C2410_TCON
);
}
struct
sys_timer
s3c2410_timer
=
{
.
init
=
s3c2410_timer_init
,
.
offset
=
s3c2410_gettimeoffset
,
};
arch/arm/mach-sa1100/adsbitsy.c
View file @
492ac38a
...
...
@@ -147,5 +147,5 @@ MACHINE_START(ADSBITSY, "ADS Bitsy")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
adsbitsy_map_io
)
INITIRQ
(
adsbitsy_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/assabet.c
View file @
492ac38a
...
...
@@ -324,6 +324,6 @@ MACHINE_START(ASSABET, "Intel-Assabet")
FIXUP
(
fixup_assabet
)
MAPIO
(
assabet_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
INIT_MACHINE
(
assabet_init
)
MACHINE_END
arch/arm/mach-sa1100/badge4.c
View file @
492ac38a
...
...
@@ -245,5 +245,5 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
badge4_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/brutus.c
View file @
492ac38a
...
...
@@ -37,5 +37,5 @@ MACHINE_START(BRUTUS, "Intel Brutus (SA1100 eval board)")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
brutus_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/cerf.c
View file @
492ac38a
...
...
@@ -92,5 +92,5 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
cerf_map_io
)
INITIRQ
(
cerf_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/collie.c
View file @
492ac38a
...
...
@@ -141,5 +141,5 @@ MACHINE_START(COLLIE, "Sharp-Collie")
MAPIO
(
collie_map_io
)
INITIRQ
(
sa1100_init_irq
)
INIT_MACHINE
(
collie_init
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/empeg.c
View file @
492ac38a
...
...
@@ -35,5 +35,5 @@ MACHINE_START(EMPEG, "empeg MP3 Car Audio Player")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
empeg_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/flexanet.c
View file @
492ac38a
...
...
@@ -183,6 +183,6 @@ MACHINE_START(FLEXANET, "FlexaNet")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
flexanet_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/freebird.c
View file @
492ac38a
...
...
@@ -77,5 +77,5 @@ MACHINE_START(FREEBIRD, "Freebird-HPC-1.1")
#endif
MAPIO
(
freebird_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/generic.h
View file @
492ac38a
...
...
@@ -4,9 +4,11 @@
* Author: Nicolas Pitre
*/
struct
sys_timer
;
extern
struct
sys_timer
sa1100_timer
;
extern
void
__init
sa1100_map_io
(
void
);
extern
void
__init
sa1100_init_irq
(
void
);
extern
void
__init
sa1100_init_time
(
void
);
#define SET_BANK(__nr,__start,__size) \
mi->bank[__nr].start = (__start), \
...
...
arch/arm/mach-sa1100/graphicsclient.c
View file @
492ac38a
...
...
@@ -198,5 +198,5 @@ MACHINE_START(GRAPHICSCLIENT, "ADS GraphicsClient")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
graphicsclient_map_io
)
INITIRQ
(
graphicsclient_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/graphicsmaster.c
View file @
492ac38a
...
...
@@ -287,5 +287,5 @@ MACHINE_START(GRAPHICSMASTER, "ADS GraphicsMaster")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
graphicsmaster_map_io
)
INITIRQ
(
graphicsmaster_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/h3600.c
View file @
492ac38a
...
...
@@ -286,7 +286,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3100_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
#endif
/* CONFIG_SA1100_H3100 */
...
...
@@ -401,7 +401,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3600_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
#endif
/* CONFIG_SA1100_H3600 */
...
...
@@ -785,7 +785,7 @@ MACHINE_START(H3800, "Compaq iPAQ H3800")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3800_map_io
)
INITIRQ
(
h3800_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
#endif
/* CONFIG_SA1100_H3800 */
arch/arm/mach-sa1100/hackkit.c
View file @
492ac38a
...
...
@@ -174,5 +174,5 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
hackkit_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/huw_webpanel.c
View file @
492ac38a
...
...
@@ -81,5 +81,5 @@ MACHINE_START(HUW_WEBPANEL, "HuW-Webpanel")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
huw_webpanel_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/itsy.c
View file @
492ac38a
...
...
@@ -37,5 +37,5 @@ MACHINE_START(ITSY, "Compaq Itsy")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
itsy_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/jornada720.c
View file @
492ac38a
...
...
@@ -101,5 +101,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
jornada720_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/lart.c
View file @
492ac38a
...
...
@@ -43,5 +43,5 @@ MACHINE_START(LART, "LART")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
lart_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/nanoengine.c
View file @
492ac38a
...
...
@@ -49,5 +49,5 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
FIXUP
(
fixup_nanoengine
)
MAPIO
(
nanoengine_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/omnimeter.c
View file @
492ac38a
...
...
@@ -59,5 +59,5 @@ MACHINE_START(OMNIMETER, "OmniMeter")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
omnimeter_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/pangolin.c
View file @
492ac38a
...
...
@@ -40,5 +40,5 @@ MACHINE_START(PANGOLIN, "Dialogue-Pangolin")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
pangolin_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/pfs168.c
View file @
492ac38a
...
...
@@ -112,5 +112,5 @@ MACHINE_START(PFS168, "Tulsa")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
pfs168_map_io
)
INITIRQ
(
pfs168_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/pleb.c
View file @
492ac38a
...
...
@@ -31,5 +31,5 @@ MACHINE_START(PLEB, "PLEB")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
pleb_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/pm.c
View file @
492ac38a
...
...
@@ -45,9 +45,6 @@ extern void sa1100_cpu_resume(void);
*/
enum
{
SLEEP_SAVE_SP
=
0
,
SLEEP_SAVE_OIER
,
SLEEP_SAVE_OSMR0
,
SLEEP_SAVE_OSMR1
,
SLEEP_SAVE_OSMR2
,
SLEEP_SAVE_OSMR3
,
SLEEP_SAVE_GPDR
,
SLEEP_SAVE_GAFR
,
SLEEP_SAVE_PPDR
,
SLEEP_SAVE_PPSR
,
SLEEP_SAVE_PPAR
,
SLEEP_SAVE_PSDR
,
...
...
@@ -72,12 +69,6 @@ static int sa11x0_pm_enter(u32 state)
gpio
=
GPLR
;
/* save vital registers */
SAVE
(
OSMR0
);
SAVE
(
OSMR1
);
SAVE
(
OSMR2
);
SAVE
(
OSMR3
);
SAVE
(
OIER
);
SAVE
(
GPDR
);
SAVE
(
GAFR
);
...
...
@@ -129,15 +120,6 @@ static int sa11x0_pm_enter(u32 state)
*/
PSSR
=
PSSR_PH
;
RESTORE
(
OSMR0
);
RESTORE
(
OSMR1
);
RESTORE
(
OSMR2
);
RESTORE
(
OSMR3
);
RESTORE
(
OIER
);
/* OSMR0 is the system timer: make sure OSCR is sufficiently behind */
OSCR
=
OSMR0
-
LATCH
;
/* restore current time */
rtc
.
tv_sec
=
RCNR
;
restore_time_delta
(
&
delta
,
&
rtc
);
...
...
arch/arm/mach-sa1100/shannon.c
View file @
492ac38a
...
...
@@ -41,5 +41,5 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
shannon_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/sherman.c
View file @
492ac38a
...
...
@@ -27,5 +27,5 @@ MACHINE_START(SHERMAN, "Blazie Engineering Sherman")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
sherman_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/simpad.c
View file @
492ac38a
...
...
@@ -231,5 +231,5 @@ MACHINE_START(SIMPAD, "Simpad")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
simpad_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/stork.c
View file @
492ac38a
...
...
@@ -331,7 +331,7 @@ MACHINE_START(STORK, "Stork Technologies prototype")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
stork_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
...
...
arch/arm/mach-sa1100/system3.c
View file @
492ac38a
...
...
@@ -470,5 +470,5 @@ MACHINE_START(PT_SYSTEM3, "PT System 3")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
system3_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/time.c
View file @
492ac38a
...
...
@@ -99,11 +99,10 @@ static struct irqaction sa1100_timer_irq = {
.
handler
=
sa1100_timer_interrupt
};
void
__init
sa1100_init_time
(
void
)
static
void
__init
sa1100_timer_init
(
void
)
{
struct
timespec
tv
;
gettimeoffset
=
sa1100_gettimeoffset
;
set_rtc
=
sa1100_set_rtc
;
tv
.
tv_nsec
=
0
;
...
...
@@ -117,3 +116,40 @@ void __init sa1100_init_time(void)
OSCR
=
0
;
/* initialize free-running timer, force first match */
}
#ifdef CONFIG_PM
unsigned
long
osmr
[
4
],
oier
;
static
void
sa1100_timer_suspend
(
void
)
{
osmr
[
0
]
=
OSMR0
;
osmr
[
1
]
=
OSMR1
;
osmr
[
2
]
=
OSMR2
;
osmr
[
3
]
=
OSMR3
;
oier
=
OIER
;
}
static
void
sa1100_timer_resume
(
void
)
{
OSSR
=
0x0f
;
OSMR0
=
osmr
[
0
];
OSMR1
=
osmr
[
1
];
OSMR2
=
osmr
[
2
];
OSMR3
=
osmr
[
3
];
OIER
=
oier
;
/*
* OSMR0 is the system timer: make sure OSCR is sufficiently behind
*/
OSCR
=
OSMR0
-
LATCH
;
}
#else
#define sa1100_timer_suspend NULL
#define sa1100_timer_resume NULL
#endif
struct
sys_timer
sa1100_timer
=
{
.
init
=
sa1100_timer_init
,
.
suspend
=
sa1100_timer_suspend
,
.
resume
=
sa1100_timer_resume
,
.
offset
=
sa1100_gettimeoffset
,
};
arch/arm/mach-sa1100/trizeps.c
View file @
492ac38a
...
...
@@ -228,5 +228,5 @@ MACHINE_START(TRIZEPS, "TRIZEPS")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
trizeps_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/xp860.c
View file @
492ac38a
...
...
@@ -89,5 +89,5 @@ MACHINE_START(XP860, "XP860")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
xp860_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-sa1100/yopy.c
View file @
492ac38a
...
...
@@ -91,5 +91,5 @@ MACHINE_START(YOPY, "Yopy")
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
yopy_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
.
timer
=
&
sa1100_timer
,
MACHINE_END
arch/arm/mach-shark/core.c
View file @
492ac38a
...
...
@@ -49,7 +49,7 @@ static struct irqaction shark_timer_irq = {
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
shark_init_time
(
void
)
static
void
__init
shark_timer_init
(
void
)
{
unsigned
long
flags
;
...
...
@@ -60,6 +60,9 @@ void __init shark_init_time(void)
setup_irq
(
IRQ_TIMER
,
&
shark_timer_irq
);
}
static
struct
sys_timer
shark_timer
=
{
.
init
=
shark_timer_init
,
};
MACHINE_START
(
SHARK
,
"Shark"
)
MAINTAINER
(
"Alexander Schulz"
)
...
...
@@ -67,5 +70,5 @@ MACHINE_START(SHARK, "Shark")
BOOT_PARAMS
(
0x08003000
)
MAPIO
(
shark_map_io
)
INITIRQ
(
shark_init_irq
)
INITTIME
(
shark_init_time
)
.
timer
=
&
shark_timer
,
MACHINE_END
arch/arm/mach-versatile/core.c
View file @
492ac38a
...
...
@@ -760,8 +760,6 @@ typedef struct TimerStruct {
unsigned
long
TimerClear
;
}
TimerStruct_t
;
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
/*
* Returns number of ms since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
...
...
@@ -827,7 +825,7 @@ static struct irqaction versatile_timer_irq = {
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
versatile_init_time
(
void
)
static
void
__init
versatile_timer_init
(
void
)
{
volatile
TimerStruct_t
*
timer0
=
(
volatile
TimerStruct_t
*
)
TIMER0_VA_BASE
;
volatile
TimerStruct_t
*
timer1
=
(
volatile
TimerStruct_t
*
)
TIMER1_VA_BASE
;
...
...
@@ -859,15 +857,19 @@ void __init versatile_init_time(void)
* Make irqs happen for the system timer
*/
setup_irq
(
IRQ_TIMERINT0_1
,
&
versatile_timer_irq
);
gettimeoffset
=
versatile_gettimeoffset
;
}
static
struct
sys_timer
versatile_timer
=
{
.
init
=
versatile_timer_init
,
.
offset
=
versatile_gettimeoffset
,
};
MACHINE_START
(
VERSATILE_PB
,
"ARM-Versatile PB"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x101f1000
,
0xf11f1000
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
versatile_map_io
)
INITIRQ
(
versatile_init_irq
)
INITTIME
(
versatile_init_time
)
.
timer
=
&
versatile_timer
,
INIT_MACHINE
(
versatile_init
)
MACHINE_END
include/asm-arm/arch-integrator/platform.h
View file @
492ac38a
...
...
@@ -457,10 +457,6 @@
#define mSEC_25 (mSEC_1 * 25)
#define SEC_1 (mSEC_1 * 1000)
#ifndef __ASSEMBLY__
extern
void
integrator_time_init
(
unsigned
long
,
unsigned
int
);
#endif
#define INTEGRATOR_CSR_BASE 0x10000000
#define INTEGRATOR_CSR_SIZE 0x10000000
...
...
include/asm-arm/arch-integrator/time.h
View file @
492ac38a
/*
* linux/include/asm-arm/arch-integrator/time.h
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <asm/system.h>
#include <asm/leds.h>
#include <asm/mach-types.h>
/*
* Where is the timer (VA)?
*/
#define TIMER0_VA_BASE (IO_ADDRESS(INTEGRATOR_CT_BASE)+0x00000000)
#define TIMER1_VA_BASE (IO_ADDRESS(INTEGRATOR_CT_BASE)+0x00000100)
#define TIMER2_VA_BASE (IO_ADDRESS(INTEGRATOR_CT_BASE)+0x00000200)
#define VA_IC_BASE IO_ADDRESS(INTEGRATOR_IC_BASE)
/*
* How long is the timer interval?
*/
#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10)
#if TIMER_INTERVAL >= 0x100000
#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC)
#elif TIMER_INTERVAL >= 0x10000
#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC)
#else
#define TICKS2USECS(x) ((x) / TICKS_PER_uSEC)
#endif
#define TIMER_CTRL_IE (1 << 5)
/* Interrupt Enable */
/*
* What does it look like?
*/
typedef
struct
TimerStruct
{
unsigned
long
TimerLoad
;
unsigned
long
TimerValue
;
unsigned
long
TimerControl
;
unsigned
long
TimerClear
;
}
TimerStruct_t
;
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
static
unsigned
long
timer_reload
;
/*
* Returns number of ms since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
*/
static
unsigned
long
integrator_gettimeoffset
(
void
)
{
volatile
TimerStruct_t
*
timer1
=
(
TimerStruct_t
*
)
TIMER1_VA_BASE
;
unsigned
long
ticks1
,
ticks2
,
status
;
/*
* Get the current number of ticks. Note that there is a race
* condition between us reading the timer and checking for
* an interrupt. We get around this by ensuring that the
* counter has not reloaded between our two reads.
*/
ticks2
=
timer1
->
TimerValue
&
0xffff
;
do
{
ticks1
=
ticks2
;
status
=
__raw_readl
(
VA_IC_BASE
+
IRQ_RAW_STATUS
);
ticks2
=
timer1
->
TimerValue
&
0xffff
;
}
while
(
ticks2
>
ticks1
);
/*
* Number of ticks since last interrupt.
*/
ticks1
=
timer_reload
-
ticks2
;
/*
* Interrupt pending? If so, we've reloaded once already.
*/
if
(
status
&
(
1
<<
IRQ_TIMERINT1
))
ticks1
+=
timer_reload
;
/*
* Convert the ticks to usecs
*/
return
TICKS2USECS
(
ticks1
);
}
/*
* IRQ handler for the timer
*/
static
irqreturn_t
integrator_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
volatile
TimerStruct_t
*
timer1
=
(
volatile
TimerStruct_t
*
)
TIMER1_VA_BASE
;
// ...clear the interrupt
timer1
->
TimerClear
=
1
;
do_leds
();
do_timer
(
regs
);
do_profile
(
regs
);
return
IRQ_HANDLED
;
}
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
time_init
(
void
)
{
volatile
TimerStruct_t
*
timer0
=
(
volatile
TimerStruct_t
*
)
TIMER0_VA_BASE
;
volatile
TimerStruct_t
*
timer1
=
(
volatile
TimerStruct_t
*
)
TIMER1_VA_BASE
;
volatile
TimerStruct_t
*
timer2
=
(
volatile
TimerStruct_t
*
)
TIMER2_VA_BASE
;
unsigned
int
timer_ctrl
=
0x80
|
0x40
;
/* periodic */
if
(
machine_is_integrator
())
{
timer_reload
=
1000000
*
TICKS_PER_uSEC
/
HZ
;
}
else
if
(
machine_is_cintegrator
())
{
timer_reload
=
1000000
/
HZ
;
timer_ctrl
|=
TIMER_CTRL_IE
;
}
if
(
timer_reload
>
0x100000
)
{
timer_reload
>>=
8
;
timer_ctrl
|=
0x08
;
/* /256 */
}
else
if
(
timer_reload
>
0x010000
)
{
timer_reload
>>=
4
;
timer_ctrl
|=
0x04
;
/* /16 */
}
/*
* Initialise to a known state (all timers off)
*/
timer0
->
TimerControl
=
0
;
timer1
->
TimerControl
=
0
;
timer2
->
TimerControl
=
0
;
timer1
->
TimerLoad
=
timer_reload
;
timer1
->
TimerValue
=
timer_reload
;
timer1
->
TimerControl
=
timer_ctrl
;
/*
* Make irqs happen for the system timer
*/
timer_irq
.
handler
=
integrator_timer_interrupt
;
setup_irq
(
IRQ_TIMERINT1
,
&
timer_irq
);
gettimeoffset
=
integrator_gettimeoffset
;
}
include/asm-arm/arch-ixp2000/platform.h
View file @
492ac38a
...
...
@@ -117,6 +117,7 @@ static inline unsigned int ixp2000_is_pcimaster(void)
void
ixp2000_map_io
(
void
);
void
ixp2000_init_irq
(
void
);
void
ixp2000_init_time
(
unsigned
long
);
unsigned
long
ixp2000_gettimeoffset
(
void
);
struct
pci_sys_data
;
...
...
include/asm-arm/arch-ixp4xx/platform.h
View file @
492ac38a
...
...
@@ -53,12 +53,14 @@ struct ixp4xx_i2c_pins {
};
struct
sys_timer
;
/*
* Functions used by platform-level setup code
*/
extern
void
ixp4xx_map_io
(
void
);
extern
void
ixp4xx_init_irq
(
void
);
extern
void
ixp4xx_init_time
(
void
)
;
extern
struct
sys_timer
ixp4xx_timer
;
extern
void
ixp4xx_pci_preinit
(
void
);
struct
pci_sys_data
;
extern
int
ixp4xx_setup
(
int
nr
,
struct
pci_sys_data
*
sys
);
...
...
include/asm-arm/mach/arch.h
View file @
492ac38a
...
...
@@ -12,6 +12,7 @@
struct
tag
;
struct
meminfo
;
struct
sys_timer
;
struct
machine_desc
{
/*
...
...
@@ -39,7 +40,7 @@ struct machine_desc {
struct
meminfo
*
);
void
(
*
map_io
)(
void
);
/* IO mapping function */
void
(
*
init_irq
)(
void
);
void
(
*
init_time
)(
void
);
struct
sys_timer
*
timer
;
/* system tick timer */
void
(
*
init_machine
)(
void
);
};
...
...
@@ -82,9 +83,6 @@ const struct machine_desc __mach_desc_##_type \
#define INITIRQ(_func) \
.init_irq = _func,
#define INITTIME(_func) \
.init_time = _func,
#define INIT_MACHINE(_func) \
.init_machine = _func,
...
...
include/asm-arm/mach/time.h
View file @
492ac38a
...
...
@@ -10,10 +10,22 @@
#ifndef __ASM_ARM_MACH_TIME_H
#define __ASM_ARM_MACH_TIME_H
extern
void
(
*
init_arch_time
)(
void
);
#include <linux/sysdev.h>
/*
* This is our kernel timer structure.
*/
struct
sys_timer
{
struct
sys_device
dev
;
void
(
*
init
)(
void
);
void
(
*
suspend
)(
void
);
void
(
*
resume
)(
void
);
unsigned
long
(
*
offset
)(
void
);
};
extern
struct
sys_timer
*
system_timer
;
extern
int
(
*
set_rtc
)(
void
);
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
extern
void
timer_tick
(
struct
pt_regs
*
);
...
...
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