1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-11-18 14:47:46 +01:00

add io resource patch from #800, merge flash map stuff from linux 2.4 to support the wl-hdd without breaking the netgear wgt634u

SVN-Revision: 5134
This commit is contained in:
Felix Fietkau 2006-10-15 22:36:16 +00:00
parent c867eea4b4
commit 140f6cc62c
2 changed files with 43 additions and 32 deletions

@ -11329,7 +11329,7 @@ diff -urN linux.old/arch/mips/bcm947xx/pci.c linux.dev/arch/mips/bcm947xx/pci.c
+static struct resource ext_pci_io_resource = { +static struct resource ext_pci_io_resource = {
+ .name = "Ext PCI I/O resources", + .name = "Ext PCI I/O resources",
+ .start = 0x100, + .start = 0x100,
+ .end = 0x1FF, + .end = 0x7FF,
+ .flags = IORESOURCE_IO, + .flags = IORESOURCE_IO,
+}; +};
+ +

@ -1,7 +1,7 @@
diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/bcm47xx-flash.c diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/bcm47xx-flash.c
--- linux.old/drivers/mtd/maps/bcm47xx-flash.c 1970-01-01 01:00:00.000000000 +0100 --- linux.old/drivers/mtd/maps/bcm47xx-flash.c 1970-01-01 01:00:00.000000000 +0100
+++ linux.dev/drivers/mtd/maps/bcm47xx-flash.c 2006-06-23 19:54:06.000000000 +0200 +++ linux.dev/drivers/mtd/maps/bcm47xx-flash.c 2006-06-23 19:54:06.000000000 +0200
@@ -0,0 +1,452 @@ @@ -0,0 +1,490 @@
+/* +/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org> + * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
+ * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org> + * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
@ -56,14 +56,22 @@ diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/
+#include <linux/crc32.h> +#include <linux/crc32.h>
+#include <asm/io.h> +#include <asm/io.h>
+ +
+#include <typedefs.h>
+#include <osl.h>
+#include <bcmnvram.h>
+#include <bcmutils.h>
+#include <sbconfig.h>
+#include <sbchipc.h>
+#include <sbutils.h>
+#include <trxhdr.h> +#include <trxhdr.h>
+ +
+#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y)) +#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
+#define NVRAM_SPACE 0x8000 +#define NVRAM_SPACE 0x8000
+#define WINDOW_ADDR 0x1c000000 +#define WINDOW_ADDR 0x1fc00000
+#define WINDOW_SIZE 0x800000 +#define WINDOW_SIZE 0x400000
+#define BUSWIDTH 2 +#define BUSWIDTH 2
+ +
+extern sb_t *sbh;
+static struct mtd_info *bcm947xx_mtd; +static struct mtd_info *bcm947xx_mtd;
+ +
+static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len) +static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
@ -394,6 +402,10 @@ diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/
+ +
+int __init init_bcm947xx_map(void) +int __init init_bcm947xx_map(void)
+{ +{
+ uint coreidx;
+ chipcregs_t *cc;
+ uint32 fltype;
+ uint window_addr = 0, window_size = 0;
+ size_t size; + size_t size;
+ int ret = 0; + int ret = 0;
+#ifdef CONFIG_MTD_PARTITIONS +#ifdef CONFIG_MTD_PARTITIONS
@ -401,7 +413,33 @@ diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/
+ int i; + int i;
+#endif +#endif
+ +
+ bcm947xx_map.virt = ioremap(WINDOW_ADDR, WINDOW_SIZE); + coreidx = sb_coreidx(sbh);
+
+ /* Check strapping option if chipcommon exists */
+ if ((cc = sb_setcore(sbh, SB_CC, 0))) {
+ fltype = readl(&cc->capabilities) & CAP_FLASH_MASK;
+ if (fltype == PFLASH) {
+ bcm947xx_map.map_priv_2 = 1;
+ window_addr = 0x1c000000;
+ bcm947xx_map.size = window_size = 32 * 1024 * 1024;
+ if ((readl(&cc->flash_config) & CC_CFG_DS) == 0)
+ bcm947xx_map.bankwidth = 1;
+ }
+ } else {
+ fltype = PFLASH;
+ bcm947xx_map.map_priv_2 = 0;
+ window_addr = WINDOW_ADDR;
+ window_size = WINDOW_SIZE;
+ }
+
+ sb_setcoreidx(sbh, coreidx);
+
+ if (fltype != PFLASH) {
+ printk(KERN_ERR "pflash: found no supported devices\n");
+ ret = -ENODEV;
+ goto fail;
+ }
+ bcm947xx_map.virt = ioremap(window_addr, window_size);
+ +
+ if (!bcm947xx_map.virt) { + if (!bcm947xx_map.virt) {
+ printk("Failed to ioremap\n"); + printk("Failed to ioremap\n");
@ -454,30 +492,3 @@ diff -urN linux.old/drivers/mtd/maps/bcm47xx-flash.c linux.dev/drivers/mtd/maps/
+ +
+module_init(init_bcm947xx_map); +module_init(init_bcm947xx_map);
+module_exit(cleanup_bcm947xx_map); +module_exit(cleanup_bcm947xx_map);
diff -urN linux.old/drivers/mtd/maps/Kconfig linux.dev/drivers/mtd/maps/Kconfig
--- linux.old/drivers/mtd/maps/Kconfig 2006-06-23 19:13:51.000000000 +0200
+++ linux.dev/drivers/mtd/maps/Kconfig 2006-06-23 18:47:58.000000000 +0200
@@ -299,6 +299,12 @@
Mapping for the Flaga digital module. If you don't have one, ignore
this setting.
+config MTD_BCM47XX
+ tristate "BCM47xx flash device"
+ depends on MIPS && MTD_CFI && BCM947XX
+ help
+ Support for the flash chips on the BCM947xx board.
+
config MTD_BEECH
tristate "CFI Flash device mapped on IBM 405LP Beech"
depends on MTD_CFI && BEECH
diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
--- linux.old/drivers/mtd/maps/Makefile 2006-06-23 19:13:51.000000000 +0200
+++ linux.dev/drivers/mtd/maps/Makefile 2006-06-23 18:47:58.000000000 +0200
@@ -30,6 +30,7 @@
obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o
obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
+obj-$(CONFIG_MTD_BCM47XX) += bcm47xx-flash.o
obj-$(CONFIG_MTD_SA1100) += sa1100-flash.o
obj-$(CONFIG_MTD_IPAQ) += ipaq-flash.o
obj-$(CONFIG_MTD_SBC_GXX) += sbc_gxx.o