b43: Remove unnecessary MMIO accesses in the interrupt hotpath.
[openwrt.git] / target / linux / storm / patches / 007-mtd.patch
index e7d02de..bc9a03e 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/chips/Kconfig
 +++ b/drivers/mtd/chips/Kconfig
-@@ -220,6 +220,13 @@
+@@ -220,6 +220,13 @@ config MTD_ROM
          This option enables basic support for ROM chips accessed through
          a bus mapping driver.
  
@@ -35,7 +35,7 @@
  
  #define MANUFACTURER_AMD      0x0001
  #define MANUFACTURER_ATMEL    0x001F
-@@ -322,6 +327,13 @@
+@@ -322,6 +327,13 @@ struct mtd_info *cfi_cmdset_0002(struct 
  #endif
  
                bootloc = extp->TopBottom;
@@ -49,7 +49,7 @@
                if ((bootloc != 2) && (bootloc != 3)) {
                        printk(KERN_WARNING "%s: CFI does not contain boot "
                               "bank location. Assuming top.\n", map->name);
-@@ -340,6 +352,9 @@
+@@ -340,6 +352,9 @@ struct mtd_info *cfi_cmdset_0002(struct 
                                cfi->cfiq->EraseRegionInfo[j] = swap;
                        }
                }
@@ -59,7 +59,7 @@
                /* Set the default CFI lock/unlock addresses */
                cfi->addr_unlock1 = 0x555;
                cfi->addr_unlock2 = 0x2aa;
-@@ -461,6 +476,7 @@
+@@ -461,6 +476,7 @@ static int __xipram chip_ready(struct ma
        map_word d, t;
  
        d = map_read(map, addr);
@@ -67,7 +67,7 @@
        t = map_read(map, addr);
  
        return map_word_equal(map, d, t);
-@@ -626,7 +642,9 @@
+@@ -626,7 +642,9 @@ static void put_chip(struct map_info *ma
        default:
                printk(KERN_ERR "MTD: put_chip() called with oldstate %d!!\n", chip->oldstate);
        }
@@ -77,7 +77,7 @@
  }
  
  #ifdef CONFIG_MTD_XIP
-@@ -940,7 +958,9 @@
+@@ -940,7 +958,9 @@ static inline int do_read_secsi_onechip(
        cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
        cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
  
@@ -87,7 +87,7 @@
        spin_unlock(chip->mutex);
  
        return 0;
-@@ -1005,7 +1025,10 @@
+@@ -1005,7 +1025,10 @@ static int __xipram do_write_oneword(str
         */
        unsigned long uWriteTimeout = ( HZ / 1000 ) + 1;
        int ret = 0;
@@ -99,7 +99,7 @@
        int retry_cnt = 0;
  
        adr += chip->start;
-@@ -1037,9 +1060,15 @@
+@@ -1037,9 +1060,15 @@ static int __xipram do_write_oneword(str
        ENABLE_VPP(map);
        xip_disable(map, chip, adr);
   retry:
        map_write(map, datum, adr);
        chip->state = FL_WRITING;
  
-@@ -1072,7 +1101,13 @@
+@@ -1072,7 +1101,13 @@ static int __xipram do_write_oneword(str
                }
  
                if (chip_ready(map, adr))
  
                /* Latency issues. Drop the lock, wait a while and retry */
                UDELAY(map, chip, adr, 1);
-@@ -1084,8 +1119,17 @@
+@@ -1084,8 +1119,17 @@ static int __xipram do_write_oneword(str
                /* FIXME - should have reset delay before continuing */
  
                if (++retry_cnt <= MAX_WORD_RETRIES)
                ret = -EIO;
        }
        xip_enable(map, chip, adr);
-@@ -1171,7 +1215,14 @@
+@@ -1171,7 +1215,14 @@ static int cfi_amdstd_write_words(struct
                                return 0;
                }
        }
        /* We are now aligned, write as much as possible */
        while(len >= map_bankwidth(map)) {
                map_word datum;
-@@ -1181,7 +1232,15 @@
+@@ -1181,7 +1232,15 @@ static int cfi_amdstd_write_words(struct
                ret = do_write_oneword(map, &cfi->chips[chipnum],
                                       ofs, datum);
                if (ret)
  
                ofs += map_bankwidth(map);
                buf += map_bankwidth(map);
-@@ -1189,19 +1248,38 @@
+@@ -1189,19 +1248,38 @@ static int cfi_amdstd_write_words(struct
                len -= map_bankwidth(map);
  
                if (ofs >> cfi->chipshift) {
                spin_lock(cfi->chips[chipnum].mutex);
  
                if (cfi->chips[chipnum].state != FL_READY) {
-@@ -1221,7 +1299,11 @@
+@@ -1221,7 +1299,11 @@ static int cfi_amdstd_write_words(struct
  #endif
                        goto retry1;
                }
                tmp_buf = map_read(map, ofs + chipstart);
  
                spin_unlock(cfi->chips[chipnum].mutex);
-@@ -1231,11 +1313,23 @@
+@@ -1231,11 +1313,23 @@ static int cfi_amdstd_write_words(struct
                ret = do_write_oneword(map, &cfi->chips[chipnum],
                                ofs, tmp_buf);
                if (ret)
        return 0;
  }
  
-@@ -1275,6 +1369,7 @@
+@@ -1275,6 +1369,7 @@ static int __xipram do_write_buffer(stru
        ENABLE_VPP(map);
        xip_disable(map, chip, cmd_adr);
  
        cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
        cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
        //cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
-@@ -1535,6 +1630,9 @@
+@@ -1535,6 +1630,9 @@ static int __xipram do_erase_oneblock(st
        DECLARE_WAITQUEUE(wait, current);
        int ret = 0;
  
        adr += chip->start;
  
        spin_lock(chip->mutex);
-@@ -1613,6 +1711,9 @@
+@@ -1613,6 +1711,9 @@ static int __xipram do_erase_oneblock(st
        chip->state = FL_READY;
        put_chip(map, chip, adr);
        spin_unlock(chip->mutex);
 +MODULE_DESCRIPTION("MTD chip driver for ROM chips");
 --- a/drivers/mtd/maps/Kconfig
 +++ b/drivers/mtd/maps/Kconfig
-@@ -614,5 +614,30 @@
+@@ -614,5 +614,30 @@ config MTD_PLATRAM
  
          This selection automatically selects the map_ram driver.
  
 +};
 --- a/drivers/mtd/mtdchar.c
 +++ b/drivers/mtd/mtdchar.c
-@@ -59,6 +59,77 @@
+@@ -59,6 +59,77 @@ struct mtd_file_info {
        enum mtd_file_modes mode;
  };
  
  static loff_t mtd_lseek (struct file *file, loff_t offset, int orig)
  {
        struct mtd_file_info *mfi = file->private_data;
-@@ -162,13 +233,21 @@
+@@ -162,13 +233,21 @@ static ssize_t mtd_read(struct file *fil
        int len;
        char *kbuf;
  
  
        /* FIXME: Use kiovec in 2.5 to lock down the user's buffers
           and pass them directly to the MTD functions */
-@@ -178,8 +257,12 @@
+@@ -178,8 +257,12 @@ static ssize_t mtd_read(struct file *fil
        else
                kbuf=kmalloc(count, GFP_KERNEL);
  
  
        while (count) {
  
-@@ -224,6 +307,9 @@
+@@ -224,6 +307,9 @@ static ssize_t mtd_read(struct file *fil
                        *ppos += retlen;
                        if (copy_to_user(buf, kbuf, retlen)) {
                                kfree(kbuf);
                                return -EFAULT;
                        }
                        else
-@@ -235,13 +321,19 @@
+@@ -235,13 +321,19 @@ static ssize_t mtd_read(struct file *fil
                                count = 0;
                }
                else {
        return total_retlen;
  } /* mtd_read */
  
-@@ -255,24 +347,40 @@
+@@ -255,24 +347,40 @@ static ssize_t mtd_write(struct file *fi
        int ret=0;
        int len;
  
  
        while (count) {
  
-@@ -283,6 +391,9 @@
+@@ -283,6 +391,9 @@ static ssize_t mtd_write(struct file *fi
  
                if (copy_from_user(kbuf, buf, len)) {
                        kfree(kbuf);
                        return -EFAULT;
                }
  
-@@ -323,11 +434,17 @@
+@@ -323,11 +434,17 @@ static ssize_t mtd_write(struct file *fi
                }
                else {
                        kfree(kbuf);
        return total_retlen;
  } /* mtd_write */
  
-@@ -381,36 +498,67 @@
+@@ -381,36 +498,67 @@ static int mtd_ioctl(struct inode *inode
        u_long size;
        struct mtd_info_user info;
  
                break;
        }
  
-@@ -433,7 +581,12 @@
+@@ -433,7 +581,12 @@ static int mtd_ioctl(struct inode *inode
                struct erase_info *erase;
  
                if(!(file->f_mode & 2))
  
                erase=kzalloc(sizeof(struct erase_info),GFP_KERNEL);
                if (!erase)
-@@ -447,6 +600,9 @@
+@@ -447,6 +600,9 @@ static int mtd_ioctl(struct inode *inode
                        if (copy_from_user(&erase->addr, argp,
                                    sizeof(struct erase_info_user))) {
                                kfree(erase);
                                return -EFAULT;
                        }
                        erase->mtd = mtd;
-@@ -484,14 +640,26 @@
+@@ -484,14 +640,26 @@ static int mtd_ioctl(struct inode *inode
                struct mtd_oob_buf buf;
                struct mtd_oob_ops ops;
  
  
                if (!mtd->write_oob)
                        ret = -EOPNOTSUPP;
-@@ -499,8 +667,12 @@
+@@ -499,8 +667,12 @@ static int mtd_ioctl(struct inode *inode
                        ret = access_ok(VERIFY_READ, buf.ptr,
                                        buf.length) ? 0 : EFAULT;
  
  
                ops.ooblen = buf.length;
                ops.ooboffs = buf.start & (mtd->oobsize - 1);
-@@ -536,19 +708,35 @@
+@@ -536,19 +708,35 @@ static int mtd_ioctl(struct inode *inode
                struct mtd_oob_buf buf;
                struct mtd_oob_ops ops;
  
  
                ops.ooblen = buf.length;
                ops.ooboffs = buf.start & (mtd->oobsize - 1);
-@@ -580,7 +768,12 @@
+@@ -580,7 +768,12 @@ static int mtd_ioctl(struct inode *inode
                struct erase_info_user info;
  
                if (copy_from_user(&info, argp, sizeof(info)))
  
                if (!mtd->lock)
                        ret = -EOPNOTSUPP;
-@@ -594,7 +787,12 @@
+@@ -594,7 +787,12 @@ static int mtd_ioctl(struct inode *inode
                struct erase_info_user info;
  
                if (copy_from_user(&info, argp, sizeof(info)))
  
                if (!mtd->unlock)
                        ret = -EOPNOTSUPP;
-@@ -629,11 +827,21 @@
+@@ -629,11 +827,21 @@ static int mtd_ioctl(struct inode *inode
                loff_t offs;
  
                if (copy_from_user(&offs, argp, sizeof(loff_t)))
                break;
        }
  
-@@ -642,11 +850,21 @@
+@@ -642,11 +850,21 @@ static int mtd_ioctl(struct inode *inode
                loff_t offs;
  
                if (copy_from_user(&offs, argp, sizeof(loff_t)))
                break;
        }
  
-@@ -654,8 +872,12 @@
+@@ -654,8 +872,12 @@ static int mtd_ioctl(struct inode *inode
        case OTPSELECT:
        {
                int mode;
  
                mfi->mode = MTD_MODE_NORMAL;
  
-@@ -670,7 +892,12 @@
+@@ -670,7 +892,12 @@ static int mtd_ioctl(struct inode *inode
        {
                struct otp_info *buf = kmalloc(4096, GFP_KERNEL);
                if (!buf)
                ret = -EOPNOTSUPP;
                switch (mfi->mode) {
                case MTD_MODE_OTP_FACTORY:
-@@ -701,12 +928,24 @@
+@@ -701,12 +928,24 @@ static int mtd_ioctl(struct inode *inode
        {
                struct otp_info info;
  
                ret = mtd->lock_user_prot_reg(mtd, info.start, info.length);
                break;
        }
-@@ -742,8 +981,12 @@
+@@ -742,8 +981,12 @@ static int mtd_ioctl(struct inode *inode
                        break;
  
                case MTD_MODE_RAW:
                        mfi->mode = arg;
  
                case MTD_MODE_NORMAL:
-@@ -766,6 +1009,10 @@
+@@ -766,6 +1009,10 @@ static int mtd_ioctl(struct inode *inode
                ret = -ENOTTY;
        }
  
  
 --- a/drivers/mtd/nand/Kconfig
 +++ b/drivers/mtd/nand/Kconfig
-@@ -44,6 +44,13 @@
+@@ -44,6 +44,13 @@ config MTD_NAND_AUTCPU12
          This enables the driver for the autronix autcpu12 board to
          access the SmartMediaCard.
  
 +#endif
 --- a/drivers/mtd/maps/Makefile
 +++ b/drivers/mtd/maps/Makefile
-@@ -71,3 +71,7 @@
+@@ -71,3 +71,7 @@ obj-$(CONFIG_MTD_PLATRAM)    += plat-ram.o
  obj-$(CONFIG_MTD_OMAP_NOR)    += omap_nor.o
  obj-$(CONFIG_MTD_MTX1)                += mtx-1_flash.o
  obj-$(CONFIG_MTD_TQM834x)     += tqm834x.o
This page took 0.034094 seconds and 4 git commands to generate.