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
52a39acd
Commit
52a39acd
authored
Apr 14, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
8887a32b
8a7b626f
Changes
46
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
46 changed files
with
510 additions
and
671 deletions
+510
-671
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+105
-68
arch/arm/def-configs/shark
arch/arm/def-configs/shark
+83
-144
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+1
-0
arch/arm/kernel/bios32.c
arch/arm/kernel/bios32.c
+3
-0
arch/arm/kernel/process.c
arch/arm/kernel/process.c
+13
-9
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+1
-1
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+8
-6
arch/arm/mach-footbridge/isa-irq.c
arch/arm/mach-footbridge/isa-irq.c
+6
-4
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/adsbitsy.c
+1
-31
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/badge4.c
+1
-36
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/graphicsmaster.c
+1
-30
arch/arm/mach-sa1100/neponset.c
arch/arm/mach-sa1100/neponset.c
+11
-38
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/pfs168.c
+1
-34
arch/arm/mach-sa1100/sa1111.c
arch/arm/mach-sa1100/sa1111.c
+129
-20
arch/arm/mach-sa1100/sa1111.h
arch/arm/mach-sa1100/sa1111.h
+3
-7
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/system3.c
+1
-34
arch/arm/mach-shark/pci.c
arch/arm/mach-shark/pci.c
+2
-0
arch/arm/mm/abort-ev5ej.S
arch/arm/mm/abort-ev5ej.S
+1
-1
arch/arm/mm/consistent.c
arch/arm/mm/consistent.c
+25
-32
arch/arm/tools/mach-types
arch/arm/tools/mach-types
+2
-1
drivers/video/cyber2000fb.c
drivers/video/cyber2000fb.c
+2
-2
include/asm-arm/arch-adifcc/system.h
include/asm-arm/arch-adifcc/system.h
+1
-2
include/asm-arm/arch-anakin/system.h
include/asm-arm/arch-anakin/system.h
+1
-2
include/asm-arm/arch-arc/system.h
include/asm-arm/arch-arc/system.h
+1
-2
include/asm-arm/arch-cl7500/system.h
include/asm-arm/arch-cl7500/system.h
+3
-3
include/asm-arm/arch-clps711x/system.h
include/asm-arm/arch-clps711x/system.h
+1
-1
include/asm-arm/arch-ebsa110/system.h
include/asm-arm/arch-ebsa110/system.h
+8
-21
include/asm-arm/arch-ebsa285/system.h
include/asm-arm/arch-ebsa285/system.h
+2
-19
include/asm-arm/arch-epxa10db/system.h
include/asm-arm/arch-epxa10db/system.h
+2
-2
include/asm-arm/arch-integrator/system.h
include/asm-arm/arch-integrator/system.h
+2
-2
include/asm-arm/arch-iop310/system.h
include/asm-arm/arch-iop310/system.h
+1
-4
include/asm-arm/arch-l7200/system.h
include/asm-arm/arch-l7200/system.h
+1
-2
include/asm-arm/arch-nexuspci/system.h
include/asm-arm/arch-nexuspci/system.h
+2
-3
include/asm-arm/arch-pxa/system.h
include/asm-arm/arch-pxa/system.h
+1
-7
include/asm-arm/arch-rpc/system.h
include/asm-arm/arch-rpc/system.h
+2
-19
include/asm-arm/arch-sa1100/system.h
include/asm-arm/arch-sa1100/system.h
+1
-7
include/asm-arm/arch-shark/memory.h
include/asm-arm/arch-shark/memory.h
+2
-0
include/asm-arm/arch-shark/system.h
include/asm-arm/arch-shark/system.h
+1
-1
include/asm-arm/arch-tbox/system.h
include/asm-arm/arch-tbox/system.h
+2
-19
include/asm-arm/cpu-multi26.h
include/asm-arm/cpu-multi26.h
+1
-1
include/asm-arm/cpu-multi32.h
include/asm-arm/cpu-multi32.h
+6
-7
include/asm-arm/cpu-single.h
include/asm-arm/cpu-single.h
+4
-5
include/asm-arm/hardware/sa1111.h
include/asm-arm/hardware/sa1111.h
+39
-23
include/asm-arm/io.h
include/asm-arm/io.h
+14
-4
include/asm-arm/mmu_context.h
include/asm-arm/mmu_context.h
+1
-1
include/asm-arm/pci.h
include/asm-arm/pci.h
+11
-16
No files found.
arch/arm/boot/compressed/head.S
View file @
52a39acd
...
...
@@ -206,26 +206,15 @@ LC0: .word __bss_start
*
r7
=
architecture
number
*
r8
=
run
-
time
address
of
"start"
*
On
exit
,
*
r
0
,
r1
,
r2
,
r3
,
r8
,
r9
corrupted
*
r
1
,
r2
,
r3
,
r8
,
r9
,
r12
corrupted
*
This
routine
must
preserve
:
*
r4
,
r5
,
r6
,
r7
*/
.
align
5
cache_on
:
ldr
r1
,
proc_sa110_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
5
@
catch
SA110
and
SA1100
beq
1
f
ldr
r1
,
proc_sa1110_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
4
beq
1
f
ldr
r1
,
proc_xscale_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
16
@
movne
pc
,
lr
bne
cache_off
1
:
sub
r3
,
r4
,
#
16384
@
Page
directory
size
cache_on
:
mov
r3
,
#
8
@
cache_on
function
b
call_cache_fn
__cache_on
:
sub
r3
,
r4
,
#
16384
@
Page
directory
size
bic
r3
,
r3
,
#
0xff
@
Align
the
pointer
bic
r3
,
r3
,
#
0x3f00
/*
...
...
@@ -277,8 +266,9 @@ cache_on: ldr r1, proc_sa110_type
mov
pc
,
lr
/*
*
This
code
is
relocatable
.
It
is
relocated
by
the
above
code
to
the
end
*
of
the
kernel
and
executed
there
.
During
this
time
,
we
have
no
stacks
.
*
All
code
following
this
line
is
relocatable
.
It
is
relocated
by
*
the
above
code
to
the
end
of
the
decompressed
kernel
image
and
*
executed
there
.
During
this
time
,
we
have
no
stacks
.
*
*
r0
=
decompressed
kernel
length
*
r1
-
r3
=
unused
...
...
@@ -309,47 +299,101 @@ call_kernel: bl cache_clean_flush
mov
pc
,
r4
@
call
kernel
/*
*
Here
follow
the
relocatable
cache
support
functions
for
*
the
various
processors
.
*
Here
follow
the
relocatable
cache
support
functions
for
the
*
various
processors
.
This
is
a
generic
hook
for
locating
an
*
entry
and
jumping
to
an
instruction
at
the
specified
offset
*
from
the
start
of
the
block
.
Please
note
this
is
all
position
*
independent
code
.
*
*
r1
=
corrupted
*
r2
=
corrupted
*
r3
=
block
offset
*
r6
=
CPU
ID
*
r12
=
corrupted
*/
call_cache_fn
:
adr
r12
,
proc_types
1
:
ldr
r1
,
[
r12
,
#
0
]
@
get
value
ldr
r2
,
[
r12
,
#
4
]
@
get
mask
eor
r1
,
r1
,
r6
@
(
real
^
match
)
tst
r1
,
r2
@
&
mask
addeq
pc
,
r12
,
r3
@
call
cache
function
add
r12
,
r12
,
#
4
*
5
b
1
b
/*
*
Table
for
cache
operations
.
This
is
basically
:
*
-
CPU
ID
match
*
-
CPU
ID
mask
*
-
'cache on'
method
instruction
*
-
'cache off'
method
instruction
*
-
'cache flush'
method
instruction
*
*
We
match
an
entry
using
:
((
real_id
^
match
)
&
mask
)
==
0
*
*
Writethrough
caches
generally
only
need
'on'
and
'off'
*
methods
.
Writeback
caches
_must_
have
the
flush
method
*
defined
.
*/
.
type
proc_types
,#
object
proc_types
:
.
word
0x41560600
@
ARM6
/
610
.
word
0xffffffe0
b
__arm6_cache_off
b
__arm6_cache_off
mov
pc
,
lr
.
type
proc_sa110_type
,#
object
proc_sa110_type
:
.
word
0x4401a100
.
size
proc_sa110_type
,
.
-
proc_sa110_type
.
word
0x41007000
@
ARM7
/
710
.
word
0xfff8fe00
b
__arm7_cache_off
b
__arm7_cache_off
mov
pc
,
lr
.
type
proc_sa1110_type
,#
object
proc_sa1110_type
:
.
word
0x6901b110
.
size
proc_sa1110_type
,
.
-
proc_sa1110_type
.
word
0x41807200
@
ARM720T
(
writethrough
)
.
word
0xffffff00
b
__cache_on
b
__armv4_cache_off
mov
pc
,
lr
.
word
0x4401a100
@
sa110
/
sa1100
.
word
0xffffffe0
b
__cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0x6901b110
@
sa1110
.
word
0xfffffff0
b
__cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0x69050000
@
xscale
.
word
0xffff0000
b
__cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0
@
unrecognised
type
.
word
0
mov
pc
,
lr
mov
pc
,
lr
mov
pc
,
lr
.
size
proc_types
,
.
-
proc_types
/*
*
Turn
off
the
Cache
and
MMU
.
ARMv3
does
not
support
*
reading
the
control
register
,
but
ARMv4
does
.
*
*
On
entry
,
r6
=
processor
ID
*
On
exit
,
r0
,
r1
corrupted
*
On
exit
,
r0
,
r1
,
r2
,
r3
,
r12
corrupted
*
This
routine
must
preserve
:
r4
,
r6
,
r7
*/
.
align
5
cache_off
:
#ifdef CONFIG_CPU_ARM610
eor
r1
,
r6
,
#
0x41000000
eor
r1
,
r1
,
#
0x00560000
bic
r1
,
r1
,
#
0x0000001f
teq
r1
,
#
0x00000600
mov
r0
,
#
0x00000060
@
ARM6
control
reg
.
beq
__armv3_cache_off
#endif
#ifdef CONFIG_CPU_ARM710
eor
r1
,
r6
,
#
0x41000000
bic
r1
,
r1
,
#
0x00070000
bic
r1
,
r1
,
#
0x000000ff
teq
r1
,
#
0x00007000
@
ARM7
teqne
r1
,
#
0x00007100
@
ARM710
mov
r0
,
#
0x00000070
@
ARM7
control
reg
.
beq
__armv3_cache_off
#endif
cache_off
:
mov
r3
,
#
12
@
cache_off
function
b
call_cache_fn
__armv4_cache_off
:
mrc
p15
,
0
,
r0
,
c1
,
c0
bic
r0
,
r0
,
#
0x000d
mcr
p15
,
0
,
r0
,
c1
,
c0
@
turn
MMU
and
cache
off
...
...
@@ -358,6 +402,14 @@ cache_off:
mcr
p15
,
0
,
r0
,
c8
,
c7
@
invalidate
whole
TLB
v4
mov
pc
,
lr
__arm6_cache_off
:
mov
r0
,
#
0x00000060
@
ARM6
control
reg
.
b
__armv3_cache_off
__arm7_cache_off
:
mov
r0
,
#
0x00000070
@
ARM7
control
reg
.
b
__armv3_cache_off
__armv3_cache_off
:
mcr
p15
,
0
,
r0
,
c1
,
c0
@
turn
MMU
and
cache
off
mov
r0
,
#
0
...
...
@@ -371,25 +423,16 @@ __armv3_cache_off:
*
On
entry
,
*
r6
=
processor
ID
*
On
exit
,
*
r1
,
r2
,
r12
corrupted
*
r1
,
r2
,
r
3
,
r
12
corrupted
*
This
routine
must
preserve
:
*
r
4
,
r6
,
r7
*
r
0
,
r4
,
r5
,
r6
,
r7
*/
.
align
5
cache_clean_flush
:
ldr
r1
,
proc_sa110_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
5
@
catch
SA110
and
SA1100
beq
1
f
ldr
r1
,
proc_sa1110_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
4
beq
1
f
ldr
r1
,
proc_xscale_type
eor
r1
,
r1
,
r6
movs
r1
,
r1
,
lsr
#
16
movne
pc
,
lr
1
:
mov
r3
,
#
16
b
call_cache_fn
__armv4_cache_flush
:
bic
r1
,
pc
,
#
31
add
r2
,
r1
,
#
65536
@
2
x
the
largest
dcache
size
1
:
ldr
r12
,
[
r1
],
#
32
@
s
/
w
flush
D
cache
...
...
@@ -400,12 +443,6 @@ cache_clean_flush:
mcr
p15
,
0
,
r1
,
c7
,
c10
,
4
@
drain
WB
mov
pc
,
lr
.
type
proc_xscale_type
,#
object
proc_xscale_type
:
.
word
0x69050000
.
size
proc_xscale_type
,
.
-
proc_xscale_type
/*
*
Various
debugging
routines
for
printing
hex
characters
and
*
memory
,
which
again
must
be
relocatable
.
...
...
arch/arm/def-configs/shark
View file @
52a39acd
This diff is collapsed.
Click to expand it.
arch/arm/kernel/armksyms.c
View file @
52a39acd
...
...
@@ -68,6 +68,7 @@ extern void __umoddi3(void);
extern
void
__udivmoddi4
(
void
);
extern
void
__udivsi3
(
void
);
extern
void
__umodsi3
(
void
);
extern
void
abort
(
void
);
extern
void
ret_from_exception
(
void
);
extern
void
fpundefinstr
(
void
);
...
...
arch/arm/kernel/bios32.c
View file @
52a39acd
...
...
@@ -426,6 +426,9 @@ void __init pcibios_fixup_bus(struct pci_bus *bus)
pci_read_config_word
(
dev
,
PCI_COMMAND
,
&
cmd
);
cmd
|=
features
;
pci_write_config_word
(
dev
,
PCI_COMMAND
,
cmd
);
pci_write_config_byte
(
dev
,
PCI_CACHE_LINE_SIZE
,
SMP_CACHE_BYTES
>>
2
);
}
/*
...
...
arch/arm/kernel/process.c
View file @
52a39acd
...
...
@@ -31,14 +31,6 @@
#include <asm/processor.h>
#include <asm/uaccess.h>
/*
* Values for cpu_do_idle()
*/
#define IDLE_WAIT_SLOW 0
#define IDLE_WAIT_FAST 1
#define IDLE_CLOCK_SLOW 2
#define IDLE_CLOCK_FAST 3
extern
const
char
*
processor_modes
[];
extern
void
setup_mm_for_reboot
(
char
mode
);
...
...
@@ -77,6 +69,18 @@ __setup("hlt", hlt_setup);
void
(
*
pm_idle
)(
void
);
void
(
*
pm_power_off
)(
void
);
/*
* This is our default idle handler. We need to disable
* interrupts here to ensure we don't miss a wakeup call.
*/
static
void
default_idle
(
void
)
{
__cli
();
if
(
!
need_resched
()
&&
!
hlt_counter
)
arch_idle
();
__sti
();
}
/*
* The idle thread. We try to conserve power, while trying to keep
* overall latency low. The architecture specific idle is passed
...
...
@@ -89,7 +93,7 @@ void cpu_idle(void)
while
(
1
)
{
void
(
*
idle
)(
void
)
=
pm_idle
;
if
(
!
idle
)
idle
=
arch
_idle
;
idle
=
default
_idle
;
leds_event
(
led_idle_start
);
while
(
!
need_resched
())
idle
();
...
...
arch/arm/kernel/setup.c
View file @
52a39acd
...
...
@@ -188,7 +188,7 @@ static inline void dump_cache(const char *prefix, unsigned int cache)
{
unsigned
int
mult
=
2
+
(
CACHE_M
(
cache
)
?
1
:
0
);
printk
(
"%s
size %dK associativity %d line length %d sets %d
\n
"
,
printk
(
"%s
: %d bytes, associativity %d, %d byte lines, %d sets
\n
"
,
prefix
,
mult
<<
(
8
+
CACHE_SIZE
(
cache
)),
(
mult
<<
CACHE_ASSOC
(
cache
))
>>
1
,
...
...
arch/arm/kernel/traps.c
View file @
52a39acd
...
...
@@ -546,12 +546,14 @@ void abort(void)
void
__init
trap_init
(
void
)
{
extern
void
__trap_init
(
void
*
);
__trap_init
((
void
*
)
vectors_base
());
if
(
vectors_base
()
!=
0
)
printk
(
KERN_DEBUG
"Relocating machine vectors to 0x%08x
\n
"
,
vectors_base
());
extern
void
__trap_init
(
unsigned
long
);
unsigned
long
base
=
vectors_base
();
__trap_init
(
base
);
flush_icache_range
(
base
,
base
+
PAGE_SIZE
);
if
(
base
!=
0
)
printk
(
KERN_DEBUG
"Relocating machine vectors to 0x%08lx
\n
"
,
base
);
#ifdef CONFIG_CPU_32
modify_domain
(
DOMAIN_USER
,
DOMAIN_CLIENT
);
#endif
...
...
arch/arm/mach-footbridge/isa-irq.c
View file @
52a39acd
...
...
@@ -106,8 +106,10 @@ static struct irqaction irq_cascade = { handler: no_action, name: "cascade", };
static
struct
resource
pic1_resource
=
{
"pic1"
,
0x20
,
0x3f
};
static
struct
resource
pic2_resource
=
{
"pic2"
,
0xa0
,
0xbf
};
void
__init
isa_init_irq
(
unsigned
int
irq
)
void
__init
isa_init_irq
(
unsigned
int
host_
irq
)
{
unsigned
int
irq
;
/*
* Setup, and then probe for an ISA PIC
* If the PIC is not there, then we
...
...
@@ -133,10 +135,10 @@ void __init isa_init_irq(unsigned int irq)
outb
(
0xff
,
PIC_MASK_HI
);
/* mask all IRQs */
}
else
{
printk
(
KERN_INFO
"IRQ: ISA PIC not found
\n
"
);
irq
=
-
1
;
host_irq
=
(
unsigned
int
)
-
1
;
}
if
(
irq
!=
-
1
)
{
if
(
host_irq
!=
(
unsigned
int
)
-
1
)
{
for
(
irq
=
_ISA_IRQ
(
0
);
irq
<
_ISA_IRQ
(
8
);
irq
++
)
{
set_irq_chip
(
irq
,
&
isa_lo_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
...
...
@@ -153,7 +155,7 @@ void __init isa_init_irq(unsigned int irq)
request_resource
(
&
ioport_resource
,
&
pic2_resource
);
setup_irq
(
IRQ_ISA_CASCADE
,
&
irq_cascade
);
set_irq_chained_handler
(
irq
,
isa_irq_handler
);
set_irq_chained_handler
(
host_
irq
,
isa_irq_handler
);
/*
* On the NetWinder, don't automatically
...
...
arch/arm/mach-sa1100/adsbitsy.c
View file @
52a39acd
...
...
@@ -52,26 +52,10 @@ static int __init adsbitsy_init(void)
/*
* Probe for SA1111.
*/
ret
=
sa1111_
probe
(
0x1800000
0
);
ret
=
sa1111_
init
(
NULL
,
0x18000000
,
IRQ_GPIO
0
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* Enable PWM control for LCD
*/
...
...
@@ -81,20 +65,6 @@ static int __init adsbitsy_init(void)
SKPWM1
=
0x01
;
// Backlight
SKPEN1
=
1
;
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
set_GPIO_IRQ_edge
(
GPIO_GPIO0
,
GPIO_RISING_EDGE
);
sa1111_init_irq
(
IRQ_GPIO0
);
return
0
;
}
...
...
arch/arm/mach-sa1100/badge4.c
View file @
52a39acd
...
...
@@ -34,8 +34,6 @@
static
int
__init
badge4_sa1111_init
(
void
)
{
int
ret
;
/*
* Ensure that the memory bus request/grant signals are setup,
* and the grant is held in its inactive state
...
...
@@ -45,40 +43,7 @@ static int __init badge4_sa1111_init(void)
/*
* Probe for SA1111.
*/
ret
=
sa1111_probe
(
BADGE4_SA1111_BASE
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
sa1111_init_irq
(
BADGE4_IRQ_GPIO_SA1111
);
return
0
;
return
sa1111_init
(
NULL
,
BADGE4_SA1111_BASE
,
BADGE4_IRQ_GPIO_SA1111
);
}
static
int
__init
badge4_init
(
void
)
...
...
arch/arm/mach-sa1100/graphicsmaster.c
View file @
52a39acd
...
...
@@ -42,26 +42,10 @@ static int __init graphicsmaster_init(void)
/*
* Probe for SA1111.
*/
ret
=
sa1111_
probe
(
0x18000000
);
ret
=
sa1111_
init
(
NULL
,
0x18000000
,
ADS_EXT_IRQ
(
0
)
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* Enable PWM control for LCD
*/
...
...
@@ -71,19 +55,6 @@ static int __init graphicsmaster_init(void)
SKPWM1
=
0x01
;
// Backlight
SKPEN1
=
1
;
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
sa1111_init_irq
(
ADS_EXT_IRQ
(
0
));
return
0
;
}
...
...
arch/arm/mach-sa1100/neponset.c
View file @
52a39acd
...
...
@@ -10,6 +10,7 @@
#include <linux/tty.h>
#include <linux/ioport.h>
#include <linux/serial_core.h>
#include <linux/device.h>
#include <asm/hardware.h>
#include <asm/irq.h>
...
...
@@ -21,6 +22,10 @@
#include "sa1111.h"
static
struct
device
neponset_device
=
{
name:
"Neponset"
,
bus_id:
"nep_bus"
,
};
/*
* Install handler for Neponset IRQ. Note that we have to loop here
...
...
@@ -125,6 +130,10 @@ static int __init neponset_init(void)
return
-
ENODEV
;
}
ret
=
device_register
(
&
neponset_device
);
if
(
ret
)
return
ret
;
neponset_init_irq
();
/*
...
...
@@ -139,45 +148,9 @@ static int __init neponset_init(void)
/* FIXME: setup MSC2 */
/*
* Probe for a SA1111.
*/
ret
=
sa1111_probe
(
0x40000000
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
* Probe and initialise the SA1111.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
/*
* Initialise SA1111 IRQs
*/
sa1111_init_irq
(
IRQ_NEPONSET_SA1111
);
return
0
;
return
sa1111_init
(
&
neponset_device
,
0x40000000
,
IRQ_NEPONSET_SA1111
);
}
__initcall
(
neponset_init
);
...
...
arch/arm/mach-sa1100/pfs168.c
View file @
52a39acd
...
...
@@ -35,40 +35,7 @@ static int __init pfs168_init(void)
/*
* Probe for SA1111.
*/
ret
=
sa1111_probe
(
0x40000000
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
sa1111_init_irq
(
IRQ_GPIO25
);
/* SA1111 IRQ on GPIO 25 */
return
0
;
return
sa1111_init
(
NULL
,
0x40000000
,
IRQ_GPIO25
);
}
__initcall
(
pfs168_init
);
...
...
arch/arm/mach-sa1100/sa1111.c
View file @
52a39acd
...
...
@@ -23,8 +23,11 @@
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/device.h>
#include <linux/slab.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/mach/irq.h>
...
...
@@ -32,11 +35,9 @@
#include "sa1111.h"
struct
resource
sa1111_resource
=
{
name:
"SA1111"
,
};
struct
sa1111_device
*
sa1111
;
EXPORT_SYMBOL
(
sa1111
_resource
);
EXPORT_SYMBOL
(
sa1111
);
/*
* SA1111 interrupt support. Since clearing an IRQ while there are
...
...
@@ -65,6 +66,9 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
for
(
i
=
IRQ_SA1111_START
+
32
;
stat1
;
i
++
,
stat1
>>=
1
)
if
(
stat1
&
1
)
do_edge_IRQ
(
i
,
irq_desc
+
i
,
regs
);
/* For level-based interrupts */
desc
->
chip
->
unmask
(
irq
);
}
#define SA1111_IRQMASK_LO(x) (1 << (x - IRQ_SA1111_START))
...
...
@@ -198,7 +202,7 @@ static struct irqchip sa1111_high_chip = {
type:
sa1111_type_highirq
,
};
void
__init
sa1111_init_irq
(
int
irq_nr
)
static
void
__init
sa1111_init_irq
(
int
irq_nr
)
{
unsigned
int
irq
;
...
...
@@ -239,6 +243,21 @@ void __init sa1111_init_irq(int irq_nr)
set_irq_chained_handler
(
irq_nr
,
sa1111_irq_handler
);
}
static
int
sa1111_suspend
(
struct
device
*
dev
,
u32
state
,
u32
level
)
{
return
0
;
}
static
int
sa1111_resume
(
struct
device
*
dev
,
u32
level
)
{
return
0
;
}
static
struct
device_driver
sa1111_device_driver
=
{
suspend:
sa1111_suspend
,
resume:
sa1111_resume
,
};
/**
* sa1111_probe - probe for a single SA1111 chip.
* @phys_addr: physical address of device.
...
...
@@ -251,38 +270,71 @@ void __init sa1111_init_irq(int irq_nr)
* %-EBUSY physical address already marked in-use.
* %0 successful.
*/
int
__init
sa1111_probe
(
unsigned
long
phys_addr
)
static
int
__init
sa1111_probe
(
struct
device
*
parent
,
unsigned
long
phys_addr
)
{
struct
sa1111_device
*
sa
;
unsigned
long
id
;
int
ret
=
-
ENODEV
;
sa1111_resource
.
start
=
phys_addr
;
sa1111_resource
.
end
=
phys_addr
+
0x2000
;
sa
=
kmalloc
(
sizeof
(
struct
sa1111_device
),
GFP_KERNEL
);
if
(
!
sa
)
return
-
ENOMEM
;
memset
(
sa
,
0
,
sizeof
(
struct
sa1111_device
));
sa
->
resource
.
name
=
"SA1111"
;
sa
->
resource
.
start
=
phys_addr
;
sa
->
resource
.
end
=
phys_addr
+
0x2000
;
if
(
request_resource
(
&
iomem_resource
,
&
sa
1111_
resource
))
{
if
(
request_resource
(
&
iomem_resource
,
&
sa
->
resource
))
{
ret
=
-
EBUSY
;
goto
out
;
}
/* eventually ioremap... */
sa
->
base
=
(
void
*
)
0xf4000000
;
if
(
!
sa
->
base
)
{
ret
=
-
ENOMEM
;
goto
release
;
}
/*
* Probe for the chip. Only touch the SBI registers.
*/
id
=
SBI_SKID
;
id
=
readl
(
sa
->
base
+
SA1111_SKID
)
;
if
((
id
&
SKID_ID_MASK
)
!=
SKID_SA1111_ID
)
{
printk
(
KERN_DEBUG
"SA1111 not detected: ID = %08lx
\n
"
,
id
);
ret
=
-
ENODEV
;
goto
release
;
goto
unmap
;
}
/*
* We found the chip.
*/
strcpy
(
sa
->
dev
.
name
,
"SA1111"
);
sprintf
(
sa
->
dev
.
bus_id
,
"%8.8lx"
,
phys_addr
);
sa
->
dev
.
parent
=
parent
;
sa
->
dev
.
driver
=
&
sa1111_device_driver
;
ret
=
device_register
(
&
sa
->
dev
);
if
(
ret
)
printk
(
"sa1111 device_register failed: %d
\n
"
,
ret
);
printk
(
KERN_INFO
"SA1111 Microprocessor Companion Chip: "
"silicon revision %lx, metal revision %lx
\n
"
,
(
id
&
SKID_SIREV_MASK
)
>>
4
,
(
id
&
SKID_MTREV_MASK
));
sa1111
=
sa
;
return
0
;
unmap:
// iounmap(sa->base);
release:
release_resource
(
&
sa
1111_
resource
);
release_resource
(
&
sa
->
resource
);
out:
kfree
(
sa
);
return
ret
;
}
...
...
@@ -302,7 +354,8 @@ int __init sa1111_probe(unsigned long phys_addr)
*/
void
sa1111_wake
(
void
)
{
unsigned
long
flags
;
struct
sa1111_device
*
sa
=
sa1111
;
unsigned
long
flags
,
r
;
local_irq_save
(
flags
);
...
...
@@ -317,8 +370,11 @@ void sa1111_wake(void)
/*
* Turn VCO on, and disable PLL Bypass.
*/
SBI_SKCR
&=
~
SKCR_VCO_OFF
;
SBI_SKCR
|=
SKCR_PLL_BYPASS
|
SKCR_OE_EN
;
r
=
readl
(
sa
->
base
+
SA1111_SKCR
);
r
&=
~
SKCR_VCO_OFF
;
writel
(
r
,
sa
->
base
+
SA1111_SKCR
);
r
|=
SKCR_PLL_BYPASS
|
SKCR_OE_EN
;
writel
(
r
,
sa
->
base
+
SA1111_SKCR
);
/*
* Wait lock time. SA1111 manual _doesn't_
...
...
@@ -329,7 +385,8 @@ void sa1111_wake(void)
/*
* Enable RCLK. We also ensure that RDYEN is set.
*/
SBI_SKCR
|=
SKCR_RCLKEN
|
SKCR_RDYEN
;
r
|=
SKCR_RCLKEN
|
SKCR_RDYEN
;
writel
(
r
,
sa
->
base
+
SA1111_SKCR
);
/*
* Wait 14 RCLK cycles for the chip to finish coming out
...
...
@@ -340,18 +397,26 @@ void sa1111_wake(void)
/*
* Ensure all clocks are initially off.
*/
SKPCR
=
0
;
writel
(
0
,
sa
->
base
+
SA1111_SKPCR
)
;
local_irq_restore
(
flags
);
}
void
sa1111_doze
(
void
)
{
if
(
SKPCR
&
SKPCR_UCLKEN
)
{
struct
sa1111_device
*
sa
=
sa1111
;
unsigned
long
flags
;
local_irq_save
(
flags
);
if
(
readl
(
sa
->
base
+
SA1111_SKPCR
)
&
SKPCR_UCLKEN
)
{
local_irq_restore
(
flags
);
printk
(
"SA1111 doze mode refused
\n
"
);
return
;
}
SBI_SKCR
&=
~
SKCR_RCLKEN
;
writel
(
readl
(
sa
->
base
+
SA1111_SKCR
)
&
~
SKCR_RCLKEN
,
sa
->
base
+
SA1111_SKCR
);
local_irq_restore
(
flags
);
}
/*
...
...
@@ -359,12 +424,13 @@ void sa1111_doze(void)
*/
void
sa1111_configure_smc
(
int
sdram
,
unsigned
int
drac
,
unsigned
int
cas_latency
)
{
struct
sa1111_device
*
sa
=
sa1111
;
unsigned
int
smcr
=
SMCR_DTIM
|
SMCR_MBGE
|
FInsrt
(
drac
,
SMCR_DRAC
);
if
(
cas_latency
==
3
)
smcr
|=
SMCR_CLAT
;
SBI_SMCR
=
smcr
;
writel
(
smcr
,
sa
->
base
+
SA1111_SMCR
)
;
}
/* According to the "Intel StrongARM SA-1111 Microprocessor Companion
...
...
@@ -432,3 +498,46 @@ int sa1111_check_dma_bug(dma_addr_t addr)
}
EXPORT_SYMBOL
(
sa1111_check_dma_bug
);
int
sa1111_init
(
struct
device
*
parent
,
unsigned
long
phys
,
unsigned
int
irq
)
{
int
ret
;
ret
=
sa1111_probe
(
parent
,
phys
);
if
(
ret
<
0
)
return
ret
;
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
/*
* Initialise SA1111 IRQs
*/
sa1111_init_irq
(
irq
);
return
0
;
}
arch/arm/mach-sa1100/sa1111.h
View file @
52a39acd
/*
* linux/arch/arm/mach-sa1100/sa1111.h
*/
struct
device
;
/*
* Probe for a SA1111 chip.
*/
extern
int
sa1111_probe
(
unsigned
long
phys
);
extern
int
sa1111_init
(
struct
device
*
parent
,
unsigned
long
phys
,
unsigned
int
irq
);
/*
* Wake up a SA1111 chip.
...
...
@@ -16,9 +18,3 @@ extern void sa1111_wake(void);
* Doze the SA1111 chip.
*/
extern
void
sa1111_doze
(
void
);
/*
* Configure the SA1111 shared memory controller.
*/
extern
void
sa1111_configure_smc
(
int
sdram
,
unsigned
int
drac
,
unsigned
int
cas_latency
);
extern
void
sa1111_init_irq
(
int
irq_nr
);
arch/arm/mach-sa1100/system3.c
View file @
52a39acd
...
...
@@ -426,45 +426,12 @@ static int __init system3_init(void)
/*
* Probe for a SA1111.
*/
ret
=
sa1111_
probe
(
PT_SA1111_BASE
);
ret
=
sa1111_
init
(
NULL
,
PT_SA1111_BASE
,
IRQ_SYSTEM3_SA1111
);
if
(
ret
<
0
)
{
printk
(
KERN_WARNING
"PT Digital Board: no SA1111 found!
\n
"
);
goto
DONE
;
}
/*
* We found it. Wake the chip up.
*/
sa1111_wake
();
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* don't corrupt the SDRAM. Note that this ungates the SA1111's
* MBGNT signal, so we must have called sa1110_mb_disable()
* beforehand.
*/
sa1111_configure_smc
(
1
,
FExtr
(
MDCNFG
,
MDCNFG_SA1110_DRAC0
),
FExtr
(
MDCNFG
,
MDCNFG_SA1110_TDL0
));
/*
* We only need to turn on DCLK whenever we want to use the
* DMA. It can otherwise be held firmly in the off position.
*/
SKPCR
|=
SKPCR_DCLKEN
;
/*
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
/*
* Initialise SA1111 IRQs
*/
sa1111_init_irq
(
IRQ_SYSTEM3_SA1111
);
#if defined( CONFIG_CPU_FREQ )
ret
=
cpufreq_register_notifier
(
&
system3_clkchg_block
);
if
(
ret
!=
0
)
{
...
...
arch/arm/mach-shark/pci.c
View file @
52a39acd
...
...
@@ -20,6 +20,8 @@ static int __init shark_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
else
return
255
;
}
extern
void
__init
via82c505_preinit
(
void
*
sysdata
);
struct
hw_pci
shark_pci
__initdata
=
{
setup:
via82c505_setup
,
swizzle:
pci_std_swizzle
,
...
...
arch/arm/mm/abort-ev5ej.S
View file @
52a39acd
...
...
@@ -28,7 +28,7 @@ ENTRY(v5ej_early_abort)
ldrneh
r3
,
[
r2
]
@
read
aborted
thumb
instruction
ldreq
r3
,
[
r2
]
@
read
aborted
ARM
instruction
movne
r3
,
r3
,
lsl
#(
21
-
12
)
@
move
thumb
bit
11
to
ARM
bit
20
tst
r
2
,
#
1
<<
20
@
L
=
1
->
write
tst
r
3
,
#
1
<<
20
@
L
=
1
->
write
orreq
r1
,
r1
,
#
1
<<
8
@
yes
.
1
:
mov
pc
,
lr
...
...
arch/arm/mm/consistent.c
View file @
52a39acd
...
...
@@ -25,10 +25,12 @@
/*
* This allocates one page of cache-coherent memory space and returns
* both the virtual and a "dma" address to that space. It is not clear
* whether this could be called from an interrupt context or not. For
* now, we expressly forbid it, especially as some of the stuff we do
* here is not interrupt context safe.
* both the virtual and a "dma" address to that space.
*
* We should allow this function to be called from interrupt context.
* However, we call ioremap, which needs to fiddle around with various
* things (like the vmlist_lock, and allocating page tables). These
* things aren't interrupt safe (yet).
*
* Note that this does *not* zero the allocated area!
*/
...
...
@@ -36,8 +38,9 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
{
struct
page
*
page
,
*
end
,
*
free
;
unsigned
long
order
;
void
*
ret
,
*
virt
;
void
*
ret
;
/* FIXME */
if
(
in_interrupt
())
BUG
();
...
...
@@ -48,22 +51,22 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
if
(
!
page
)
goto
no_page
;
/*
* We could do with a page_to_phys and page_to_bus here.
*/
virt
=
page_address
(
page
);
*
dma_handle
=
virt_to_bus
(
virt
);
ret
=
__ioremap
(
virt_to_phys
(
virt
),
size
,
0
);
*
dma_handle
=
page_to_bus
(
page
);
ret
=
__ioremap
(
page_to_phys
(
page
),
size
,
0
);
if
(
!
ret
)
goto
no_remap
;
#if 0 /* ioremap_does_flush_cache_all */
{
void *virt = page_address(page);
/*
* we need to ensure that there are no cachelines in use, or
* worse dirty in this area. Really, we don't need to do
* this since __ioremap does a flush_cache_all() anyway. --rmk
*/
invalidate_dcache_range(virt, virt + size);
}
#endif
/*
...
...
@@ -72,7 +75,6 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
* We also mark the pages in use as reserved so that
* remap_page_range works.
*/
page
=
virt_to_page
(
virt
);
free
=
page
+
(
size
>>
PAGE_SHIFT
);
end
=
page
+
(
1
<<
order
);
...
...
@@ -93,18 +95,12 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
void
*
pci_alloc_consistent
(
struct
pci_dev
*
hwdev
,
size_t
size
,
dma_addr_t
*
handle
)
{
void
*
__ret
;
int
__gfp
=
GFP_KERNEL
;
int
gfp
=
GFP_KERNEL
;
#ifdef CONFIG_PCI
if
((
hwdev
)
==
NULL
||
(
hwdev
)
->
dma_mask
!=
0xffffffff
)
#endif
__gfp
|=
GFP_DMA
;
if
(
hwdev
==
NULL
||
hwdev
->
dma_mask
!=
0xffffffff
)
gfp
|=
GFP_DMA
;
__ret
=
consistent_alloc
(
__gfp
,
(
size
),
(
handle
));
return
__ret
;
return
consistent_alloc
(
gfp
,
size
,
handle
);
}
/*
...
...
@@ -114,19 +110,16 @@ void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *handl
void
consistent_free
(
void
*
vaddr
,
size_t
size
,
dma_addr_t
handle
)
{
struct
page
*
page
,
*
end
;
void
*
virt
;
if
(
in_interrupt
())
BUG
();
virt
=
bus_to_virt
(
handle
);
/*
* More messing around with the MM internals. This is
* sick, but then so is remap_page_range().
*/
size
=
PAGE_ALIGN
(
size
);
page
=
virt_to_page
(
virt
);
page
=
virt_to_page
(
bus_to_virt
(
handle
)
);
end
=
page
+
(
size
>>
PAGE_SHIFT
);
for
(;
page
<
end
;
page
++
)
...
...
arch/arm/tools/mach-types
View file @
52a39acd
...
...
@@ -6,7 +6,7 @@
# To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk
#
# Last update:
Sun Mar 24 11:48:1
0 2002
# Last update:
Fri Mar 29 15:51:2
0 2002
#
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
#
...
...
@@ -179,3 +179,4 @@ jornada56x ARCH_JORNADA56X JORNADA56X 167
active SA1100_ACTIVE ACTIVE 168
iq80321 ARCH_IQ80321 IQ80321 169
wid SA1100_WID WID 170
sabinal ARCH_SABINAL SABINAL 171
drivers/video/cyber2000fb.c
View file @
52a39acd
...
...
@@ -1704,8 +1704,8 @@ cyberpro_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
* Use MCLK from BIOS. FIXME: what about hotplug?
*/
#ifndef __arm__
cfb
->
mclk_mult
=
cyber2000_grphr
(
MCLK_MULT
,
cfb
);
cfb
->
mclk_div
=
cyber2000_grphr
(
MCLK_DIV
,
cfb
);
cfb
->
mclk_mult
=
cyber2000_grphr
(
EXT_
MCLK_MULT
,
cfb
);
cfb
->
mclk_div
=
cyber2000_grphr
(
EXT_
MCLK_DIV
,
cfb
);
#else
/*
* MCLK on the NetWinder and the Shark is fixed at 75MHz
...
...
include/asm-arm/arch-adifcc/system.h
View file @
52a39acd
...
...
@@ -11,8 +11,7 @@
static
inline
void
arch_idle
(
void
)
{
#if 0
if (!hlt_counter)
cpu_do_idle(0);
cpu_do_idle();
#endif
}
...
...
include/asm-arm/arch-anakin/system.h
View file @
52a39acd
...
...
@@ -15,8 +15,7 @@
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
static
inline
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
}
...
...
include/asm-arm/arch-arc/system.h
View file @
52a39acd
...
...
@@ -8,9 +8,8 @@
* published by the Free Software Foundation.
*/
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
while
(
!
need_resched
()
&&
!
hlt_counter
);
}
static
inline
void
arch_reset
(
char
mode
)
...
...
include/asm-arm/arch-cl7500/system.h
View file @
52a39acd
...
...
@@ -7,10 +7,10 @@
#define __ASM_ARCH_SYSTEM_H
#include <asm/hardware/iomd.h>
#include <asm/io.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
while
(
!
need_resched
()
&&
!
hlt_counter
)
iomd_writeb
(
0
,
IOMD_SUSMODE
);
}
...
...
include/asm-arm/arch-clps711x/system.h
View file @
52a39acd
...
...
@@ -22,7 +22,7 @@
#include <asm/hardware/clps7111.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
clps_writel
(
1
,
HALT
);
__asm__
__volatile__
(
...
...
include/asm-arm/arch-ebsa110/system.h
View file @
52a39acd
...
...
@@ -20,31 +20,18 @@
* Instead, we spin, polling the IRQ_STAT register for the occurrence
* of any interrupt with core clock down to the memory clock.
*/
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
const
char
*
irq_stat
=
(
char
*
)
0xff000000
;
long
flags
;
if
(
!
hlt_counter
)
return
;
do
{
/* disable interrupts */
cli
();
/* check need_resched here to avoid races */
if
(
need_resched
())
{
sti
();
return
;
}
/* disable clock switching */
asm
volatile
(
"mcr%? p15, 0, ip, c15, c2, 2"
);
/* wait for an interrupt to occur */
while
(
!*
irq_stat
);
/* enable clock switching */
asm
volatile
(
"mcr%? p15, 0, ip, c15, c1, 2"
);
/* allow the interrupt to happen */
sti
();
}
while
(
!
need_resched
());
}
#define arch_reset(mode) cpu_reset(0x80000000)
...
...
include/asm-arm/arch-ebsa285/system.h
View file @
52a39acd
...
...
@@ -13,26 +13,9 @@
#include <asm/leds.h>
#include <asm/mach-types.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
unsigned
long
start_idle
;
start_idle
=
jiffies
;
do
{
if
(
need_resched
()
||
hlt_counter
)
goto
slow_out
;
cpu_do_idle
(
IDLE_WAIT_FAST
);
}
while
(
time_before
(
jiffies
,
start_idle
+
HZ
/
50
));
cpu_do_idle
(
IDLE_CLOCK_SLOW
);
while
(
!
need_resched
()
&&
!
hlt_counter
)
{
cpu_do_idle
(
IDLE_WAIT_SLOW
);
}
cpu_do_idle
(
IDLE_CLOCK_FAST
);
slow_out:
cpu_do_idle
();
}
static
inline
void
arch_reset
(
char
mode
)
...
...
include/asm-arm/arch-epxa10db/system.h
View file @
52a39acd
...
...
@@ -24,13 +24,13 @@
#include <asm/arch/platform.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
/*
* This should do all the clock switching
* and wait for interrupt tricks
*/
cpu_do_idle
(
0
);
cpu_do_idle
();
}
extern
__inline__
void
arch_reset
(
char
mode
)
...
...
include/asm-arm/arch-integrator/system.h
View file @
52a39acd
...
...
@@ -23,13 +23,13 @@
#include <asm/arch/platform.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
/*
* This should do all the clock switching
* and wait for interrupt tricks
*/
cpu_do_idle
(
0
);
cpu_do_idle
();
}
static
inline
void
arch_reset
(
char
mode
)
...
...
include/asm-arm/arch-iop310/system.h
View file @
52a39acd
...
...
@@ -10,10 +10,7 @@
static
inline
void
arch_idle
(
void
)
{
if
(
!
hlt_counter
)
{
cpu_do_idle
(
0
);
}
cpu_do_idle
();
}
...
...
include/asm-arm/arch-l7200/system.h
View file @
52a39acd
...
...
@@ -12,9 +12,8 @@
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
/* fixme: this needs to be cleaned up (converted from ASM code) --rmk */
*
(
unsigned
long
*
)(
IO_BASE
+
0x50004
)
=
1
;
/* idle mode */
}
...
...
include/asm-arm/arch-nexuspci/system.h
View file @
52a39acd
...
...
@@ -14,10 +14,9 @@
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
while
(
!
need_resched
()
&&
!
hlt_counter
)
cpu_do_idle
(
IDLE_WAIT_SLOW
);
cpu_do_idle
();
}
#define arch_reset(mode) do { } while (0)
...
...
include/asm-arm/arch-pxa/system.h
View file @
52a39acd
...
...
@@ -14,13 +14,7 @@
static
inline
void
arch_idle
(
void
)
{
if
(
!
hlt_counter
)
{
int
flags
;
local_irq_save
(
flags
);
if
(
!
need_resched
())
cpu_do_idle
(
0
);
local_irq_restore
(
flags
);
}
cpu_do_idle
();
}
...
...
include/asm-arm/arch-rpc/system.h
View file @
52a39acd
...
...
@@ -11,26 +11,9 @@
#include <asm/hardware/iomd.h>
#include <asm/io.h>
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
unsigned
long
start_idle
;
start_idle
=
jiffies
;
do
{
if
(
need_resched
()
||
hlt_counter
)
goto
slow_out
;
cpu_do_idle
(
IDLE_WAIT_FAST
);
}
while
(
time_before
(
jiffies
,
start_idle
+
HZ
/
50
));
cpu_do_idle
(
IDLE_CLOCK_SLOW
);
while
(
!
need_resched
()
&&
!
hlt_counter
)
{
cpu_do_idle
(
IDLE_WAIT_SLOW
);
}
cpu_do_idle
(
IDLE_CLOCK_FAST
);
slow_out:
cpu_do_idle
();
}
static
inline
void
arch_reset
(
char
mode
)
...
...
include/asm-arm/arch-sa1100/system.h
View file @
52a39acd
...
...
@@ -7,13 +7,7 @@
static
inline
void
arch_idle
(
void
)
{
if
(
!
hlt_counter
)
{
int
flags
;
local_irq_save
(
flags
);
if
(
!
need_resched
())
cpu_do_idle
(
0
);
local_irq_restore
(
flags
);
}
cpu_do_idle
();
}
#ifdef CONFIG_SA1100_VICTOR
...
...
include/asm-arm/arch-shark/memory.h
View file @
52a39acd
...
...
@@ -38,6 +38,8 @@
#define __bus_to_virt__is_a_macro
#define __bus_to_virt(x) __phys_to_virt(x)
#define isa_virt_to_bus virt_to_bus
#define PHYS_TO_NID(addr) (0)
#endif
include/asm-arm/arch-shark/system.h
View file @
52a39acd
...
...
@@ -21,7 +21,7 @@ static void arch_reset(char mode)
}
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
}
...
...
include/asm-arm/arch-tbox/system.h
View file @
52a39acd
...
...
@@ -6,26 +6,9 @@
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
static
void
arch_idle
(
void
)
static
inline
void
arch_idle
(
void
)
{
unsigned
long
start_idle
;
start_idle
=
jiffies
;
do
{
if
(
need_resched
()
||
hlt_counter
)
goto
slow_out
;
cpu_do_idle
(
IDLE_WAIT_FAST
);
}
while
(
time_before
(
jiffies
,
start_idle
+
HZ
/
50
));
cpu_do_idle
(
IDLE_CLOCK_SLOW
);
while
(
!
need_resched
()
&&
!
hlt_counter
)
{
cpu_do_idle
(
IDLE_WAIT_SLOW
);
}
cpu_do_idle
(
IDLE_CLOCK_FAST
);
slow_out:
cpu_do_idle
();
}
#define arch_reset(mode) do { } while (0)
...
...
include/asm-arm/cpu-multi26.h
View file @
52a39acd
...
...
@@ -40,7 +40,7 @@ extern const struct processor arm3_processor_functions;
#define cpu_proc_init() processor._proc_init()
#define cpu_proc_fin() processor._proc_fin()
#define cpu_do_idle() do { } while (0)
#define cpu_switch_mm(pgd,
tsk
) processor._set_pgd(pgd)
#define cpu_switch_mm(pgd,
mm
) processor._set_pgd(pgd)
#define cpu_xchg_1(x,ptr) processor._xchg_1(x,ptr)
#define cpu_xchg_4(x,ptr) processor._xchg_4(x,ptr)
...
...
include/asm-arm/cpu-multi32.h
View file @
52a39acd
...
...
@@ -12,8 +12,7 @@
#include <asm/memory.h>
#include <asm/page.h>
/* forward-declare task_struct */
struct
task_struct
;
struct
mm_struct
;
/*
* Don't change this structure - ASM code
...
...
@@ -43,7 +42,7 @@ extern struct processor {
/*
* Idle the processor
*/
int
(
*
_do_idle
)(
int
mode
);
int
(
*
_do_idle
)(
void
);
/*
* Processor architecture specific
*/
...
...
@@ -93,7 +92,7 @@ extern struct processor {
/*
* Set the page table
*/
void
(
*
set_pgd
)(
unsigned
long
pgd_phys
);
void
(
*
set_pgd
)(
unsigned
long
pgd_phys
,
struct
mm_struct
*
mm
);
/*
* Set a PMD (handling IMP bit 4)
*/
...
...
@@ -113,7 +112,7 @@ extern const struct processor sa110_processor_functions;
#define cpu_proc_init() processor._proc_init()
#define cpu_proc_fin() processor._proc_fin()
#define cpu_reset(addr) processor.reset(addr)
#define cpu_do_idle(
mode) processor._do_idle(mode
)
#define cpu_do_idle(
) processor._do_idle(
)
#define cpu_cache_clean_invalidate_all() processor.cache.clean_invalidate_all()
#define cpu_cache_clean_invalidate_range(s,e,f) processor.cache.clean_invalidate_range(s,e,f)
...
...
@@ -126,11 +125,11 @@ extern const struct processor sa110_processor_functions;
#define cpu_icache_invalidate_range(s,e) processor.icache.invalidate_range(s,e)
#define cpu_icache_invalidate_page(vp) processor.icache.invalidate_page(vp)
#define cpu_set_pgd(pgd
) processor.pgtable.set_pgd(pgd
)
#define cpu_set_pgd(pgd
,mm) processor.pgtable.set_pgd(pgd,mm
)
#define cpu_set_pmd(pmdp, pmd) processor.pgtable.set_pmd(pmdp, pmd)
#define cpu_set_pte(ptep, pte) processor.pgtable.set_pte(ptep, pte)
#define cpu_switch_mm(pgd,
tsk) cpu_set_pgd(__virt_to_phys((unsigned long)(pgd))
)
#define cpu_switch_mm(pgd,
mm) cpu_set_pgd(__virt_to_phys((unsigned long)(pgd)),mm
)
#define cpu_get_pgd() \
({ \
...
...
include/asm-arm/cpu-single.h
View file @
52a39acd
...
...
@@ -44,15 +44,14 @@
#include <asm/memory.h>
#include <asm/page.h>
/* forward declare task_struct */
struct
task_struct
;
struct
mm_struct
;
/* declare all the functions as extern */
extern
void
cpu_data_abort
(
unsigned
long
pc
);
extern
void
cpu_check_bugs
(
void
);
extern
void
cpu_proc_init
(
void
);
extern
void
cpu_proc_fin
(
void
);
extern
int
cpu_do_idle
(
int
mode
);
extern
int
cpu_do_idle
(
void
);
extern
void
cpu_cache_clean_invalidate_all
(
void
);
extern
void
cpu_cache_clean_invalidate_range
(
unsigned
long
address
,
unsigned
long
end
,
int
flags
);
...
...
@@ -65,13 +64,13 @@ extern void cpu_dcache_clean_entry(unsigned long address);
extern
void
cpu_icache_invalidate_range
(
unsigned
long
start
,
unsigned
long
end
);
extern
void
cpu_icache_invalidate_page
(
void
*
virt_page
);
extern
void
cpu_set_pgd
(
unsigned
long
pgd_phys
);
extern
void
cpu_set_pgd
(
unsigned
long
pgd_phys
,
struct
mm_struct
*
mm
);
extern
void
cpu_set_pmd
(
pmd_t
*
pmdp
,
pmd_t
pmd
);
extern
void
cpu_set_pte
(
pte_t
*
ptep
,
pte_t
pte
);
extern
volatile
void
cpu_reset
(
unsigned
long
addr
);
#define cpu_switch_mm(pgd,
tsk) cpu_set_pgd(__virt_to_phys((unsigned long)(pgd))
)
#define cpu_switch_mm(pgd,
mm) cpu_set_pgd(__virt_to_phys((unsigned long)(pgd)),mm
)
#define cpu_get_pgd() \
({ \
...
...
include/asm-arm/hardware/sa1111.h
View file @
52a39acd
...
...
@@ -26,9 +26,7 @@
#define SA1111_v2p( x ) ((x) - SA1111_VBASE + SA1111_BASE)
#ifndef __ASSEMBLY__
extern
struct
resource
sa1111_resource
;
#define _SA1111(x) ((x) + sa1111_resource.start)
#define _SA1111(x) ((x) + sa1111->resource.start)
#endif
/*
...
...
@@ -51,7 +49,8 @@ extern struct resource sa1111_resource;
*/
#define __CCREG(x) __REGP(SA1111_VBASE + (x))
/* System Bus Interface (SBI)
/*
* System Bus Interface (SBI)
*
* Registers
* SKCR Control Register
...
...
@@ -127,28 +126,37 @@ extern struct resource sa1111_resource;
* SKPEN1 PWM1 Enable Register
* SKPWM1 PWM1 Clock Register
*/
#define _SKPCR _SA1111(0x0200)
#define _SKCDR _SA1111(0x0204)
#define _SKAUD _SA1111(0x0208)
#define _SKPMC _SA1111(0x020c)
#define _SKPTC _SA1111(0x0210)
#define _SKPEN0 _SA1111(0x0214)
#define _SKPWM0 _SA1111(0x0218)
#define _SKPEN1 _SA1111(0x021c)
#define _SKPWM1 _SA1111(0x0220)
#define SA1111_SKPCR 0x0200
#define SA1111_SKCDR 0x0204
#define SA1111_SKAUD 0x0208
#define SA1111_SKPMC 0x020c
#define SA1111_SKPTC 0x0210
#define SA1111_SKPEN0 0x0214
#define SA1111_SKPWN0 0x0218
#define SA1111_SKPEN1 0x021c
#define SA1111_SKPWM1 0x0220
#define _SKPCR _SA1111(SA1111_SKPCR)
#define _SKCDR _SA1111(SA1111_SKCDR)
#define _SKAUD _SA1111(SA1111_SKAUD)
#define _SKPMC _SA1111(SA1111_SKPMC)
#define _SKPTC _SA1111(SA1111_SKPTC)
#define _SKPEN0 _SA1111(SA1111_SKPEN0)
#define _SKPWM0 _SA1111(SA1111_SKPWM0)
#define _SKPEN1 _SA1111(SA1111_SKPEN1)
#define _SKPWM1 _SA1111(SA1111_SKPWM1)
#if LANGUAGE == C
#define SKPCR __CCREG(
0x0200
)
#define SKCDR __CCREG(
0x0204
)
#define SKAUD __CCREG(
0x0208
)
#define SKPMC __CCREG(
0x020c
)
#define SKPTC __CCREG(
0x0210
)
#define SKPEN0 __CCREG(
0x0214
)
#define SKPWM0 __CCREG(
0x0218
)
#define SKPEN1 __CCREG(
0x021c
)
#define SKPWM1 __CCREG(
0x0220
)
#define SKPCR __CCREG(
SA1111_SKPCR
)
#define SKCDR __CCREG(
SA1111_SKCDR
)
#define SKAUD __CCREG(
SA1111_SKAUD
)
#define SKPMC __CCREG(
SA1111_SKPMC
)
#define SKPTC __CCREG(
SA1111_SKPTC
)
#define SKPEN0 __CCREG(
SA1111_SKPEN0
)
#define SKPWM0 __CCREG(
SA1111_SKPWM0
)
#define SKPEN1 __CCREG(
SA1111_SKPEN1
)
#define SKPWM1 __CCREG(
SA1111_SKPWM1
)
#endif
/* LANGUAGE == C */
...
...
@@ -675,4 +683,12 @@ extern struct resource sa1111_resource;
#define PCSSR_S0_SLEEP (1<<0)
#define PCSSR_S1_SLEEP (1<<1)
struct
sa1111_device
{
struct
device
dev
;
struct
resource
resource
;
void
*
base
;
};
extern
struct
sa1111_device
*
sa1111
;
#endif
/* _ASM_ARCH_SA1111 */
include/asm-arm/io.h
View file @
52a39acd
...
...
@@ -22,6 +22,7 @@
#ifdef __KERNEL__
#include <linux/config.h>
#include <linux/types.h>
#include <asm/byteorder.h>
#include <asm/memory.h>
...
...
@@ -269,13 +270,22 @@ extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle);
extern
void
consistent_sync
(
void
*
vaddr
,
size_t
size
,
int
rw
);
/*
*
FIXME: I'm sure these will need to be changed for DISCONTIG
*
Change "struct page" to physical address.
*/
#ifdef CONFIG_DISCONTIG
#define page_to_phys(page) \
((((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \
+ page_zone(page)->zone_start_paddr)
#else
#define page_to_phys(page) \
(PHYS_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
#endif
/*
*
Change "struct page" to physical address
.
*
We should really eliminate virt_to_bus() here - it's depreciated
.
*/
#define page_to_
phys(page) (PHYS_OFFSET + ((page - mem_map) << PAGE_SHIFT))
#define page_to_bus(page) (PHYS_OFFSET + ((page - mem_map) << PAGE_SHIFT
))
#define page_to_
bus(page) \
(virt_to_bus(page_address(page)
))
/*
* can the hardware map this into one segment or not, given no other
...
...
include/asm-arm/mmu_context.h
View file @
52a39acd
...
...
@@ -43,7 +43,7 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct
task_struct
*
tsk
,
unsigned
int
cpu
)
{
if
(
prev
!=
next
)
cpu_switch_mm
(
next
->
pgd
,
tsk
);
cpu_switch_mm
(
next
->
pgd
,
next
);
}
#define activate_mm(prev, next) \
...
...
include/asm-arm/pci.h
View file @
52a39acd
...
...
@@ -95,30 +95,25 @@ pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int di
/* nothing to do */
}
/* Whether pci_unmap_{single,page} is a nop depends upon the
/*
* Whether pci_unmap_{single,page} is a nop depends upon the
* configuration.
*/
#ifdef CONFIG_SA1111
#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \
dma_addr_t ADDR_NAME;
#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \
__u32 LEN_NAME;
#define pci_unmap_addr(PTR, ADDR_NAME) \
((PTR)->ADDR_NAME)
#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \
(((PTR)->ADDR_NAME) = (VAL))
#define pci_unmap_len(PTR, LEN_NAME) \
((PTR)->LEN_NAME)
#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
(((PTR)->LEN_NAME) = (VAL))
#else
/* !(CONFIG_SA1111) */
#ifdef CONFIG_PCI
#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME;
#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME;
#define pci_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME)
#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL))
#define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME)
#define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL))
#else
#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
#define pci_unmap_addr(PTR, ADDR_NAME) (0)
#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0)
#define pci_unmap_len(PTR, LEN_NAME) (0)
#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
#endif
/* CONFIG_
SA1111
*/
#endif
/* CONFIG_
PCI
*/
/* Map a set of buffers described by scatterlist in streaming
* mode for DMA. This is the scather-gather version of the
...
...
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