diff options
author | Martin Michlmayr <tbm@cyrius.com> | 2006-09-05 16:43:23 +0000 |
---|---|---|
committer | Martin Michlmayr <tbm@cyrius.com> | 2006-09-05 16:43:23 +0000 |
commit | fdc089fd9fac5e678532ddbbcc2384d9763fe4b6 (patch) | |
tree | 72f771513d2b2792d16a6c19579c4d53520e9a77 /debian/patches/arm-iop-mtd-maps.patch | |
parent | b92983d0751a23bac194142484186e0b05a57b62 (diff) | |
download | kernel_replicant_linux-fdc089fd9fac5e678532ddbbcc2384d9763fe4b6.tar.gz kernel_replicant_linux-fdc089fd9fac5e678532ddbbcc2384d9763fe4b6.tar.bz2 kernel_replicant_linux-fdc089fd9fac5e678532ddbbcc2384d9763fe4b6.zip |
add ARM IOP patches again
svn path=/dists/trunk/linux-2.6/; revision=7345
Diffstat (limited to 'debian/patches/arm-iop-mtd-maps.patch')
-rw-r--r-- | debian/patches/arm-iop-mtd-maps.patch | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/debian/patches/arm-iop-mtd-maps.patch b/debian/patches/arm-iop-mtd-maps.patch new file mode 100644 index 000000000000..c01a1de4b58e --- /dev/null +++ b/debian/patches/arm-iop-mtd-maps.patch @@ -0,0 +1,188 @@ +# Add an MTD maps for IOP3xx boards +# Upstream status: can be solved in a better way as of 2.6.18 + +diff -urN a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig +--- a/drivers/mtd/maps/Kconfig 2006-08-03 11:39:05.885006500 +0000 ++++ b/drivers/mtd/maps/Kconfig 2006-08-07 17:19:06.190596000 +0000 +@@ -447,6 +447,14 @@ + 21285 bridge used with Intel's StrongARM processors. More info at + <http://www.intel.com/design/bridge/docs/21285_documentation.htm>. + ++config MTD_IOP3XX ++ tristate "CFI Flash device mapped on the XScale IOP3XX board" ++ depends on ARM && MTD_CFI && ARCH_IOP3XX ++ help ++ This enables access routines for the flash chips on the Intel XScale ++ IOP3XX based evaluation board. If you have one of these boards and ++ would like to use the flash chips on it, say 'Y'. ++ + config MTD_IQ80310 + tristate "CFI Flash device mapped on the XScale IQ80310 board" + depends on MTD_CFI && ARCH_IQ80310 +diff -urN a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile +--- a/drivers/mtd/maps/Makefile 2006-08-03 11:39:05.885006500 +0000 ++++ b/drivers/mtd/maps/Makefile 2006-08-07 17:18:53.981833000 +0000 +@@ -15,7 +15,7 @@ + obj-$(CONFIG_MTD_CSTM_MIPS_IXX) += cstm_mips_ixx.o + obj-$(CONFIG_MTD_DC21285) += dc21285.o + obj-$(CONFIG_MTD_DILNETPC) += dilnetpc.o +-obj-$(CONFIG_MTD_IQ80310) += iq80310.o ++obj-$(CONFIG_MTD_IOP3XX) += iop3xx.o + obj-$(CONFIG_MTD_L440GX) += l440gx.o + obj-$(CONFIG_MTD_AMD76XROM) += amd76xrom.o + obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o +diff -urN a/drivers/mtd/maps/iop3xx.c b/drivers/mtd/maps/iop3xx.c +--- a/drivers/mtd/maps/iop3xx.c 1970-01-01 00:00:00.000000000 +0000 ++++ b/drivers/mtd/maps/iop3xx.c 2006-08-07 17:18:53.981833000 +0000 +@@ -0,0 +1,150 @@ ++/* ++ * $Id: iop3xx.c,v 1.17 2003/06/23 11:48:18 dwmw2 Exp $ ++ * ++ * Mapping for Intel XScale IOP3xx based platforms ++ * ++ * Author: Nicolas Pitre ++ * Copyright: (C) 2001-2003 MontaVista Software Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * 09/03: Cleaned up to be generic to all IOP3xx systems - ds ++ * ++ * If you add a new machine type with a different WINDOW_SIZE or ++ * physmap addr, just wrap the init in if(machine_is_X()) { } ++ * and make sure your board header gets included in ++ * include/asm-arm/arch-iop3xx/hardware.h to pick up the definitions. ++ * ++ * DO NOT fill this file with #ifdef CONFIG_ARCH_XXXX crap. ++ */ ++ ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <asm/io.h> ++#include <asm/mach-types.h> ++#include <asm/hardware.h> ++#include <linux/mtd/mtd.h> ++#include <linux/mtd/map.h> ++#include <linux/mtd/partitions.h> ++ ++static struct mtd_info *mymtd; ++ ++static struct map_info iop3xx_map = { ++ .name = "IOP3xx Flash", ++}; ++ ++static struct mtd_partition iop3xx_partitions[6] = { ++ { ++ .name = "RedBoot", ++ .size = 0x00040000, ++ .offset = 0, ++ },{ ++ .name = "ramdisk", ++ .size = 0x00d00000, ++ .offset = 0x00040000, ++ },{ ++ .name = "kernel", ++ .size = 0x00160000, ++ .offset = 0x00d40000 ++ },{ ++ .name = "user", ++ .size = 0x00120000, ++ .offset = 0x00ea0000 ++ },{ ++ .name = "RedBoot config", ++ .size = 0x00020000, ++ .offset = 0x00fc0000, ++ // .mask_flags = MTD_WRITEABLE ++ },{ ++ .name = "FIS directory", ++ .size = 0x00020000, ++ .offset = 0x00fe0000 ++ } ++}; ++ ++static struct mtd_info *mymtd; ++static struct mtd_partition *parsed_parts; ++static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; ++ ++static int __init init_iop3xx(void) ++{ ++ struct mtd_partition *parts; ++ int nb_parts = 0; ++ int parsed_nr_parts = 0; ++ int ret; ++ ++ if(machine_is_iq80321()) { ++ iop3xx_map.phys = IQ80321_FLASHBASE; ++ iop3xx_map.size = IQ80321_FLASHSIZE; ++ iop3xx_map.bankwidth = IQ80321_FLASHWIDTH; ++ } else if(machine_is_iq31244()) { ++ iop3xx_map.phys = IQ31244_FLASHBASE; ++ iop3xx_map.size = IQ31244_FLASHSIZE; ++ iop3xx_map.bankwidth = IQ31244_FLASHWIDTH; ++ } else if(machine_is_iq80331()) { ++ iop3xx_map.phys = IQ80331_FLASHBASE; ++ iop3xx_map.size = IQ80331_FLASHSIZE; ++ iop3xx_map.bankwidth = IQ80331_FLASHWIDTH; ++ } else if(machine_is_n2100()) { ++ iop3xx_map.phys = N2100_FLASHBASE; ++ iop3xx_map.size = N2100_FLASHSIZE; ++ iop3xx_map.bankwidth = N2100_FLASHWIDTH; ++ } else { ++ printk("Unknown IOP3xx platform - flash access disabled\n"); ++ return -ENODEV; ++ } ++ ++ iop3xx_map.virt = ++ (unsigned long)ioremap(iop3xx_map.phys, iop3xx_map.size ); ++ if (!iop3xx_map.virt) { ++ printk("Failed to ioremap\n"); ++ return -EIO; ++ } ++ simple_map_init(&iop3xx_map); ++ ++ mymtd = do_map_probe("cfi_probe", &iop3xx_map); ++ if (!mymtd) { ++ iounmap((void *)iop3xx_map.virt); ++ return -ENXIO; ++ } ++ mymtd->owner = THIS_MODULE; ++ ++ ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0); ++ ret=-1; ++ if (ret > 0) ++ parsed_nr_parts = ret; ++ if (parsed_nr_parts > 0) { ++ parts = parsed_parts; ++ nb_parts = parsed_nr_parts; ++ } else { ++ parts = iop3xx_partitions; ++ nb_parts = ARRAY_SIZE(iop3xx_partitions); ++ } ++ add_mtd_partitions(mymtd, parts, nb_parts); ++ return 0; ++} ++ ++static void __exit cleanup_iop3xx(void) ++{ ++ if (mymtd) { ++ del_mtd_partitions(mymtd); ++ map_destroy(mymtd); ++ if (parsed_parts) ++ kfree(parsed_parts); ++ } ++ if (iop3xx_map.virt) ++ iounmap((void *)iop3xx_map.virt); ++} ++ ++module_init(init_iop3xx); ++module_exit(cleanup_iop3xx); ++ ++ ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Nicolas Pitre <nico@cam.org>"); ++MODULE_DESCRIPTION("MTD map driver for Intel XScale IOP3xx Platforms"); + |