Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
3a895e95
Commit
3a895e95
authored
Oct 06, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
66c9a93b
5e108b76
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
86 additions
and
19 deletions
+86
-19
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+2
-0
arch/arm/mach-pxa/sleep.S
arch/arm/mach-pxa/sleep.S
+39
-2
arch/arm/mach-s3c2410/irq.c
arch/arm/mach-s3c2410/irq.c
+45
-17
No files found.
arch/arm/boot/compressed/head.S
View file @
3a895e95
...
@@ -349,11 +349,13 @@ LC0: .word LC0 @ r1
...
@@ -349,11 +349,13 @@ LC0: .word LC0 @ r1
LC1
:
.
word
reloc_end
-
reloc_start
LC1
:
.
word
reloc_end
-
reloc_start
.
size
LC0
,
.
-
LC0
.
size
LC0
,
.
-
LC0
#ifdef CONFIG_ARCH_RPC
.
globl
params
.
globl
params
params
:
ldr
r0
,
=
params_phys
params
:
ldr
r0
,
=
params_phys
mov
pc
,
lr
mov
pc
,
lr
.
ltorg
.
ltorg
.
align
.
align
#endif
/*
/*
*
Turn
on
the
cache
.
We
need
to
setup
some
page
tables
so
that
we
*
Turn
on
the
cache
.
We
need
to
setup
some
page
tables
so
that
we
...
...
arch/arm/mach-pxa/sleep.S
View file @
3a895e95
...
@@ -66,6 +66,37 @@ ENTRY(pxa_cpu_suspend)
...
@@ -66,6 +66,37 @@ ENTRY(pxa_cpu_suspend)
@
prepare
pointer
to
physical
address
0
(
virtual
mapping
in
generic
.
c
)
@
prepare
pointer
to
physical
address
0
(
virtual
mapping
in
generic
.
c
)
mov
r2
,
#
UNCACHED_PHYS_0
mov
r2
,
#
UNCACHED_PHYS_0
@
Intel
PXA255
Specification
Update
notes
problems
@
about
suspending
with
PXBus
operating
above
133
MHz
@
(
see
Errata
31
,
GPIO
output
signals
,
...
unpredictable
in
sleep
@
@
We
keep
the
change
-
down
close
to
the
actual
suspend
on
SDRAM
@
as
possible
to
eliminate
messing
about
with
the
refresh
clock
@
as
the
system
will
restore
with
the
original
speed
settings
@
@
Ben
Dooks
,
13
-
Sep
-
2004
ldr
r6
,
=
CCCR
ldr
r8
,
[
r6
]
@
keep
original
value
for
resume
@
ensure
x1
for
run
and
turbo
mode
with
memory
clock
bic
r7
,
r8
,
#
CCCR_M_MASK
|
CCCR_N_MASK
orr
r7
,
r7
,
#(
1
<<
5
)
|
(
2
<<
7
)
@
check
that
the
memory
frequency
is
within
limits
and
r14
,
r7
,
#
CCCR_L_MASK
teq
r14
,
#
1
bicne
r7
,
r7
,
#
CCCR_L_MASK
orrne
r7
,
r7
,
#
1
@@
99
.53
MHz
@
get
ready
for
the
change
@
note
,
since
we
are
making
turbo
=
run
,
do
not
remove
the
turbo
@
as
this
may
cause
non
-
turbo
mode
on
resume
mrc
p14
,
0
,
r0
,
c6
,
c0
,
0
bic
r0
,
r0
,
#
2
@
clear
change
bit
mcr
p14
,
0
,
r0
,
c6
,
c0
,
0
orr
r0
,
r0
,
#
2
@
initiate
change
bit
@
align
execution
to
a
cache
line
@
align
execution
to
a
cache
line
b
1
f
b
1
f
...
@@ -76,6 +107,13 @@ ENTRY(pxa_cpu_suspend)
...
@@ -76,6 +107,13 @@ ENTRY(pxa_cpu_suspend)
@
All
needed
values
are
now
in
registers
.
@
All
needed
values
are
now
in
registers
.
@
These
last
instructions
should
be
in
cache
@
These
last
instructions
should
be
in
cache
@
initiate
the
frequency
change
...
str
r7
,
[
r6
]
mcr
p14
,
0
,
r0
,
c6
,
c0
,
0
@
restore
the
original
cpu
speed
value
for
resume
str
r8
,
[
r6
]
@
put
SDRAM
into
self
-
refresh
@
put
SDRAM
into
self
-
refresh
str
r5
,
[
r4
]
str
r5
,
[
r4
]
...
@@ -85,8 +123,7 @@ ENTRY(pxa_cpu_suspend)
...
@@ -85,8 +123,7 @@ ENTRY(pxa_cpu_suspend)
@
enter
sleep
mode
@
enter
sleep
mode
mcr
p14
,
0
,
r1
,
c7
,
c0
,
0
mcr
p14
,
0
,
r1
,
c7
,
c0
,
0
20
:
nop
20
:
b
20
b
@
loop
waiting
for
sleep
b
20
b
@
loop
waiting
for
sleep
/*
/*
*
cpu_pxa_resume
()
*
cpu_pxa_resume
()
...
...
arch/arm/mach-s3c2410/irq.c
View file @
3a895e95
...
@@ -27,7 +27,13 @@
...
@@ -27,7 +27,13 @@
*
*
* 21-Jul-2004 Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org>
* 21-Jul-2004 Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org>
* Addition of ADC/TC demux
* Addition of ADC/TC demux
*/
*
* 04-Oct-2004 Klaus Fetscher <k.fetscher@fetron.de>
* Fix for set_irq_type() on low EINT numbers
*
* 05-Oct-2004 Ben Dooks <ben@simtec.co.uk>
* Tidy up KF's patch and sort out new release
*/
#include <linux/init.h>
#include <linux/init.h>
...
@@ -46,9 +52,6 @@
...
@@ -46,9 +52,6 @@
#include <asm/arch/regs-irq.h>
#include <asm/arch/regs-irq.h>
#include <asm/arch/regs-gpio.h>
#include <asm/arch/regs-gpio.h>
#if 0
#include <asm/debug-ll.h>
#endif
#define irqdbf(x...)
#define irqdbf(x...)
#define irqdbf2(x...)
#define irqdbf2(x...)
...
@@ -195,13 +198,20 @@ s3c_irqext_type(unsigned int irq, unsigned int type)
...
@@ -195,13 +198,20 @@ s3c_irqext_type(unsigned int irq, unsigned int type)
unsigned
long
gpcon_offset
,
extint_offset
;
unsigned
long
gpcon_offset
,
extint_offset
;
unsigned
long
newvalue
=
0
,
value
;
unsigned
long
newvalue
=
0
,
value
;
if
((
irq
>=
IRQ_EINT0
)
&&
(
irq
<=
IRQ_EINT
7
))
if
((
irq
>=
IRQ_EINT0
)
&&
(
irq
<=
IRQ_EINT
3
))
{
{
gpcon_reg
=
S3C2410_GPFCON
;
gpcon_reg
=
S3C2410_GPFCON
;
extint_reg
=
S3C2410_EXTINT0
;
extint_reg
=
S3C2410_EXTINT0
;
gpcon_offset
=
(
irq
-
IRQ_EINT0
)
*
2
;
gpcon_offset
=
(
irq
-
IRQ_EINT0
)
*
2
;
extint_offset
=
(
irq
-
IRQ_EINT0
)
*
4
;
extint_offset
=
(
irq
-
IRQ_EINT0
)
*
4
;
}
}
else
if
((
irq
>=
IRQ_EINT4
)
&&
(
irq
<=
IRQ_EINT7
))
{
gpcon_reg
=
S3C2410_GPFCON
;
extint_reg
=
S3C2410_EXTINT0
;
gpcon_offset
=
(
irq
-
(
EXTINT_OFF
))
*
2
;
extint_offset
=
(
irq
-
(
EXTINT_OFF
))
*
4
;
}
else
if
((
irq
>=
IRQ_EINT8
)
&&
(
irq
<=
IRQ_EINT15
))
else
if
((
irq
>=
IRQ_EINT8
)
&&
(
irq
<=
IRQ_EINT15
))
{
{
gpcon_reg
=
S3C2410_GPGCON
;
gpcon_reg
=
S3C2410_GPGCON
;
...
@@ -269,6 +279,13 @@ static struct irqchip s3c_irqext_chip = {
...
@@ -269,6 +279,13 @@ static struct irqchip s3c_irqext_chip = {
.
type
=
s3c_irqext_type
.
type
=
s3c_irqext_type
};
};
static
struct
irqchip
s3c_irq_eint0t4
=
{
.
ack
=
s3c_irq_ack
,
.
mask
=
s3c_irq_mask
,
.
unmask
=
s3c_irq_unmask
,
.
type
=
s3c_irqext_type
};
/* mask values for the parent registers for each of the interrupt types */
/* mask values for the parent registers for each of the interrupt types */
#define INTMSK_UART0 (1UL << (IRQ_UART0 - IRQ_EINT0))
#define INTMSK_UART0 (1UL << (IRQ_UART0 - IRQ_EINT0))
...
@@ -549,6 +566,7 @@ s3c_irq_demux_uart2(unsigned int irq,
...
@@ -549,6 +566,7 @@ s3c_irq_demux_uart2(unsigned int irq,
void
__init
s3c2410_init_irq
(
void
)
void
__init
s3c2410_init_irq
(
void
)
{
{
unsigned
long
pend
;
unsigned
long
pend
;
unsigned
long
last
;
int
irqno
;
int
irqno
;
int
i
;
int
i
;
...
@@ -556,48 +574,51 @@ void __init s3c2410_init_irq(void)
...
@@ -556,48 +574,51 @@ void __init s3c2410_init_irq(void)
/* first, clear all interrupts pending... */
/* first, clear all interrupts pending... */
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_EINTPEND
);
pend
=
__raw_readl
(
S3C2410_EINTPEND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
break
;
__raw_writel
(
pend
,
S3C2410_EINTPEND
);
__raw_writel
(
pend
,
S3C2410_EINTPEND
);
printk
(
"irq: clearing pending ext status %08x
\n
"
,
(
int
)
pend
);
printk
(
"irq: clearing pending ext status %08x
\n
"
,
(
int
)
pend
);
last
=
pend
;
}
}
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_INTPND
);
pend
=
__raw_readl
(
S3C2410_INTPND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
break
;
__raw_writel
(
pend
,
S3C2410_SRCPND
);
__raw_writel
(
pend
,
S3C2410_SRCPND
);
__raw_writel
(
pend
,
S3C2410_INTPND
);
__raw_writel
(
pend
,
S3C2410_INTPND
);
printk
(
"irq: clearing pending status %08x
\n
"
,
(
int
)
pend
);
printk
(
"irq: clearing pending status %08x
\n
"
,
(
int
)
pend
);
last
=
pend
;
}
}
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_SUBSRCPND
);
pend
=
__raw_readl
(
S3C2410_SUBSRCPND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
break
;
printk
(
"irq: clearing subpending status %08x
\n
"
,
(
int
)
pend
);
printk
(
"irq: clearing subpending status %08x
\n
"
,
(
int
)
pend
);
__raw_writel
(
pend
,
S3C2410_SUBSRCPND
);
__raw_writel
(
pend
,
S3C2410_SUBSRCPND
);
last
=
pend
;
}
}
/* register the main interrupts */
/* register the main interrupts */
irqdbf
(
"s3c2410_init_irq: registering s3c2410 interrupt handlers
\n
"
);
irqdbf
(
"s3c2410_init_irq: registering s3c2410 interrupt handlers
\n
"
);
for
(
irqno
=
IRQ_
EINT0
;
irqno
<=
IRQ_ADCPARENT
;
irqno
++
)
{
for
(
irqno
=
IRQ_
BATT_FLT
;
irqno
<=
IRQ_ADCPARENT
;
irqno
++
)
{
/* set all the s3c2410 internal irqs */
/* set all the s3c2410 internal irqs */
switch
(
irqno
)
{
switch
(
irqno
)
{
case
IRQ_EINT4t7
:
case
IRQ_EINT8t23
:
/* these are already dealt with, so should never
* appear */
break
;
/* deal with the special IRQs (cascaded) */
/* deal with the special IRQs (cascaded) */
case
IRQ_UART0
:
case
IRQ_UART0
:
...
@@ -632,6 +653,13 @@ void __init s3c2410_init_irq(void)
...
@@ -632,6 +653,13 @@ void __init s3c2410_init_irq(void)
/* external interrupts */
/* external interrupts */
for
(
irqno
=
IRQ_EINT0
;
irqno
<=
IRQ_EINT3
;
irqno
++
)
{
irqdbf
(
"registering irq %d (ext int)
\n
"
,
irqno
);
set_irq_chip
(
irqno
,
&
s3c_irq_eint0t4
);
set_irq_handler
(
irqno
,
do_edge_IRQ
);
set_irq_flags
(
irqno
,
IRQF_VALID
);
}
for
(
irqno
=
IRQ_EINT4
;
irqno
<=
IRQ_EINT23
;
irqno
++
)
{
for
(
irqno
=
IRQ_EINT4
;
irqno
<=
IRQ_EINT23
;
irqno
++
)
{
irqdbf
(
"registering irq %d (extended s3c irq)
\n
"
,
irqno
);
irqdbf
(
"registering irq %d (extended s3c irq)
\n
"
,
irqno
);
set_irq_chip
(
irqno
,
&
s3c_irqext_chip
);
set_irq_chip
(
irqno
,
&
s3c_irqext_chip
);
...
...
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