| Kevin Cernekee | 19fe7f1 | 2009-04-08 22:51:43 -0700 | [diff] [blame] | 1 | What:		/sys/class/mtd/ | 
|  | 2 | Date:		April 2009 | 
|  | 3 | KernelVersion:	2.6.29 | 
|  | 4 | Contact:	linux-mtd@lists.infradead.org | 
|  | 5 | Description: | 
|  | 6 | The mtd/ class subdirectory belongs to the MTD subsystem | 
|  | 7 | (MTD core). | 
|  | 8 |  | 
|  | 9 | What:		/sys/class/mtd/mtdX/ | 
|  | 10 | Date:		April 2009 | 
|  | 11 | KernelVersion:	2.6.29 | 
|  | 12 | Contact:	linux-mtd@lists.infradead.org | 
|  | 13 | Description: | 
|  | 14 | The /sys/class/mtd/mtd{0,1,2,3,...} directories correspond | 
|  | 15 | to each /dev/mtdX character device.  These may represent | 
|  | 16 | physical/simulated flash devices, partitions on a flash | 
|  | 17 | device, or concatenated flash devices.  They exist regardless | 
|  | 18 | of whether CONFIG_MTD_CHAR is actually enabled. | 
|  | 19 |  | 
|  | 20 | What:		/sys/class/mtd/mtdXro/ | 
|  | 21 | Date:		April 2009 | 
|  | 22 | KernelVersion:	2.6.29 | 
|  | 23 | Contact:	linux-mtd@lists.infradead.org | 
|  | 24 | Description: | 
|  | 25 | These directories provide the corresponding read-only device | 
|  | 26 | nodes for /sys/class/mtd/mtdX/ .  They are only created | 
|  | 27 | (for the benefit of udev) if CONFIG_MTD_CHAR is enabled. | 
|  | 28 |  | 
|  | 29 | What:		/sys/class/mtd/mtdX/dev | 
|  | 30 | Date:		April 2009 | 
|  | 31 | KernelVersion:	2.6.29 | 
|  | 32 | Contact:	linux-mtd@lists.infradead.org | 
|  | 33 | Description: | 
|  | 34 | Major and minor numbers of the character device corresponding | 
|  | 35 | to this MTD device (in <major>:<minor> format).  This is the | 
|  | 36 | read-write device so <minor> will be even. | 
|  | 37 |  | 
|  | 38 | What:		/sys/class/mtd/mtdXro/dev | 
|  | 39 | Date:		April 2009 | 
|  | 40 | KernelVersion:	2.6.29 | 
|  | 41 | Contact:	linux-mtd@lists.infradead.org | 
|  | 42 | Description: | 
|  | 43 | Major and minor numbers of the character device corresponding | 
|  | 44 | to the read-only variant of thie MTD device (in | 
|  | 45 | <major>:<minor> format).  In this case <minor> will be odd. | 
|  | 46 |  | 
|  | 47 | What:		/sys/class/mtd/mtdX/erasesize | 
|  | 48 | Date:		April 2009 | 
|  | 49 | KernelVersion:	2.6.29 | 
|  | 50 | Contact:	linux-mtd@lists.infradead.org | 
|  | 51 | Description: | 
|  | 52 | "Major" erase size for the device.  If numeraseregions is | 
|  | 53 | zero, this is the eraseblock size for the entire device. | 
|  | 54 | Otherwise, the MEMGETREGIONCOUNT/MEMGETREGIONINFO ioctls | 
|  | 55 | can be used to determine the actual eraseblock layout. | 
|  | 56 |  | 
|  | 57 | What:		/sys/class/mtd/mtdX/flags | 
|  | 58 | Date:		April 2009 | 
|  | 59 | KernelVersion:	2.6.29 | 
|  | 60 | Contact:	linux-mtd@lists.infradead.org | 
|  | 61 | Description: | 
|  | 62 | A hexadecimal value representing the device flags, ORed | 
|  | 63 | together: | 
|  | 64 |  | 
|  | 65 | 0x0400: MTD_WRITEABLE - device is writable | 
|  | 66 | 0x0800: MTD_BIT_WRITEABLE - single bits can be flipped | 
|  | 67 | 0x1000: MTD_NO_ERASE - no erase necessary | 
|  | 68 | 0x2000: MTD_POWERUP_LOCK - always locked after reset | 
|  | 69 |  | 
|  | 70 | What:		/sys/class/mtd/mtdX/name | 
|  | 71 | Date:		April 2009 | 
|  | 72 | KernelVersion:	2.6.29 | 
|  | 73 | Contact:	linux-mtd@lists.infradead.org | 
|  | 74 | Description: | 
|  | 75 | A human-readable ASCII name for the device or partition. | 
|  | 76 | This will match the name in /proc/mtd . | 
|  | 77 |  | 
|  | 78 | What:		/sys/class/mtd/mtdX/numeraseregions | 
|  | 79 | Date:		April 2009 | 
|  | 80 | KernelVersion:	2.6.29 | 
|  | 81 | Contact:	linux-mtd@lists.infradead.org | 
|  | 82 | Description: | 
|  | 83 | For devices that have variable eraseblock sizes, this | 
|  | 84 | provides the total number of erase regions.  Otherwise, | 
|  | 85 | it will read back as zero. | 
|  | 86 |  | 
|  | 87 | What:		/sys/class/mtd/mtdX/oobsize | 
|  | 88 | Date:		April 2009 | 
|  | 89 | KernelVersion:	2.6.29 | 
|  | 90 | Contact:	linux-mtd@lists.infradead.org | 
|  | 91 | Description: | 
|  | 92 | Number of OOB bytes per page. | 
|  | 93 |  | 
|  | 94 | What:		/sys/class/mtd/mtdX/size | 
|  | 95 | Date:		April 2009 | 
|  | 96 | KernelVersion:	2.6.29 | 
|  | 97 | Contact:	linux-mtd@lists.infradead.org | 
|  | 98 | Description: | 
|  | 99 | Total size of the device/partition, in bytes. | 
|  | 100 |  | 
|  | 101 | What:		/sys/class/mtd/mtdX/type | 
|  | 102 | Date:		April 2009 | 
|  | 103 | KernelVersion:	2.6.29 | 
|  | 104 | Contact:	linux-mtd@lists.infradead.org | 
|  | 105 | Description: | 
|  | 106 | One of the following ASCII strings, representing the device | 
|  | 107 | type: | 
|  | 108 |  | 
|  | 109 | absent, ram, rom, nor, nand, dataflash, ubi, unknown | 
|  | 110 |  | 
|  | 111 | What:		/sys/class/mtd/mtdX/writesize | 
|  | 112 | Date:		April 2009 | 
|  | 113 | KernelVersion:	2.6.29 | 
|  | 114 | Contact:	linux-mtd@lists.infradead.org | 
|  | 115 | Description: | 
|  | 116 | Minimal writable flash unit size.  This will always be | 
|  | 117 | a positive integer. | 
|  | 118 |  | 
|  | 119 | In the case of NOR flash it is 1 (even though individual | 
|  | 120 | bits can be cleared). | 
|  | 121 |  | 
|  | 122 | In the case of NAND flash it is one NAND page (or a | 
|  | 123 | half page, or a quarter page). | 
|  | 124 |  | 
|  | 125 | In the case of ECC NOR, it is the ECC block size. | 
| Mike Dunn | a9b672e | 2012-04-25 12:06:07 -0700 | [diff] [blame] | 126 |  | 
|  | 127 | What:		/sys/class/mtd/mtdX/ecc_strength | 
|  | 128 | Date:		April 2012 | 
|  | 129 | KernelVersion:	3.4 | 
|  | 130 | Contact:	linux-mtd@lists.infradead.org | 
|  | 131 | Description: | 
|  | 132 | Maximum number of bit errors that the device is capable of | 
|  | 133 | correcting within each region covering an ecc step.  This will | 
|  | 134 | always be a non-negative integer.  Note that some devices will | 
|  | 135 | have multiple ecc steps within each writesize region. | 
|  | 136 |  | 
|  | 137 | In the case of devices lacking any ECC capability, it is 0. | 
| Mike Dunn | d062d4e | 2012-04-25 12:06:08 -0700 | [diff] [blame] | 138 |  | 
|  | 139 | What:		/sys/class/mtd/mtdX/bitflip_threshold | 
|  | 140 | Date:		April 2012 | 
|  | 141 | KernelVersion:	3.4 | 
|  | 142 | Contact:	linux-mtd@lists.infradead.org | 
|  | 143 | Description: | 
|  | 144 | This allows the user to examine and adjust the criteria by which | 
| Mike Dunn | 021796b | 2012-05-22 11:03:42 -0700 | [diff] [blame] | 145 | mtd returns -EUCLEAN from mtd_read() and mtd_read_oob().  If the | 
|  | 146 | maximum number of bit errors that were corrected on any single | 
|  | 147 | region comprising an ecc step (as reported by the driver) equals | 
|  | 148 | or exceeds this value, -EUCLEAN is returned.  Otherwise, absent | 
|  | 149 | an error, 0 is returned.  Higher layers (e.g., UBI) use this | 
|  | 150 | return code as an indication that an erase block may be | 
|  | 151 | degrading and should be scrutinized as a candidate for being | 
|  | 152 | marked as bad. | 
| Mike Dunn | d062d4e | 2012-04-25 12:06:08 -0700 | [diff] [blame] | 153 |  | 
|  | 154 | The initial value may be specified by the flash device driver. | 
|  | 155 | If not, then the default value is ecc_strength. | 
|  | 156 |  | 
|  | 157 | The introduction of this feature brings a subtle change to the | 
|  | 158 | meaning of the -EUCLEAN return code.  Previously, it was | 
|  | 159 | interpreted to mean simply "one or more bit errors were | 
|  | 160 | corrected".  Its new interpretation can be phrased as "a | 
|  | 161 | dangerously high number of bit errors were corrected on one or | 
|  | 162 | more regions comprising an ecc step".  The precise definition of | 
|  | 163 | "dangerously high" can be adjusted by the user with | 
|  | 164 | bitflip_threshold.  Users are discouraged from doing this, | 
|  | 165 | however, unless they know what they are doing and have intimate | 
|  | 166 | knowledge of the properties of their device.  Broadly speaking, | 
|  | 167 | bitflip_threshold should be low enough to detect genuine erase | 
|  | 168 | block degradation, but high enough to avoid the consequences of | 
|  | 169 | a persistent return value of -EUCLEAN on devices where sticky | 
|  | 170 | bitflips occur.  Note that if bitflip_threshold exceeds | 
| Mike Dunn | 021796b | 2012-05-22 11:03:42 -0700 | [diff] [blame] | 171 | ecc_strength, -EUCLEAN is never returned by the read operations. | 
| Mike Dunn | edbc454 | 2012-04-25 12:06:11 -0700 | [diff] [blame] | 172 | Conversely, if bitflip_threshold is zero, -EUCLEAN is always | 
|  | 173 | returned, absent a hard error. | 
| Mike Dunn | d062d4e | 2012-04-25 12:06:08 -0700 | [diff] [blame] | 174 |  | 
|  | 175 | This is generally applicable only to NAND flash devices with ECC | 
| Mike Dunn | edbc454 | 2012-04-25 12:06:11 -0700 | [diff] [blame] | 176 | capability.  It is ignored on devices lacking ECC capability; | 
|  | 177 | i.e., devices for which ecc_strength is zero. |