You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6: (68 commits) sh: sh-rtc support for SH7709. sh: Revert __xdiv64_32 size change. sh: Update r7785rp defconfig. sh: Export div symbols for GCC 4.2 and ST GCC. sh: fix race in parallel out-of-tree build sh: Kill off dead mach.c for hp6xx. sh: hd64461.h cleanup and added comments. sh: Update the alignment when 4K stacks are used. sh: Add a .bss.page_aligned section for 4K stacks. sh: Don't let SH-4A clobber SH-4 CFLAGS. sh: Add parport stub for SuperIO ports. sh: Drop -Wa,-dsp for DSP tuning. sh: Update dreamcast defconfig. fb: pvr2fb: A few more __devinit annotations for PCI. fb: pvr2fb: Fix up section mismatch warnings. sh: Select IPR-IRQ for SH7091. sh: Correct __xdiv64_32/div64_32 return value size. sh: Fix timer-tmu build for SH-3. sh: Add cpu and mach links to CLEAN_FILES. sh: Preliminary support for the SH-X3 CPU. ...
This commit is contained in:
+272
-257
File diff suppressed because it is too large
Load Diff
@@ -52,6 +52,10 @@ config EARLY_PRINTK
|
||||
select both the EARLY_SCIF_CONSOLE and SH_STANDARD_BIOS, using
|
||||
the kernel command line option to toggle back and forth.
|
||||
|
||||
config DEBUG_BOOTMEM
|
||||
depends on DEBUG_KERNEL
|
||||
bool "Debug BOOTMEM initialization"
|
||||
|
||||
config DEBUG_STACKOVERFLOW
|
||||
bool "Check for stack overflows"
|
||||
depends on DEBUG_KERNEL
|
||||
@@ -82,6 +86,7 @@ config SH_KGDB
|
||||
bool "Include KGDB kernel debugger"
|
||||
select FRAME_POINTER
|
||||
select DEBUG_INFO
|
||||
depends on CPU_SH3 || CPU_SH4
|
||||
help
|
||||
Include in-kernel hooks for kgdb, the Linux kernel source level
|
||||
debugger. See <http://kgdb.sourceforge.net/> for more information.
|
||||
|
||||
+57
-45
@@ -34,20 +34,20 @@ isa-y := $(isa-y)-nofpu
|
||||
endif
|
||||
endif
|
||||
|
||||
cflags-$(CONFIG_CPU_SH2) := -m2
|
||||
cflags-$(CONFIG_CPU_SH2A) := -m2a $(call cc-option,-m2a-nofpu,)
|
||||
cflags-$(CONFIG_CPU_SH3) := -m3
|
||||
cflags-$(CONFIG_CPU_SH4) := -m4 \
|
||||
cflags-$(CONFIG_CPU_SH2) := $(call cc-option,-m2,)
|
||||
cflags-$(CONFIG_CPU_SH2A) += $(call cc-option,-m2a,) \
|
||||
$(call cc-option,-m2a-nofpu,)
|
||||
cflags-$(CONFIG_CPU_SH3) := $(call cc-option,-m3,)
|
||||
cflags-$(CONFIG_CPU_SH4) := $(call cc-option,-m4,) \
|
||||
$(call cc-option,-mno-implicit-fp,-m4-nofpu)
|
||||
cflags-$(CONFIG_CPU_SH4A) := $(call cc-option,-m4a,) $(call cc-option,-m4a-nofpu,)
|
||||
cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,) \
|
||||
$(call cc-option,-m4a-nofpu,)
|
||||
|
||||
cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
|
||||
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
|
||||
|
||||
cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding
|
||||
|
||||
cflags-$(CONFIG_SH_DSP) += -Wa,-dsp
|
||||
|
||||
cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \
|
||||
$(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')
|
||||
|
||||
@@ -87,39 +87,37 @@ core-y += arch/sh/kernel/ arch/sh/mm/
|
||||
core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
|
||||
|
||||
# Boards
|
||||
machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x
|
||||
machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) := se/7722
|
||||
machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se/7751
|
||||
machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) := se/7780
|
||||
machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se/7300
|
||||
machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) := se/7343
|
||||
machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se/73180
|
||||
machdir-$(CONFIG_SH_HP6XX) := hp6xx
|
||||
machdir-$(CONFIG_SH_SATURN) := saturn
|
||||
machdir-$(CONFIG_SH_DREAMCAST) := dreamcast
|
||||
machdir-$(CONFIG_SH_MPC1211) := mpc1211
|
||||
machdir-$(CONFIG_SH_SH03) := sh03
|
||||
machdir-$(CONFIG_SH_SECUREEDGE5410) := snapgear
|
||||
machdir-$(CONFIG_SH_HS7751RVOIP) := renesas/hs7751rvoip
|
||||
machdir-$(CONFIG_SH_RTS7751R2D) := renesas/rts7751r2d
|
||||
machdir-$(CONFIG_SH_7751_SYSTEMH) := renesas/systemh
|
||||
machdir-$(CONFIG_SH_EDOSK7705) := renesas/edosk7705
|
||||
machdir-$(CONFIG_SH_HIGHLANDER) := renesas/r7780rp
|
||||
machdir-$(CONFIG_SH_7710VOIPGW) := renesas/sh7710voipgw
|
||||
machdir-$(CONFIG_SH_SH4202_MICRODEV) := superh/microdev
|
||||
machdir-$(CONFIG_SH_LANDISK) := landisk
|
||||
machdir-$(CONFIG_SH_TITAN) := titan
|
||||
machdir-$(CONFIG_SH_SHMIN) := shmin
|
||||
machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) := se/7206
|
||||
machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) := se/7619
|
||||
machdir-$(CONFIG_SH_LBOX_RE2) := lboxre2
|
||||
machdir-$(CONFIG_SH_UNKNOWN) := unknown
|
||||
machdir-$(CONFIG_SH_SOLUTION_ENGINE) += se/770x
|
||||
machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722
|
||||
machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751
|
||||
machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780
|
||||
machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) += se/7300
|
||||
machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343
|
||||
machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) += se/73180
|
||||
machdir-$(CONFIG_SH_HP6XX) += hp6xx
|
||||
machdir-$(CONFIG_SH_DREAMCAST) += dreamcast
|
||||
machdir-$(CONFIG_SH_MPC1211) += mpc1211
|
||||
machdir-$(CONFIG_SH_SH03) += sh03
|
||||
machdir-$(CONFIG_SH_SECUREEDGE5410) += snapgear
|
||||
machdir-$(CONFIG_SH_HS7751RVOIP) += renesas/hs7751rvoip
|
||||
machdir-$(CONFIG_SH_RTS7751R2D) += renesas/rts7751r2d
|
||||
machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh
|
||||
machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705
|
||||
machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp
|
||||
machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw
|
||||
machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev
|
||||
machdir-$(CONFIG_SH_LANDISK) += landisk
|
||||
machdir-$(CONFIG_SH_TITAN) += titan
|
||||
machdir-$(CONFIG_SH_SHMIN) += shmin
|
||||
machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206
|
||||
machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619
|
||||
machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2
|
||||
|
||||
incdir-y := $(notdir $(machdir-y))
|
||||
incdir-$(CONFIG_SH_HP6XX) := hp6xx
|
||||
incdir-y := $(notdir $(machdir-y))
|
||||
|
||||
ifneq ($(machdir-y),)
|
||||
core-y += arch/sh/boards/$(machdir-y)/
|
||||
core-y += $(addprefix arch/sh/boards/, \
|
||||
$(filter-out ., $(patsubst %,%/,$(machdir-y))))
|
||||
endif
|
||||
|
||||
# Companion chips
|
||||
@@ -157,19 +155,31 @@ include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h) \
|
||||
# Most boards have their own mach directories. For the ones that
|
||||
# don't, just reference the parent directory so the semantics are
|
||||
# kept roughly the same.
|
||||
#
|
||||
# When multiple boards are compiled in at the same time, preference
|
||||
# for the mach link is given to whichever has a directory for its
|
||||
# headers. However, this is only a workaround until platforms that
|
||||
# can live in the same kernel image back away from relying on the
|
||||
# mach link.
|
||||
|
||||
include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \
|
||||
include/config/auto.conf FORCE
|
||||
@echo -n ' SYMLINK include/asm-sh/mach -> '
|
||||
$(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
|
||||
$(Q)if [ -d $(incdir-prefix)$(incdir-y) ]; then \
|
||||
echo -e 'include/asm-sh/$(incdir-y)'; \
|
||||
ln -fsn $(incdir-prefix)$(incdir-y) \
|
||||
$(Q)rm -f include/asm-sh/mach
|
||||
$(Q)for i in $(incdir-y); do \
|
||||
if [ -d $(incdir-prefix)$$i ]; then \
|
||||
echo -n ' SYMLINK include/asm-sh/mach -> '; \
|
||||
echo -e "include/asm-sh/$$i"; \
|
||||
ln -fsn $(incdir-prefix)$$i \
|
||||
include/asm-sh/mach; \
|
||||
else \
|
||||
echo -e 'include/asm-sh'; \
|
||||
ln -fsn $(incdir-prefix) include/asm-sh/mach; \
|
||||
fi
|
||||
if [ ! -d include/asm-sh/mach ]; then \
|
||||
echo -n ' SYMLINK include/asm-sh/mach -> '; \
|
||||
echo -e 'include/asm-sh'; \
|
||||
ln -fsn $(incdir-prefix) include/asm-sh/mach; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
@touch $@
|
||||
|
||||
archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools
|
||||
@@ -188,7 +198,9 @@ compressed: zImage
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
||||
CLEAN_FILES += include/asm-sh/machtypes.h
|
||||
CLEAN_FILES += include/asm-sh/machtypes.h \
|
||||
include/asm-sh/cpu include/asm-sh/.cpu \
|
||||
include/asm-sh/mach include/asm-sh/.mach
|
||||
|
||||
define archhelp
|
||||
@echo '* zImage - Compressed kernel image'
|
||||
|
||||
@@ -60,7 +60,7 @@ static void __init dreamcast_setup(char **cmdline_p)
|
||||
#endif
|
||||
}
|
||||
|
||||
struct sh_machine_vector mv_dreamcast __initmv = {
|
||||
static struct sh_machine_vector mv_dreamcast __initmv = {
|
||||
.mv_name = "Sega Dreamcast",
|
||||
.mv_setup = dreamcast_setup,
|
||||
.mv_irq_demux = systemasic_irq_demux,
|
||||
@@ -70,4 +70,3 @@ struct sh_machine_vector mv_dreamcast __initmv = {
|
||||
.mv_consistent_free = dreamcast_consistent_free,
|
||||
#endif
|
||||
};
|
||||
ALIAS_MV(dreamcast)
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* linux/arch/sh/boards/hp6xx/mach.c
|
||||
*
|
||||
* Copyright (C) 2000 Stuart Menefy (stuart.menefy@st.com)
|
||||
*
|
||||
* May be copied or modified under the terms of the GNU General Public
|
||||
* License. See linux/COPYING for more information.
|
||||
*
|
||||
* Machine vector for the HP680
|
||||
*/
|
||||
#include <asm/machvec.h>
|
||||
#include <asm/hd64461.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
struct sh_machine_vector mv_hp6xx __initmv = {
|
||||
.mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
|
||||
|
||||
.mv_inb = hd64461_inb,
|
||||
.mv_inw = hd64461_inw,
|
||||
.mv_inl = hd64461_inl,
|
||||
.mv_outb = hd64461_outb,
|
||||
.mv_outw = hd64461_outw,
|
||||
.mv_outl = hd64461_outl,
|
||||
|
||||
.mv_inb_p = hd64461_inb_p,
|
||||
.mv_inw_p = hd64461_inw,
|
||||
.mv_inl_p = hd64461_inl,
|
||||
.mv_outb_p = hd64461_outb_p,
|
||||
.mv_outw_p = hd64461_outw,
|
||||
.mv_outl_p = hd64461_outl,
|
||||
|
||||
.mv_insb = hd64461_insb,
|
||||
.mv_insw = hd64461_insw,
|
||||
.mv_insl = hd64461_insl,
|
||||
.mv_outsb = hd64461_outsb,
|
||||
.mv_outsw = hd64461_outsw,
|
||||
.mv_outsl = hd64461_outsl,
|
||||
|
||||
.mv_readw = hd64461_readw,
|
||||
.mv_writew = hd64461_writew,
|
||||
|
||||
.mv_irq_demux = hd64461_irq_demux,
|
||||
};
|
||||
|
||||
ALIAS_MV(hp6xx)
|
||||
@@ -98,10 +98,9 @@ static void __init hp6xx_setup(char **cmdline_p)
|
||||
}
|
||||
device_initcall(hp6xx_devices_setup);
|
||||
|
||||
struct sh_machine_vector mv_hp6xx __initmv = {
|
||||
static struct sh_machine_vector mv_hp6xx __initmv = {
|
||||
.mv_name = "hp6xx",
|
||||
.mv_setup = hp6xx_setup,
|
||||
.mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
|
||||
.mv_irq_demux = hd64461_irq_demux,
|
||||
};
|
||||
ALIAS_MV(hp6xx)
|
||||
|
||||
@@ -97,10 +97,9 @@ static void __init landisk_setup(char **cmdline_p)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_landisk __initmv = {
|
||||
static struct sh_machine_vector mv_landisk __initmv = {
|
||||
.mv_name = "LANDISK",
|
||||
.mv_nr_irqs = 72,
|
||||
.mv_setup = landisk_setup,
|
||||
.mv_init_irq = init_landisk_IRQ,
|
||||
};
|
||||
ALIAS_MV(landisk)
|
||||
|
||||
@@ -77,9 +77,8 @@ device_initcall(lboxre2_devices_setup);
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_lboxre2 __initmv = {
|
||||
static struct sh_machine_vector mv_lboxre2 __initmv = {
|
||||
.mv_name = "L-BOX RE2",
|
||||
.mv_nr_irqs = 72,
|
||||
.mv_init_irq = init_lboxre2_IRQ,
|
||||
};
|
||||
ALIAS_MV(lboxre2)
|
||||
|
||||
@@ -338,11 +338,10 @@ static void __init mpc1211_setup(char **cmdline_p)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_mpc1211 __initmv = {
|
||||
static struct sh_machine_vector mv_mpc1211 __initmv = {
|
||||
.mv_name = "Interface MPC-1211(CTP/PCI/MPC-SH02)",
|
||||
.mv_setup = mpc1211_setup,
|
||||
.mv_nr_irqs = 48,
|
||||
.mv_irq_demux = mpc1211_irq_demux,
|
||||
.mv_init_irq = init_mpc1211_IRQ,
|
||||
};
|
||||
ALIAS_MV(mpc1211)
|
||||
|
||||
@@ -21,7 +21,7 @@ static void __init sh_edosk7705_init_irq(void)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_edosk7705 __initmv = {
|
||||
static struct sh_machine_vector mv_edosk7705 __initmv = {
|
||||
.mv_name = "EDOSK7705",
|
||||
.mv_nr_irqs = 80,
|
||||
|
||||
@@ -41,4 +41,3 @@ struct sh_machine_vector mv_edosk7705 __initmv = {
|
||||
.mv_isa_port2addr = sh_edosk7705_isa_port2addr,
|
||||
.mv_init_irq = sh_edosk7705_init_irq,
|
||||
};
|
||||
ALIAS_MV(edosk7705)
|
||||
|
||||
@@ -89,7 +89,7 @@ static void __init hs7751rvoip_setup(char **cmdline_p)
|
||||
printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n");
|
||||
}
|
||||
|
||||
struct sh_machine_vector mv_hs7751rvoip __initmv = {
|
||||
static struct sh_machine_vector mv_hs7751rvoip __initmv = {
|
||||
.mv_name = "HS7751RVoIP",
|
||||
.mv_setup = hs7751rvoip_setup,
|
||||
.mv_nr_irqs = 72,
|
||||
@@ -118,4 +118,3 @@ struct sh_machine_vector mv_hs7751rvoip __initmv = {
|
||||
.mv_init_irq = hs7751rvoip_init_irq,
|
||||
.mv_ioport_map = hs7751rvoip_ioport_map,
|
||||
};
|
||||
ALIAS_MV(hs7751rvoip)
|
||||
|
||||
@@ -6,18 +6,18 @@ choice
|
||||
|
||||
config SH_R7780RP
|
||||
bool "R7780RP-1 board support"
|
||||
select CPU_SUBTYPE_SH7780
|
||||
depends on CPU_SUBTYPE_SH7780
|
||||
|
||||
config SH_R7780MP
|
||||
bool "R7780MP board support"
|
||||
select CPU_SUBTYPE_SH7780
|
||||
depends on CPU_SUBTYPE_SH7780
|
||||
help
|
||||
Selecting this option will enable support for the mass-production
|
||||
version of the R7780RP. If in doubt, say Y.
|
||||
|
||||
config SH_R7785RP
|
||||
bool "R7785RP board support"
|
||||
select CPU_SUBTYPE_SH7785
|
||||
depends on CPU_SUBTYPE_SH7785
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@@ -166,10 +166,9 @@ static void __init highlander_setup(char **cmdline_p)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_highlander __initmv = {
|
||||
static struct sh_machine_vector mv_highlander __initmv = {
|
||||
.mv_name = "Highlander",
|
||||
.mv_nr_irqs = 109,
|
||||
.mv_setup = highlander_setup,
|
||||
.mv_init_irq = highlander_init_irq,
|
||||
};
|
||||
ALIAS_MV(highlander)
|
||||
|
||||
@@ -176,7 +176,7 @@ static void __init rts7751r2d_setup(char **cmdline_p)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_rts7751r2d __initmv = {
|
||||
static struct sh_machine_vector mv_rts7751r2d __initmv = {
|
||||
.mv_name = "RTS7751R2D",
|
||||
.mv_setup = rts7751r2d_setup,
|
||||
.mv_nr_irqs = 72,
|
||||
@@ -189,4 +189,3 @@ struct sh_machine_vector mv_rts7751r2d __initmv = {
|
||||
.mv_consistent_free = voyagergx_consistent_free,
|
||||
#endif
|
||||
};
|
||||
ALIAS_MV(rts7751r2d)
|
||||
|
||||
@@ -88,9 +88,8 @@ static void __init sh7710voipgw_init_irq(void)
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_sh7710voipgw __initmv = {
|
||||
static struct sh_machine_vector mv_sh7710voipgw __initmv = {
|
||||
.mv_name = "SH7710 VoIP Gateway",
|
||||
.mv_nr_irqs = 104,
|
||||
.mv_init_irq = sh7710voipgw_init_irq,
|
||||
};
|
||||
ALIAS_MV(sh7710voipgw)
|
||||
|
||||
@@ -28,7 +28,7 @@ static void __init sh7751systemh_init_irq(void)
|
||||
make_systemh_irq(0xb); /* Ethernet interrupt */
|
||||
}
|
||||
|
||||
struct sh_machine_vector mv_7751systemh __initmv = {
|
||||
static struct sh_machine_vector mv_7751systemh __initmv = {
|
||||
.mv_name = "7751 SystemH",
|
||||
.mv_nr_irqs = 72,
|
||||
|
||||
@@ -55,4 +55,3 @@ struct sh_machine_vector mv_7751systemh __initmv = {
|
||||
|
||||
.mv_init_irq = sh7751systemh_init_irq,
|
||||
};
|
||||
ALIAS_MV(7751systemh)
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#
|
||||
# Makefile for the Sega Saturn specific parts of the kernel
|
||||
#
|
||||
|
||||
obj-y := setup.o io.o irq.o
|
||||
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* arch/sh/boards/saturn/io.c
|
||||
*
|
||||
* I/O routines for the Sega Saturn.
|
||||
*
|
||||
* Copyright (C) 2002 Paul Mundt
|
||||
*
|
||||
* Released under the terms of the GNU GPL v2.0.
|
||||
*/
|
||||
#include <asm/saturn/io.h>
|
||||
#include <asm/machvec.h>
|
||||
|
||||
unsigned long saturn_isa_port2addr(unsigned long offset)
|
||||
{
|
||||
return offset;
|
||||
}
|
||||
|
||||
void *saturn_ioremap(unsigned long offset, unsigned long size)
|
||||
{
|
||||
return (void *)offset;
|
||||
}
|
||||
|
||||
void saturn_iounmap(void *addr)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
/*
|
||||
* arch/sh/boards/saturn/irq.c
|
||||
*
|
||||
* Copyright (C) 2002 Paul Mundt
|
||||
*
|
||||
* Released under the terms of the GNU GPL v2.0.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/*
|
||||
* Interrupts map out as follows:
|
||||
*
|
||||
* Vector Name Mask
|
||||
*
|
||||
* 64 VBLANKIN 0x0001
|
||||
* 65 VBLANKOUT 0x0002
|
||||
* 66 HBLANKIN 0x0004
|
||||
* 67 TIMER0 0x0008
|
||||
* 68 TIMER1 0x0010
|
||||
* 69 DSPEND 0x0020
|
||||
* 70 SOUNDREQUEST 0x0040
|
||||
* 71 SYSTEMMANAGER 0x0080
|
||||
* 72 PAD 0x0100
|
||||
* 73 LEVEL2DMAEND 0x0200
|
||||
* 74 LEVEL1DMAEND 0x0400
|
||||
* 75 LEVEL0DMAEND 0x0800
|
||||
* 76 DMAILLEGAL 0x1000
|
||||
* 77 SRITEDRAWEND 0x2000
|
||||
* 78 ABUS 0x8000
|
||||
*
|
||||
*/
|
||||
#define SATURN_IRQ_MIN 64 /* VBLANKIN */
|
||||
#define SATURN_IRQ_MAX 78 /* ABUS */
|
||||
|
||||
#define SATURN_IRQ_MASK 0xbfff
|
||||
|
||||
static inline u32 saturn_irq_mask(unsigned int irq_nr)
|
||||
{
|
||||
u32 mask;
|
||||
|
||||
mask = (1 << (irq_nr - SATURN_IRQ_MIN));
|
||||
mask <<= (irq_nr == SATURN_IRQ_MAX);
|
||||
mask &= SATURN_IRQ_MASK;
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
static inline void mask_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
u32 mask;
|
||||
|
||||
mask = ctrl_inl(SATURN_IMR);
|
||||
mask |= saturn_irq_mask(irq_nr);
|
||||
ctrl_outl(mask, SATURN_IMR);
|
||||
}
|
||||
|
||||
static inline void unmask_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
u32 mask;
|
||||
|
||||
mask = ctrl_inl(SATURN_IMR);
|
||||
mask &= ~saturn_irq_mask(irq_nr);
|
||||
ctrl_outl(mask, SATURN_IMR);
|
||||
}
|
||||
|
||||
static void disable_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
mask_saturn_irq(irq_nr);
|
||||
}
|
||||
|
||||
static void enable_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
unmask_saturn_irq(irq_nr);
|
||||
}
|
||||
|
||||
static void mask_and_ack_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
mask_saturn_irq(irq_nr);
|
||||
}
|
||||
|
||||
static void end_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
if (!(irq_desc[irq_nr].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
|
||||
unmask_saturn_irq(irq_nr);
|
||||
}
|
||||
|
||||
static unsigned int startup_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
unmask_saturn_irq(irq_nr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void shutdown_saturn_irq(unsigned int irq_nr)
|
||||
{
|
||||
mask_saturn_irq(irq_nr);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type saturn_int = {
|
||||
.typename = "Saturn",
|
||||
.enable = enable_saturn_irq,
|
||||
.disable = disable_saturn_irq,
|
||||
.ack = mask_and_ack_saturn_irq,
|
||||
.end = end_saturn_irq,
|
||||
.startup = startup_saturn_irq,
|
||||
.shutdown = shutdown_saturn_irq,
|
||||
};
|
||||
|
||||
int saturn_irq_demux(int irq_nr)
|
||||
{
|
||||
/* FIXME */
|
||||
return irq_nr;
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* arch/sh/boards/saturn/setup.c
|
||||
*
|
||||
* Hardware support for the Sega Saturn.
|
||||
*
|
||||
* Copyright (c) 2002 Paul Mundt
|
||||
*
|
||||
* Released under the terms of the GNU GPL v2.0.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machvec.h>
|
||||
#include <asm/mach/io.h>
|
||||
|
||||
extern int saturn_irq_demux(int irq_nr);
|
||||
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
struct sh_machine_vector mv_saturn __initmv = {
|
||||
.mv_name = "Sega Saturn",
|
||||
.mv_nr_irqs = 80, /* Fix this later */
|
||||
|
||||
.mv_isa_port2addr = saturn_isa_port2addr,
|
||||
.mv_irq_demux = saturn_irq_demux,
|
||||
|
||||
.mv_ioremap = saturn_ioremap,
|
||||
.mv_iounmap = saturn_iounmap,
|
||||
};
|
||||
ALIAS_MV(saturn)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user