add io resource patch from #800, merge flash map stuff from linux 2.4 to support...
[openwrt.git] / target / linux / brcm-2.6 / patches / 002-flash-map.patch
index 9d56893..0f9c5ad 100644 (file)
@@ -1,7 +1,7 @@
 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.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) 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 <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>
 +
 +#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
 +#define NVRAM_SPACE 0x8000
-+#define WINDOW_ADDR 0x1c000000
-+#define WINDOW_SIZE 0x800000
++#define WINDOW_ADDR 0x1fc00000
++#define WINDOW_SIZE 0x400000
 +#define BUSWIDTH 2
 +
++extern sb_t *sbh;
 +static struct mtd_info *bcm947xx_mtd;
 +
 +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)
 +{
++      uint coreidx;
++      chipcregs_t *cc;
++      uint32 fltype;
++      uint window_addr = 0, window_size = 0;
 +      size_t size;
 +      int ret = 0;
 +#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;
 +#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) {
 +              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_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
This page took 0.027492 seconds and 4 git commands to generate.