📄 1007.mtd.patch
字号:
diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linux-2.6.15.ref/arch/mips/configs/tango2_defconfig linux-2.6.15/arch/mips/configs/tango2_defconfig--- linux-2.6.15.ref/arch/mips/configs/tango2_defconfig 2006-10-12 10:24:30.000000000 -0700+++ linux-2.6.15/arch/mips/configs/tango2_defconfig 2006-10-12 10:28:24.000000000 -0700@@ -344,7 +344,81 @@ # # Memory Technology Devices (MTD) #-# CONFIG_MTD is not set+CONFIG_MTD=y+# CONFIG_MTD_DEBUG is not set+CONFIG_MTD_CONCAT=y+CONFIG_MTD_PARTITIONS=y+# CONFIG_MTD_REDBOOT_PARTS is not set+# CONFIG_MTD_CMDLINE_PARTS is not set++#+# User Modules And Translation Layers+#+CONFIG_MTD_CHAR=y+CONFIG_MTD_BLOCK=y+# CONFIG_FTL is not set+# CONFIG_NFTL is not set+# CONFIG_INFTL is not set+# CONFIG_RFD_FTL is not set++#+# RAM/ROM/Flash chip drivers+#+CONFIG_MTD_CFI=y+# CONFIG_MTD_JEDECPROBE is not set+CONFIG_MTD_GEN_PROBE=y+# CONFIG_MTD_CFI_ADV_OPTIONS is not set+CONFIG_MTD_MAP_BANK_WIDTH_1=y+CONFIG_MTD_MAP_BANK_WIDTH_2=y+CONFIG_MTD_MAP_BANK_WIDTH_4=y+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set+CONFIG_MTD_CFI_I1=y+CONFIG_MTD_CFI_I2=y+# CONFIG_MTD_CFI_I4 is not set+# CONFIG_MTD_CFI_I8 is not set+CONFIG_MTD_CFI_INTELEXT=y+CONFIG_MTD_CFI_AMDSTD=y+CONFIG_MTD_CFI_AMDSTD_RETRY=0+CONFIG_MTD_CFI_STAA=y+CONFIG_MTD_CFI_UTIL=y+# CONFIG_MTD_RAM is not set+# CONFIG_MTD_ROM is not set+# CONFIG_MTD_ABSENT is not set++#+# Mapping drivers for chip access+#+CONFIG_MTD_PHYSMAP=y+# CONFIG_MTD_PLATRAM is not set++#+# Self-contained MTD device drivers+#+# CONFIG_MTD_PMC551 is not set+# CONFIG_MTD_SLRAM is not set+# CONFIG_MTD_PHRAM is not set+# CONFIG_MTD_MTDRAM is not set+# CONFIG_MTD_BLKMTD is not set+# CONFIG_MTD_BLOCK2MTD is not set++#+# Disk-On-Chip Device Drivers+#+# CONFIG_MTD_DOC2000 is not set+# CONFIG_MTD_DOC2001 is not set+# CONFIG_MTD_DOC2001PLUS is not set++#+# NAND Flash Device Drivers+#+# CONFIG_MTD_NAND is not set++#+# OneNAND Flash Device Drivers+#+# CONFIG_MTD_ONENAND is not set # # Parallel port support@@ -905,6 +979,8 @@ # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set+# CONFIG_JFFS_FS is not set+# CONFIG_JFFS2_FS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not setdiff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linux-2.6.15.ref/arch/mips/configs/tango3_defconfig linux-2.6.15/arch/mips/configs/tango3_defconfig--- linux-2.6.15.ref/arch/mips/configs/tango3_defconfig 2006-10-12 10:24:30.000000000 -0700+++ linux-2.6.15/arch/mips/configs/tango3_defconfig 2006-10-12 10:28:24.000000000 -0700@@ -340,7 +340,81 @@ # # Memory Technology Devices (MTD) #-# CONFIG_MTD is not set+CONFIG_MTD=y+# CONFIG_MTD_DEBUG is not set+CONFIG_MTD_CONCAT=y+CONFIG_MTD_PARTITIONS=y+# CONFIG_MTD_REDBOOT_PARTS is not set+# CONFIG_MTD_CMDLINE_PARTS is not set++#+# User Modules And Translation Layers+#+CONFIG_MTD_CHAR=y+CONFIG_MTD_BLOCK=y+# CONFIG_FTL is not set+# CONFIG_NFTL is not set+# CONFIG_INFTL is not set+# CONFIG_RFD_FTL is not set++#+# RAM/ROM/Flash chip drivers+#+CONFIG_MTD_CFI=y+# CONFIG_MTD_JEDECPROBE is not set+CONFIG_MTD_GEN_PROBE=y+# CONFIG_MTD_CFI_ADV_OPTIONS is not set+CONFIG_MTD_MAP_BANK_WIDTH_1=y+CONFIG_MTD_MAP_BANK_WIDTH_2=y+CONFIG_MTD_MAP_BANK_WIDTH_4=y+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set+CONFIG_MTD_CFI_I1=y+CONFIG_MTD_CFI_I2=y+# CONFIG_MTD_CFI_I4 is not set+# CONFIG_MTD_CFI_I8 is not set+CONFIG_MTD_CFI_INTELEXT=y+CONFIG_MTD_CFI_AMDSTD=y+CONFIG_MTD_CFI_AMDSTD_RETRY=0+CONFIG_MTD_CFI_STAA=y+CONFIG_MTD_CFI_UTIL=y+# CONFIG_MTD_RAM is not set+# CONFIG_MTD_ROM is not set+# CONFIG_MTD_ABSENT is not set++#+# Mapping drivers for chip access+#+CONFIG_MTD_PHYSMAP=y+# CONFIG_MTD_PLATRAM is not set++#+# Self-contained MTD device drivers+#+# CONFIG_MTD_PMC551 is not set+# CONFIG_MTD_SLRAM is not set+# CONFIG_MTD_PHRAM is not set+# CONFIG_MTD_MTDRAM is not set+# CONFIG_MTD_BLKMTD is not set+# CONFIG_MTD_BLOCK2MTD is not set++#+# Disk-On-Chip Device Drivers+#+# CONFIG_MTD_DOC2000 is not set+# CONFIG_MTD_DOC2001 is not set+# CONFIG_MTD_DOC2001PLUS is not set++#+# NAND Flash Device Drivers+#+# CONFIG_MTD_NAND is not set++#+# OneNAND Flash Device Drivers+#+# CONFIG_MTD_ONENAND is not set # # Parallel port support@@ -900,6 +974,8 @@ # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set+# CONFIG_JFFS_FS is not set+# CONFIG_JFFS2_FS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not setdiff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linux-2.6.15.ref/drivers/mtd/chips/cfi_cmdset_0002.c linux-2.6.15/drivers/mtd/chips/cfi_cmdset_0002.c--- linux-2.6.15.ref/drivers/mtd/chips/cfi_cmdset_0002.c 2006-01-25 20:51:27.000000000 -0800+++ linux-2.6.15/drivers/mtd/chips/cfi_cmdset_0002.c 2006-10-12 11:54:46.000000000 -0700@@ -407,6 +407,22 @@ * correctly and is therefore not done (particulary with interleaved chips * as each chip must be checked independantly of the others). */+#ifdef CONFIG_TANGOX+/* For TANGOX, verify content in start address as well */+static int __xipram chip_ready(struct map_info *map, unsigned long addr, unsigned long start, map_word z_val)+{+ map_word d, t, z;++ d = map_read(map, addr);+ mb();+ t = map_read(map, addr);+ mb();+ z = map_read(map, start);+ mb();++ return map_word_equal(map, d, t) && map_word_equal(map, z, z_val);+}+#else static int __xipram chip_ready(struct map_info *map, unsigned long addr) { map_word d, t;@@ -416,6 +432,7 @@ return map_word_equal(map, d, t); }+#endif /* * Return true if the chip is ready and has the correct value.@@ -449,6 +466,9 @@ struct cfi_private *cfi = map->fldrv_priv; unsigned long timeo; struct cfi_pri_amdstd *cfip = (struct cfi_pri_amdstd *)cfi->cmdset_priv;+#ifdef CONFIG_TANGOX+ map_word z_val = map_read(map, chip->start);+#endif resettime: timeo = jiffies + HZ;@@ -457,8 +477,13 @@ case FL_STATUS: for (;;) {+#ifdef CONFIG_TANGOX+ if (chip_ready(map, adr, chip->start, z_val))+ break;+#else if (chip_ready(map, adr)) break;+#endif if (time_after(jiffies, timeo)) { printk(KERN_ERR "Waiting for chip to be ready timed out.\n");@@ -487,6 +512,12 @@ || (mode == FL_WRITING && (cfip->EraseSuspend & 0x1)))) goto sleep; + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ * Sentivision FIX: map_write here whole flash operation freeze on VIP1216 STB.+ * So we just will sleep waitting for state change: */+ goto sleep;+ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */+ /* We could check to see if we're trying to access the sector * that is currently being erased. However, no user will try * anything like that so we just wait for the timeout. */@@ -499,8 +530,13 @@ chip->state = FL_ERASE_SUSPENDING; chip->erase_suspended = 1; for (;;) {+#ifdef CONFIG_TANGOX+ if (chip_ready(map, adr, chip->start, z_val))+ break;+#else if (chip_ready(map, adr)) break;+#endif if (time_after(jiffies, timeo)) { /* Should have suspended the erase by now.@@ -956,6 +992,9 @@ int ret = 0; map_word oldd; int retry_cnt = 0;+#ifdef CONFIG_TANGOX+ map_word z_val;+#endif adr += chip->start; @@ -975,6 +1014,9 @@ * data at other locations when 0xff is written to a location that * already contains 0xff. */+#ifdef CONFIG_TANGOX+ z_val = ((adr == chip->start) ? datum : map_read(map, chip->start));+#endif oldd = map_read(map, adr); if (map_word_equal(map, oldd, datum)) { DEBUG( MTD_DEBUG_LEVEL3, "MTD %s(): NOP\n",@@ -1013,15 +1055,25 @@ continue; } - if (time_after(jiffies, timeo) && !chip_ready(map, adr)){+#ifdef CONFIG_TANGOX+ if (time_after(jiffies, timeo) && !chip_ready(map, adr, chip->start, z_val))+#else+ if (time_after(jiffies, timeo) && !chip_ready(map, adr))+#endif+ { xip_enable(map, chip, adr); printk(KERN_WARNING "MTD %s(): software timeout\n", __func__); xip_disable(map, chip, adr); break; } +#ifdef CONFIG_TANGOX+ if (chip_ready(map, adr, chip->start, z_val))+ break;+#else if (chip_ready(map, adr)) break;+#endif /* Latency issues. Drop the lock, wait a while and retry */ UDELAY(map, chip, adr, 1);@@ -1204,6 +1256,9 @@ unsigned long cmd_adr; int z, words; map_word datum;+#ifdef CONFIG_TANGOX+ map_word z_val;+#endif adr += chip->start; cmd_adr = adr;@@ -1224,6 +1279,9 @@ ENABLE_VPP(map); xip_disable(map, chip, cmd_adr); +#ifdef CONFIG_TANGOX+ z_val = ((adr == chip->start) ? datum : map_read(map, chip->start));+#endif 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);@@ -1274,10 +1332,20 @@ continue; } +#ifdef CONFIG_TANGOX+ if (time_after(jiffies, timeo) && !chip_ready(map, adr, chip->start, z_val))+ break;+#else if (time_after(jiffies, timeo) && !chip_ready(map, adr)) break;+#endif - if (chip_ready(map, adr)) {+#ifdef CONFIG_TANGOX+ if (chip_ready(map, adr, chip->start, z_val)) +#else+ if (chip_ready(map, adr)) +#endif+ { xip_enable(map, chip, adr); goto op_done; }@@ -1395,6 +1463,10 @@ unsigned long int adr; DECLARE_WAITQUEUE(wait, current);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -