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
9013ca59
Commit
9013ca59
authored
Jun 23, 2004
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://dsaxena.bkbits.net/linux-2.6-for-rmk
into flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-rmk
parents
f4445c95
160bcbf7
Changes
123
Hide whitespace changes
Inline
Side-by-side
Showing
123 changed files
with
891 additions
and
1570 deletions
+891
-1570
arch/arm/Kconfig
arch/arm/Kconfig
+5
-3
arch/arm/Makefile
arch/arm/Makefile
+0
-1
arch/arm/boot/Makefile
arch/arm/boot/Makefile
+0
-2
arch/arm/boot/compressed/head-xscale.S
arch/arm/boot/compressed/head-xscale.S
+0
-3
arch/arm/common/Makefile
arch/arm/common/Makefile
+1
-0
arch/arm/common/time-acorn.c
arch/arm/common/time-acorn.c
+3
-2
arch/arm/configs/adi_evb_defconfig
arch/arm/configs/adi_evb_defconfig
+0
-678
arch/arm/kernel/Makefile
arch/arm/kernel/Makefile
+1
-2
arch/arm/kernel/debug.S
arch/arm/kernel/debug.S
+0
-26
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+1
-1
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+3
-0
arch/arm/kernel/time.c
arch/arm/kernel/time.c
+20
-15
arch/arm/mach-adifcc/Makefile
arch/arm/mach-adifcc/Makefile
+0
-11
arch/arm/mach-adifcc/arch.c
arch/arm/mach-adifcc/arch.c
+0
-32
arch/arm/mach-adifcc/irq.c
arch/arm/mach-adifcc/irq.c
+0
-61
arch/arm/mach-adifcc/mm.c
arch/arm/mach-adifcc/mm.c
+0
-23
arch/arm/mach-clps711x/autcpu12.c
arch/arm/mach-clps711x/autcpu12.c
+2
-0
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/cdb89712.c
+2
-0
arch/arm/mach-clps711x/ceiva.c
arch/arm/mach-clps711x/ceiva.c
+2
-0
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/clep7312.c
+2
-0
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/edb7211-arch.c
+2
-0
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/fortunet.c
+2
-0
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps711x/p720t.c
+2
-0
arch/arm/mach-clps711x/time.c
arch/arm/mach-clps711x/time.c
+26
-4
arch/arm/mach-clps7500/core.c
arch/arm/mach-clps7500/core.c
+39
-1
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/core.c
+100
-0
arch/arm/mach-ebsa110/time.c
arch/arm/mach-ebsa110/time.c
+0
-0
arch/arm/mach-epxa10db/arch.c
arch/arm/mach-epxa10db/arch.c
+3
-0
arch/arm/mach-epxa10db/time.c
arch/arm/mach-epxa10db/time.c
+43
-1
arch/arm/mach-footbridge/Makefile
arch/arm/mach-footbridge/Makefile
+1
-1
arch/arm/mach-footbridge/arch.c
arch/arm/mach-footbridge/arch.c
+6
-0
arch/arm/mach-footbridge/time.c
arch/arm/mach-footbridge/time.c
+28
-19
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_ap.c
+6
-0
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-integrator/integrator_cp.c
+6
-0
arch/arm/mach-integrator/time.c
arch/arm/mach-integrator/time.c
+144
-0
arch/arm/mach-iop3xx/arch.c
arch/arm/mach-iop3xx/arch.c
+2
-0
arch/arm/mach-iop3xx/iop321-time.c
arch/arm/mach-iop3xx/iop321-time.c
+8
-7
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/common.c
+8
-9
arch/arm/mach-ixp4xx/coyote-setup.c
arch/arm/mach-ixp4xx/coyote-setup.c
+1
-0
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-ixp4xx/ixdp425-setup.c
+3
-0
arch/arm/mach-ixp4xx/prpmc1100-setup.c
arch/arm/mach-ixp4xx/prpmc1100-setup.c
+1
-0
arch/arm/mach-lh7a40x/Makefile
arch/arm/mach-lh7a40x/Makefile
+1
-1
arch/arm/mach-lh7a40x/arch-kev7a400.c
arch/arm/mach-lh7a40x/arch-kev7a400.c
+2
-0
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
+2
-0
arch/arm/mach-lh7a40x/time.c
arch/arm/mach-lh7a40x/time.c
+23
-9
arch/arm/mach-omap/Makefile
arch/arm/mach-omap/Makefile
+1
-1
arch/arm/mach-omap/board-generic.c
arch/arm/mach-omap/board-generic.c
+7
-0
arch/arm/mach-omap/board-innovator.c
arch/arm/mach-omap/board-innovator.c
+1
-0
arch/arm/mach-omap/board-osk.c
arch/arm/mach-omap/board-osk.c
+1
-0
arch/arm/mach-omap/board-perseus2.c
arch/arm/mach-omap/board-perseus2.c
+1
-0
arch/arm/mach-omap/common.h
arch/arm/mach-omap/common.h
+1
-0
arch/arm/mach-omap/time.c
arch/arm/mach-omap/time.c
+16
-16
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/Makefile
+1
-1
arch/arm/mach-pxa/generic.h
arch/arm/mach-pxa/generic.h
+1
-0
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/idp.c
+1
-0
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+1
-0
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mainstone.c
+1
-0
arch/arm/mach-pxa/time.c
arch/arm/mach-pxa/time.c
+28
-9
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-rpc/riscpc.c
+29
-0
arch/arm/mach-s3c2410/Makefile
arch/arm/mach-s3c2410/Makefile
+1
-1
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-bast.c
+6
-0
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-h1940.c
+6
-0
arch/arm/mach-s3c2410/mach-smdk2410.c
arch/arm/mach-s3c2410/mach-smdk2410.c
+6
-0
arch/arm/mach-s3c2410/mach-vr1000.c
arch/arm/mach-s3c2410/mach-vr1000.c
+6
-0
arch/arm/mach-s3c2410/s3c2410.h
arch/arm/mach-s3c2410/s3c2410.h
+2
-0
arch/arm/mach-s3c2410/time.c
arch/arm/mach-s3c2410/time.c
+19
-16
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/adsbitsy.c
+1
-0
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/assabet.c
+1
-0
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/badge4.c
+1
-0
arch/arm/mach-sa1100/brutus.c
arch/arm/mach-sa1100/brutus.c
+1
-0
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/cerf.c
+1
-0
arch/arm/mach-sa1100/empeg.c
arch/arm/mach-sa1100/empeg.c
+1
-0
arch/arm/mach-sa1100/flexanet.c
arch/arm/mach-sa1100/flexanet.c
+1
-0
arch/arm/mach-sa1100/freebird.c
arch/arm/mach-sa1100/freebird.c
+1
-0
arch/arm/mach-sa1100/generic.h
arch/arm/mach-sa1100/generic.h
+1
-0
arch/arm/mach-sa1100/graphicsclient.c
arch/arm/mach-sa1100/graphicsclient.c
+1
-0
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/graphicsmaster.c
+1
-0
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/h3600.c
+3
-0
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/hackkit.c
+1
-0
arch/arm/mach-sa1100/huw_webpanel.c
arch/arm/mach-sa1100/huw_webpanel.c
+1
-0
arch/arm/mach-sa1100/itsy.c
arch/arm/mach-sa1100/itsy.c
+1
-0
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/jornada720.c
+1
-0
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/lart.c
+1
-0
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/nanoengine.c
+1
-0
arch/arm/mach-sa1100/omnimeter.c
arch/arm/mach-sa1100/omnimeter.c
+1
-0
arch/arm/mach-sa1100/pangolin.c
arch/arm/mach-sa1100/pangolin.c
+1
-0
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/pfs168.c
+1
-0
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/pleb.c
+1
-0
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/shannon.c
+1
-0
arch/arm/mach-sa1100/sherman.c
arch/arm/mach-sa1100/sherman.c
+1
-0
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-sa1100/simpad.c
+1
-0
arch/arm/mach-sa1100/stork.c
arch/arm/mach-sa1100/stork.c
+1
-0
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/system3.c
+1
-0
arch/arm/mach-sa1100/time.c
arch/arm/mach-sa1100/time.c
+9
-8
arch/arm/mach-sa1100/trizeps.c
arch/arm/mach-sa1100/trizeps.c
+1
-0
arch/arm/mach-sa1100/xp860.c
arch/arm/mach-sa1100/xp860.c
+1
-0
arch/arm/mach-sa1100/yopy.c
arch/arm/mach-sa1100/yopy.c
+1
-0
arch/arm/mach-shark/core.c
arch/arm/mach-shark/core.c
+38
-0
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/core.c
+145
-0
arch/arm/mm/Kconfig
arch/arm/mm/Kconfig
+1
-1
include/asm-arm/arch-adifcc/adi_evb.h
include/asm-arm/arch-adifcc/adi_evb.h
+0
-19
include/asm-arm/arch-adifcc/hardware.h
include/asm-arm/arch-adifcc/hardware.h
+0
-27
include/asm-arm/arch-adifcc/io.h
include/asm-arm/arch-adifcc/io.h
+0
-22
include/asm-arm/arch-adifcc/irqs.h
include/asm-arm/arch-adifcc/irqs.h
+0
-20
include/asm-arm/arch-adifcc/memory.h
include/asm-arm/arch-adifcc/memory.h
+0
-27
include/asm-arm/arch-adifcc/param.h
include/asm-arm/arch-adifcc/param.h
+0
-3
include/asm-arm/arch-adifcc/serial.h
include/asm-arm/arch-adifcc/serial.h
+0
-34
include/asm-arm/arch-adifcc/system.h
include/asm-arm/arch-adifcc/system.h
+0
-28
include/asm-arm/arch-adifcc/time.h
include/asm-arm/arch-adifcc/time.h
+0
-9
include/asm-arm/arch-adifcc/timex.h
include/asm-arm/arch-adifcc/timex.h
+0
-10
include/asm-arm/arch-adifcc/uncompress.h
include/asm-arm/arch-adifcc/uncompress.h
+0
-35
include/asm-arm/arch-adifcc/vmalloc.h
include/asm-arm/arch-adifcc/vmalloc.h
+0
-15
include/asm-arm/arch-cl7500/time.h
include/asm-arm/arch-cl7500/time.h
+0
-43
include/asm-arm/arch-epxa10db/time.h
include/asm-arm/arch-epxa10db/time.h
+0
-60
include/asm-arm/arch-integrator/platform.h
include/asm-arm/arch-integrator/platform.h
+4
-0
include/asm-arm/arch-iop3xx/time.h
include/asm-arm/arch-iop3xx/time.h
+0
-12
include/asm-arm/arch-ixp4xx/platform.h
include/asm-arm/arch-ixp4xx/platform.h
+1
-0
include/asm-arm/arch-ixp4xx/time.h
include/asm-arm/arch-ixp4xx/time.h
+0
-7
include/asm-arm/arch-rpc/time.h
include/asm-arm/arch-rpc/time.h
+0
-37
include/asm-arm/arch-shark/time.h
include/asm-arm/arch-shark/time.h
+0
-39
include/asm-arm/arch-versatile/time.h
include/asm-arm/arch-versatile/time.h
+0
-158
include/asm-arm/mach/arch.h
include/asm-arm/mach/arch.h
+4
-0
include/asm-arm/mach/time.h
include/asm-arm/mach/time.h
+20
-0
No files found.
arch/arm/Kconfig
View file @
9013ca59
...
@@ -72,9 +72,6 @@ choice
...
@@ -72,9 +72,6 @@ choice
prompt "ARM system type"
prompt "ARM system type"
default ARCH_RPC
default ARCH_RPC
config ARCH_ADIFCC
bool "ADIFCC-based"
config ARCH_CLPS7500
config ARCH_CLPS7500
bool "Cirrus-CL-PS7500FE"
bool "Cirrus-CL-PS7500FE"
...
@@ -191,6 +188,11 @@ config ARCH_ACORN
...
@@ -191,6 +188,11 @@ config ARCH_ACORN
depends on ARCH_RPC
depends on ARCH_RPC
default y
default y
config TIMER_ACORN
bool
depends on ARCH_ACORN || ARCH_CLPS7500
default y
#####################################################################
#####################################################################
# Footbridge support
# Footbridge support
config FOOTBRIDGE
config FOOTBRIDGE
...
...
arch/arm/Makefile
View file @
9013ca59
...
@@ -88,7 +88,6 @@ textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000
...
@@ -88,7 +88,6 @@ textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000
machine-$(CONFIG_ARCH_CLPS711X)
:=
clps711x
machine-$(CONFIG_ARCH_CLPS711X)
:=
clps711x
textaddr-$(CONFIG_ARCH_FORTUNET)
:=
0xc0008000
textaddr-$(CONFIG_ARCH_FORTUNET)
:=
0xc0008000
machine-$(CONFIG_ARCH_IOP3XX)
:=
iop3xx
machine-$(CONFIG_ARCH_IOP3XX)
:=
iop3xx
machine-$(CONFIG_ARCH_ADIFCC)
:=
adifcc
machine-$(CONFIG_ARCH_IXP4XX)
:=
ixp4xx
machine-$(CONFIG_ARCH_IXP4XX)
:=
ixp4xx
machine-$(CONFIG_ARCH_OMAP)
:=
omap
machine-$(CONFIG_ARCH_OMAP)
:=
omap
machine-$(CONFIG_ARCH_S3C2410)
:=
s3c2410
machine-$(CONFIG_ARCH_S3C2410)
:=
s3c2410
...
...
arch/arm/boot/Makefile
View file @
9013ca59
...
@@ -49,8 +49,6 @@ initrd_phys-$(CONFIG_ARCH_SA1100) := 0xc0800000
...
@@ -49,8 +49,6 @@ initrd_phys-$(CONFIG_ARCH_SA1100) := 0xc0800000
zreladdr-$(CONFIG_ARCH_PXA)
:=
0xa0008000
zreladdr-$(CONFIG_ARCH_PXA)
:=
0xa0008000
zreladdr-$(CONFIG_ARCH_IOP3XX)
:=
0xa0008000
zreladdr-$(CONFIG_ARCH_IOP3XX)
:=
0xa0008000
params_phys-$(CONFIG_ARCH_IOP3XX)
:=
0xa0000100
params_phys-$(CONFIG_ARCH_IOP3XX)
:=
0xa0000100
zreladdr-$(CONFIG_ARCH_ADIFCC)
:=
0xc0008000
params_phys-$(CONFIG_ARCH_ADIFCC)
:=
0xc0000100
zreladdr-$(CONFIG_ARCH_IXP4XX)
:=
0x00008000
zreladdr-$(CONFIG_ARCH_IXP4XX)
:=
0x00008000
params-phys-$(CONFIG_ARCH_IXP4XX)
:=
0x00000100
params-phys-$(CONFIG_ARCH_IXP4XX)
:=
0x00000100
zreladdr-$(CONFIG_ARCH_OMAP)
:=
0x10008000
zreladdr-$(CONFIG_ARCH_OMAP)
:=
0x10008000
...
...
arch/arm/boot/compressed/head-xscale.S
View file @
9013ca59
...
@@ -66,7 +66,4 @@ __XScale_start:
...
@@ -66,7 +66,4 @@ __XScale_start:
mov
r7
,
#
MACH_TYPE_IQ80310
mov
r7
,
#
MACH_TYPE_IQ80310
#endif
#endif
#ifdef CONFIG_ARCH_ADI_EVB
mov
r7
,
#
MACH_TYPE_ADI_EVB
#endif
arch/arm/common/Makefile
View file @
9013ca59
...
@@ -8,3 +8,4 @@ obj-$(CONFIG_ICST525) += icst525.o
...
@@ -8,3 +8,4 @@ obj-$(CONFIG_ICST525) += icst525.o
obj-$(CONFIG_SA1111)
+=
sa1111.o
obj-$(CONFIG_SA1111)
+=
sa1111.o
obj-$(CONFIG_PCI_HOST_VIA82C505)
+=
via82c505.o
obj-$(CONFIG_PCI_HOST_VIA82C505)
+=
via82c505.o
obj-$(CONFIG_DMABOUNCE)
+=
dmabounce.o
obj-$(CONFIG_DMABOUNCE)
+=
dmabounce.o
obj-$(CONFIG_TIMER_ACORN)
+=
time-acorn.o
arch/arm/
kernel
/time-acorn.c
→
arch/arm/
common
/time-acorn.c
View file @
9013ca59
/*
/*
* linux/arch/arm/
kernel
/time-acorn.c
* linux/arch/arm/
common
/time-acorn.c
*
*
* Copyright (c) 1996-2000 Russell King.
* Copyright (c) 1996-2000 Russell King.
*
*
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
* 24-Sep-1996 RMK Created
* 24-Sep-1996 RMK Created
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
* 13=Jun-2004 DS Moved to arch/arm/common b/c shared w/CLPS7500
*/
*/
#include <linux/timex.h>
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/init.h>
...
@@ -19,7 +20,7 @@
...
@@ -19,7 +20,7 @@
#include <asm/io.h>
#include <asm/io.h>
#include <asm/hardware/ioc.h>
#include <asm/hardware/ioc.h>
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
#include <asm/mach/time.h>
static
unsigned
long
ioctime_gettimeoffset
(
void
)
static
unsigned
long
ioctime_gettimeoffset
(
void
)
{
{
...
...
arch/arm/configs/adi_evb_defconfig
deleted
100644 → 0
View file @
f4445c95
#
# Automatically generated by make menuconfig: don't edit
#
CONFIG_ARM=y
# CONFIG_EISA is not set
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_GENERIC_BUST_SPINLOCK is not set
# CONFIG_GENERIC_ISA_DMA is not set
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_OBSOLETE is not set
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
# CONFIG_KMOD is not set
#
# System Type
#
CONFIG_ARCH_ADIFCC=y
# CONFIG_ARCH_ARCA5K is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP310 is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_SHARK is not set
#
# Archimedes/A5000 Implementations
#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
#
# Footbridge Implementations
#
# CONFIG_ARCH_CATS is not set
# CONFIG_ARCH_PERSONAL_SERVER is not set
# CONFIG_ARCH_EBSA285_ADDIN is not set
# CONFIG_ARCH_EBSA285_HOST is not set
# CONFIG_ARCH_NETWINDER is not set
#
# SA11x0 Implementations
#
# CONFIG_SA1100_ASSABET is not set
# CONFIG_ASSABET_NEPONSET is not set
# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
# CONFIG_SA1100_GRAPHICSMASTER is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_NANOENGINE is not set
# CONFIG_SA1100_OMNIMETER is not set
# CONFIG_SA1100_PANGOLIN is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_PFS168 is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
# CONFIG_SA1100_YOPY is not set
# CONFIG_SA1100_USB is not set
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
#
# CLPS711X/EP721X Implementations
#
# CONFIG_ARCH_CDB89712 is not set
# CONFIG_ARCH_CLEP7312 is not set
# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
# CONFIG_ARCH_EP7211 is not set
# CONFIG_ARCH_EP7212 is not set
CONFIG_ARCH_ADI_EVB=y
CONFIG_XSCALE_PMU_TIMER=y
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
# CONFIG_FOOTBRIDGE_ADDIN is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
# CONFIG_CPU_32v3 is not set
# CONFIG_CPU_32v4 is not set
# CONFIG_CPU_ARM610 is not set
# CONFIG_CPU_ARM710 is not set
# CONFIG_CPU_ARM720T is not set
# CONFIG_CPU_ARM920T is not set
# CONFIG_CPU_ARM926T is not set
# CONFIG_CPU_ARM1020 is not set
# CONFIG_CPU_SA110 is not set
# CONFIG_CPU_SA1100 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_XSCALE=y
CONFIG_ARM_THUMB=y
# CONFIG_XSCALE_TOOLS is not set
CONFIG_XSCALE_WRITE_ALLOC=y
CONFIG_XSCALE_PMU=y
CONFIG_ARM_THUMB=y
# CONFIG_DISCONTIGMEM is not set
#
# General setup
#
# CONFIG_PCI is not set
# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
CONFIG_NET=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PM is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/mtdblock1 mem=32M initrd=0xc0800000,3M"
CONFIG_ALIGNMENT_TRAP=y
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_BOOTLDR_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_AMDSTD is not set
# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_JEDEC is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_NORA is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_CDB89712 is not set
# CONFIG_MTD_SA1100 is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
CONFIG_MTD_ADI_EVB=y
# CONFIG_MTD_PCI is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_DOC1000 is not set
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOCPROBE is not set
#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# Networking options
#
# CONFIG_PACKET is not set
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
# CONFIG_NETLINK_DEV is not set
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
#
# Network device support
#
CONFIG_NETDEVICES=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_ARM_AM79C961A is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
#
# ATA/IDE/MFM/RLL support
#
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
# CONFIG_VT is not set
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
# CONFIG_SERIAL_21285 is not set
# CONFIG_SERIAL_21285_OLD is not set
# CONFIG_SERIAL_21285_CONSOLE is not set
# CONFIG_SERIAL_UART00 is not set
# CONFIG_SERIAL_UART00_CONSOLE is not set
# CONFIG_SERIAL_SA1100 is not set
# CONFIG_SERIAL_SA1100_CONSOLE is not set
# CONFIG_SERIAL_8250 is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_MULTIPORT is not set
# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# L3 serial bus support
#
# CONFIG_L3 is not set
# CONFIG_L3_ALGOBIT is not set
# CONFIG_L3_BIT_SA1100_GPIO is not set
# CONFIG_L3_SA1111 is not set
# CONFIG_BIT_SA1100_GPIO is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
CONFIG_MOUSE=y
CONFIG_PSMOUSE=y
# CONFIG_82C710_MOUSE is not set
# CONFIG_PC110_PAD is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_CMS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_JBD_DEBUG is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
# CONFIG_NFS_FS is not set
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
# CONFIG_NFSD is not set
# CONFIG_NFSD_V3 is not set
# CONFIG_SUNRPC is not set
# CONFIG_LOCKD is not set
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
# CONFIG_MSDOS_PARTITION is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Multimedia Capabilities Port drivers
#
# CONFIG_MCP is not set
# CONFIG_MCP_SA1100 is not set
# CONFIG_MCP_UCB1200 is not set
# CONFIG_MCP_UCB1200_AUDIO is not set
# CONFIG_MCP_UCB1200_TS is not set
#
# USB support
#
# CONFIG_USB is not set
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
# CONFIG_USB_OHCI_SA1111 is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_ID75 is not set
#
# Bluetooth support
#
# CONFIG_BT is not set
#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_SLAB=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_NO_PGT_CACHE is not set
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_DC21285_PORT is not set
# CONFIG_DEBUG_CLPS711X_UART2 is not set
arch/arm/kernel/Makefile
View file @
9013ca59
...
@@ -11,8 +11,7 @@ obj-y := arch.o compat.o dma.o entry-armv.o entry-common.o irq.o \
...
@@ -11,8 +11,7 @@ obj-y := arch.o compat.o dma.o entry-armv.o entry-common.o irq.o \
time.o traps.o
time.o traps.o
obj-$(CONFIG_APM)
+=
apm.o
obj-$(CONFIG_APM)
+=
apm.o
obj-$(CONFIG_ARCH_ACORN)
+=
ecard.o time-acorn.o
obj-$(CONFIG_ARCH_ACORN)
+=
ecard.o
obj-$(CONFIG_ARCH_CLPS7500)
+=
time-acorn.o
obj-$(CONFIG_FOOTBRIDGE)
+=
isa.o
obj-$(CONFIG_FOOTBRIDGE)
+=
isa.o
obj-$(CONFIG_FIQ)
+=
fiq.o
obj-$(CONFIG_FIQ)
+=
fiq.o
obj-$(CONFIG_MODULES)
+=
armksyms.o module.o
obj-$(CONFIG_MODULES)
+=
armksyms.o module.o
...
...
arch/arm/kernel/debug.S
View file @
9013ca59
...
@@ -439,32 +439,6 @@
...
@@ -439,32 +439,6 @@
#endif
#endif
.
endm
.
endm
#elif defined(CONFIG_ARCH_ADI_EVB)
.
macro
addruart
,
rx
mrc
p15
,
0
,
\
rx
,
c1
,
c0
tst
\
rx
,
#
1
@
MMU
enabled
?
mov
\
rx
,
#
0x00400000
@
physical
base
address
orrne
\
rx
,
\
rx
,
#
0xff000000
@
virtual
base
.
endm
.
macro
senduart
,
rd
,
rx
strb
\
rd
,
[
\
rx
]
.
endm
.
macro
busyuart
,
rd
,
rx
1002
:
ldrb
\
rd
,
[
\
rx
,
#
0x5
]
and
\
rd
,
\
rd
,
#
0x60
teq
\
rd
,
#
0x60
bne
1002
b
.
endm
.
macro
waituart
,
rd
,
rx
1001
:
ldrb
\
rd
,
[
\
rx
,
#
0x6
]
tst
\
rd
,
#
0x10
beq
1001
b
.
endm
#elif defined(CONFIG_ARCH_IXP4XX)
#elif defined(CONFIG_ARCH_IXP4XX)
.
macro
addruart
,
rx
.
macro
addruart
,
rx
...
...
arch/arm/kernel/entry-armv.S
View file @
9013ca59
...
@@ -562,7 +562,7 @@ ENTRY(soft_irq_mask)
...
@@ -562,7 +562,7 @@ ENTRY(soft_irq_mask)
.
macro
irq_prio_table
.
macro
irq_prio_table
.
endm
.
endm
#elif defined(CONFIG_ARCH_IOP310)
|| defined(CONFIG_ARCH_ADIFCC)
#elif defined(CONFIG_ARCH_IOP310)
.
macro
disable_fiq
.
macro
disable_fiq
.
endm
.
endm
...
...
arch/arm/kernel/setup.c
View file @
9013ca59
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/root_dev.h>
#include <linux/root_dev.h>
#include <linux/cpu.h>
#include <linux/cpu.h>
#include <linux/interrupt.h>
#include <asm/elf.h>
#include <asm/elf.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
...
@@ -34,6 +35,7 @@
...
@@ -34,6 +35,7 @@
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#ifndef MEM_SIZE
#ifndef MEM_SIZE
#define MEM_SIZE (16*1024*1024)
#define MEM_SIZE (16*1024*1024)
...
@@ -727,6 +729,7 @@ void __init setup_arch(char **cmdline_p)
...
@@ -727,6 +729,7 @@ void __init setup_arch(char **cmdline_p)
* Set up various architecture-specific pointers
* Set up various architecture-specific pointers
*/
*/
init_arch_irq
=
mdesc
->
init_irq
;
init_arch_irq
=
mdesc
->
init_irq
;
init_arch_time
=
mdesc
->
init_time
;
init_machine
=
mdesc
->
init_machine
;
init_machine
=
mdesc
->
init_machine
;
#ifdef CONFIG_VT
#ifdef CONFIG_VT
...
...
arch/arm/kernel/time.c
View file @
9013ca59
...
@@ -27,12 +27,15 @@
...
@@ -27,12 +27,15 @@
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/profile.h>
#include <linux/profile.h>
#include <linux/sysdev.h>
#include <linux/sysdev.h>
#include <linux/timer.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/leds.h>
#include <asm/leds.h>
#include <asm/mach/time.h>
u64
jiffies_64
=
INITIAL_JIFFIES
;
u64
jiffies_64
=
INITIAL_JIFFIES
;
EXPORT_SYMBOL
(
jiffies_64
);
EXPORT_SYMBOL
(
jiffies_64
);
...
@@ -49,15 +52,11 @@ EXPORT_SYMBOL(rtc_lock);
...
@@ -49,15 +52,11 @@ EXPORT_SYMBOL(rtc_lock);
/* change this if you have some constant time drift */
/* change this if you have some constant time drift */
#define USECS_PER_JIFFY (1000000/HZ)
#define USECS_PER_JIFFY (1000000/HZ)
static
int
dummy_set_rtc
(
void
)
{
return
0
;
}
/*
/*
* hook for setting the RTC's idea of the current time.
* hook for setting the RTC's idea of the current time.
*/
*/
int
(
*
set_rtc
)(
void
)
=
dummy_set_rtc
;
int
(
*
set_rtc
)(
void
);
static
unsigned
long
dummy_gettimeoffset
(
void
)
static
unsigned
long
dummy_gettimeoffset
(
void
)
{
{
...
@@ -238,7 +237,7 @@ EXPORT_SYMBOL(leds_event);
...
@@ -238,7 +237,7 @@ EXPORT_SYMBOL(leds_event);
#endif
#endif
#ifdef CONFIG_LEDS_TIMER
#ifdef CONFIG_LEDS_TIMER
static
void
do_leds
(
void
)
static
inline
void
do_leds
(
void
)
{
{
static
unsigned
int
count
=
50
;
static
unsigned
int
count
=
50
;
...
@@ -248,7 +247,7 @@ static void do_leds(void)
...
@@ -248,7 +247,7 @@ static void do_leds(void)
}
}
}
}
#else
#else
#define
do_leds()
#define
do_leds()
#endif
#endif
void
do_gettimeofday
(
struct
timeval
*
tv
)
void
do_gettimeofday
(
struct
timeval
*
tv
)
...
@@ -316,12 +315,18 @@ int do_settimeofday(struct timespec *tv)
...
@@ -316,12 +315,18 @@ int do_settimeofday(struct timespec *tv)
EXPORT_SYMBOL
(
do_settimeofday
);
EXPORT_SYMBOL
(
do_settimeofday
);
static
struct
irqaction
timer_irq
=
{
void
timer_tick
(
struct
pt_regs
*
regs
)
.
name
=
"timer"
,
{
.
flags
=
SA_INTERRUPT
,
do_profile
(
regs
);
};
do_leds
();
do_set_rtc
();
do_timer
(
regs
);
}
void
(
*
init_arch_time
)(
void
);
void
__init
time_init
(
void
)
{
init_arch_time
();
}
/*
* Include architecture specific code
*/
#include <asm/arch/time.h>
arch/arm/mach-adifcc/Makefile
deleted
100644 → 0
View file @
f4445c95
#
# Makefile for the linux kernel.
#
# Object file lists.
obj-y
:=
arch.o irq.o mm.o
obj-m
:=
obj-n
:=
obj-
:=
arch/arm/mach-adifcc/arch.c
deleted
100644 → 0
View file @
f4445c95
/*
* linux/arch/arm/mach-adifcc/arch.c
*
* 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/memory.h>
#include <asm/hardware.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
extern
void
adifcc_map_io
(
void
);
extern
void
adifcc_init_irq
(
void
);
#ifdef CONFIG_ARCH_ADI_EVB
MACHINE_START
(
ADI_EVB
,
"ADI 80200FCC Evaluation Board"
)
MAINTAINER
(
"MontaVista Software Inc."
)
BOOT_MEM
(
0xc0000000
,
0x00400000
,
0xff400000
)
MAPIO
(
adifcc_map_io
)
INITIRQ
(
adifcc_init_irq
)
MACHINE_END
#endif
arch/arm/mach-adifcc/irq.c
deleted
100644 → 0
View file @
f4445c95
/*
* linux/arch/arm/mach-xscale/irq.c
*
* Author: Deepak Saxena
* 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.
*
* Based on IOP80310 code. Currently there's nothing more than the
* 80200 on chip interrupts. That'll change once the hardware adds
* support for PCI though.
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <asm/mach/irq.h>
#include <asm/irq.h>
#include <asm/hardware.h>
static
void
xs80200_irq_mask
(
unsigned
int
irq
)
{
long
INTCTL
;
asm
(
"mrc p13, 0, %0, c0, c0, 0"
:
"=r"
(
INTCTL
));
switch
(
irq
)
{
case
IRQ_XS80200_BCU
:
INTCTL
&=
~
(
1
<<
3
);
break
;
case
IRQ_XS80200_PMU
:
INTCTL
&=
~
(
1
<<
2
);
break
;
case
IRQ_XS80200_EXTIRQ
:
INTCTL
&=
~
(
1
<<
1
);
break
;
case
IRQ_XS80200_EXTFIQ
:
INTCTL
&=
~
(
1
<<
0
);
break
;
}
asm
(
"mcr p13, 0, %0, c0, c0, 0"
:
:
"r"
(
INTCTL
));
}
static
void
xs80200_irq_unmask
(
unsigned
int
irq
)
{
long
INTCTL
;
asm
(
"mrc p13, 0, %0, c0, c0, 0"
:
"=r"
(
INTCTL
));
switch
(
irq
)
{
case
IRQ_XS80200_BCU
:
INTCTL
|=
(
1
<<
3
);
break
;
case
IRQ_XS80200_PMU
:
INTCTL
|=
(
1
<<
2
);
break
;
case
IRQ_XS80200_EXTIRQ
:
INTCTL
|=
(
1
<<
1
);
break
;
case
IRQ_XS80200_EXTFIQ
:
INTCTL
|=
(
1
<<
0
);
break
;
}
asm
(
"mcr p13, 0, %0, c0, c0, 0"
:
:
"r"
(
INTCTL
));
}
void
__init
adifcc_init_irq
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
NR_XS80200_IRQS
;
i
++
)
{
irq_desc
[
i
].
valid
=
1
;
irq_desc
[
i
].
probe_ok
=
0
;
irq_desc
[
i
].
mask_ack
=
xs80200_irq_mask
;
irq_desc
[
i
].
mask
=
xs80200_irq_mask
;
irq_desc
[
i
].
unmask
=
xs80200_irq_unmask
;
}
}
arch/arm/mach-adifcc/mm.c
deleted
100644 → 0
View file @
f4445c95
/*
* linux/arch/arm/mach-xscale/mm.c
*/
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/mach/map.h>
static
struct
map_desc
adifcc_io_desc
[]
__initdata
=
{
/* on-board devices */
{
0xff400000
,
0x00400000
,
0x00300000
,
MT_DEVICE
}
};
void
__init
adifcc_map_io
(
void
)
{
iotable_init
(
adifcc_io_desc
,
ARRAY_SIZE
(
adifcc_io_desc
));
}
arch/arm/mach-clps711x/autcpu12.c
View file @
9013ca59
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
/*
/*
* The on-chip registers are given a size of 1MB so that a section can
* The on-chip registers are given a size of 1MB so that a section can
...
@@ -65,5 +66,6 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
...
@@ -65,5 +66,6 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
BOOT_PARAMS
(
0xc0020000
)
BOOT_PARAMS
(
0xc0020000
)
MAPIO
(
autcpu12_map_io
)
MAPIO
(
autcpu12_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clp711x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-clps711x/cdb89712.c
View file @
9013ca59
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x
-
init_time
(
void
);
/*
/*
* Map the CS89712 Ethernet port. That should be moved to the
* Map the CS89712 Ethernet port. That should be moved to the
...
@@ -55,6 +56,7 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
...
@@ -55,6 +56,7 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
cdb89712_map_io
)
MAPIO
(
cdb89712_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
static
int
cdb89712_hw_init
(
void
)
static
int
cdb89712_hw_init
(
void
)
...
...
arch/arm/mach-clps711x/ceiva.c
View file @
9013ca59
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
#include <asm/mach/map.h>
#include <asm/mach/map.h>
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
static
struct
map_desc
ceiva_io_desc
[]
__initdata
=
{
static
struct
map_desc
ceiva_io_desc
[]
__initdata
=
{
/* virtual, physical, length, type */
/* virtual, physical, length, type */
...
@@ -58,4 +59,5 @@ MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame")
...
@@ -58,4 +59,5 @@ MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
ceiva_map_io
)
MAPIO
(
ceiva_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-clps711x/clep7312.c
View file @
9013ca59
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
static
void
__init
static
void
__init
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
...
@@ -44,5 +45,6 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
...
@@ -44,5 +45,6 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
FIXUP
(
fixup_clep7312
)
FIXUP
(
fixup_clep7312
)
MAPIO
(
clps711x_map_io
)
MAPIO
(
clps711x_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-clps711x/edb7211-arch.c
View file @
9013ca59
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
edb7211_map_io
(
void
);
extern
void
edb7211_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
static
void
__init
static
void
__init
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
...
@@ -56,4 +57,5 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
...
@@ -56,4 +57,5 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
FIXUP
(
fixup_edb7211
)
FIXUP
(
fixup_edb7211
)
MAPIO
(
edb7211_map_io
)
MAPIO
(
edb7211_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-clps711x/fortunet.c
View file @
9013ca59
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_time
(
void
);
struct
meminfo
memmap
=
{
struct
meminfo
memmap
=
{
.
nr_banks
=
1
,
.
nr_banks
=
1
,
...
@@ -82,4 +83,5 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
...
@@ -82,4 +83,5 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
FIXUP
(
fortunet_fixup
)
FIXUP
(
fortunet_fixup
)
MAPIO
(
clps711x_map_io
)
MAPIO
(
clps711x_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-clps711x/p720t.c
View file @
9013ca59
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_init_irq
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_map_io
(
void
);
extern
void
clps711x_init_time
(
void
);
/*
/*
* Map the P720T system PLD. It occupies two address spaces:
* Map the P720T system PLD. It occupies two address spaces:
...
@@ -86,6 +87,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
...
@@ -86,6 +87,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
FIXUP
(
fixup_p720t
)
FIXUP
(
fixup_p720t
)
MAPIO
(
p720t_map_io
)
MAPIO
(
p720t_map_io
)
INITIRQ
(
clps711x_init_irq
)
INITIRQ
(
clps711x_init_irq
)
INITTIME
(
clps711x_init_time
)
MACHINE_END
MACHINE_END
static
int
p720t_hw_init
(
void
)
static
int
p720t_hw_init
(
void
)
...
...
arch/arm/mach-clps711x/time.c
View file @
9013ca59
...
@@ -18,12 +18,17 @@
...
@@ -18,12 +18,17 @@
*/
*/
#include <linux/timex.h>
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/leds.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/hardware/clps7111.h>
#include <asm/hardware/clps7111.h>
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
#include <asm/mach/time.h>
/*
/*
* gettimeoffset() returns time since last timer tick, in usecs.
* gettimeoffset() returns time since last timer tick, in usecs.
...
@@ -38,19 +43,36 @@ static unsigned long clps711x_gettimeoffset(void)
...
@@ -38,19 +43,36 @@ static unsigned long clps711x_gettimeoffset(void)
return
(
hwticks
*
(
tick_nsec
/
1000
))
/
LATCH
;
return
(
hwticks
*
(
tick_nsec
/
1000
))
/
LATCH
;
}
}
void
__init
clps711x_setup_timer
(
void
)
/*
* IRQ handler for the timer
*/
static
irqreturn_t
p720t_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
clps711x_timer_irq
=
{
.
name
=
"CLPS711x Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
p720t_timer_interrupt
};
void
__init
clps711x_init_time
(
void
)
{
{
struct
timespec
tv
;
struct
timespec
tv
;
unsigned
int
syscon
;
unsigned
int
syscon
;
gettimeoffset
=
clps711x_gettimeoffset
;
syscon
=
clps_readl
(
SYSCON1
);
syscon
=
clps_readl
(
SYSCON1
);
syscon
|=
SYSCON1_TC2S
|
SYSCON1_TC2M
;
syscon
|=
SYSCON1_TC2S
|
SYSCON1_TC2M
;
clps_writel
(
syscon
,
SYSCON1
);
clps_writel
(
syscon
,
SYSCON1
);
clps_writel
(
LATCH
-
1
,
TC2D
);
/* 512kHz / 100Hz - 1 */
clps_writel
(
LATCH
-
1
,
TC2D
);
/* 512kHz / 100Hz - 1 */
setup_irq
(
IRQ_TC2OI
,
&
clps711x_timer_irq
);
gettimeoffset
=
clps711x_gettimeoffset
;
tv
.
tv_nsec
=
0
;
tv
.
tv_nsec
=
0
;
tv
.
tv_sec
=
clps_readl
(
RTCDR
);
tv
.
tv_sec
=
clps_readl
(
RTCDR
);
do_settimeofday
(
&
tv
);
do_settimeofday
(
&
tv
);
...
...
arch/arm/mach-clps7500/core.c
View file @
9013ca59
...
@@ -10,12 +10,13 @@
...
@@ -10,12 +10,13 @@
#include <linux/types.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/list.h>
#include <linux/
timer
.h>
#include <linux/
sched
.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/hardware/iomd.h>
#include <asm/hardware/iomd.h>
...
@@ -265,10 +266,47 @@ static void __init clps7500_map_io(void)
...
@@ -265,10 +266,47 @@ static void __init clps7500_map_io(void)
iotable_init
(
cl7500_io_desc
,
ARRAY_SIZE
(
cl7500_io_desc
));
iotable_init
(
cl7500_io_desc
,
ARRAY_SIZE
(
cl7500_io_desc
));
}
}
extern
void
ioctime_init
(
void
);
static
irqreturn_t
clps7500_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
/* Why not using do_leds interface?? */
{
/* Twinkle the lights. */
static
int
count
,
state
=
0xff00
;
if
(
count
--
==
0
)
{
state
^=
0x100
;
count
=
25
;
*
((
volatile
unsigned
int
*
)
LED_ADDRESS
)
=
state
;
}
}
return
IRQ_HANDLED
;
}
static
struct
irqaction
clps7500_timer_irq
=
{
.
name
=
"CLPS7500 Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
clps7500_timer_interrupt
};
/*
* Set up timer interrupt.
*/
void
__init
clps7500_init_time
(
void
)
{
ioctime_init
();
setup_irq
(
IRQ_TIMER
,
&
clps7500_timer_irq
);
}
MACHINE_START
(
CLPS7500
,
"CL-PS7500"
)
MACHINE_START
(
CLPS7500
,
"CL-PS7500"
)
MAINTAINER
(
"Philip Blundell"
)
MAINTAINER
(
"Philip Blundell"
)
BOOT_MEM
(
0x10000000
,
0x03000000
,
0xe0000000
)
BOOT_MEM
(
0x10000000
,
0x03000000
,
0xe0000000
)
MAPIO
(
clps7500_map_io
)
MAPIO
(
clps7500_map_io
)
INITIRQ
(
clps7500_init_irq
)
INITIRQ
(
clps7500_init_irq
)
INITTIME
(
clps7500_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-ebsa110/core.c
View file @
9013ca59
...
@@ -26,6 +26,8 @@
...
@@ -26,6 +26,8 @@
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>
#define IRQ_MASK 0xfe000000
/* read */
#define IRQ_MASK 0xfe000000
/* read */
#define IRQ_MSET 0xfe000000
/* write */
#define IRQ_MSET 0xfe000000
/* write */
#define IRQ_STAT 0xff000000
/* read */
#define IRQ_STAT 0xff000000
/* read */
...
@@ -89,6 +91,103 @@ static void __init ebsa110_map_io(void)
...
@@ -89,6 +91,103 @@ static void __init ebsa110_map_io(void)
iotable_init
(
ebsa110_io_desc
,
ARRAY_SIZE
(
ebsa110_io_desc
));
iotable_init
(
ebsa110_io_desc
,
ARRAY_SIZE
(
ebsa110_io_desc
));
}
}
#define PIT_CTRL (PIT_BASE + 0x0d)
#define PIT_T2 (PIT_BASE + 0x09)
#define PIT_T1 (PIT_BASE + 0x05)
#define PIT_T0 (PIT_BASE + 0x01)
/*
* This is the rate at which your MCLK signal toggles (in Hz)
* This was measured on a 10 digit frequency counter sampling
* over 1 second.
*/
#define MCLK 47894000
/*
* This is the rate at which the PIT timers get clocked
*/
#define CLKBY7 (MCLK / 7)
/*
* This is the counter value. We tick at 200Hz on this platform.
*/
#define COUNT ((CLKBY7 + (HZ / 2)) / HZ)
/*
* Get the time offset from the system PIT. Note that if we have missed an
* interrupt, then the PIT counter will roll over (ie, be negative).
* This actually works out to be convenient.
*/
static
unsigned
long
ebsa110_gettimeoffset
(
void
)
{
unsigned
long
offset
,
count
;
__raw_writeb
(
0x40
,
PIT_CTRL
);
count
=
__raw_readb
(
PIT_T1
);
count
|=
__raw_readb
(
PIT_T1
)
<<
8
;
/*
* If count > COUNT, make the number negative.
*/
if
(
count
>
COUNT
)
count
|=
0xffff0000
;
offset
=
COUNT
;
offset
-=
count
;
/*
* `offset' is in units of timer counts. Convert
* offset to units of microseconds.
*/
offset
=
offset
*
(
1000000
/
HZ
)
/
COUNT
;
return
offset
;
}
static
irqreturn_t
ebsa110_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
u32
count
;
/* latch and read timer 1 */
__raw_writeb
(
0x40
,
PIT_CTRL
);
count
=
__raw_readb
(
PIT_T1
);
count
|=
__raw_readb
(
PIT_T1
)
<<
8
;
count
+=
COUNT
;
__raw_writeb
(
count
&
0xff
,
PIT_T1
);
__raw_writeb
(
count
>>
8
,
PIT_T1
);
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
ebsa110_timer_irq
=
{
.
name
=
"EBSA110 Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
ebsa110_timer_interrupt
};
/*
* Set up timer interrupt.
*/
void
__init
ebsa110_time_init
(
void
)
{
/*
* Timer 1, mode 2, LSB/MSB
*/
__raw_writeb
(
0x70
,
PIT_CTRL
);
__raw_writeb
(
COUNT
&
0xff
,
PIT_T1
);
__raw_writeb
(
COUNT
>>
8
,
PIT_T1
);
gettimeoffset
=
ebsa110_gettimeoffset
;
setup_irq
(
IRQ_EBSA110_TIMER0
,
&
ebsa110_timer_irq
);
}
MACHINE_START
(
EBSA110
,
"EBSA110"
)
MACHINE_START
(
EBSA110
,
"EBSA110"
)
MAINTAINER
(
"Russell King"
)
MAINTAINER
(
"Russell King"
)
BOOT_MEM
(
0x00000000
,
0xe0000000
,
0xe0000000
)
BOOT_MEM
(
0x00000000
,
0xe0000000
,
0xe0000000
)
...
@@ -98,4 +197,5 @@ MACHINE_START(EBSA110, "EBSA110")
...
@@ -98,4 +197,5 @@ MACHINE_START(EBSA110, "EBSA110")
SOFT_REBOOT
SOFT_REBOOT
MAPIO
(
ebsa110_map_io
)
MAPIO
(
ebsa110_map_io
)
INITIRQ
(
ebsa110_init_irq
)
INITIRQ
(
ebsa110_init_irq
)
INITTIME
(
ebsa110_init_time
)
MACHINE_END
MACHINE_END
include/asm-arm/arch-ebsa110/time.h
→
arch/arm/mach-ebsa110/time.c
View file @
9013ca59
File moved
arch/arm/mach-epxa10db/arch.c
View file @
9013ca59
...
@@ -29,10 +29,13 @@
...
@@ -29,10 +29,13 @@
extern
void
epxa10db_map_io
(
void
);
extern
void
epxa10db_map_io
(
void
);
extern
void
epxa10db_init_irq
(
void
);
extern
void
epxa10db_init_irq
(
void
);
extern
void
epxa10db_init_time
(
void
);
MACHINE_START
(
CAMELOT
,
"Altera Epxa10db"
)
MACHINE_START
(
CAMELOT
,
"Altera Epxa10db"
)
MAINTAINER
(
"Altera Corporation"
)
MAINTAINER
(
"Altera Corporation"
)
BOOT_MEM
(
0x00000000
,
0x7fffc000
,
0xffffc000
)
BOOT_MEM
(
0x00000000
,
0x7fffc000
,
0xffffc000
)
MAPIO
(
epxa10db_map_io
)
MAPIO
(
epxa10db_map_io
)
INITIRQ
(
epxa10db_init_irq
)
INITIRQ
(
epxa10db_init_irq
)
INITTIME
(
epxa10db_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-epxa10db/time.c
View file @
9013ca59
...
@@ -10,11 +10,17 @@
...
@@ -10,11 +10,17 @@
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/system.h>
#include <asm/leds.h>
#include <asm/mach/time.h>
extern
int
(
*
set_rtc
)(
void
);
#define TIMER00_TYPE (volatile unsigned int*)
#include <asm/arch/timer00.h>
static
int
epxa10db_set_rtc
(
void
)
static
int
epxa10db_set_rtc
(
void
)
{
{
...
@@ -29,3 +35,39 @@ static int epxa10db_rtc_init(void)
...
@@ -29,3 +35,39 @@ static int epxa10db_rtc_init(void)
}
}
__initcall
(
epxa10db_rtc_init
);
__initcall
(
epxa10db_rtc_init
);
/*
* IRQ handler for the timer
*/
static
irqreturn_t
epxa10db_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
// ...clear the interrupt
*
TIMER0_CR
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
|=
TIMER0_CR_CI_MSK
;
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
epxa10db_timer_irq
=
{
.
name
=
"Excalibur Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
epxa10db_timer_interrupt
};
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
epxa10db_init_time
(
void
)
{
/* Start the timer */
*
TIMER0_LIMIT
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
(
unsigned
int
)(
EXC_AHB2_CLK_FREQUENCY
/
200
);
*
TIMER0_PRESCALE
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
1
;
*
TIMER0_CR
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
TIMER0_CR_IE_MSK
|
TIMER0_CR_S_MSK
;
setup_irq
(
IRQ_TIMER0
,
&
epxa10db_timer_irq
);
}
arch/arm/mach-footbridge/Makefile
View file @
9013ca59
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
# Object file lists.
# Object file lists.
obj-y
:=
arch.o dc21285.o dma.o irq.o isa-irq.o mm.o
obj-y
:=
arch.o dc21285.o dma.o irq.o isa-irq.o mm.o
time.o
obj-m
:=
obj-m
:=
obj-n
:=
obj-n
:=
obj-
:=
obj-
:=
...
...
arch/arm/mach-footbridge/arch.c
View file @
9013ca59
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
extern
void
footbridge_map_io
(
void
);
extern
void
footbridge_map_io
(
void
);
extern
void
footbridge_init_irq
(
void
);
extern
void
footbridge_init_irq
(
void
);
extern
void
footbridge_init_time
(
void
);
unsigned
int
mem_fclk_21285
=
50000000
;
unsigned
int
mem_fclk_21285
=
50000000
;
...
@@ -43,6 +44,7 @@ MACHINE_START(EBSA285, "EBSA285")
...
@@ -43,6 +44,7 @@ MACHINE_START(EBSA285, "EBSA285")
VIDEO
(
0x000a0000
,
0x000bffff
)
VIDEO
(
0x000a0000
,
0x000bffff
)
MAPIO
(
footbridge_map_io
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
MACHINE_END
MACHINE_END
#endif
#endif
...
@@ -78,6 +80,7 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")
...
@@ -78,6 +80,7 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")
FIXUP
(
fixup_netwinder
)
FIXUP
(
fixup_netwinder
)
MAPIO
(
footbridge_map_io
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
MACHINE_END
MACHINE_END
#endif
#endif
...
@@ -103,6 +106,7 @@ MACHINE_START(CATS, "Chalice-CATS")
...
@@ -103,6 +106,7 @@ MACHINE_START(CATS, "Chalice-CATS")
FIXUP
(
fixup_cats
)
FIXUP
(
fixup_cats
)
MAPIO
(
footbridge_map_io
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
MACHINE_END
MACHINE_END
#endif
#endif
...
@@ -129,6 +133,7 @@ MACHINE_START(CO285, "co-EBSA285")
...
@@ -129,6 +133,7 @@ MACHINE_START(CO285, "co-EBSA285")
FIXUP
(
fixup_coebsa285
)
FIXUP
(
fixup_coebsa285
)
MAPIO
(
footbridge_map_io
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
MACHINE_END
MACHINE_END
#endif
#endif
...
@@ -139,5 +144,6 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
...
@@ -139,5 +144,6 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
BOOT_PARAMS
(
0x00000100
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
footbridge_map_io
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
INITIRQ
(
footbridge_init_irq
)
INITTIME
(
footbridge_init_time
)
MACHINE_END
MACHINE_END
#endif
#endif
include/asm-arm/arch-ebsa285/time.h
→
arch/arm/mach-footbridge/time.c
View file @
9013ca59
...
@@ -17,12 +17,23 @@
...
@@ -17,12 +17,23 @@
#define RTC_PORT(x) (rtc_base+(x))
#define RTC_PORT(x) (rtc_base+(x))
#define RTC_ALWAYS_BCD 0
#define RTC_ALWAYS_BCD 0
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/mc146818rtc.h>
#include <linux/mc146818rtc.h>
#include <linux/bcd.h>
#include <linux/bcd.h>
#include <asm/hardware/dec21285.h>
#include <asm/hardware/dec21285.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/leds.h>
#include <asm/leds.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <asm/hardware/clps7111.h>
#include <asm/mach/time.h>
static
int
rtc_base
;
static
int
rtc_base
;
...
@@ -72,12 +83,7 @@ static unsigned long isa_gettimeoffset(void)
...
@@ -72,12 +83,7 @@ static unsigned long isa_gettimeoffset(void)
static
irqreturn_t
static
irqreturn_t
isa_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
isa_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
if
(
machine_is_netwinder
())
timer_tick
(
regs
);
do_leds
();
do_timer
(
regs
);
do_set_rtc
();
do_profile
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
...
@@ -195,22 +201,20 @@ timer1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -195,22 +201,20 @@ timer1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
{
*
CSR_TIMER1_CLR
=
0
;
*
CSR_TIMER1_CLR
=
0
;
/* Do the LEDs things */
timer_tick
(
regs
);
do_leds
();
do_timer
(
regs
);
do_set_rtc
();
do_profile
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
static
struct
irqaction
footbridge_timer_irq
=
{
.
flags
=
SA_INTERRUPT
};
/*
/*
* Set up timer interrupt.
* Set up timer interrupt.
*/
*/
void
__init
time_init
(
void
)
void
__init
footbridge_init_time
(
void
)
{
{
int
irq
;
if
(
machine_is_co285
()
||
if
(
machine_is_co285
()
||
machine_is_personal_server
())
machine_is_personal_server
())
/*
/*
...
@@ -270,8 +274,11 @@ void __init time_init(void)
...
@@ -270,8 +274,11 @@ void __init time_init(void)
*
CSR_TIMER1_LOAD
=
timer1_latch
;
*
CSR_TIMER1_LOAD
=
timer1_latch
;
*
CSR_TIMER1_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
|
TIMER_CNTL_DIV16
;
*
CSR_TIMER1_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
|
TIMER_CNTL_DIV16
;
timer_irq
.
handler
=
timer1_interrupt
;
footbridge_timer_irq
.
name
=
"Timer1 Timer Tick"
;
irq
=
IRQ_TIMER1
;
footbrdige_timer_irq
.
handler
=
timer1_interrupt
;
setup_irq
(
IRQ_TIMER1
,
&
footbridge_timer_irq
);
}
else
{
}
else
{
/* enable PIT timer */
/* enable PIT timer */
/* set for periodic (4) and LSB/MSB write (0x30) */
/* set for periodic (4) and LSB/MSB write (0x30) */
...
@@ -280,8 +287,10 @@ void __init time_init(void)
...
@@ -280,8 +287,10 @@ void __init time_init(void)
outb
((
mSEC_10_from_14
/
6
)
>>
8
,
0x40
);
outb
((
mSEC_10_from_14
/
6
)
>>
8
,
0x40
);
gettimeoffset
=
isa_gettimeoffset
;
gettimeoffset
=
isa_gettimeoffset
;
timer_irq
.
handler
=
isa_timer_interrupt
;
irq
=
IRQ_ISA_TIMER
;
footbridge_timer_irq
.
name
=
"ISA Timer Tick"
;
footbrdige_timer_irq
.
handler
=
isa_timer_interrupt
;
setup_irq
(
IRQ_ISA
,
&
footbridge_timer_irq
);
}
}
setup_irq
(
irq
,
&
timer_irq
);
}
}
arch/arm/mach-integrator/integrator_ap.c
View file @
9013ca59
...
@@ -281,11 +281,17 @@ static void __init ap_init(void)
...
@@ -281,11 +281,17 @@ static void __init ap_init(void)
}
}
}
}
static
void
ap_time_init
(
void
)
{
integrator_time_init
(
1000000
*
TICKS_PER_uSEC
/
HZ
,
0
);
}
MACHINE_START
(
INTEGRATOR
,
"ARM-Integrator"
)
MACHINE_START
(
INTEGRATOR
,
"ARM-Integrator"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_PARAMS
(
0x00000100
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
ap_map_io
)
MAPIO
(
ap_map_io
)
INITIRQ
(
ap_init_irq
)
INITIRQ
(
ap_init_irq
)
INITTIME
(
ap_time_init
)
INIT_MACHINE
(
ap_init
)
INIT_MACHINE
(
ap_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-integrator/integrator_cp.c
View file @
9013ca59
...
@@ -419,11 +419,17 @@ static void __init intcp_init(void)
...
@@ -419,11 +419,17 @@ static void __init intcp_init(void)
}
}
}
}
static
void
__init
intcp_init_time
(
void
)
{
integrator_time_init
(
1000000
/
HZ
,
TIMER_CTRL_IE
);
}
MACHINE_START
(
CINTEGRATOR
,
"ARM-IntegratorCP"
)
MACHINE_START
(
CINTEGRATOR
,
"ARM-IntegratorCP"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_MEM
(
0x00000000
,
0x16000000
,
0xf1600000
)
BOOT_PARAMS
(
0x00000100
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
intcp_map_io
)
MAPIO
(
intcp_map_io
)
INITIRQ
(
intcp_init_irq
)
INITIRQ
(
intcp_init_irq
)
INITTIME
(
intcp_init_time
)
INIT_MACHINE
(
intcp_init
)
INIT_MACHINE
(
intcp_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-integrator/time.c
View file @
9013ca59
...
@@ -10,9 +10,16 @@
...
@@ -10,9 +10,16 @@
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/time.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/leds.h>
#include <asm/mach-types.h>
#include <asm/mach/time.h>
#define RTC_DR (IO_ADDRESS(INTEGRATOR_RTC_BASE) + 0)
#define RTC_DR (IO_ADDRESS(INTEGRATOR_RTC_BASE) + 0)
#define RTC_MR (IO_ADDRESS(INTEGRATOR_RTC_BASE) + 4)
#define RTC_MR (IO_ADDRESS(INTEGRATOR_RTC_BASE) + 4)
...
@@ -44,3 +51,140 @@ static int integrator_rtc_init(void)
...
@@ -44,3 +51,140 @@ static int integrator_rtc_init(void)
}
}
__initcall
(
integrator_rtc_init
);
__initcall
(
integrator_rtc_init
);
/*
* 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
;
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
integrator_timer_irq
=
{
.
name
=
"Integrator Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
integrator_timer_interrupt
};
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
integrator_time_init
(
unsigned
long
reload
,
unsigned
int
ctrl
)
{
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 */
timer_reload
=
reload
;
timer_ctrl
|=
ctrl
;
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
*/
setup_irq
(
IRQ_TIMERINT1
,
&
integrator_timer_irq
);
gettimeoffset
=
integrator_gettimeoffset
;
}
arch/arm/mach-iop3xx/arch.c
View file @
9013ca59
...
@@ -29,6 +29,7 @@ extern void iq80310_init_irq(void);
...
@@ -29,6 +29,7 @@ extern void iq80310_init_irq(void);
#ifdef CONFIG_ARCH_IQ80321
#ifdef CONFIG_ARCH_IQ80321
extern
void
iq80321_map_io
(
void
);
extern
void
iq80321_map_io
(
void
);
extern
void
iop321_init_irq
(
void
);
extern
void
iop321_init_irq
(
void
);
extern
void
iop321_init_time
(
void
);
#endif
#endif
#ifdef CONFIG_ARCH_IQ80310
#ifdef CONFIG_ARCH_IQ80310
...
@@ -67,6 +68,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")
...
@@ -67,6 +68,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")
FIXUP
(
fixup_iop321
)
FIXUP
(
fixup_iop321
)
MAPIO
(
iq80321_map_io
)
MAPIO
(
iq80321_map_io
)
INITIRQ
(
iop321_init_irq
)
INITIRQ
(
iop321_init_irq
)
INITTIME
(
iop321_init_time
)
MACHINE_END
MACHINE_END
#else
#else
...
...
arch/arm/mach-iop3xx/iop321-time.c
View file @
9013ca59
...
@@ -23,7 +23,9 @@
...
@@ -23,7 +23,9 @@
#include <asm/io.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
static
unsigned
long
iop321_gettimeoffset
(
void
)
static
unsigned
long
iop321_gettimeoffset
(
void
)
{
{
...
@@ -61,27 +63,26 @@ iop321_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -61,27 +63,26 @@ iop321_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
asm
volatile
(
"mcr p6, 0, %0, c6, c1, 0"
:
:
"r"
(
tisr
));
asm
volatile
(
"mcr p6, 0, %0, c6, c1, 0"
:
:
"r"
(
tisr
));
do_timer
(
regs
);
timer_tick
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
static
struct
irqaction
iop321_timer_irq
=
{
.
name
=
"IOP321 Timer Tick"
,
static
struct
irqaction
timer_irq
=
{
.
name
=
"timer"
,
.
handler
=
iop321_timer_interrupt
,
.
handler
=
iop321_timer_interrupt
,
.
flags
=
SA_INTERRUPT
};
};
extern
int
setup_arm_irq
(
int
,
struct
irqaction
*
);
extern
int
setup_arm_irq
(
int
,
struct
irqaction
*
);
void
__init
time_init
(
void
)
void
__init
iop321_init_time
(
void
)
{
{
u32
timer_ctl
;
u32
timer_ctl
;
u32
latch
=
LATCH
;
u32
latch
=
LATCH
;
gettimeoffset
=
iop321_gettimeoffset
;
gettimeoffset
=
iop321_gettimeoffset
;
setup_irq
(
IRQ_IOP321_TIMER0
,
&
timer_irq
);
setup_irq
(
IRQ_IOP321_TIMER0
,
&
iop321_
timer_irq
);
timer_ctl
=
IOP321_TMR_EN
|
IOP321_TMR_PRIVILEGED
|
IOP321_TMR_RELOAD
|
timer_ctl
=
IOP321_TMR_EN
|
IOP321_TMR_PRIVILEGED
|
IOP321_TMR_RELOAD
|
IOP321_TMR_RATIO_1_1
;
IOP321_TMR_RATIO_1_1
;
...
...
arch/arm/mach-ixp4xx/common.c
View file @
9013ca59
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
/*************************************************************************
/*************************************************************************
...
@@ -227,24 +228,22 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs
...
@@ -227,24 +228,22 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs
* Catch up with the real idea of time
* Catch up with the real idea of time
*/
*/
do
{
do
{
do_timer
(
regs
);
timer_tick
(
regs
);
last_jiffy_time
+=
LATCH
;
last_jiffy_time
+=
LATCH
;
}
while
((
*
IXP4XX_OSTS
-
last_jiffy_time
)
>
LATCH
);
}
while
((
*
IXP4XX_OSTS
-
last_jiffy_time
)
>
LATCH
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
static
struct
irqaction
ixp4xx_timer_irq
=
{
.
name
=
"IXP4xx Timer Tick"
,
static
struct
irqaction
timer_irq
=
{
.
flags
=
SA_INTERRUPT
,
.
name
=
"IXP4xx Timer Tick"
,
.
handler
=
ixp4xx_timer_interrupt
.
flags
=
SA_INTERRUPT
};
};
void
__init
time_init
(
void
)
void
__init
ixp4xx_init_time
(
void
)
{
{
gettimeoffset
=
ixp4xx_gettimeoffset
;
gettimeoffset
=
ixp4xx_gettimeoffset
;
timer_irq
.
handler
=
ixp4xx_timer_interrupt
;
/* Clear Pending Interrupt by writing '1' to it */
/* Clear Pending Interrupt by writing '1' to it */
*
IXP4XX_OSST
=
IXP4XX_OSST_TIMER_1_PEND
;
*
IXP4XX_OSST
=
IXP4XX_OSST_TIMER_1_PEND
;
...
@@ -257,7 +256,7 @@ void __init time_init(void)
...
@@ -257,7 +256,7 @@ void __init time_init(void)
last_jiffy_time
=
0
;
last_jiffy_time
=
0
;
/* Connect the interrupt handler and enable the interrupt */
/* Connect the interrupt handler and enable the interrupt */
setup_irq
(
IRQ_IXP4XX_TIMER1
,
&
timer_irq
);
setup_irq
(
IRQ_IXP4XX_TIMER1
,
&
ixp4xx_
timer_irq
);
}
}
arch/arm/mach-ixp4xx/coyote-setup.c
View file @
9013ca59
...
@@ -84,6 +84,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering IXP4XX Coyote Development Platform")
...
@@ -84,6 +84,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering IXP4XX Coyote Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
coyote_map_io
)
MAPIO
(
coyote_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
BOOT_PARAMS
(
0x0100
)
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
coyote_init
)
INIT_MACHINE
(
coyote_init
)
MACHINE_END
MACHINE_END
...
...
arch/arm/mach-ixp4xx/ixdp425-setup.c
View file @
9013ca59
...
@@ -113,6 +113,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
...
@@ -113,6 +113,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
BOOT_PARAMS
(
0x0100
)
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
MACHINE_END
...
@@ -123,6 +124,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
...
@@ -123,6 +124,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
BOOT_PARAMS
(
0x0100
)
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
MACHINE_END
...
@@ -140,6 +142,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")
...
@@ -140,6 +142,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")
IXP4XX_PERIPHERAL_BASE_VIRT
)
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
ixdp425_map_io
)
MAPIO
(
ixdp425_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
BOOT_PARAMS
(
0x0100
)
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
ixdp425_init
)
INIT_MACHINE
(
ixdp425_init
)
MACHINE_END
MACHINE_END
...
...
arch/arm/mach-ixp4xx/prpmc1100-setup.c
View file @
9013ca59
...
@@ -84,6 +84,7 @@ MACHINE_START(PRPMC1100, "Motorola PrPMC1100")
...
@@ -84,6 +84,7 @@ MACHINE_START(PRPMC1100, "Motorola PrPMC1100")
IXP4XX_PERIPHERAL_BASE_VIRT
)
IXP4XX_PERIPHERAL_BASE_VIRT
)
MAPIO
(
prpmc1100_map_io
)
MAPIO
(
prpmc1100_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
INITIRQ
(
ixp4xx_init_irq
)
INITTIME
(
ixp4xx_init_time
)
BOOT_PARAMS
(
0x0100
)
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
prpmc1100_init
)
INIT_MACHINE
(
prpmc1100_init
)
MACHINE_END
MACHINE_END
...
...
arch/arm/mach-lh7a40x/Makefile
View file @
9013ca59
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
# Object file lists.
# Object file lists.
obj-y
:=
fiq.o
obj-y
:=
fiq.o
time.o
# generic.o
# generic.o
obj-$(CONFIG_MACH_KEV7A400)
+=
arch-kev7a400.o irq-lh7a400.o
obj-$(CONFIG_MACH_KEV7A400)
+=
arch-kev7a400.o irq-lh7a400.o
obj-$(CONFIG_MACH_LPD7A400)
+=
arch-lpd7a40x.o ide-lpd7a40x.o irq-lh7a400.o
obj-$(CONFIG_MACH_LPD7A400)
+=
arch-lpd7a40x.o ide-lpd7a40x.o irq-lh7a400.o
...
...
arch/arm/mach-lh7a40x/arch-kev7a400.c
View file @
9013ca59
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
/* This function calls the board specific IRQ initialization function. */
/* This function calls the board specific IRQ initialization function. */
extern
void
lh7a400_init_irq
(
void
);
extern
void
lh7a400_init_irq
(
void
);
extern
void
lh7a40x_init_time
(
void
);
static
struct
map_desc
kev7a400_io_desc
[]
__initdata
=
{
static
struct
map_desc
kev7a400_io_desc
[]
__initdata
=
{
{
IO_VIRT
,
IO_PHYS
,
IO_SIZE
,
MT_DEVICE
},
{
IO_VIRT
,
IO_PHYS
,
IO_SIZE
,
MT_DEVICE
},
...
@@ -108,4 +109,5 @@ MACHINE_START (KEV7A400, "Sharp KEV7a400")
...
@@ -108,4 +109,5 @@ MACHINE_START (KEV7A400, "Sharp KEV7a400")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
kev7a400_map_io
)
MAPIO
(
kev7a400_map_io
)
INITIRQ
(
lh7a400_init_irq
)
INITIRQ
(
lh7a400_init_irq
)
INITTIME
(
lh7a40x_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
View file @
9013ca59
...
@@ -280,6 +280,7 @@ MACHINE_END
...
@@ -280,6 +280,7 @@ MACHINE_END
#ifdef CONFIG_MACH_LPD7A404
#ifdef CONFIG_MACH_LPD7A404
extern
void
lh7a404_init_irq
(
void
);
extern
void
lh7a404_init_irq
(
void
);
extern
void
lh7a40x_init_time
(
void
);
MACHINE_START
(
LPD7A404
,
"Logic Product Development LPD7A404-10"
)
MACHINE_START
(
LPD7A404
,
"Logic Product Development LPD7A404-10"
)
MAINTAINER
(
"Marc Singer"
)
MAINTAINER
(
"Marc Singer"
)
...
@@ -287,6 +288,7 @@ MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10")
...
@@ -287,6 +288,7 @@ MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
lpd7a400_map_io
)
MAPIO
(
lpd7a400_map_io
)
INITIRQ
(
lh7a404_init_irq
)
INITIRQ
(
lh7a404_init_irq
)
INITTIME
(
lh7a40x_init_time
)
INIT_MACHINE
(
lpd7a40x_init
)
INIT_MACHINE
(
lpd7a40x_init
)
MACHINE_END
MACHINE_END
...
...
include/asm-arm/arch-lh7a40x/time.h
→
arch/arm/mach-lh7a40x/time.c
View file @
9013ca59
/* include/asm-arm/arch-lh7a40x/time.h
/*
* arch/arm/mach-lh7a40x/time.c
*
*
* Copyright (C) 2004 Logic Product Development
* Copyright (C) 2004 Logic Product Development
*
*
...
@@ -7,6 +8,18 @@
...
@@ -7,6 +8,18 @@
* version 2 as published by the Free Software Foundation.
* version 2 as published by the Free Software Foundation.
*
*
*/
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/leds.h>
#include <asm/mach/time.h>
#if HZ < 100
#if HZ < 100
# define TIMER_CONTROL TIMER_CONTROL1
# define TIMER_CONTROL TIMER_CONTROL1
...
@@ -28,24 +41,25 @@ static irqreturn_t
...
@@ -28,24 +41,25 @@ static irqreturn_t
lh7a40x_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
lh7a40x_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
TIMER_EOI
=
0
;
TIMER_EOI
=
0
;
do_profile
(
regs
);
timer_tick
(
regs
);
do_leds
();
do_set_rtc
();
do_timer
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
void
__init
time_init
(
void
)
static
struct
irqaction
lh7a40x_timer_irq
=
{
.
name
=
"LHA740x Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
lh7a40x_timer_interrupt
};
void
__init
lh7a40x_init_time
(
void
)
{
{
/* Stop/disable all timers */
/* Stop/disable all timers */
TIMER_CONTROL1
=
0
;
TIMER_CONTROL1
=
0
;
TIMER_CONTROL2
=
0
;
TIMER_CONTROL2
=
0
;
TIMER_CONTROL3
=
0
;
TIMER_CONTROL3
=
0
;
timer_irq
.
handler
=
lh7a40x_timer_interrupt
;
setup_irq
(
TIMER_IRQ
,
&
lh7a40x_timer_irq
);
timer_irq
.
flags
|=
SA_INTERRUPT
;
setup_irq
(
TIMER_IRQ
,
&
timer_irq
);
TIMER_LOAD
=
TIMER_CONSTANT
;
TIMER_LOAD
=
TIMER_CONSTANT
;
TIMER_CONTROL
=
TIMER_MODE
;
TIMER_CONTROL
=
TIMER_MODE
;
...
...
arch/arm/mach-omap/Makefile
View file @
9013ca59
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#
#
# Common support
# Common support
obj-y
:=
common.o irq.o dma.o clocks.o mux.o bus.o gpio.o
obj-y
:=
common.o irq.o dma.o clocks.o mux.o bus.o gpio.o
time.o
obj-m
:=
obj-m
:=
obj-n
:=
obj-n
:=
obj-
:=
obj-
:=
...
...
arch/arm/mach-omap/board-generic.c
View file @
9013ca59
...
@@ -65,6 +65,11 @@ static void __init omap_generic_map_io(void)
...
@@ -65,6 +65,11 @@ static void __init omap_generic_map_io(void)
omap_map_io
();
omap_map_io
();
}
}
static
void
__init
omap_generic_init_time
(
void
)
{
omap_init_time
();
}
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP-1510/1610/1710"
)
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP-1510/1610/1710"
)
MAINTAINER
(
"Tony Lindgren <tony@atomide.com>"
)
MAINTAINER
(
"Tony Lindgren <tony@atomide.com>"
)
BOOT_MEM
(
0x10000000
,
0xfff00000
,
0xfef00000
)
BOOT_MEM
(
0x10000000
,
0xfff00000
,
0xfef00000
)
...
@@ -72,4 +77,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP-1510/1610/1710")
...
@@ -72,4 +77,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP-1510/1610/1710")
MAPIO
(
omap_generic_map_io
)
MAPIO
(
omap_generic_map_io
)
INITIRQ
(
omap_generic_init_irq
)
INITIRQ
(
omap_generic_init_irq
)
INIT_MACHINE
(
omap_generic_init
)
INIT_MACHINE
(
omap_generic_init
)
INITTIME
(
omap_generic_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-omap/board-innovator.c
View file @
9013ca59
...
@@ -156,5 +156,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
...
@@ -156,5 +156,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
BOOT_PARAMS
(
0x10000100
)
BOOT_PARAMS
(
0x10000100
)
MAPIO
(
innovator_map_io
)
MAPIO
(
innovator_map_io
)
INITIRQ
(
innovator_init_irq
)
INITIRQ
(
innovator_init_irq
)
INITTIME
(
omap_init_time
)
INIT_MACHINE
(
innovator_init
)
INIT_MACHINE
(
innovator_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-omap/board-osk.c
View file @
9013ca59
...
@@ -94,5 +94,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
...
@@ -94,5 +94,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
BOOT_PARAMS
(
0x10000100
)
BOOT_PARAMS
(
0x10000100
)
MAPIO
(
osk_map_io
)
MAPIO
(
osk_map_io
)
INITIRQ
(
osk_init_irq
)
INITIRQ
(
osk_init_irq
)
INITTIME
(
omap_init_time
)
INIT_MACHINE
(
osk_init
)
INIT_MACHINE
(
osk_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-omap/board-perseus2.c
View file @
9013ca59
...
@@ -111,5 +111,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
...
@@ -111,5 +111,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
BOOT_PARAMS
(
0x10000100
)
BOOT_PARAMS
(
0x10000100
)
MAPIO
(
omap_perseus2_map_io
)
MAPIO
(
omap_perseus2_map_io
)
INITIRQ
(
omap_perseus2_init_irq
)
INITIRQ
(
omap_perseus2_init_irq
)
INITTIME
(
omap_init_time
)
INIT_MACHINE
(
omap_perseus2_init
)
INIT_MACHINE
(
omap_perseus2_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-omap/common.h
View file @
9013ca59
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#define __ARCH_ARM_MACH_OMAP_COMMON_H
#define __ARCH_ARM_MACH_OMAP_COMMON_H
extern
void
omap_map_io
(
void
);
extern
void
omap_map_io
(
void
);
extern
void
omap_init_time
(
void
);
#endif
/* __ARCH_ARM_MACH_OMAP_COMMON_H */
#endif
/* __ARCH_ARM_MACH_OMAP_COMMON_H */
...
...
include/asm-arm/arch-omap/time.h
→
arch/arm/mach-omap/time.c
View file @
9013ca59
/*
/*
*
linux/include/asm-arm/arch-omap/time.h
*
arch/arm/mach-omap/time.c
*
*
*
32kHz timer definition
*
OMAP Timer Tick
*
*
* Copyright (C) 2000 RidgeRun, Inc.
* Copyright (C) 2000 RidgeRun, Inc.
* Author: Greg Lonnon <glonnon@ridgerun.com>
* Author: Greg Lonnon <glonnon@ridgerun.com>
...
@@ -26,8 +26,6 @@
...
@@ -26,8 +26,6 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* with this program; if not, write to the Free Software Foundation, Inc.,
* 675 Mass Ave, Cambridge, MA 02139, USA.
* 675 Mass Ave, Cambridge, MA 02139, USA.
*/
*/
#if !defined(__ASM_ARCH_OMAP_TIME_H)
#define __ASM_ARCH_OMAP_TIME_H
#include <linux/config.h>
#include <linux/config.h>
#include <linux/delay.h>
#include <linux/delay.h>
...
@@ -37,6 +35,7 @@
...
@@ -37,6 +35,7 @@
#include <asm/leds.h>
#include <asm/leds.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#include <asm/arch/clocks.h>
#include <asm/arch/clocks.h>
#ifndef __instrument
#ifndef __instrument
...
@@ -162,14 +161,14 @@ unsigned long __noinstrument machinecycles_to_usecs(unsigned long mputicks)
...
@@ -162,14 +161,14 @@ unsigned long __noinstrument machinecycles_to_usecs(unsigned long mputicks)
*/
*/
static
unsigned
long
systimer_mark
;
static
unsigned
long
systimer_mark
;
static
unsigned
long
omap
1510
_gettimeoffset
(
void
)
static
unsigned
long
omap_gettimeoffset
(
void
)
{
{
/* Return elapsed usecs since last system timer ISR */
/* Return elapsed usecs since last system timer ISR */
return
machinecycles_to_usecs
(
do_getmachinecycles
()
-
systimer_mark
);
return
machinecycles_to_usecs
(
do_getmachinecycles
()
-
systimer_mark
);
}
}
static
irqreturn_t
static
irqreturn_t
omap
1510
_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
omap_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
unsigned
long
now
,
ilatency
;
unsigned
long
now
,
ilatency
;
...
@@ -184,29 +183,30 @@ omap1510_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -184,29 +183,30 @@ omap1510_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
ilatency
=
MPUTICKS_PER_SEC
/
100
-
read_mputimer2
();
ilatency
=
MPUTICKS_PER_SEC
/
100
-
read_mputimer2
();
systimer_mark
=
now
-
ilatency
;
systimer_mark
=
now
-
ilatency
;
do_leds
();
timer_tick
(
regs
);
do_timer
(
regs
);
do_profile
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
void
__init
time_init
(
void
)
static
struct
irqaction
omap_timer_irq
=
{
.
name
=
"OMAP Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
omap_timer_interrupt
};
void
__init
omap_init_time
(
void
)
{
{
/* Since we don't call request_irq, we must init the structure */
/* Since we don't call request_irq, we must init the structure */
gettimeoffset
=
omap
1510
_gettimeoffset
;
gettimeoffset
=
omap_gettimeoffset
;
timer_irq
.
handler
=
omap1510_timer_interrupt
;
timer_irq
.
flags
=
SA_INTERRUPT
;
#ifdef OMAP1510_USE_32KHZ_TIMER
#ifdef OMAP1510_USE_32KHZ_TIMER
timer32k_write
(
TIMER32k_CR
,
0x0
);
timer32k_write
(
TIMER32k_CR
,
0x0
);
timer32k_write
(
TIMER32k_TVR
,
TIMER32k_PERIOD
);
timer32k_write
(
TIMER32k_TVR
,
TIMER32k_PERIOD
);
setup_irq
(
INT_OS_32kHz_TIMER
,
&
timer_irq
);
setup_irq
(
INT_OS_32kHz_TIMER
,
&
omap_
timer_irq
);
start_timer32k
();
start_timer32k
();
#else
#else
setup_irq
(
INT_TIMER2
,
&
timer_irq
);
setup_irq
(
INT_TIMER2
,
&
omap_
timer_irq
);
start_mputimer2
(
MPUTICKS_PER_SEC
/
100
-
1
);
start_mputimer2
(
MPUTICKS_PER_SEC
/
100
-
1
);
#endif
#endif
}
}
#endif
arch/arm/mach-pxa/Makefile
View file @
9013ca59
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#
#
# Common support (must be linked before board specific support)
# Common support (must be linked before board specific support)
obj-y
+=
generic.o irq.o dma.o
obj-y
+=
generic.o irq.o dma.o
time.o
obj-$(CONFIG_PXA25x)
+=
pxa25x.o
obj-$(CONFIG_PXA25x)
+=
pxa25x.o
obj-$(CONFIG_PXA27x)
+=
pxa27x.o
obj-$(CONFIG_PXA27x)
+=
pxa27x.o
...
...
arch/arm/mach-pxa/generic.h
View file @
9013ca59
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
extern
void
__init
pxa_map_io
(
void
);
extern
void
__init
pxa_map_io
(
void
);
extern
void
__init
pxa_init_irq
(
void
);
extern
void
__init
pxa_init_irq
(
void
);
extern
void
__init
pxa_init_time
(
void
);
#define SET_BANK(__nr,__start,__size) \
#define SET_BANK(__nr,__start,__size) \
mi->bank[__nr].start = (__start), \
mi->bank[__nr].start = (__start), \
...
...
arch/arm/mach-pxa/idp.c
View file @
9013ca59
...
@@ -118,5 +118,6 @@ MACHINE_START(PXA_IDP, "Accelent Xscale IDP")
...
@@ -118,5 +118,6 @@ MACHINE_START(PXA_IDP, "Accelent Xscale IDP")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
idp_map_io
)
MAPIO
(
idp_map_io
)
INITIRQ
(
idp_init_irq
)
INITIRQ
(
idp_init_irq
)
INITTIME
(
pxa_init_time
)
INIT_MACHINE
(
idp_init
)
INIT_MACHINE
(
idp_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-pxa/lubbock.c
View file @
9013ca59
...
@@ -220,5 +220,6 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
...
@@ -220,5 +220,6 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
lubbock_map_io
)
MAPIO
(
lubbock_map_io
)
INITIRQ
(
lubbock_init_irq
)
INITIRQ
(
lubbock_init_irq
)
INITTIME
(
pxa_init_time
)
INIT_MACHINE
(
lubbock_init
)
INIT_MACHINE
(
lubbock_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-pxa/mainstone.c
View file @
9013ca59
...
@@ -137,5 +137,6 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
...
@@ -137,5 +137,6 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
BOOT_MEM
(
0xa0000000
,
0x40000000
,
io_p2v
(
0x40000000
))
MAPIO
(
mainstone_map_io
)
MAPIO
(
mainstone_map_io
)
INITIRQ
(
mainstone_init_irq
)
INITIRQ
(
mainstone_init_irq
)
INITTIME
(
pxa_init_time
)
INIT_MACHINE
(
mainstone_init
)
INIT_MACHINE
(
mainstone_init
)
MACHINE_END
MACHINE_END
include/asm-arm/arch-pxa/time.h
→
arch/arm/mach-pxa/time.c
View file @
9013ca59
/*
/*
*
linux/include/asm-arm/arch-pxa/time.h
*
arch/arm/mach-pxa/time.c
*
*
* Author: Nicolas Pitre
* Author: Nicolas Pitre
* Created: Jun 15, 2001
* Created: Jun 15, 2001
...
@@ -10,6 +10,24 @@
...
@@ -10,6 +10,24 @@
* published by the Free Software Foundation.
* published by the Free Software Foundation.
*/
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/signal.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <asm/system.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/leds.h>
#include <asm/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
static
inline
unsigned
long
pxa_get_rtc_time
(
void
)
static
inline
unsigned
long
pxa_get_rtc_time
(
void
)
{
{
...
@@ -56,8 +74,6 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -56,8 +74,6 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
{
int
next_match
;
int
next_match
;
do_profile
(
regs
);
/* Loop until we get ahead of the free running timer.
/* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy.
* This ensures an exact clock tick count and time accuracy.
* IRQs are disabled inside the loop to ensure coherence between
* IRQs are disabled inside the loop to ensure coherence between
...
@@ -74,9 +90,7 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -74,9 +90,7 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
* exactly one tick period which should be a pretty rare event.
* exactly one tick period which should be a pretty rare event.
*/
*/
do
{
do
{
do_leds
();
timer_tick
(
regs
);
do_set_rtc
();
do_timer
(
regs
);
OSSR
=
OSSR_M0
;
/* Clear match on timer 0 */
OSSR
=
OSSR_M0
;
/* Clear match on timer 0 */
next_match
=
(
OSMR0
+=
LATCH
);
next_match
=
(
OSMR0
+=
LATCH
);
}
while
(
(
signed
long
)(
next_match
-
OSCR
)
<=
8
);
}
while
(
(
signed
long
)(
next_match
-
OSCR
)
<=
8
);
...
@@ -84,7 +98,13 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -84,7 +98,13 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
void
__init
time_init
(
void
)
static
struct
irqaction
pxa_timer_irq
=
{
.
name
=
"PXA Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
pxa_timer_interrupt
};
void
__init
pxa_init_time
(
void
)
{
{
struct
timespec
tv
;
struct
timespec
tv
;
...
@@ -95,10 +115,9 @@ void __init time_init(void)
...
@@ -95,10 +115,9 @@ void __init time_init(void)
tv
.
tv_sec
=
pxa_get_rtc_time
();
tv
.
tv_sec
=
pxa_get_rtc_time
();
do_settimeofday
(
&
tv
);
do_settimeofday
(
&
tv
);
timer_irq
.
handler
=
pxa_timer_interrupt
;
OSMR0
=
0
;
/* set initial match at 0 */
OSMR0
=
0
;
/* set initial match at 0 */
OSSR
=
0xf
;
/* clear status on all timers */
OSSR
=
0xf
;
/* clear status on all timers */
setup_irq
(
IRQ_OST0
,
&
timer_irq
);
setup_irq
(
IRQ_OST0
,
&
pxa_
timer_irq
);
OIER
|=
OIER_E0
;
/* enable match on timer 0 to cause interrupts */
OIER
|=
OIER_E0
;
/* enable match on timer 0 to cause interrupts */
OSCR
=
0
;
/* initialize free-running timer, force first match */
OSCR
=
0
;
/* initialize free-running timer, force first match */
}
}
...
...
arch/arm/mach-rpc/riscpc.c
View file @
9013ca59
...
@@ -14,6 +14,8 @@
...
@@ -14,6 +14,8 @@
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/pm.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <asm/elf.h>
#include <asm/elf.h>
#include <asm/io.h>
#include <asm/io.h>
...
@@ -25,6 +27,7 @@
...
@@ -25,6 +27,7 @@
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
extern
void
rpc_init_irq
(
void
);
extern
void
rpc_init_irq
(
void
);
...
@@ -82,6 +85,31 @@ void __init rpc_map_io(void)
...
@@ -82,6 +85,31 @@ void __init rpc_map_io(void)
elf_hwcap
&=
~
HWCAP_HALF
;
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
);
}
MACHINE_START
(
RISCPC
,
"Acorn-RiscPC"
)
MACHINE_START
(
RISCPC
,
"Acorn-RiscPC"
)
MAINTAINER
(
"Russell King"
)
MAINTAINER
(
"Russell King"
)
BOOT_MEM
(
0x10000000
,
0x03000000
,
0xe0000000
)
BOOT_MEM
(
0x10000000
,
0x03000000
,
0xe0000000
)
...
@@ -90,4 +118,5 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
...
@@ -90,4 +118,5 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
DISABLE_PARPORT
(
1
)
DISABLE_PARPORT
(
1
)
MAPIO
(
rpc_map_io
)
MAPIO
(
rpc_map_io
)
INITIRQ
(
rpc_init_irq
)
INITIRQ
(
rpc_init_irq
)
INITTIME
(
rpc_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-s3c2410/Makefile
View file @
9013ca59
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
# Object file lists.
# Object file lists.
obj-y
:=
s3c2410.o irq.o
obj-y
:=
s3c2410.o irq.o
time.o
obj-m
:=
obj-m
:=
obj-n
:=
obj-n
:=
obj-
:=
obj-
:=
...
...
arch/arm/mach-s3c2410/mach-bast.c
View file @
9013ca59
...
@@ -185,10 +185,16 @@ void __init bast_init_irq(void)
...
@@ -185,10 +185,16 @@ void __init bast_init_irq(void)
}
}
void
__init
bast_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
BAST
,
"Simtec-BAST"
)
MACHINE_START
(
BAST
,
"Simtec-BAST"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
bast_map_io
)
MAPIO
(
bast_map_io
)
INITIRQ
(
bast_init_irq
)
INITIRQ
(
bast_init_irq
)
INITTIME
(
bast_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-s3c2410/mach-h1940.c
View file @
9013ca59
...
@@ -91,10 +91,16 @@ void __init ipaq_init_irq(void)
...
@@ -91,10 +91,16 @@ void __init ipaq_init_irq(void)
}
}
void
__init
ipaq_init_time
(
void
)
{
s3c2410_init_time
();
}
MACHINE_START
(
H1940
,
"IPAQ-H1940"
)
MACHINE_START
(
H1940
,
"IPAQ-H1940"
)
MAINTAINER
(
"Ben Dooks <ben@fluff.org>"
)
MAINTAINER
(
"Ben Dooks <ben@fluff.org>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
ipaq_map_io
)
MAPIO
(
ipaq_map_io
)
INITIRQ
(
ipaq_init_irq
)
INITIRQ
(
ipaq_init_irq
)
INITTIME
(
ipaq_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-s3c2410/mach-smdk2410.c
View file @
9013ca59
...
@@ -99,6 +99,11 @@ void __init smdk2410_init_irq(void)
...
@@ -99,6 +99,11 @@ void __init smdk2410_init_irq(void)
s3c2410_init_irq
();
s3c2410_init_irq
();
}
}
void
__init
smdk2410_init_time
(
void
)
{
s3c2401_init_time
();
}
MACHINE_START
(
SMDK2410
,
"SMDK2410"
)
/* @TODO: request a new identifier and switch
MACHINE_START
(
SMDK2410
,
"SMDK2410"
)
/* @TODO: request a new identifier and switch
* to SMDK2410 */
* to SMDK2410 */
MAINTAINER
(
"Jonas Dietsche"
)
MAINTAINER
(
"Jonas Dietsche"
)
...
@@ -106,4 +111,5 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
...
@@ -106,4 +111,5 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
smdk2410_map_io
)
MAPIO
(
smdk2410_map_io
)
INITIRQ
(
smdk2410_init_irq
)
INITIRQ
(
smdk2410_init_irq
)
INITTIME
(
smdk2410_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-s3c2410/mach-vr1000.c
View file @
9013ca59
...
@@ -155,10 +155,16 @@ void __init vr1000_init_irq(void)
...
@@ -155,10 +155,16 @@ void __init vr1000_init_irq(void)
}
}
void
__init
vr1000_init_time
(
void
)
{
s3c2401_init_time
();
}
MACHINE_START
(
VR1000
,
"Simtec-VR1000"
)
MACHINE_START
(
VR1000
,
"Simtec-VR1000"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
MAINTAINER
(
"Ben Dooks <ben@simtec.co.uk>"
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_MEM
(
S3C2410_SDRAM_PA
,
S3C2410_PA_UART
,
S3C2410_VA_UART
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
BOOT_PARAMS
(
S3C2410_SDRAM_PA
+
0x100
)
MAPIO
(
vr1000_map_io
)
MAPIO
(
vr1000_map_io
)
INITIRQ
(
vr1000_init_irq
)
INITIRQ
(
vr1000_init_irq
)
INITTIME
(
vr1000_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-s3c2410/s3c2410.h
View file @
9013ca59
...
@@ -4,3 +4,5 @@ extern void s3c2410_map_io(struct map_desc *, int count);
...
@@ -4,3 +4,5 @@ extern void s3c2410_map_io(struct map_desc *, int count);
extern
void
s3c2410_init_irq
(
void
);
extern
void
s3c2410_init_irq
(
void
);
extern
s3c2410_init_time
(
void
);
include/asm-arm/arch-s3c2410/time.h
→
arch/arm/mach-s3c2410/time.c
View file @
9013ca59
...
@@ -18,15 +18,20 @@
...
@@ -18,15 +18,20 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <asm/system.h>
#include <asm/system.h>
#include <asm/leds.h>
#include <asm/leds.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/arch/map.h>
#include <asm/arch/map.h>
#include <asm/arch/regs-timer.h>
#include <asm/arch/regs-timer.h>
#include <asm/mach/time.h>
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
static
unsigned
long
timer_startval
;
static
unsigned
long
timer_startval
;
static
unsigned
long
timer_ticks_usec
;
static
unsigned
long
timer_ticks_usec
;
...
@@ -69,25 +74,24 @@ static unsigned long s3c2410_gettimeoffset (void)
...
@@ -69,25 +74,24 @@ static unsigned long s3c2410_gettimeoffset (void)
static
irqreturn_t
static
irqreturn_t
s3c2410_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
s3c2410_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
do_leds
();
timer_tick
(
regs
);
do_timer
(
regs
);
do_set_rtc
();
//s3c2410_rtc_check();
do_profile
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
static
struct
irqaction
s3c2410_timer_irq
=
{
.
name
=
"S32410 Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
s3c2410_timer_interrupt
};
/*
/*
* Set up timer interrupt, and return the current time in seconds.
* Set up timer interrupt, and return the current time in seconds.
*/
*
* Currently we only use timer4, as it is the only timer which has no
/* currently we only use timer4, as it is the only timer which has no
* other function that can be exploited externally
* other function that can be exploited externally
*/
*/
void
__init
s3c2410_init_time
(
void
)
void
__init
time_init
(
void
)
{
{
unsigned
long
tcon
;
unsigned
long
tcon
;
unsigned
long
tcnt
;
unsigned
long
tcnt
;
...
@@ -95,7 +99,6 @@ void __init time_init (void)
...
@@ -95,7 +99,6 @@ void __init time_init (void)
unsigned
long
tcfg0
;
unsigned
long
tcfg0
;
gettimeoffset
=
s3c2410_gettimeoffset
;
gettimeoffset
=
s3c2410_gettimeoffset
;
timer_irq
.
handler
=
s3c2410_timer_interrupt
;
tcnt
=
0xffff
;
/* default value for tcnt */
tcnt
=
0xffff
;
/* default value for tcnt */
...
@@ -161,7 +164,7 @@ void __init time_init (void)
...
@@ -161,7 +164,7 @@ void __init time_init (void)
__raw_writel
(
tcnt
,
S3C2410_TCNTB
(
4
));
__raw_writel
(
tcnt
,
S3C2410_TCNTB
(
4
));
__raw_writel
(
tcnt
,
S3C2410_TCMPB
(
4
));
__raw_writel
(
tcnt
,
S3C2410_TCMPB
(
4
));
setup_irq
(
IRQ_TIMER4
,
&
timer_irq
);
setup_irq
(
IRQ_TIMER4
,
&
s3c2410_
timer_irq
);
/* start the timer running */
/* start the timer running */
tcon
|=
S3C2410_TCON_T4START
;
tcon
|=
S3C2410_TCON_T4START
;
...
...
arch/arm/mach-sa1100/adsbitsy.c
View file @
9013ca59
...
@@ -147,4 +147,5 @@ MACHINE_START(ADSBITSY, "ADS Bitsy")
...
@@ -147,4 +147,5 @@ MACHINE_START(ADSBITSY, "ADS Bitsy")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
adsbitsy_map_io
)
MAPIO
(
adsbitsy_map_io
)
INITIRQ
(
adsbitsy_init_irq
)
INITIRQ
(
adsbitsy_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/assabet.c
View file @
9013ca59
...
@@ -324,5 +324,6 @@ MACHINE_START(ASSABET, "Intel-Assabet")
...
@@ -324,5 +324,6 @@ MACHINE_START(ASSABET, "Intel-Assabet")
FIXUP
(
fixup_assabet
)
FIXUP
(
fixup_assabet
)
MAPIO
(
assabet_map_io
)
MAPIO
(
assabet_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
INIT_MACHINE
(
assabet_init
)
INIT_MACHINE
(
assabet_init
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/badge4.c
View file @
9013ca59
...
@@ -245,4 +245,5 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
...
@@ -245,4 +245,5 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
badge4_map_io
)
MAPIO
(
badge4_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/brutus.c
View file @
9013ca59
...
@@ -37,4 +37,5 @@ MACHINE_START(BRUTUS, "Intel Brutus (SA1100 eval board)")
...
@@ -37,4 +37,5 @@ MACHINE_START(BRUTUS, "Intel Brutus (SA1100 eval board)")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
brutus_map_io
)
MAPIO
(
brutus_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/cerf.c
View file @
9013ca59
...
@@ -92,4 +92,5 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
...
@@ -92,4 +92,5 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
cerf_map_io
)
MAPIO
(
cerf_map_io
)
INITIRQ
(
cerf_init_irq
)
INITIRQ
(
cerf_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/empeg.c
View file @
9013ca59
...
@@ -35,4 +35,5 @@ MACHINE_START(EMPEG, "empeg MP3 Car Audio Player")
...
@@ -35,4 +35,5 @@ MACHINE_START(EMPEG, "empeg MP3 Car Audio Player")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
empeg_map_io
)
MAPIO
(
empeg_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/flexanet.c
View file @
9013ca59
...
@@ -183,5 +183,6 @@ MACHINE_START(FLEXANET, "FlexaNet")
...
@@ -183,5 +183,6 @@ MACHINE_START(FLEXANET, "FlexaNet")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
flexanet_map_io
)
MAPIO
(
flexanet_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/freebird.c
View file @
9013ca59
...
@@ -77,4 +77,5 @@ MACHINE_START(FREEBIRD, "Freebird-HPC-1.1")
...
@@ -77,4 +77,5 @@ MACHINE_START(FREEBIRD, "Freebird-HPC-1.1")
#endif
#endif
MAPIO
(
freebird_map_io
)
MAPIO
(
freebird_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/generic.h
View file @
9013ca59
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
extern
void
__init
sa1100_map_io
(
void
);
extern
void
__init
sa1100_map_io
(
void
);
extern
void
__init
sa1100_init_irq
(
void
);
extern
void
__init
sa1100_init_irq
(
void
);
extern
void
__init
sa1100_init_time
(
void
);
#define SET_BANK(__nr,__start,__size) \
#define SET_BANK(__nr,__start,__size) \
mi->bank[__nr].start = (__start), \
mi->bank[__nr].start = (__start), \
...
...
arch/arm/mach-sa1100/graphicsclient.c
View file @
9013ca59
...
@@ -198,4 +198,5 @@ MACHINE_START(GRAPHICSCLIENT, "ADS GraphicsClient")
...
@@ -198,4 +198,5 @@ MACHINE_START(GRAPHICSCLIENT, "ADS GraphicsClient")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
graphicsclient_map_io
)
MAPIO
(
graphicsclient_map_io
)
INITIRQ
(
graphicsclient_init_irq
)
INITIRQ
(
graphicsclient_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/graphicsmaster.c
View file @
9013ca59
...
@@ -287,4 +287,5 @@ MACHINE_START(GRAPHICSMASTER, "ADS GraphicsMaster")
...
@@ -287,4 +287,5 @@ MACHINE_START(GRAPHICSMASTER, "ADS GraphicsMaster")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
graphicsmaster_map_io
)
MAPIO
(
graphicsmaster_map_io
)
INITIRQ
(
graphicsmaster_init_irq
)
INITIRQ
(
graphicsmaster_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/h3600.c
View file @
9013ca59
...
@@ -286,6 +286,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
...
@@ -286,6 +286,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3100_map_io
)
MAPIO
(
h3100_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
#endif
/* CONFIG_SA1100_H3100 */
#endif
/* CONFIG_SA1100_H3100 */
...
@@ -400,6 +401,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
...
@@ -400,6 +401,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3600_map_io
)
MAPIO
(
h3600_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
#endif
/* CONFIG_SA1100_H3600 */
#endif
/* CONFIG_SA1100_H3600 */
...
@@ -783,6 +785,7 @@ MACHINE_START(H3800, "Compaq iPAQ H3800")
...
@@ -783,6 +785,7 @@ MACHINE_START(H3800, "Compaq iPAQ H3800")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
h3800_map_io
)
MAPIO
(
h3800_map_io
)
INITIRQ
(
h3800_init_irq
)
INITIRQ
(
h3800_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
#endif
/* CONFIG_SA1100_H3800 */
#endif
/* CONFIG_SA1100_H3800 */
arch/arm/mach-sa1100/hackkit.c
View file @
9013ca59
...
@@ -174,4 +174,5 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
...
@@ -174,4 +174,5 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
hackkit_map_io
)
MAPIO
(
hackkit_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/huw_webpanel.c
View file @
9013ca59
...
@@ -81,4 +81,5 @@ MACHINE_START(HUW_WEBPANEL, "HuW-Webpanel")
...
@@ -81,4 +81,5 @@ MACHINE_START(HUW_WEBPANEL, "HuW-Webpanel")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
huw_webpanel_map_io
)
MAPIO
(
huw_webpanel_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/itsy.c
View file @
9013ca59
...
@@ -37,4 +37,5 @@ MACHINE_START(ITSY, "Compaq Itsy")
...
@@ -37,4 +37,5 @@ MACHINE_START(ITSY, "Compaq Itsy")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
itsy_map_io
)
MAPIO
(
itsy_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/jornada720.c
View file @
9013ca59
...
@@ -101,4 +101,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
...
@@ -101,4 +101,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
jornada720_map_io
)
MAPIO
(
jornada720_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/lart.c
View file @
9013ca59
...
@@ -43,4 +43,5 @@ MACHINE_START(LART, "LART")
...
@@ -43,4 +43,5 @@ MACHINE_START(LART, "LART")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
lart_map_io
)
MAPIO
(
lart_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/nanoengine.c
View file @
9013ca59
...
@@ -49,4 +49,5 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
...
@@ -49,4 +49,5 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
FIXUP
(
fixup_nanoengine
)
FIXUP
(
fixup_nanoengine
)
MAPIO
(
nanoengine_map_io
)
MAPIO
(
nanoengine_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/omnimeter.c
View file @
9013ca59
...
@@ -59,4 +59,5 @@ MACHINE_START(OMNIMETER, "OmniMeter")
...
@@ -59,4 +59,5 @@ MACHINE_START(OMNIMETER, "OmniMeter")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
omnimeter_map_io
)
MAPIO
(
omnimeter_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/pangolin.c
View file @
9013ca59
...
@@ -40,4 +40,5 @@ MACHINE_START(PANGOLIN, "Dialogue-Pangolin")
...
@@ -40,4 +40,5 @@ MACHINE_START(PANGOLIN, "Dialogue-Pangolin")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
pangolin_map_io
)
MAPIO
(
pangolin_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/pfs168.c
View file @
9013ca59
...
@@ -112,4 +112,5 @@ MACHINE_START(PFS168, "Tulsa")
...
@@ -112,4 +112,5 @@ MACHINE_START(PFS168, "Tulsa")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
pfs168_map_io
)
MAPIO
(
pfs168_map_io
)
INITIRQ
(
pfs168_init_irq
)
INITIRQ
(
pfs168_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/pleb.c
View file @
9013ca59
...
@@ -31,4 +31,5 @@ MACHINE_START(PLEB, "PLEB")
...
@@ -31,4 +31,5 @@ MACHINE_START(PLEB, "PLEB")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
pleb_map_io
)
MAPIO
(
pleb_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/shannon.c
View file @
9013ca59
...
@@ -41,4 +41,5 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
...
@@ -41,4 +41,5 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
shannon_map_io
)
MAPIO
(
shannon_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/sherman.c
View file @
9013ca59
...
@@ -27,4 +27,5 @@ MACHINE_START(SHERMAN, "Blazie Engineering Sherman")
...
@@ -27,4 +27,5 @@ MACHINE_START(SHERMAN, "Blazie Engineering Sherman")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
sherman_map_io
)
MAPIO
(
sherman_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/simpad.c
View file @
9013ca59
...
@@ -231,4 +231,5 @@ MACHINE_START(SIMPAD, "Simpad")
...
@@ -231,4 +231,5 @@ MACHINE_START(SIMPAD, "Simpad")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
simpad_map_io
)
MAPIO
(
simpad_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/stork.c
View file @
9013ca59
...
@@ -331,6 +331,7 @@ MACHINE_START(STORK, "Stork Technologies prototype")
...
@@ -331,6 +331,7 @@ MACHINE_START(STORK, "Stork Technologies prototype")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
stork_map_io
)
MAPIO
(
stork_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
...
...
arch/arm/mach-sa1100/system3.c
View file @
9013ca59
...
@@ -470,4 +470,5 @@ MACHINE_START(PT_SYSTEM3, "PT System 3")
...
@@ -470,4 +470,5 @@ MACHINE_START(PT_SYSTEM3, "PT System 3")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
system3_map_io
)
MAPIO
(
system3_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
include/asm-arm/arch-sa1100/time.h
→
arch/arm/mach-sa1100/time.c
View file @
9013ca59
...
@@ -78,19 +78,21 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -78,19 +78,21 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
unsigned
int
next_match
;
unsigned
int
next_match
;
do
{
do
{
do_leds
();
timer_tick
(
regs
);
do_timer
(
regs
);
OSSR
=
OSSR_M0
;
/* Clear match on timer 0 */
OSSR
=
OSSR_M0
;
/* Clear match on timer 0 */
next_match
=
(
OSMR0
+=
LATCH
);
next_match
=
(
OSMR0
+=
LATCH
);
do_set_rtc
();
}
while
((
signed
long
)(
next_match
-
OSCR
)
<=
0
);
}
while
((
signed
long
)(
next_match
-
OSCR
)
<=
0
);
do_profile
(
regs
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
void
__init
time_init
(
void
)
static
struct
irqaction
sa1100_timer_irq
=
{
.
name
=
"SA11xx Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
sa1100_timer_interrupt
};
void
__init
sa1100_init_time
(
void
)
{
{
struct
timespec
tv
;
struct
timespec
tv
;
...
@@ -101,10 +103,9 @@ void __init time_init(void)
...
@@ -101,10 +103,9 @@ void __init time_init(void)
tv
.
tv_sec
=
sa1100_get_rtc_time
();
tv
.
tv_sec
=
sa1100_get_rtc_time
();
do_settimeofday
(
&
tv
);
do_settimeofday
(
&
tv
);
timer_irq
.
handler
=
sa1100_timer_interrupt
;
OSMR0
=
0
;
/* set initial match at 0 */
OSMR0
=
0
;
/* set initial match at 0 */
OSSR
=
0xf
;
/* clear status on all timers */
OSSR
=
0xf
;
/* clear status on all timers */
setup_irq
(
IRQ_OST0
,
&
timer_irq
);
setup_irq
(
IRQ_OST0
,
&
sa1100_
timer_irq
);
OIER
|=
OIER_E0
;
/* enable match on timer 0 to cause interrupts */
OIER
|=
OIER_E0
;
/* enable match on timer 0 to cause interrupts */
OSCR
=
0
;
/* initialize free-running timer, force first match */
OSCR
=
0
;
/* initialize free-running timer, force first match */
}
}
...
...
arch/arm/mach-sa1100/trizeps.c
View file @
9013ca59
...
@@ -228,4 +228,5 @@ MACHINE_START(TRIZEPS, "TRIZEPS")
...
@@ -228,4 +228,5 @@ MACHINE_START(TRIZEPS, "TRIZEPS")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
trizeps_map_io
)
MAPIO
(
trizeps_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/xp860.c
View file @
9013ca59
...
@@ -89,4 +89,5 @@ MACHINE_START(XP860, "XP860")
...
@@ -89,4 +89,5 @@ MACHINE_START(XP860, "XP860")
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
MAPIO
(
xp860_map_io
)
MAPIO
(
xp860_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-sa1100/yopy.c
View file @
9013ca59
...
@@ -91,4 +91,5 @@ MACHINE_START(YOPY, "Yopy")
...
@@ -91,4 +91,5 @@ MACHINE_START(YOPY, "Yopy")
BOOT_PARAMS
(
0xc0000100
)
BOOT_PARAMS
(
0xc0000100
)
MAPIO
(
yopy_map_io
)
MAPIO
(
yopy_map_io
)
INITIRQ
(
sa1100_init_irq
)
INITIRQ
(
sa1100_init_irq
)
INITTIME
(
sa1100_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-shark/core.c
View file @
9013ca59
...
@@ -5,13 +5,18 @@
...
@@ -5,13 +5,18 @@
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <asm/setup.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/leds.h>
#include <asm/param.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
extern
void
shark_init_irq
(
void
);
extern
void
shark_init_irq
(
void
);
...
@@ -24,10 +29,43 @@ static void __init shark_map_io(void)
...
@@ -24,10 +29,43 @@ static void __init shark_map_io(void)
iotable_init
(
shark_io_desc
,
ARRAY_SIZE
(
shark_io_desc
));
iotable_init
(
shark_io_desc
,
ARRAY_SIZE
(
shark_io_desc
));
}
}
#define IRQ_TIMER 0
#define HZ_TIME ((1193180 + HZ/2) / HZ)
static
irqreturn_t
shark_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
shark_timer_irq
=
{
.
name
=
"Shark Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
shark_timer_interrupt
};
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
shark_init_time
(
void
)
{
unsigned
long
flags
;
outb
(
0x34
,
0x43
);
/* binary, mode 0, LSB/MSB, Ch 0 */
outb
(
HZ_TIME
&
0xff
,
0x40
);
/* LSB of count */
outb
(
HZ_TIME
>>
8
,
0x40
);
setup_irq
(
IRQ_TIMER
,
&
shark_timer_irq
);
}
MACHINE_START
(
SHARK
,
"Shark"
)
MACHINE_START
(
SHARK
,
"Shark"
)
MAINTAINER
(
"Alexander Schulz"
)
MAINTAINER
(
"Alexander Schulz"
)
BOOT_MEM
(
0x08000000
,
0x40000000
,
0xe0000000
)
BOOT_MEM
(
0x08000000
,
0x40000000
,
0xe0000000
)
BOOT_PARAMS
(
0x08003000
)
BOOT_PARAMS
(
0x08003000
)
MAPIO
(
shark_map_io
)
MAPIO
(
shark_map_io
)
INITIRQ
(
shark_init_irq
)
INITIRQ
(
shark_init_irq
)
INITTIME
(
shark_init_time
)
MACHINE_END
MACHINE_END
arch/arm/mach-versatile/core.c
View file @
9013ca59
...
@@ -22,7 +22,9 @@
...
@@ -22,7 +22,9 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/device.h>
#include <linux/sysdev.h>
#include <linux/sysdev.h>
#include <linux/interrupt.h>
#include <asm/system.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/irq.h>
...
@@ -33,6 +35,7 @@
...
@@ -33,6 +35,7 @@
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <asm/mach/flash.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#ifdef CONFIG_MMC
#ifdef CONFIG_MMC
#include <asm/mach/mmc.h>
#include <asm/mach/mmc.h>
...
@@ -511,11 +514,153 @@ static void __init versatile_init(void)
...
@@ -511,11 +514,153 @@ static void __init versatile_init(void)
leds_event
=
versatile_leds_event
;
leds_event
=
versatile_leds_event
;
}
}
/*
* Where is the timer (VA)?
*/
#define TIMER0_VA_BASE IO_ADDRESS(VERSATILE_TIMER0_1_BASE)
#define TIMER1_VA_BASE (IO_ADDRESS(VERSATILE_TIMER0_1_BASE) + 0x20)
#define TIMER2_VA_BASE IO_ADDRESS(VERSATILE_TIMER2_3_BASE)
#define TIMER3_VA_BASE (IO_ADDRESS(VERSATILE_TIMER2_3_BASE) + 0x20)
#define VA_IC_BASE IO_ADDRESS(VERSATILE_VIC_BASE)
/*
* How long is the timer interval?
*/
#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10)
#if TIMER_INTERVAL >= 0x100000
#define TIMER_RELOAD (TIMER_INTERVAL >> 8)
/* Divide by 256 */
#define TIMER_CTRL 0x88
/* Enable, Clock / 256 */
#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC)
#elif TIMER_INTERVAL >= 0x10000
#define TIMER_RELOAD (TIMER_INTERVAL >> 4)
/* Divide by 16 */
#define TIMER_CTRL 0x84
/* Enable, Clock / 16 */
#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC)
#else
#define TIMER_RELOAD (TIMER_INTERVAL)
#define TIMER_CTRL 0x80
/* Enable */
#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
);
/*
* Returns number of ms since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
*/
static
unsigned
long
versatile_gettimeoffset
(
void
)
{
volatile
TimerStruct_t
*
timer0
=
(
TimerStruct_t
*
)
TIMER0_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
=
timer0
->
TimerValue
&
0xffff
;
do
{
ticks1
=
ticks2
;
status
=
__raw_readl
(
VA_IC_BASE
+
VIC_IRQ_RAW_STATUS
);
ticks2
=
timer0
->
TimerValue
&
0xffff
;
}
while
(
ticks2
>
ticks1
);
/*
* Number of ticks since last interrupt.
*/
ticks1
=
TIMER_RELOAD
-
ticks2
;
/*
* Interrupt pending? If so, we've reloaded once already.
*
* FIXME: Need to check this is effectively timer 0 that expires
*/
if
(
status
&
IRQMASK_TIMERINT0_1
)
ticks1
+=
TIMER_RELOAD
;
/*
* Convert the ticks to usecs
*/
return
TICKS2USECS
(
ticks1
);
}
/*
* IRQ handler for the timer
*/
static
irqreturn_t
versatile_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
volatile
TimerStruct_t
*
timer0
=
(
volatile
TimerStruct_t
*
)
TIMER0_VA_BASE
;
// ...clear the interrupt
timer0
->
TimerClear
=
1
;
timer_tick
(
regs
);
return
IRQ_HANDLED
;
}
static
struct
irqaction
versatile_timer_irq
=
{
.
name
=
"Versatile Timer Tick"
,
.
flags
=
SA_INTERRUPT
,
.
handler
=
versatile_timer_interrupt
};
/*
* Set up timer interrupt, and return the current time in seconds.
*/
void
__init
versatile_init_time
(
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
;
volatile
TimerStruct_t
*
timer3
=
(
volatile
TimerStruct_t
*
)
TIMER3_VA_BASE
;
/*
* set clock frequency:
* VERSATILE_REFCLK is 32KHz
* VERSATILE_TIMCLK is 1MHz
*/
*
(
volatile
unsigned
int
*
)
IO_ADDRESS
(
VERSATILE_SCTL_BASE
)
|=
((
VERSATILE_TIMCLK
<<
VERSATILE_TIMER1_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER2_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER3_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER4_EnSel
));
/*
* Initialise to a known state (all timers off)
*/
timer0
->
TimerControl
=
0
;
timer1
->
TimerControl
=
0
;
timer2
->
TimerControl
=
0
;
timer3
->
TimerControl
=
0
;
timer0
->
TimerLoad
=
TIMER_RELOAD
;
timer0
->
TimerValue
=
TIMER_RELOAD
;
timer0
->
TimerControl
=
TIMER_CTRL
|
0x40
|
TIMER_CTRL_IE
;
/* periodic + IE */
/*
* Make irqs happen for the system timer
*/
setup_irq
(
IRQ_TIMERINT0_1
,
&
versatile_timer_irq
);
gettimeoffset
=
versatile_gettimeoffset
;
}
MACHINE_START
(
VERSATILE_PB
,
"ARM-Versatile PB"
)
MACHINE_START
(
VERSATILE_PB
,
"ARM-Versatile PB"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
MAINTAINER
(
"ARM Ltd/Deep Blue Solutions Ltd"
)
BOOT_MEM
(
0x00000000
,
0x101f1000
,
0xf11f1000
)
BOOT_MEM
(
0x00000000
,
0x101f1000
,
0xf11f1000
)
BOOT_PARAMS
(
0x00000100
)
BOOT_PARAMS
(
0x00000100
)
MAPIO
(
versatile_map_io
)
MAPIO
(
versatile_map_io
)
INITIRQ
(
versatile_init_irq
)
INITIRQ
(
versatile_init_irq
)
INITTIME
(
versatile_init_time
)
INIT_MACHINE
(
versatile_init
)
INIT_MACHINE
(
versatile_init
)
MACHINE_END
MACHINE_END
arch/arm/mm/Kconfig
View file @
9013ca59
...
@@ -220,7 +220,7 @@ config CPU_SA1100
...
@@ -220,7 +220,7 @@ config CPU_SA1100
# XScale
# XScale
config CPU_XSCALE
config CPU_XSCALE
bool
bool
depends on ARCH_IOP3XX || ARCH_
ADIFCC || ARCH_
PXA || ARCH_IXP4XX
depends on ARCH_IOP3XX || ARCH_PXA || ARCH_IXP4XX
default y
default y
select CPU_32v5
select CPU_32v5
select CPU_ABRT_EV5T
select CPU_ABRT_EV5T
...
...
include/asm-arm/arch-adifcc/adi_evb.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm/arch-80200fcc/adi_evb.h
*
* ADI 80200FCC evaluation board definitions
*
* Author: Deepak Saxena <dsaxena@mvista.com>
*
* 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 as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#define ADI_EVB__RAMBASE 0xa0000000
#define ADI_EVB__UART 0x00400000
/* UART */
#define ADI_EVB_7SEG_1 0x00500000
/* 7-Segment */
include/asm-arm/arch-adifcc/hardware.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/hardware.h
*
* Hardware definitions for ADI based systems
*
* Author: Deepak Saxena <dsaxena@mvista.com>
*
* Copyright (C) 2000-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 as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#ifndef __ASM_ARCH_HARDWARE_H
#define __ASM_ARCH_HARDWARE_H
#include <linux/config.h>
#define PCIO_BASE 0
#if defined(CONFIG_ARCH_ADI_EVB)
#include "adi_evb.h"
#endif
#endif
/* _ASM_ARCH_HARDWARE_H */
include/asm-arm/arch-adifcc/io.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/io.h
*
* Author: Deepak Saxena <dsaxena@mvista.com>
*
* 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.
*/
#ifndef __ASM_ARM_ARCH_IO_H
#define __ASM_ARM_ARCH_IO_H
#define IO_SPACE_LIMIT 0xffffffff
#define __io(a) (PCIO_BASE + (a))
#define __mem_pci(a) ((unsigned long)(a))
#define __mem_isa(a) ((unsigned long)(a))
#endif
include/asm-arm/arch-adifcc/irqs.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-80200fcc/irqs.h
*
* Author: Deepak Saxena <dsaxena@mvista.com>
* 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.
*/
#define IRQ_XS80200_BCU 0
/* Bus Control Unit */
#define IRQ_XS80200_PMU 1
/* Performance Monitoring Unit */
#define IRQ_XS80200_EXTIRQ 2
/* external IRQ signal */
#define IRQ_XS80200_EXTFIQ 3
/* external IRQ signal */
#define NR_XS80200_IRQS 4
#define NR_IRQS NR_XS80200_IRQS
#define IRQ_XSCALE_PMU IRQ_XS80200_PMU
include/asm-arm/arch-adifcc/memory.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/memory.h
*
* Copyright (c) 2001 MontaVista Software, Inc.
*/
#ifndef __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H
/*
* Physical DRAM offset.
*/
#define PHYS_OFFSET (0xC0000000UL)
/*
* Virtual view <-> DMA view memory address translations
* virt_to_bus: Used to translate the virtual address to an
* address suitable to be passed to set_dma_addr
* bus_to_virt: Used to convert an address for DMA operations
* to an address that the kernel can use.
*
* These are dummies for now.
*/
#define __virt_to_bus(x) __virt_to_phys(x)
#define __bus_to_virt(x) __phys_to_virt(x)
#endif
include/asm-arm/arch-adifcc/param.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/param.h
*/
include/asm-arm/arch-adifcc/serial.h
deleted
100644 → 0
View file @
f4445c95
/*
* include/asm-arm/arch-adifcc/serial.h
*
* Author: Deepak Saxena <dsaxena@mvista.com>
*
* Copyright (c) 2001 MontaVista Software, Inc.
*/
#include <linux/config.h>
/*
* This assumes you have a 1.8432 MHz clock for your UART.
*
* It'd be nice if someone built a serial card with a 24.576 MHz
* clock, since the 16550A is capable of handling a top speed of 1.5
* megabits/second; but this requires the faster clock.
*/
#define BASE_BAUD ( 1852000 / 16 )
/* Standard COM flags */
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
#ifdef CONFIG_ARCH_ADI_EVB
/*
* One serial port, int goes to FIQ, so we run in polled mode
*/
#define STD_SERIAL_PORT_DEFNS \
/* UART CLK PORT IRQ FLAGS */
\
{ 0, BASE_BAUD, 0xff400000, 0, STD_COM_FLAGS }
/* ttyS0 */
#define EXTRA_SERIAL_PORT_DEFNS
#endif
include/asm-arm/arch-adifcc/system.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/system.h
*
* 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.
*/
static
inline
void
arch_idle
(
void
)
{
#if 0
cpu_do_idle();
#endif
}
static
inline
void
arch_reset
(
char
mode
)
{
if
(
1
&&
mode
==
's'
)
{
/* Jump into ROM at address 0 */
cpu_reset
(
0
);
}
else
{
/* Use on-chip reset capability */
}
}
include/asm-arm/arch-adifcc/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/time.h
*
*/
/*
* No on board timer, implementation @ arch/arm/kernel/xscale-time.c
*/
include/asm-arm/arch-adifcc/timex.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/timex.h
*
* XScale architecture timex specifications
*/
/* This is for a timer based on the XS80200's PMU counter */
#define CLOCK_TICK_RATE 600000000
/* Underlying HZ */
include/asm-arm/arch-adifcc/uncompress.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/uncompress.h
*
* Author: Deepak Saxena <dsaxena@mvista.com>
*
* Copyright (c) 2001 MontaVista Software, Inc.
*
*/
#define UART_BASE ((volatile unsigned char *)0x00400000)
static
__inline__
void
putc
(
char
c
)
{
while
((
UART_BASE
[
5
]
&
0x60
)
!=
0x60
);
UART_BASE
[
0
]
=
c
;
}
/*
* This does not append a newline
*/
static
void
puts
(
const
char
*
s
)
{
while
(
*
s
)
{
putc
(
*
s
);
if
(
*
s
==
'\n'
)
putc
(
'\r'
);
s
++
;
}
}
/*
* nothing to do
*/
#define arch_decomp_setup()
#define arch_decomp_wdog()
include/asm-arm/arch-adifcc/vmalloc.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-adifcc/vmalloc.h
*/
/*
* Just any arbitrary offset to the start of the vmalloc VM area: the
* current 8MB value just means that there will be a 8MB "hole" after the
* physical memory until the kernel virtual memory starts. That means that
* any out-of-bounds memory accesses will hopefully be caught.
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
* area for the same reason. ;)
*/
#define VMALLOC_OFFSET (8*1024*1024)
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
#define VMALLOC_END (0xe8000000)
include/asm-arm/arch-cl7500/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-cl7500/time.h
*
* Copyright (c) 1996-2000 Russell King.
*
* Changelog:
* 24-Sep-1996 RMK Created
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
*/
extern
void
ioctime_init
(
void
);
static
irqreturn_t
timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
do_timer
(
regs
);
do_set_rtc
();
do_profile
(
regs
);
{
/* Twinkle the lights. */
static
int
count
,
state
=
0xff00
;
if
(
count
--
==
0
)
{
state
^=
0x100
;
count
=
25
;
*
((
volatile
unsigned
int
*
)
LED_ADDRESS
)
=
state
;
}
}
return
IRQ_HANDLED
;
}
/*
* Set up timer interrupt.
*/
void
__init
time_init
(
void
)
{
ioctime_init
();
timer_irq
.
handler
=
timer_interrupt
;
setup_irq
(
IRQ_TIMER
,
&
timer_irq
);
}
include/asm-arm/arch-epxa10db/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-epxa10db/time.h
*
* Copyright (C) 2001 Altera Corporation
*
* 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/arch/hardware.h>
#define TIMER00_TYPE (volatile unsigned int*)
#include <asm/arch/timer00.h>
/*
* IRQ handler for the timer
*/
static
irqreturn_t
excalibur_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
// ...clear the interrupt
*
TIMER0_CR
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
|=
TIMER0_CR_CI_MSK
;
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
)
{
timer_irq
.
handler
=
excalibur_timer_interrupt
;
/*
* Make irqs happen for the system timer
*/
setup_irq
(
IRQ_TIMER0
,
&
timer_irq
);
/* Start the timer */
*
TIMER0_LIMIT
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
(
unsigned
int
)(
EXC_AHB2_CLK_FREQUENCY
/
200
);
*
TIMER0_PRESCALE
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
1
;
*
TIMER0_CR
(
IO_ADDRESS
(
EXC_TIMER00_BASE
))
=
TIMER0_CR_IE_MSK
|
TIMER0_CR_S_MSK
;
}
include/asm-arm/arch-integrator/platform.h
View file @
9013ca59
...
@@ -457,6 +457,10 @@
...
@@ -457,6 +457,10 @@
#define mSEC_25 (mSEC_1 * 25)
#define mSEC_25 (mSEC_1 * 25)
#define SEC_1 (mSEC_1 * 1000)
#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_BASE 0x10000000
#define INTEGRATOR_CSR_SIZE 0x10000000
#define INTEGRATOR_CSR_SIZE 0x10000000
...
...
include/asm-arm/arch-iop3xx/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-iop80310/time.h
*
* Author: Nicolas Pitre
* 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/asm-arm/arch-ixp4xx/platform.h
View file @
9013ca59
...
@@ -58,6 +58,7 @@ struct ixp4xx_i2c_pins {
...
@@ -58,6 +58,7 @@ struct ixp4xx_i2c_pins {
*/
*/
extern
void
ixp4xx_map_io
(
void
);
extern
void
ixp4xx_map_io
(
void
);
extern
void
ixp4xx_init_irq
(
void
);
extern
void
ixp4xx_init_irq
(
void
);
extern
void
ixp4xx_init_time
(
void
);
extern
void
ixp4xx_pci_preinit
(
void
);
extern
void
ixp4xx_pci_preinit
(
void
);
struct
pci_sys_data
;
struct
pci_sys_data
;
extern
int
ixp4xx_setup
(
int
nr
,
struct
pci_sys_data
*
sys
);
extern
int
ixp4xx_setup
(
int
nr
,
struct
pci_sys_data
*
sys
);
...
...
include/asm-arm/arch-ixp4xx/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-ixp4xx/time.h
*
* We implement timer code in arch/arm/mach-ixp4xx/time.c
*
*/
include/asm-arm/arch-rpc/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-rpc/time.h
*
* Copyright (C) 1996-2000 Russell King.
*
* 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.
*
* Changelog:
* 24-Sep-1996 RMK Created
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
*/
extern
void
ioctime_init
(
void
);
static
irqreturn_t
timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
do_timer
(
regs
);
do_set_rtc
();
do_profile
(
regs
);
return
IRQ_HANDLED
;
}
/*
* Set up timer interrupt.
*/
void
__init
time_init
(
void
)
{
ioctime_init
();
timer_irq
.
handler
=
timer_interrupt
;
setup_irq
(
IRQ_TIMER
,
&
timer_irq
);
}
include/asm-arm/arch-shark/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-shark/time.h
*
* by Alexander Schulz
*
* derived from include/asm-arm/arch-ebsa110/time.h
* Copyright (c) 1996,1997,1998 Russell King.
*/
#include <asm/leds.h>
#include <asm/param.h>
#define IRQ_TIMER 0
#define HZ_TIME ((1193180 + HZ/2) / HZ)
static
irqreturn_t
timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
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
)
{
unsigned
long
flags
;
outb
(
0x34
,
0x43
);
/* binary, mode 0, LSB/MSB, Ch 0 */
outb
(
HZ_TIME
&
0xff
,
0x40
);
/* LSB of count */
outb
(
HZ_TIME
>>
8
,
0x40
);
timer_irq
.
handler
=
timer_interrupt
;
setup_irq
(
IRQ_TIMER
,
&
timer_irq
);
}
include/asm-arm/arch-versatile/time.h
deleted
100644 → 0
View file @
f4445c95
/*
* linux/include/asm-arm/arch-versatile/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>
/*
* Where is the timer (VA)?
*/
#define TIMER0_VA_BASE IO_ADDRESS(VERSATILE_TIMER0_1_BASE)
#define TIMER1_VA_BASE (IO_ADDRESS(VERSATILE_TIMER0_1_BASE) + 0x20)
#define TIMER2_VA_BASE IO_ADDRESS(VERSATILE_TIMER2_3_BASE)
#define TIMER3_VA_BASE (IO_ADDRESS(VERSATILE_TIMER2_3_BASE) + 0x20)
#define VA_IC_BASE IO_ADDRESS(VERSATILE_VIC_BASE)
/*
* How long is the timer interval?
*/
#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10)
#if TIMER_INTERVAL >= 0x100000
#define TIMER_RELOAD (TIMER_INTERVAL >> 8)
/* Divide by 256 */
#define TIMER_CTRL 0x88
/* Enable, Clock / 256 */
#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC)
#elif TIMER_INTERVAL >= 0x10000
#define TIMER_RELOAD (TIMER_INTERVAL >> 4)
/* Divide by 16 */
#define TIMER_CTRL 0x84
/* Enable, Clock / 16 */
#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC)
#else
#define TIMER_RELOAD (TIMER_INTERVAL)
#define TIMER_CTRL 0x80
/* Enable */
#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
);
/*
* Returns number of ms since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
*/
static
unsigned
long
versatile_gettimeoffset
(
void
)
{
volatile
TimerStruct_t
*
timer0
=
(
TimerStruct_t
*
)
TIMER0_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
=
timer0
->
TimerValue
&
0xffff
;
do
{
ticks1
=
ticks2
;
status
=
__raw_readl
(
VA_IC_BASE
+
VIC_IRQ_RAW_STATUS
);
ticks2
=
timer0
->
TimerValue
&
0xffff
;
}
while
(
ticks2
>
ticks1
);
/*
* Number of ticks since last interrupt.
*/
ticks1
=
TIMER_RELOAD
-
ticks2
;
/*
* Interrupt pending? If so, we've reloaded once already.
*
* FIXME: Need to check this is effectively timer 0 that expires
*/
if
(
status
&
IRQMASK_TIMERINT0_1
)
ticks1
+=
TIMER_RELOAD
;
/*
* Convert the ticks to usecs
*/
return
TICKS2USECS
(
ticks1
);
}
/*
* IRQ handler for the timer
*/
static
irqreturn_t
versatile_timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
volatile
TimerStruct_t
*
timer0
=
(
volatile
TimerStruct_t
*
)
TIMER0_VA_BASE
;
// ...clear the interrupt
timer0
->
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
;
volatile
TimerStruct_t
*
timer3
=
(
volatile
TimerStruct_t
*
)
TIMER3_VA_BASE
;
/*
* set clock frequency:
* VERSATILE_REFCLK is 32KHz
* VERSATILE_TIMCLK is 1MHz
*/
*
(
volatile
unsigned
int
*
)
IO_ADDRESS
(
VERSATILE_SCTL_BASE
)
|=
((
VERSATILE_TIMCLK
<<
VERSATILE_TIMER1_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER2_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER3_EnSel
)
|
(
VERSATILE_TIMCLK
<<
VERSATILE_TIMER4_EnSel
));
timer_irq
.
handler
=
versatile_timer_interrupt
;
/*
* Initialise to a known state (all timers off)
*/
timer0
->
TimerControl
=
0
;
timer1
->
TimerControl
=
0
;
timer2
->
TimerControl
=
0
;
timer3
->
TimerControl
=
0
;
timer0
->
TimerLoad
=
TIMER_RELOAD
;
timer0
->
TimerValue
=
TIMER_RELOAD
;
timer0
->
TimerControl
=
TIMER_CTRL
|
0x40
|
TIMER_CTRL_IE
;
/* periodic + IE */
/*
* Make irqs happen for the system timer
*/
setup_irq
(
IRQ_TIMERINT0_1
,
&
timer_irq
);
gettimeoffset
=
versatile_gettimeoffset
;
}
include/asm-arm/mach/arch.h
View file @
9013ca59
...
@@ -45,6 +45,7 @@ struct machine_desc {
...
@@ -45,6 +45,7 @@ struct machine_desc {
struct
meminfo
*
);
struct
meminfo
*
);
void
(
*
map_io
)(
void
);
/* IO mapping function */
void
(
*
map_io
)(
void
);
/* IO mapping function */
void
(
*
init_irq
)(
void
);
void
(
*
init_irq
)(
void
);
void
(
*
init_time
)(
void
);
void
(
*
init_machine
)(
void
);
void
(
*
init_machine
)(
void
);
};
};
...
@@ -87,6 +88,9 @@ const struct machine_desc __mach_desc_##_type \
...
@@ -87,6 +88,9 @@ const struct machine_desc __mach_desc_##_type \
#define INITIRQ(_func) \
#define INITIRQ(_func) \
.init_irq = _func,
.init_irq = _func,
#define INITTIME(_func) \
.init_time = _func,
#define INIT_MACHINE(_func) \
#define INIT_MACHINE(_func) \
.init_machine = _func,
.init_machine = _func,
...
...
include/asm-arm/
arch-adifcc/dma
.h
→
include/asm-arm/
mach/time
.h
View file @
9013ca59
/*
/*
* linux/include/asm-arm/
arch-80200fcc/dma
.h
* linux/include/asm-arm/
mach/time
.h
*
*
* Copyright (C) 200
1
MontaVista Software, Inc.
* Copyright (C) 200
4
MontaVista Software, Inc.
*
*
* This program is free software; you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
* published by the Free Software Foundation.
*/
*/
#ifndef __ASM_AR
CH_DMA
_H
#ifndef __ASM_AR
M_MACH_TIME
_H
#define __ASM_AR
CH_DMA
_H
#define __ASM_AR
M_MACH_TIME
_H
#define MAX_DMA_ADDRESS 0xffffffff
extern
void
(
*
init_arch_time
)(
void
);
/* No DMA */
extern
int
(
*
set_rtc
)(
void
);
#define MAX_DMA_CHANNELS 0
extern
unsigned
long
(
*
gettimeoffset
)(
void
);
#endif
/* _ASM_ARCH_DMA_H */
void
timer_tick
(
struct
pt_regs
*
);
#endif
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