diff options
author | Koen Kooi <koen@openembedded.org> | 2008-01-28 11:27:21 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2008-01-28 11:27:21 +0000 |
commit | 43f3297970d794c9720998ea07ad45d57b371b71 (patch) | |
tree | 2ebc3bffa3a50477a83cbf3b9a2b14afe4638e58 /packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch | |
parent | 85b5683120b7aa53f10639b4356ead1f1c0d8d47 (diff) |
linux-ezx: add 2.6.24
Diffstat (limited to 'packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch')
-rw-r--r-- | packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch new file mode 100644 index 0000000000..9ed4906d78 --- /dev/null +++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch @@ -0,0 +1,309 @@ +Index: linux-2.6.24/drivers/mtd/maps/Kconfig +=================================================================== +--- linux-2.6.24.orig/drivers/mtd/maps/Kconfig ++++ linux-2.6.24/drivers/mtd/maps/Kconfig +@@ -588,6 +588,34 @@ + Map driver for a NOR flash bank located on the Expansion Bus of the + Intel Vermilion Range chipset. + ++config MTD_EZX ++ tristate "Map driver for Motorola EZX Platform" ++ depends on MTD && PXA_EZX ++ ++if MTD_EZX ++ ++choice ++ prompt "Select partition mapping for EZX platform" ++ ++config MTD_EZX_A780 ++ bool "A780/E680 Original Mapping" ++ ++config MTD_EZX_A780_ALTERNATE ++ bool "A780/E680 Alternate Mapping for BLOB2" ++ ++config MTD_EZX_A1200 ++ bool "A1200 Original Mapping" ++ ++config MTD_EZX_E2 ++ bool "E2 Original Mapping" ++ ++config MTD_EZX_E6 ++ bool "E6 Original Mapping" ++ ++endchoice ++ ++endif ++ + config MTD_PLATRAM + tristate "Map driver for platform device RAM (mtd-ram)" + select MTD_RAM +Index: linux-2.6.24/drivers/mtd/maps/Makefile +=================================================================== +--- linux-2.6.24.orig/drivers/mtd/maps/Makefile ++++ linux-2.6.24/drivers/mtd/maps/Makefile +@@ -69,3 +69,4 @@ + obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o + obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o + obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o ++obj-$(CONFIG_MTD_EZX) += ezx-flash.o +Index: linux-2.6.24/drivers/mtd/maps/ezx-flash.c +=================================================================== +--- /dev/null ++++ linux-2.6.24/drivers/mtd/maps/ezx-flash.c +@@ -0,0 +1,256 @@ ++/* ++ * Map driver for the PXA27x ++ * ++ * Author: Harald Welte ++ * Copyright: (C) 2001 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. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/dma-mapping.h> ++#include <linux/slab.h> ++ ++#include <linux/mtd/mtd.h> ++#include <linux/mtd/map.h> ++#include <linux/mtd/partitions.h> ++ ++#include <asm/io.h> ++#include <asm/hardware.h> ++#include <asm/cacheflush.h> ++#include <asm/arch/pxa-regs.h> ++#include <asm/arch/mainstone.h> ++ ++#define WINDOW_ADDR 0x0 ++#define WINDOW_SIZE (32*1024*1024) ++#define WINDOW_CACHE_ADDR 0x0 ++#define WINDOW_CACHE_SIZE 0x1a00000 ++ ++static void pxa27x_map_inval_cache(struct map_info *map, unsigned long from, ++ ssize_t len) ++{ ++ flush_ioremap_region(map->phys, map->cached, from, len); ++} ++ ++ ++struct map_info pxa27x_map = { ++ .name = "PXA27x flash", ++ .size = WINDOW_SIZE, ++ .phys = WINDOW_ADDR, ++ .inval_cache = &pxa27x_map_inval_cache, ++}; ++ ++#if defined CONFIG_MTD_EZX_A780_ALTERNATE ++static struct mtd_partition pxa27x_partitions[] = { ++ { ++ .name = "Bootloader (RO)", ++ .size = 0x00020000, ++ .offset = 0, ++ .mask_flags = MTD_WRITEABLE, ++ }, { ++ .name = "Bootloader 2", ++ .size = 0x00020000, ++ .offset = 0x00020000, ++ } , { ++ .name = "Moto Kernel", ++ .size = 0x000e0000, // 896KB ++ .offset = 0x00040000, ++ } , { ++ .name = "rootfs", ++ .size = 0x01760000, ++ .offset = 0x00120000, ++ } , { ++ .name = "OpenEZX Kernel", ++ .size = 0x00180000, // 1.5MB ++ .offset = 0x01880000, ++ } , { ++ .name = "ezxlocal", ++ .size = 0x005a0000, ++ .offset = 0x01a00000, ++ } , { ++ .name = "setup", ++ .size = 0x00020000, ++ .offset = 0x01fa0000, ++ } , { ++ .name = "Logo", ++ .size = 0x00020000, ++ .offset = 0x01fc0000, ++ }, ++}; ++#elif defined CONFIG_MTD_EZX_A780 ++static struct mtd_partition pxa27x_partitions[] = { ++ { ++ .name = "Bootloader", ++ .size = 0x00020000, ++ .offset = 0, ++ .mask_flags = MTD_WRITEABLE, ++ }, { ++ .name = "Kernel", ++ .size = 0x000e0000, ++ .offset = 0x00020000, ++ } , { ++ .name = "rootfs", ++ .size = 0x018e0000, ++ .offset = 0x00120000, ++ } , { ++ .name = "VFM_Filesystem", ++ .size = 0x00580000, ++ .offset = 0x01a00000, ++ } , { ++ .name = "setup", ++ .size = 0x00020000, ++ .offset = 0x01fa0000, ++ } , { ++ .name = "Logo", ++ .size = 0x00020000, ++ .offset = 0x01fc0000, ++ }, ++}; ++#elif defined CONFIG_MTD_EZX_A1200 ++static struct mtd_partition pxa27x_partitions[] = { ++ { ++ .name = "Caddo 2", ++ .size = 0x00008000, ++ .offset = 0, ++ }, { ++ .name = "Itunes", ++ .size = 0x00008000, ++ .offset = 0x00008000, ++ }, { ++ .name = "Caddo 1", ++ .size = 0x00008000, ++ .offset = 0x00010000, ++ }, { ++ .name = "Fota rev", ++ .size = 0x00008000, ++ .offset = 0x00018000, ++ }, { ++ .name = "MBM", ++ .size = 0x00040000, ++ .offset = 0x00020000, ++ .mask_flags = MTD_WRITEABLE, ++ }, { ++ .name = "Blob", ++ .size = 0x00020000, ++ .offset = 0x00080000, ++ .mask_flags = MTD_WRITEABLE, ++ }, { ++ .name = "Kernel", ++ .size = 0x00100000, ++ .offset = 0x000A0000, ++ } , { ++ .name = "UserFS DB", ++ .size = 0x00600000, ++ .offset = 0x00AA0000, ++ }, { ++ .name = "UserFS", ++ .size = 0x007E0000, ++ .offset = 0x010A0000, ++ }, { ++ .name = "Test cmd", ++ .size = 0x00020000, ++ .offset = 0x018C0000, ++ } , { ++ .name = "Logo", ++ .size = 0x00020000, ++ .offset = 0x018E0000, ++ } , { ++ .name = "Fota", ++ .size = 0x000c0000, ++ .offset = 0x01900000, ++ }, { ++ .name = "Reserve", ++ .size = 0x00020000, ++ .offset = 0x019c0000, ++ } ++}; ++#else ++#error "please define partition for this PXA27x implementation" ++#endif ++ ++ ++static struct mtd_info *mymtd; ++static struct mtd_partition *parsed_parts; ++ ++static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; ++ ++static int __init init_pxa27x(void) ++{ ++ struct mtd_partition *parts; ++ int nb_parts = 0; ++ int parsed_nr_parts = 0; ++ char *part_type = "static"; ++ ++ pxa27x_map.bankwidth = (BOOT_DEF & 1) ? 2 : 4; ++ ++ printk("Probing PXA27x flash at physical address 0x%08x (%d-bit bankwidth)\n", ++ WINDOW_ADDR, pxa27x_map.bankwidth * 8); ++ pxa27x_map.virt = ioremap(pxa27x_map.phys, pxa27x_map.size); ++ ++ if (!pxa27x_map.virt) { ++ printk("Failed to ioremap\n"); ++ return -EIO; ++ } ++ ++ mymtd = do_map_probe("cfi_probe", &pxa27x_map); ++ if (!mymtd) { ++ iounmap((void *)pxa27x_map.virt); ++ return -ENXIO; ++ } ++ mymtd->owner = THIS_MODULE; ++ ++ simple_map_init(&pxa27x_map); ++ ++ if (parsed_nr_parts == 0) { ++ int ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0); ++ ++ if (ret > 0) { ++ part_type = "RedBoot"; ++ parsed_nr_parts = ret; ++ } ++ } ++ ++ if (parsed_nr_parts > 0) { ++ parts = parsed_parts; ++ nb_parts = parsed_nr_parts; ++ } else { ++ parts = pxa27x_partitions; ++ nb_parts = ARRAY_SIZE(pxa27x_partitions); ++ } ++ ++ if (nb_parts) { ++ printk(KERN_NOTICE "Using %s partition definition\n", part_type); ++ add_mtd_partitions(mymtd, parts, nb_parts); ++ } else { ++ add_mtd_device(mymtd); ++ } ++ return 0; ++} ++ ++static void __exit cleanup_pxa27x(void) ++{ ++ if (mymtd) { ++ del_mtd_partitions(mymtd); ++ map_destroy(mymtd); ++ if (parsed_parts) ++ kfree(parsed_parts); ++ } ++ if (pxa27x_map.virt) ++ iounmap((void *)pxa27x_map.virt); ++ if (pxa27x_map.cached) ++ iounmap((void *)pxa27x_map.cached); ++ return; ++} ++ ++module_init(init_pxa27x); ++module_exit(cleanup_pxa27x); ++ ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>"); ++MODULE_DESCRIPTION("MTD map driver for Motorola EZX platform"); |