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
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
LC1
:
.
word
reloc_end
-
reloc_start
.
size
LC0
,
.
-
LC0
#ifdef CONFIG_ARCH_RPC
.
globl
params
params
:
ldr
r0
,
=
params_phys
mov
pc
,
lr
.
ltorg
.
align
#endif
/*
*
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)
@
prepare
pointer
to
physical
address
0
(
virtual
mapping
in
generic
.
c
)
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
b
1
f
...
...
@@ -76,6 +107,13 @@ ENTRY(pxa_cpu_suspend)
@
All
needed
values
are
now
in
registers
.
@
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
str
r5
,
[
r4
]
...
...
@@ -85,8 +123,7 @@ ENTRY(pxa_cpu_suspend)
@
enter
sleep
mode
mcr
p14
,
0
,
r1
,
c7
,
c0
,
0
20
:
nop
b
20
b
@
loop
waiting
for
sleep
20
:
b
20
b
@
loop
waiting
for
sleep
/*
*
cpu_pxa_resume
()
...
...
arch/arm/mach-s3c2410/irq.c
View file @
3a895e95
...
...
@@ -27,7 +27,13 @@
*
* 21-Jul-2004 Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org>
* 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>
...
...
@@ -46,9 +52,6 @@
#include <asm/arch/regs-irq.h>
#include <asm/arch/regs-gpio.h>
#if 0
#include <asm/debug-ll.h>
#endif
#define irqdbf(x...)
#define irqdbf2(x...)
...
...
@@ -195,13 +198,20 @@ s3c_irqext_type(unsigned int irq, unsigned int type)
unsigned
long
gpcon_offset
,
extint_offset
;
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
;
extint_reg
=
S3C2410_EXTINT0
;
gpcon_offset
=
(
irq
-
IRQ_EINT0
)
*
2
;
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
))
{
gpcon_reg
=
S3C2410_GPGCON
;
...
...
@@ -269,6 +279,13 @@ static struct irqchip s3c_irqext_chip = {
.
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 */
#define INTMSK_UART0 (1UL << (IRQ_UART0 - IRQ_EINT0))
...
...
@@ -549,6 +566,7 @@ s3c_irq_demux_uart2(unsigned int irq,
void
__init
s3c2410_init_irq
(
void
)
{
unsigned
long
pend
;
unsigned
long
last
;
int
irqno
;
int
i
;
...
...
@@ -556,48 +574,51 @@ void __init s3c2410_init_irq(void)
/* first, clear all interrupts pending... */
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_EINTPEND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
__raw_writel
(
pend
,
S3C2410_EINTPEND
);
printk
(
"irq: clearing pending ext status %08x
\n
"
,
(
int
)
pend
);
last
=
pend
;
}
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_INTPND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
__raw_writel
(
pend
,
S3C2410_SRCPND
);
__raw_writel
(
pend
,
S3C2410_INTPND
);
printk
(
"irq: clearing pending status %08x
\n
"
,
(
int
)
pend
);
last
=
pend
;
}
last
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
pend
=
__raw_readl
(
S3C2410_SUBSRCPND
);
if
(
pend
==
0
)
if
(
pend
==
0
||
pend
==
last
)
break
;
printk
(
"irq: clearing subpending status %08x
\n
"
,
(
int
)
pend
);
__raw_writel
(
pend
,
S3C2410_SUBSRCPND
);
last
=
pend
;
}
/* register the main interrupts */
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 */
switch
(
irqno
)
{
case
IRQ_EINT4t7
:
case
IRQ_EINT8t23
:
/* these are already dealt with, so should never
* appear */
break
;
/* deal with the special IRQs (cascaded) */
case
IRQ_UART0
:
...
...
@@ -632,6 +653,13 @@ void __init s3c2410_init_irq(void)
/* 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
++
)
{
irqdbf
(
"registering irq %d (extended s3c irq)
\n
"
,
irqno
);
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