diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-11-21 23:16:33 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-28 13:18:54 +0900 |
commit | 18bc81319b438ae3266e1b2653ce874912dae891 (patch) | |
tree | a0fc683c0beafdafc360f5ad77c995d55df684fd /arch | |
parent | caead5ef34e5abdda8c5189cf698e0b863904701 (diff) |
sh: Get the mach-cayman IRQ support building.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/kernel/cpu/irq/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/irq/intc-sh5.c (renamed from arch/sh64/kernel/irq_intc.c) | 23 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh5/Makefile | 4 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh5/setup-sh5-101.c | 15 | ||||
-rw-r--r-- | arch/sh/mach-cayman/Makefile | 8 | ||||
-rw-r--r-- | arch/sh/mach-cayman/iomap.c | 22 | ||||
-rw-r--r-- | arch/sh/mach-cayman/irq.c | 26 | ||||
-rw-r--r-- | arch/sh/mach-cayman/setup.c | 94 |
8 files changed, 41 insertions, 152 deletions
diff --git a/arch/sh/kernel/cpu/irq/Makefile b/arch/sh/kernel/cpu/irq/Makefile index 81d37e948b86..cc1836e47a5d 100644 --- a/arch/sh/kernel/cpu/irq/Makefile +++ b/arch/sh/kernel/cpu/irq/Makefile @@ -4,5 +4,6 @@ obj-y += intc.o obj-$(CONFIG_SUPERH32) += imask.o +obj-$(CONFIG_CPU_SH5) += intc-sh5.o obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o diff --git a/arch/sh64/kernel/irq_intc.c b/arch/sh/kernel/cpu/irq/intc-sh5.c index 3b63a93198f2..49b845a31fff 100644 --- a/arch/sh64/kernel/irq_intc.c +++ b/arch/sh/kernel/cpu/irq/intc-sh5.c @@ -14,21 +14,14 @@ * controller. * */ - #include <linux/init.h> #include <linux/interrupt.h> #include <linux/irq.h> +#include <linux/io.h> #include <linux/kernel.h> -#include <linux/stddef.h> -#include <linux/bitops.h> /* this includes also <asm/registers.h */ - /* which is required to remap register */ - /* names used into __asm__ blocks... */ - -#include <asm/hardware.h> -#include <asm/platform.h> +#include <linux/bitops.h> +#include <asm/cpu/irq.h> #include <asm/page.h> -#include <asm/io.h> -#include <asm/irq.h> /* * Maybe the generic Peripheral block could move to a more @@ -192,7 +185,7 @@ int intc_irq_describe(char* p, int irq) } #endif -void __init init_IRQ(void) +void __init plat_irq_setup(void) { unsigned long long __dummy0, __dummy1=~0x00000000100000f0; unsigned long reg; @@ -251,14 +244,6 @@ void __init init_IRQ(void) } } -#ifdef CONFIG_SH_CAYMAN - { - extern void init_cayman_irq(void); - - init_cayman_irq(); - } -#endif - /* * And now let interrupts come in. * sti() is not enough, we need to diff --git a/arch/sh/kernel/cpu/sh5/Makefile b/arch/sh/kernel/cpu/sh5/Makefile index 0ef257b72e5d..8646363e9ded 100644 --- a/arch/sh/kernel/cpu/sh5/Makefile +++ b/arch/sh/kernel/cpu/sh5/Makefile @@ -5,7 +5,3 @@ obj-y := entry.o probe.o switchto.o obj-$(CONFIG_SH_FPU) += fpu.o obj-$(CONFIG_KALLSYMS) += unwind.o - -# CPU subtype setup -obj-$(CONFIG_CPU_SUBTYPE_SH5_101) += setup-sh5-101.o -obj-$(CONFIG_CPU_SUBTYPE_SH5_103) += setup-sh5-101.o diff --git a/arch/sh/kernel/cpu/sh5/setup-sh5-101.c b/arch/sh/kernel/cpu/sh5/setup-sh5-101.c deleted file mode 100644 index 3680012d7109..000000000000 --- a/arch/sh/kernel/cpu/sh5/setup-sh5-101.c +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SH5-101 Setup - * - * Copyright (C) 2007 Paul Mundt - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ -#include <linux/init.h> - -void __init plat_irq_setup(void) -{ - /* do nothing - all IRL interrupts are handled by the board code */ -} diff --git a/arch/sh/mach-cayman/Makefile b/arch/sh/mach-cayman/Makefile index 67a2258bf8c4..489a8f867368 100644 --- a/arch/sh/mach-cayman/Makefile +++ b/arch/sh/mach-cayman/Makefile @@ -1,11 +1,5 @@ # # Makefile for the Hitachi Cayman specific parts of the kernel # -# Note! Dependencies are done automagically by 'make dep', which also -# removes any old dependencies. DON'T put your own dependencies here -# unless it's something special (ie not a .c file). -# - -obj-y := setup.o irq.o iomap.o +obj-y := setup.o irq.o obj-$(CONFIG_HEARTBEAT) += led.o - diff --git a/arch/sh/mach-cayman/iomap.c b/arch/sh/mach-cayman/iomap.c deleted file mode 100644 index a5c645f02d57..000000000000 --- a/arch/sh/mach-cayman/iomap.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * arch/sh64/mach-cayman/iomap.c - * - * Cayman iomap interface - * - * Copyright (C) 2004 Paul Mundt - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ -#include <asm/io.h> -#include <asm/cayman.h> - -void __iomem *ioport_map(unsigned long port, unsigned int len) -{ - if (port < 0x400) - return (void __iomem *)((port << 2) | smsc_superio_virt); - - return (void __iomem *)port; -} - diff --git a/arch/sh/mach-cayman/irq.c b/arch/sh/mach-cayman/irq.c index aaad36d37d1f..30ec7bebfaf1 100644 --- a/arch/sh/mach-cayman/irq.c +++ b/arch/sh/mach-cayman/irq.c @@ -1,24 +1,26 @@ /* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * arch/sh64/kernel/irq_cayman.c - * - * SH-5 Cayman Interrupt Support + * arch/sh/mach-cayman/irq.c - SH-5 Cayman Interrupt Support * * This file handles the board specific parts of the Cayman interrupt system * * Copyright (C) 2002 Stuart Menefy + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. */ - -#include <asm/irq.h> -#include <asm/page.h> -#include <asm/io.h> +#include <linux/io.h> #include <linux/irq.h> #include <linux/interrupt.h> #include <linux/signal.h> -#include <asm/cayman.h> +#include <asm/cpu/irq.h> +#include <asm/page.h> + +/* Setup for the SMSC FDC37C935 / LAN91C100FD */ +#define SMSC_IRQ IRQ_IRL1 + +/* Setup for PCI Bus 2, which transmits interrupts via the EPLD */ +#define PCI2_IRQ IRQ_IRL3 unsigned long epld_virt; diff --git a/arch/sh/mach-cayman/setup.c b/arch/sh/mach-cayman/setup.c index 726c520d7eb9..8c9fa472d8f5 100644 --- a/arch/sh/mach-cayman/setup.c +++ b/arch/sh/mach-cayman/setup.c @@ -1,28 +1,19 @@ /* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * arch/sh64/mach-cayman/setup.c + * arch/sh/mach-cayman/setup.c * * SH5 Cayman support * - * This file handles the architecture-dependent parts of initialization + * Copyright (C) 2002 David J. Mckay & Benedict Gaster + * Copyright (C) 2003 - 2007 Paul Mundt * - * Copyright David J. Mckay. - * Needs major work! - * - * benedict.gaster@superh.com: 3rd May 2002 - * Added support for ramdisk, removing statically linked romfs at the same time. - * - * lethal@linux-sh.org: 15th May 2003 - * Use the generic procfs cpuinfo interface, just return a valid board name. + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. */ #include <linux/init.h> +#include <linux/io.h> #include <linux/kernel.h> -#include <asm/platform.h> -#include <asm/irq.h> -#include <asm/io.h> +#include <asm/cpu/irq.h> /* * Platform Dependent Interrupt Priorities. @@ -96,42 +87,6 @@ unsigned long smsc_superio_virt; -/* - * Platform dependent structures: maps and parms block. - */ -struct resource io_resources[] = { - /* To be updated with external devices */ -}; - -struct resource kram_resources[] = { - /* These must be last in the array */ - { .name = "Kernel code", .start = 0, .end = 0 }, - /* These must be last in the array */ - { .name = "Kernel data", .start = 0, .end = 0 } -}; - -struct resource xram_resources[] = { - /* To be updated with external devices */ -}; - -struct resource rom_resources[] = { - /* To be updated with external devices */ -}; - -struct sh64_platform platform_parms = { - .readonly_rootfs = 1, - .initial_root_dev = 0x0100, - .loader_type = 1, - .io_res_p = io_resources, - .io_res_count = ARRAY_SIZE(io_resources), - .kram_res_p = kram_resources, - .kram_res_count = ARRAY_SIZE(kram_resources), - .xram_res_p = xram_resources, - .xram_res_count = ARRAY_SIZE(xram_resources), - .rom_res_p = rom_resources, - .rom_res_count = ARRAY_SIZE(rom_resources), -}; - int platform_int_priority[NR_INTC_IRQS] = { IR0, IR1, IR2, IR3, PCA, PCB, PCC, PCD, /* IRQ 0- 7 */ RES, RES, RES, RES, SER, ERR, PW3, PW2, /* IRQ 8-15 */ @@ -210,30 +165,23 @@ static int __init smsc_superio_setup(void) return 0; } - -/* This is grotty, but, because kernel is always referenced on the link line - * before any devices, this is safe. - */ __initcall(smsc_superio_setup); -void __init platform_setup(void) -{ - /* Cayman platform leaves the decision to head.S, for now */ - platform_parms.fpu_flags = fpu_in_use; -} - -void __init platform_monitor(void) +static void __iomem *cayman_ioport_map(unsigned long port, unsigned int len) { - /* Nothing yet .. */ -} + if (port < 0x400) { + extern unsigned long smsc_superio_virt; + return (void __iomem *)((port << 2) | smsc_superio_virt); + } -void __init platform_reserve(void) -{ - /* Nothing yet .. */ + return (void __iomem *)port; } -const char *get_system_type(void) -{ - return "Hitachi Cayman"; -} +extern void init_cayman_irq(void); +static struct sh_machine_vector mv_cayman __initmv = { + .mv_name = "Hitachi Cayman", + .mv_nr_irqs = 64, + .mv_ioport_map = cayman_ioport_map, + .mv_init_irq = init_cayman_irq, +}; |