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
deb9b22b
Commit
deb9b22b
authored
Feb 02, 2010
by
Paul Mundt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sh: mach-dreamcast: Convert to sparseirq.
Signed-off-by:
Paul Mundt
<
lethal@linux-sh.org
>
parent
6eb6f983
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
19 deletions
+34
-19
arch/sh/Kconfig
arch/sh/Kconfig
+1
-2
arch/sh/boards/mach-dreamcast/irq.c
arch/sh/boards/mach-dreamcast/irq.c
+27
-0
arch/sh/boards/mach-dreamcast/setup.c
arch/sh/boards/mach-dreamcast/setup.c
+1
-17
arch/sh/include/mach-dreamcast/mach/sysasic.h
arch/sh/include/mach-dreamcast/mach/sysasic.h
+5
-0
No files found.
arch/sh/Kconfig
View file @
deb9b22b
...
@@ -730,8 +730,7 @@ config GUSA_RB
...
@@ -730,8 +730,7 @@ config GUSA_RB
config SPARSE_IRQ
config SPARSE_IRQ
def_bool y
def_bool y
depends on SUPERH32 && !SH_DREAMCAST && !SH_HIGHLANDER && \
depends on SUPERH32 && !SH_HIGHLANDER && !SH_RTS7751R2D
!SH_RTS7751R2D
help
help
This enables support for sparse irqs. This is useful in general
This enables support for sparse irqs. This is useful in general
as most CPUs have a fairly sparse array of IRQ vectors, which
as most CPUs have a fairly sparse array of IRQ vectors, which
...
...
arch/sh/boards/mach-dreamcast/irq.c
View file @
deb9b22b
...
@@ -135,3 +135,30 @@ int systemasic_irq_demux(int irq)
...
@@ -135,3 +135,30 @@ int systemasic_irq_demux(int irq)
/* Not reached */
/* Not reached */
return
irq
;
return
irq
;
}
}
void
systemasic_irq_init
(
void
)
{
int
i
,
nid
=
cpu_to_node
(
boot_cpu_data
);
/* Assign all virtual IRQs to the System ASIC int. handler */
for
(
i
=
HW_EVENT_IRQ_BASE
;
i
<
HW_EVENT_IRQ_MAX
;
i
++
)
{
unsigned
int
irq
;
irq
=
create_irq_nr
(
i
,
nid
);
if
(
unlikely
(
irq
==
0
))
{
pr_err
(
"%s: failed hooking irq %d for systemasic
\n
"
,
__func__
,
i
);
return
;
}
if
(
unlikely
(
irq
!=
i
))
{
pr_err
(
"%s: got irq %d but wanted %d, bailing.
\n
"
,
__func__
,
irq
,
i
);
destroy_irq
(
irq
);
return
;
}
set_irq_chip_and_handler
(
i
,
&
systemasic_int
,
handle_level_irq
);
}
}
arch/sh/boards/mach-dreamcast/setup.c
View file @
deb9b22b
...
@@ -28,25 +28,8 @@
...
@@ -28,25 +28,8 @@
#include <asm/machvec.h>
#include <asm/machvec.h>
#include <mach/sysasic.h>
#include <mach/sysasic.h>
extern
struct
irq_chip
systemasic_int
;
extern
void
aica_time_init
(
void
);
extern
int
systemasic_irq_demux
(
int
);
static
void
__init
dreamcast_setup
(
char
**
cmdline_p
)
static
void
__init
dreamcast_setup
(
char
**
cmdline_p
)
{
{
int
i
;
/* Mask all hardware events */
/* XXX */
/* Acknowledge any previous events */
/* XXX */
/* Assign all virtual IRQs to the System ASIC int. handler */
for
(
i
=
HW_EVENT_IRQ_BASE
;
i
<
HW_EVENT_IRQ_MAX
;
i
++
)
set_irq_chip_and_handler
(
i
,
&
systemasic_int
,
handle_level_irq
);
board_time_init
=
aica_time_init
;
board_time_init
=
aica_time_init
;
}
}
...
@@ -54,4 +37,5 @@ static struct sh_machine_vector mv_dreamcast __initmv = {
...
@@ -54,4 +37,5 @@ static struct sh_machine_vector mv_dreamcast __initmv = {
.
mv_name
=
"Sega Dreamcast"
,
.
mv_name
=
"Sega Dreamcast"
,
.
mv_setup
=
dreamcast_setup
,
.
mv_setup
=
dreamcast_setup
,
.
mv_irq_demux
=
systemasic_irq_demux
,
.
mv_irq_demux
=
systemasic_irq_demux
,
.
mv_init_irq
=
systemasic_irq_init
,
};
};
arch/sh/include/mach-dreamcast/mach/sysasic.h
View file @
deb9b22b
...
@@ -39,5 +39,10 @@
...
@@ -39,5 +39,10 @@
#define HW_EVENT_IRQ_MAX (HW_EVENT_IRQ_BASE + 95)
#define HW_EVENT_IRQ_MAX (HW_EVENT_IRQ_BASE + 95)
/* arch/sh/boards/mach-dreamcast/irq.c */
extern
int
systemasic_irq_demux
(
int
);
extern
void
systemasic_irq_init
(
void
);
extern
void
aica_time_init
(
void
);
#endif
/* __ASM_SH_DREAMCAST_SYSASIC_H */
#endif
/* __ASM_SH_DREAMCAST_SYSASIC_H */
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