diff options
| author | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-05-26 15:36:22 +0000 | 
|---|---|---|
| committer | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-05-26 15:36:22 +0000 | 
| commit | f7bbf53880298080015cc9f9b9e7a1405fe83c49 (patch) | |
| tree | 35a3f0d080f6257e2b1630d8eb540150ffa34d6e | |
| parent | b705ac99a03ff6b7f96ccf814864caff1d739d09 (diff) | |
fix magicbox, convert mtd mapping to platform_device, add support for combined flash layout
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7336 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/magicbox-2.6/Makefile | 2 | ||||
| -rw-r--r-- | target/linux/magicbox-2.6/config/default | 9 | ||||
| -rw-r--r-- | target/linux/magicbox-2.6/files/arch/ppc/platforms/4xx/magicbox.c | 47 | ||||
| -rw-r--r-- | target/linux/magicbox-2.6/files/drivers/mtd/maps/magicmap.c | 113 | ||||
| -rw-r--r-- | target/linux/magicbox-2.6/image/Makefile | 15 | ||||
| -rw-r--r-- | target/linux/magicbox-2.6/patches/002-flash_map.patch | 30 | 
6 files changed, 62 insertions, 154 deletions
diff --git a/target/linux/magicbox-2.6/Makefile b/target/linux/magicbox-2.6/Makefile index 20325a8fa..9fe548a90 100644 --- a/target/linux/magicbox-2.6/Makefile +++ b/target/linux/magicbox-2.6/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk  ARCH:=powerpc  BOARD:=magicbox  BOARDNAME:=Magicbox -FEATURES:=jffs2 +FEATURES:=squashfs jffs2  include $(INCLUDE_DIR)/kernel-build.mk diff --git a/target/linux/magicbox-2.6/config/default b/target/linux/magicbox-2.6/config/default index dc33f83c0..cc53f5e56 100644 --- a/target/linux/magicbox-2.6/config/default +++ b/target/linux/magicbox-2.6/config/default @@ -28,7 +28,7 @@ CONFIG_BLK_DEV_MAGICBOX_IDE=y  CONFIG_BOOT_LOAD=0x00400000  # CONFIG_BT is not set  # CONFIG_BUBINGA is not set -CONFIG_CMDLINE="console=ttyS0,115200 init=/etc/preinit" +CONFIG_CMDLINE="root=/dev/mtdblock1 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit"  CONFIG_CMDLINE_BOOL=y  CONFIG_CONSISTENT_SIZE=0x00200000  CONFIG_CONSISTENT_START=0xff100000 @@ -103,7 +103,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y  # CONFIG_MTD_DOC2001PLUS is not set  CONFIG_MTD_GEN_PROBE=y  # CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_MAGICMAP=y  CONFIG_MTD_MAP_BANK_WIDTH_1=y  # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set  CONFIG_MTD_MAP_BANK_WIDTH_2=y @@ -117,13 +116,17 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y  CONFIG_MTD_PARTITIONS=y  # CONFIG_MTD_PCI is not set  # CONFIG_MTD_PHRAM is not set -# CONFIG_MTD_PHYSMAP is not set +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PHYSMAP_LEN=0 +CONFIG_MTD_PHYSMAP_START=0xffc00000  # CONFIG_MTD_PLATRAM is not set  # CONFIG_MTD_PMC551 is not set  # CONFIG_MTD_RAM is not set  # CONFIG_MTD_REDBOOT_PARTS is not set  # CONFIG_MTD_ROM is not set  # CONFIG_MTD_SLRAM is not set +CONFIG_MTD_SPLIT_ROOTFS=y  # CONFIG_NATSEMI is not set  # CONFIG_NE2K_PCI is not set  # CONFIG_NET_VENDOR_3COM is not set diff --git a/target/linux/magicbox-2.6/files/arch/ppc/platforms/4xx/magicbox.c b/target/linux/magicbox-2.6/files/arch/ppc/platforms/4xx/magicbox.c index 470fbc4e0..e65319bc6 100644 --- a/target/linux/magicbox-2.6/files/arch/ppc/platforms/4xx/magicbox.c +++ b/target/linux/magicbox-2.6/files/arch/ppc/platforms/4xx/magicbox.c @@ -24,6 +24,9 @@  #include <linux/tty.h>  #include <linux/serial.h>  #include <linux/serial_core.h> +#include <linux/platform_device.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h>  #include <asm/system.h>  #include <asm/pci-bridge.h> @@ -214,6 +217,50 @@ bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip)  #endif /* DEBUG */  } +static struct resource magicbox_flash_resource = { +	.start = 0xffc00000, +	.end   = 0xffffffffULL, +	.flags = IORESOURCE_MEM, +}; + +static struct mtd_partition magicbox_flash_parts[] = { +	{ +		.name = "linux", +		.offset = 0x0, +		.size = 0x3c0000, +	}, +	{ +		.name = "rootfs", +		.offset = 0x100000, +		.size = 0x2c0000, +	} +}; + +static struct physmap_flash_data magicbox_flash_data = { +	.width		= 2, +	.parts		= magicbox_flash_parts, +	.nr_parts	= ARRAY_SIZE(magicbox_flash_parts), +}; + +static struct platform_device magicbox_flash_device = { +	.name		= "physmap-flash", +	.id		= 0, +	.dev = { +			.platform_data = &magicbox_flash_data, +		}, +	.num_resources	= 1, +	.resource	= &magicbox_flash_resource, +}; + +static int magicbox_setup_flash(void) +{ +	platform_device_register(&magicbox_flash_device); + +	return 0; +}; + +arch_initcall (magicbox_setup_flash); +  void __init  magicbox_setup_arch(void)  { diff --git a/target/linux/magicbox-2.6/files/drivers/mtd/maps/magicmap.c b/target/linux/magicbox-2.6/files/drivers/mtd/maps/magicmap.c deleted file mode 100644 index b654a3d9b..000000000 --- a/target/linux/magicbox-2.6/files/drivers/mtd/maps/magicmap.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * magicmap.c: Copyleft 2005  Karol Lewandowski - * - * Mapping for MagicBox flash. - * Based on walnut.c. - * - * Heikki Lindholm <holindho@infradead.org> - * - * - * 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. - */ - -#include <linux/module.h> -#include <linux/types.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/map.h> -#include <linux/mtd/partitions.h> -#include <linux/autoconf.h> -#include <asm/io.h> - -static struct mtd_info *flash; - -static struct map_info magic_map = { -	.name =		"Magically mapped flash", -	.phys =         0xffc00000, -	.size =		0x400000, -	.bankwidth =	2, -}; - -static struct mtd_partition magic_partitions[] = { -	{ -		.name =   "linux", -		.offset = 0x0, -		.size =   0x3c0000, -	}, -	{ -		.name =   "rootfs", -		.offset = 0x100000, -		.size =   0x2c0000, -	}, -	{ -		.name =   "bootloader", -		.offset = 0x3c0000, -		.size =   0x040000, -		.mask_flags = MTD_WRITEABLE, -	}, -}; - -int __init init_magic(void) -{ -	u32 size, len; -	 -	magic_map.virt = -		(void __iomem *)ioremap(magic_map.phys, magic_map.size); - -	if (!magic_map.virt) { -		printk("Failed to ioremap flash.\n"); -		return -EIO; -	} - -	simple_map_init(&magic_map); - -	flash = do_map_probe("cfi_probe", &magic_map); -	if (flash) { -		flash->owner = THIS_MODULE; -		if (flash->read(flash, 12, sizeof(u32), &len, (char *) &size) || -			len != 4) -			return -ENXIO; -		size += 0x40; /* header size of the uImage */ -		if (size < 0x400000) { -			/* skip to next erase block */ -			if (size & (flash->erasesize - 1)) { -				size |= (flash->erasesize - 1); -				size += 1; -			} -			magic_partitions[1].offset = size; -			magic_partitions[1].size = magic_partitions[2].offset - size; -		} -		 -		add_mtd_partitions(flash, magic_partitions, -					ARRAY_SIZE(magic_partitions)); -	} else { -		printk("map probe failed for flash\n"); -		return -ENXIO; -	} - -	return 0; -} - -static void __exit cleanup_magic(void) -{ -	if (flash) { -		del_mtd_partitions(flash); -		map_destroy(flash); -	} - -	if (magic_map.virt) { -		iounmap((void *)magic_map.virt); -		magic_map.virt = NULL; -	} -} - -module_init(init_magic); -module_exit(cleanup_magic); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Karol Lewandowski"); -MODULE_DESCRIPTION("MTD map and partitions for IBM 405EP MagicBox boards"); diff --git a/target/linux/magicbox-2.6/image/Makefile b/target/linux/magicbox-2.6/image/Makefile index fe68f35d5..f99590f1e 100644 --- a/target/linux/magicbox-2.6/image/Makefile +++ b/target/linux/magicbox-2.6/image/Makefile @@ -21,16 +21,17 @@ endef  define Image/Build/jffs2-64k  	( \ -		dd if=$(KDIR)/uImage bs=65536 conv=sync; \ +		dd if=$(KDIR)/uImage bs=1024k conv=sync; \  		dd if=$(KDIR)/root.$(1) bs=65536 conv=sync; \  	) > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img  endef -#define Image/Build/jffs2-128k -#	( \ -#		dd if=$(LINUX_DIR)/arch/ppc/boot/images/uImage bs=131072 conv=sync; \ -#		dd if=$(KDIR)/root.$(1) bs=131072 conv=sync; \ -#	) > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img -#endef +define Image/Build/squashfs +	$(call prepare_generic_squashfs,$(KDIR)/root.squashfs) +	( \ +		dd if=$(LINUX_DIR)/arch/ppc/boot/images/uImage bs=1024k conv=sync; \ +		dd if=$(KDIR)/root.$(1) bs=65536 conv=sync; \ +	) > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img +endef  $(eval $(call BuildImage)) diff --git a/target/linux/magicbox-2.6/patches/002-flash_map.patch b/target/linux/magicbox-2.6/patches/002-flash_map.patch deleted file mode 100644 index 415daa51b..000000000 --- a/target/linux/magicbox-2.6/patches/002-flash_map.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -urN linux.old/drivers/mtd/maps/Kconfig linux.dev/drivers/mtd/maps/Kconfig ---- linux.old/drivers/mtd/maps/Kconfig	2006-08-30 06:30:59.000000000 +0200 -+++ linux.dev/drivers/mtd/maps/Kconfig	2006-08-30 06:11:51.000000000 +0200 -@@ -323,6 +323,15 @@ - 	  Walnut board. If you have one of these boards and would like to - 	  use the flash chips on it, say 'Y'. -  -+config MTD_MAGICMAP -+	tristate "Flash device mapped on IBM 405EP MagicBox" -+	depends on MTD_CFI && MTD_PARTITIONS && 40x && MAGICBOX -+	help -+	  This enables access routines for the flash chips on the IBM 405EP -+	  MagicBox board. If you have one of these boards and would like to -+	  use the flash chips on it, say 'Y'. -+ -+ - config MTD_EBONY - 	tristate "Flash devices mapped on IBM 440GP Ebony" - 	depends on MTD_JEDECPROBE && EBONY -diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile ---- linux.old/drivers/mtd/maps/Makefile	2006-08-30 06:30:59.000000000 +0200 -+++ linux.dev/drivers/mtd/maps/Makefile	2006-08-30 06:11:51.000000000 +0200 -@@ -58,6 +58,7 @@ - obj-$(CONFIG_MTD_BEECH)		+= beech-mtd.o - obj-$(CONFIG_MTD_ARCTIC)	+= arctic-mtd.o - obj-$(CONFIG_MTD_WALNUT)        += walnut.o -+obj-$(CONFIG_MTD_MAGICMAP)      += magicmap.o - obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o - obj-$(CONFIG_MTD_SBC8240)	+= sbc8240.o - obj-$(CONFIG_MTD_NOR_TOTO)	+= omap-toto-flash.o  | 
