diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-20 10:14:29 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-20 10:14:29 -0800 |
commit | d7f786e06538081dd10c97931a89418699fe609d (patch) | |
tree | 750c6b313711c9df5d6a12197587e0372764df13 /arch/mips | |
parent | e5717c48ed52feebd59756578debd34eaeb9d262 (diff) | |
parent | f00a3ec4d47b51c5995fe10f8252a90aca331e62 (diff) |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[NET] Eliminate user-selectable CONFIG_MV643XX_ETH_[012]
[MIPS] Drop __init from init_8259A()
[MIPS] Fix Kconfig typo bug
[MIPS] Fix double signal on trap and break instruction
[MIPS] sigset_32 has been made redundand by compat_sigset_t.
[MIPS] emma2rh: Remove needless <asm/i8259.h> inclusion.
[MIPS] Add MTD device support for Cobalt
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/cobalt/Makefile | 1 | ||||
-rw-r--r-- | arch/mips/cobalt/mtd.c | 61 | ||||
-rw-r--r-- | arch/mips/configs/cobalt_defconfig | 86 | ||||
-rw-r--r-- | arch/mips/emma2rh/common/irq.c | 1 | ||||
-rw-r--r-- | arch/mips/emma2rh/markeins/irq.c | 1 | ||||
-rw-r--r-- | arch/mips/kernel/i8259.c | 13 | ||||
-rw-r--r-- | arch/mips/kernel/signal32.c | 9 | ||||
-rw-r--r-- | arch/mips/kernel/traps.c | 2 | ||||
-rw-r--r-- | arch/mips/momentum/jaguar_atx/platform.c | 21 | ||||
-rw-r--r-- | arch/mips/momentum/ocelot_3/platform.c | 21 | ||||
-rw-r--r-- | arch/mips/momentum/ocelot_c/platform.c | 14 | ||||
-rw-r--r-- | arch/mips/oprofile/Kconfig | 2 |
12 files changed, 158 insertions, 74 deletions
diff --git a/arch/mips/cobalt/Makefile b/arch/mips/cobalt/Makefile index 225ac8f34cc..12589a1ff04 100644 --- a/arch/mips/cobalt/Makefile +++ b/arch/mips/cobalt/Makefile @@ -5,5 +5,6 @@ obj-y := irq.o reset.o setup.o obj-$(CONFIG_EARLY_PRINTK) += console.o +obj-$(CONFIG_MTD_PHYSMAP) += mtd.o EXTRA_AFLAGS := $(CFLAGS) diff --git a/arch/mips/cobalt/mtd.c b/arch/mips/cobalt/mtd.c new file mode 100644 index 00000000000..01d8ec77fe9 --- /dev/null +++ b/arch/mips/cobalt/mtd.c @@ -0,0 +1,61 @@ +/* + * Registration of Cobalt MTD device. + * + * Copyright (C) 2006 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include <linux/init.h> +#include <linux/platform_device.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h> + +static struct mtd_partition cobalt_mtd_partitions[] = { + { + .name = "Colo", + .offset = 0x0, + .size = 0x80000, + }, +}; + +static struct physmap_flash_data cobalt_flash_data = { + .width = 1, + .nr_parts = 1, + .parts = cobalt_mtd_partitions, +}; + +static struct resource cobalt_mtd_resource = { + .start = 0x1fc00000, + .end = 0x1fc7ffff, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device cobalt_mtd = { + .name = "physmap-flash", + .dev = { + .platform_data = &cobalt_flash_data, + }, + .num_resources = 1, + .resource = &cobalt_mtd_resource, +}; + +static int __init cobalt_mtd_init(void) +{ + platform_device_register(&cobalt_mtd); + + return 0; +} + +module_init(cobalt_mtd_init); diff --git a/arch/mips/configs/cobalt_defconfig b/arch/mips/configs/cobalt_defconfig index 1a3d776ad1e..f88c40fc994 100644 --- a/arch/mips/configs/cobalt_defconfig +++ b/arch/mips/configs/cobalt_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.20 -# Sun Feb 18 21:27:37 2007 +# Mon Feb 19 14:51:58 2007 # CONFIG_MIPS=y @@ -373,7 +373,88 @@ CONFIG_PROC_EVENTS=y # # Memory Technology Devices (MTD) # -# CONFIG_MTD is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +# CONFIG_MTD_BLOCK is not set +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=0x0 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=0 +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_CAFE is not set + +# +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set # # Parallel port support @@ -901,6 +982,7 @@ CONFIG_CONFIGFS_FS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set diff --git a/arch/mips/emma2rh/common/irq.c b/arch/mips/emma2rh/common/irq.c index c191b3e9d9d..d9560477366 100644 --- a/arch/mips/emma2rh/common/irq.c +++ b/arch/mips/emma2rh/common/irq.c @@ -27,7 +27,6 @@ #include <linux/irq.h> #include <linux/types.h> -#include <asm/i8259.h> #include <asm/system.h> #include <asm/mipsregs.h> #include <asm/debug.h> diff --git a/arch/mips/emma2rh/markeins/irq.c b/arch/mips/emma2rh/markeins/irq.c index 3299b6dfe76..e2663002637 100644 --- a/arch/mips/emma2rh/markeins/irq.c +++ b/arch/mips/emma2rh/markeins/irq.c @@ -29,7 +29,6 @@ #include <linux/ptrace.h> #include <linux/delay.h> -#include <asm/i8259.h> #include <asm/irq_cpu.h> #include <asm/system.h> #include <asm/mipsregs.h> diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c index b33ba6cd7f5..9c79703979b 100644 --- a/arch/mips/kernel/i8259.c +++ b/arch/mips/kernel/i8259.c @@ -28,7 +28,7 @@ * moves to arch independent land */ -static int i8259A_auto_eoi; +static int i8259A_auto_eoi = -1; DEFINE_SPINLOCK(i8259A_lock); /* some platforms call this... */ void mask_and_ack_8259A(unsigned int); @@ -216,7 +216,8 @@ spurious_8259A_irq: static int i8259A_resume(struct sys_device *dev) { - init_8259A(i8259A_auto_eoi); + if (i8259A_auto_eoi >= 0) + init_8259A(i8259A_auto_eoi); return 0; } @@ -226,8 +227,10 @@ static int i8259A_shutdown(struct sys_device *dev) * the kernel initialization code can get it * out of. */ - outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ - outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-1 */ + if (i8259A_auto_eoi >= 0) { + outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ + outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-1 */ + } return 0; } @@ -252,7 +255,7 @@ static int __init i8259A_init_sysfs(void) device_initcall(i8259A_init_sysfs); -void __init init_8259A(int auto_eoi) +void init_8259A(int auto_eoi) { unsigned long flags; diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 02062fc59f7..19bbef00195 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c @@ -108,13 +108,6 @@ typedef struct compat_siginfo { /* 32-bit compatibility types */ -#define _NSIG_BPW32 32 -#define _NSIG_WORDS32 (_NSIG / _NSIG_BPW32) - -typedef struct { - unsigned int sig[_NSIG_WORDS32]; -} sigset_t32; - typedef unsigned int __sighandler32_t; typedef void (*vfptr_t)(void); @@ -136,7 +129,7 @@ struct ucontext32 { s32 uc_link; stack32_t uc_stack; struct sigcontext32 uc_mcontext; - sigset_t32 uc_sigmask; /* mask last for extensibility */ + compat_sigset_t uc_sigmask; /* mask last for extensibility */ }; /* diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index f663c63d5dd..2aa208b99da 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -704,6 +704,7 @@ asmlinkage void do_bp(struct pt_regs *regs) die_if_kernel("Break instruction in kernel code", regs); force_sig(SIGTRAP, current); } + return; out_sigsegv: force_sig(SIGSEGV, current); @@ -747,6 +748,7 @@ asmlinkage void do_tr(struct pt_regs *regs) die_if_kernel("Trap instruction in kernel code", regs); force_sig(SIGTRAP, current); } + return; out_sigsegv: force_sig(SIGSEGV, current); diff --git a/arch/mips/momentum/jaguar_atx/platform.c b/arch/mips/momentum/jaguar_atx/platform.c index 81037709ba0..c78ba3025af 100644 --- a/arch/mips/momentum/jaguar_atx/platform.c +++ b/arch/mips/momentum/jaguar_atx/platform.c @@ -38,8 +38,6 @@ static struct platform_device mv643xx_eth_shared_device = { #define MV64x60_IRQ_ETH_1 49 #define MV64x60_IRQ_ETH_2 50 -#ifdef CONFIG_MV643XX_ETH_0 - static struct resource mv64x60_eth0_resources[] = { [0] = { .name = "eth0 irq", @@ -72,9 +70,6 @@ static struct platform_device eth0_device = { .platform_data = ð0_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_0 */ - -#ifdef CONFIG_MV643XX_ETH_1 static struct resource mv64x60_eth1_resources[] = { [0] = { @@ -108,9 +103,6 @@ static struct platform_device eth1_device = { .platform_data = ð1_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_1 */ - -#ifdef CONFIG_MV643XX_ETH_2 static struct resource mv64x60_eth2_resources[] = { [0] = { @@ -136,19 +128,12 @@ static struct platform_device eth2_device = { .platform_data = ð2_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_2 */ static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { &mv643xx_eth_shared_device, -#ifdef CONFIG_MV643XX_ETH_0 ð0_device, -#endif -#ifdef CONFIG_MV643XX_ETH_1 ð1_device, -#endif -#ifdef CONFIG_MV643XX_ETH_2 ð2_device, -#endif }; static u8 __init exchange_bit(u8 val, u8 cs) @@ -215,15 +200,9 @@ static int __init mv643xx_eth_add_pds(void) int ret; get_mac(mac); -#ifdef CONFIG_MV643XX_ETH_0 eth_mac_add(eth1_mac_addr, mac, 0); -#endif -#ifdef CONFIG_MV643XX_ETH_1 eth_mac_add(eth1_mac_addr, mac, 1); -#endif -#ifdef CONFIG_MV643XX_ETH_2 eth_mac_add(eth2_mac_addr, mac, 2); -#endif ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs)); diff --git a/arch/mips/momentum/ocelot_3/platform.c b/arch/mips/momentum/ocelot_3/platform.c index 57cfe5c6e4a..0ab8d231cf7 100644 --- a/arch/mips/momentum/ocelot_3/platform.c +++ b/arch/mips/momentum/ocelot_3/platform.c @@ -38,8 +38,6 @@ static struct platform_device mv643xx_eth_shared_device = { #define MV64x60_IRQ_ETH_1 49 #define MV64x60_IRQ_ETH_2 50 -#ifdef CONFIG_MV643XX_ETH_0 - static struct resource mv64x60_eth0_resources[] = { [0] = { .name = "eth0 irq", @@ -72,9 +70,6 @@ static struct platform_device eth0_device = { .platform_data = ð0_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_0 */ - -#ifdef CONFIG_MV643XX_ETH_1 static struct resource mv64x60_eth1_resources[] = { [0] = { @@ -108,9 +103,6 @@ static struct platform_device eth1_device = { .platform_data = ð1_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_1 */ - -#ifdef CONFIG_MV643XX_ETH_2 static struct resource mv64x60_eth2_resources[] = { [0] = { @@ -136,19 +128,12 @@ static struct platform_device eth2_device = { .platform_data = ð2_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_2 */ static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { &mv643xx_eth_shared_device, -#ifdef CONFIG_MV643XX_ETH_0 ð0_device, -#endif -#ifdef CONFIG_MV643XX_ETH_1 ð1_device, -#endif -#ifdef CONFIG_MV643XX_ETH_2 ð2_device, -#endif }; static u8 __init exchange_bit(u8 val, u8 cs) @@ -215,15 +200,9 @@ static int __init mv643xx_eth_add_pds(void) int ret; get_mac(mac); -#ifdef CONFIG_MV643XX_ETH_0 eth_mac_add(eth1_mac_addr, mac, 0); -#endif -#ifdef CONFIG_MV643XX_ETH_1 eth_mac_add(eth1_mac_addr, mac, 1); -#endif -#ifdef CONFIG_MV643XX_ETH_2 eth_mac_add(eth2_mac_addr, mac, 2); -#endif ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs)); diff --git a/arch/mips/momentum/ocelot_c/platform.c b/arch/mips/momentum/ocelot_c/platform.c index 6c495b2f156..8e381d44757 100644 --- a/arch/mips/momentum/ocelot_c/platform.c +++ b/arch/mips/momentum/ocelot_c/platform.c @@ -37,8 +37,6 @@ static struct platform_device mv643xx_eth_shared_device = { #define MV64x60_IRQ_ETH_0 48 #define MV64x60_IRQ_ETH_1 49 -#ifdef CONFIG_MV643XX_ETH_0 - static struct resource mv64x60_eth0_resources[] = { [0] = { .name = "eth0 irq", @@ -71,9 +69,6 @@ static struct platform_device eth0_device = { .platform_data = ð0_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_0 */ - -#ifdef CONFIG_MV643XX_ETH_1 static struct resource mv64x60_eth1_resources[] = { [0] = { @@ -107,16 +102,11 @@ static struct platform_device eth1_device = { .platform_data = ð1_pd, }, }; -#endif /* CONFIG_MV643XX_ETH_1 */ static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { &mv643xx_eth_shared_device, -#ifdef CONFIG_MV643XX_ETH_0 ð0_device, -#endif -#ifdef CONFIG_MV643XX_ETH_1 ð1_device, -#endif /* The third port is not wired up on the Ocelot C */ }; @@ -184,12 +174,8 @@ static int __init mv643xx_eth_add_pds(void) int ret; get_mac(mac); -#ifdef CONFIG_MV643XX_ETH_0 eth_mac_add(eth1_mac_addr, mac, 0); -#endif -#ifdef CONFIG_MV643XX_ETH_1 eth_mac_add(eth1_mac_addr, mac, 1); -#endif ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs)); diff --git a/arch/mips/oprofile/Kconfig b/arch/mips/oprofile/Kconfig index ca395ef06d4..fb6f235348b 100644 --- a/arch/mips/oprofile/Kconfig +++ b/arch/mips/oprofile/Kconfig @@ -11,7 +11,7 @@ config PROFILING config OPROFILE tristate "OProfile system profiling (EXPERIMENTAL)" - depends on PROFILING && !!MIPS_MT_SMTC && EXPERIMENTAL + depends on PROFILING && !MIPS_MT_SMTC && EXPERIMENTAL help OProfile is a profiling system capable of profiling the whole system, include the kernel, kernel modules, libraries, |