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
834a4b58
Commit
834a4b58
authored
Mar 18, 2003
by
Russell King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM] Update CLPS7500 support.
CLPS7500 had lacked behind slightly; this cset brings it back up to date.
parent
c4d190c5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
95 additions
and
42 deletions
+95
-42
arch/arm/mach-clps7500/core.c
arch/arm/mach-clps7500/core.c
+83
-41
include/asm-arm/arch-cl7500/io.h
include/asm-arm/arch-cl7500/io.h
+11
-0
include/asm-arm/mach/arch.h
include/asm-arm/mach/arch.h
+1
-0
include/asm-arm/mach/dma.h
include/asm-arm/mach/dma.h
+0
-1
No files found.
arch/arm/mach-clps7500/core.c
View file @
834a4b58
...
...
@@ -8,19 +8,22 @@
*/
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/hardware.h>
#include <asm/hardware/iomd.h>
#include <asm/io.h>
#include <asm/page.h>
#include <asm/proc/domain.h>
#include <asm/setup.h>
#include <asm/irq.h>
#include <asm/mach-types.h>
static
void
cl7500_
mask_irq_ack
_a
(
unsigned
int
irq
)
static
void
cl7500_
ack_irq
_a
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
@@ -48,6 +51,12 @@ static void cl7500_unmask_irq_a(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_IRQMASKA
);
}
static
struct
irqchip
clps7500_a_chip
=
{
.
ack
=
cl7500_ack_irq_a
,
.
mask
=
cl7500_mask_irq_a
,
.
unmask
=
cl7500_unmask_irq_a
,
};
static
void
cl7500_mask_irq_b
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
@@ -66,6 +75,12 @@ static void cl7500_unmask_irq_b(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_IRQMASKB
);
}
static
struct
irqchip
clps7500_b_chip
=
{
.
ack
=
cl7500_mask_irq_b
,
.
mask
=
cl7500_mask_irq_b
,
.
unmask
=
cl7500_unmask_irq_b
,
};
static
void
cl7500_mask_irq_c
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
@@ -84,6 +99,11 @@ static void cl7500_unmask_irq_c(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_IRQMASKC
);
}
static
struct
irqchip
clps7500_c_chip
=
{
.
ack
=
cl7500_mask_irq_c
,
.
mask
=
cl7500_mask_irq_c
,
.
unmask
=
cl7500_unmask_irq_c
,
};
static
void
cl7500_mask_irq_d
(
unsigned
int
irq
)
{
...
...
@@ -103,6 +123,12 @@ static void cl7500_unmask_irq_d(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_IRQMASKD
);
}
static
struct
irqchip
clps7500_d_chip
=
{
.
ack
=
cl7500_mask_irq_d
,
.
mask
=
cl7500_mask_irq_d
,
.
unmask
=
cl7500_unmask_irq_d
,
};
static
void
cl7500_mask_irq_dma
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
@@ -121,6 +147,12 @@ static void cl7500_unmask_irq_dma(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_DMAMASK
);
}
static
struct
irqchip
clps7500_dma_chip
=
{
.
ack
=
cl7500_mask_irq_dma
,
.
mask
=
cl7500_mask_irq_dma
,
.
unmask
=
cl7500_unmask_irq_dma
,
};
static
void
cl7500_mask_irq_fiq
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
@@ -139,6 +171,22 @@ static void cl7500_unmask_irq_fiq(unsigned int irq)
iomd_writeb
(
val
|
mask
,
IOMD_FIQMASK
);
}
static
struct
irqchip
clps7500_fiq_chip
=
{
.
ack
=
cl7500_mask_irq_fiq
,
.
mask
=
cl7500_mask_irq_fiq
,
.
unmask
=
cl7500_unmask_irq_fiq
,
};
static
void
cl7500_no_action
(
unsigned
int
irq
)
{
}
static
struct
irqchip
clps7500_no_chip
=
{
.
ack
=
cl7500_no_action
,
.
mask
=
cl7500_no_action
,
.
unmask
=
cl7500_no_action
,
};
static
void
no_action
(
int
cpl
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
}
...
...
@@ -147,7 +195,7 @@ static struct irqaction irq_isa = { no_action, 0, 0, "isa", NULL, NULL };
static
void
__init
clps7500_init_irq
(
void
)
{
int
irq
;
unsigned
int
irq
,
flags
;
iomd_writeb
(
0
,
IOMD_IRQMASKA
);
iomd_writeb
(
0
,
IOMD_IRQMASKB
);
...
...
@@ -155,64 +203,58 @@ static void __init clps7500_init_irq(void)
iomd_writeb
(
0
,
IOMD_DMAMASK
);
for
(
irq
=
0
;
irq
<
NR_IRQS
;
irq
++
)
{
flags
=
IRQF_VALID
;
if
(
irq
<=
6
||
(
irq
>=
9
&&
irq
<=
15
)
||
(
irq
>=
48
&&
irq
<=
55
))
flags
|=
IRQF_PROBE
;
switch
(
irq
)
{
case
0
...
6
:
irq_desc
[
irq
].
probe_ok
=
1
;
case
7
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_ack_a
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_a
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_a
;
case
0
...
7
:
set_irq_chip
(
irq
,
&
clps7500_a_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
9
...
15
:
irq_desc
[
irq
].
probe_ok
=
1
;
case
8
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_b
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_b
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_b
;
case
8
...
15
:
set_irq_chip
(
irq
,
&
clps7500_b_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
16
...
22
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_dma
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_dma
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_dma
;
set_irq_chip
(
irq
,
&
clps7500_dma_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
24
...
31
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_c
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_c
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_c
;
set_irq_chip
(
irq
,
&
clps7500_c_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
40
...
47
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_d
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_d
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_d
;
set_irq_chip
(
irq
,
&
clps7500_d_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
48
...
55
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
probe_ok
=
1
;
irq_desc
[
irq
].
mask_ack
=
no_action
;
irq_desc
[
irq
].
mask
=
no_action
;
irq_desc
[
irq
].
unmask
=
no_action
;
set_irq_chip
(
irq
,
&
clps7500_no_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
case
64
...
72
:
irq_desc
[
irq
].
valid
=
1
;
irq_desc
[
irq
].
mask_ack
=
cl7500_mask_irq_fiq
;
irq_desc
[
irq
].
mask
=
cl7500_mask_irq_fiq
;
irq_desc
[
irq
].
unmask
=
cl7500_unmask_irq_fiq
;
set_irq_chip
(
irq
,
&
clps7500_fiq_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
flags
);
break
;
}
}
setup_
arm_
irq
(
IRQ_ISA
,
&
irq_isa
);
setup_irq
(
IRQ_ISA
,
&
irq_isa
);
}
static
struct
map_desc
cl7500_io_desc
[]
__initdata
=
{
...
...
include/asm-arm/arch-cl7500/io.h
View file @
834a4b58
...
...
@@ -239,4 +239,15 @@ DECLARE_IO(int,l,"")
/* the following macro is deprecated */
#define ioaddr(port) __ioaddr((port))
#define insb(p,d,l) __raw_readsb(__ioaddr(p),d,l)
#define insw(p,d,l) __raw_readsw(__ioaddr(p),d,l)
#define outsb(p,d,l) __raw_writesb(__ioaddr(p),d,l)
#define outsw(p,d,l) __raw_writesw(__ioaddr(p),d,l)
/*
* 1:1 mapping for ioremapped regions.
*/
#define __mem_pci(x) (x)
#endif
include/asm-arm/mach/arch.h
View file @
834a4b58
...
...
@@ -17,6 +17,7 @@
#ifndef __ASSEMBLY__
struct
tag
;
struct
meminfo
;
struct
machine_desc
{
/*
...
...
include/asm-arm/mach/dma.h
View file @
834a4b58
...
...
@@ -40,7 +40,6 @@ struct dma_struct {
unsigned
int
dma_base
;
/* Controller base address */
int
dma_irq
;
/* Controller IRQ */
int
state
;
/* Controller state */
struct
scatterlist
cur_sg
;
/* Current controller buffer */
struct
dma_ops
*
d_ops
;
...
...
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