1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyunmenu "RAM/ROM/Flash chip drivers" 3*4882a593Smuzhiyun depends on MTD!=n 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunconfig MTD_CFI 6*4882a593Smuzhiyun tristate "Detect flash chips by Common Flash Interface (CFI) probe" 7*4882a593Smuzhiyun select MTD_GEN_PROBE 8*4882a593Smuzhiyun select MTD_CFI_UTIL 9*4882a593Smuzhiyun help 10*4882a593Smuzhiyun The Common Flash Interface specification was developed by Intel, 11*4882a593Smuzhiyun AMD and other flash manufactures that provides a universal method 12*4882a593Smuzhiyun for probing the capabilities of flash devices. If you wish to 13*4882a593Smuzhiyun support any device that is CFI-compliant, you need to enable this 14*4882a593Smuzhiyun option. Visit <https://www.amd.com/products/nvd/overview/cfi.html> 15*4882a593Smuzhiyun for more information on CFI. 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunconfig MTD_JEDECPROBE 18*4882a593Smuzhiyun tristate "Detect non-CFI AMD/JEDEC-compatible flash chips" 19*4882a593Smuzhiyun select MTD_GEN_PROBE 20*4882a593Smuzhiyun select MTD_CFI_UTIL 21*4882a593Smuzhiyun help 22*4882a593Smuzhiyun This option enables JEDEC-style probing of flash chips which are not 23*4882a593Smuzhiyun compatible with the Common Flash Interface, but will use the common 24*4882a593Smuzhiyun CFI-targeted flash drivers for any chips which are identified which 25*4882a593Smuzhiyun are in fact compatible in all but the probe method. This actually 26*4882a593Smuzhiyun covers most AMD/Fujitsu-compatible chips and also non-CFI 27*4882a593Smuzhiyun Intel chips. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunconfig MTD_GEN_PROBE 30*4882a593Smuzhiyun tristate 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunconfig MTD_CFI_ADV_OPTIONS 33*4882a593Smuzhiyun bool "Flash chip driver advanced configuration options" 34*4882a593Smuzhiyun depends on MTD_GEN_PROBE 35*4882a593Smuzhiyun help 36*4882a593Smuzhiyun If you need to specify a specific endianness for access to flash 37*4882a593Smuzhiyun chips, or if you wish to reduce the size of the kernel by including 38*4882a593Smuzhiyun support for only specific arrangements of flash chips, say 'Y'. This 39*4882a593Smuzhiyun option does not directly affect the code, but will enable other 40*4882a593Smuzhiyun configuration options which allow you to do so. 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun If unsure, say 'N'. 43*4882a593Smuzhiyun 44*4882a593Smuzhiyunchoice 45*4882a593Smuzhiyun prompt "Flash cmd/query data swapping" 46*4882a593Smuzhiyun depends on MTD_CFI_ADV_OPTIONS 47*4882a593Smuzhiyun default MTD_CFI_NOSWAP 48*4882a593Smuzhiyun help 49*4882a593Smuzhiyun This option defines the way in which the CPU attempts to arrange 50*4882a593Smuzhiyun data bits when writing the 'magic' commands to the chips. Saying 51*4882a593Smuzhiyun 'NO', which is the default when CONFIG_MTD_CFI_ADV_OPTIONS isn't 52*4882a593Smuzhiyun enabled, means that the CPU will not do any swapping; the chips 53*4882a593Smuzhiyun are expected to be wired to the CPU in 'host-endian' form. 54*4882a593Smuzhiyun Specific arrangements are possible with the BIG_ENDIAN_BYTE and 55*4882a593Smuzhiyun LITTLE_ENDIAN_BYTE, if the bytes are reversed. 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunconfig MTD_CFI_NOSWAP 58*4882a593Smuzhiyun depends on !ARCH_IXP4XX || CPU_BIG_ENDIAN 59*4882a593Smuzhiyun bool "NO" 60*4882a593Smuzhiyun 61*4882a593Smuzhiyunconfig MTD_CFI_BE_BYTE_SWAP 62*4882a593Smuzhiyun bool "BIG_ENDIAN_BYTE" 63*4882a593Smuzhiyun 64*4882a593Smuzhiyunconfig MTD_CFI_LE_BYTE_SWAP 65*4882a593Smuzhiyun depends on !ARCH_IXP4XX 66*4882a593Smuzhiyun bool "LITTLE_ENDIAN_BYTE" 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunendchoice 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunconfig MTD_CFI_GEOMETRY 71*4882a593Smuzhiyun bool "Specific CFI Flash geometry selection" 72*4882a593Smuzhiyun depends on MTD_CFI_ADV_OPTIONS 73*4882a593Smuzhiyun select MTD_MAP_BANK_WIDTH_1 if !(MTD_MAP_BANK_WIDTH_2 || \ 74*4882a593Smuzhiyun MTD_MAP_BANK_WIDTH_4 || MTD_MAP_BANK_WIDTH_8 || \ 75*4882a593Smuzhiyun MTD_MAP_BANK_WIDTH_16 || MTD_MAP_BANK_WIDTH_32) 76*4882a593Smuzhiyun select MTD_CFI_I1 if !(MTD_CFI_I2 || MTD_CFI_I4 || MTD_CFI_I8) 77*4882a593Smuzhiyun help 78*4882a593Smuzhiyun This option does not affect the code directly, but will enable 79*4882a593Smuzhiyun some other configuration options which would allow you to reduce 80*4882a593Smuzhiyun the size of the kernel by including support for only certain 81*4882a593Smuzhiyun arrangements of CFI chips. If unsure, say 'N' and all options 82*4882a593Smuzhiyun which are supported by the current code will be enabled. 83*4882a593Smuzhiyun 84*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_1 85*4882a593Smuzhiyun bool "Support 8-bit buswidth" if MTD_CFI_GEOMETRY 86*4882a593Smuzhiyun default y 87*4882a593Smuzhiyun help 88*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 89*4882a593Smuzhiyun 8 bits wide, say 'Y'. 90*4882a593Smuzhiyun 91*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_2 92*4882a593Smuzhiyun bool "Support 16-bit buswidth" if MTD_CFI_GEOMETRY 93*4882a593Smuzhiyun default y 94*4882a593Smuzhiyun help 95*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 96*4882a593Smuzhiyun 16 bits wide, say 'Y'. 97*4882a593Smuzhiyun 98*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_4 99*4882a593Smuzhiyun bool "Support 32-bit buswidth" if MTD_CFI_GEOMETRY 100*4882a593Smuzhiyun default y 101*4882a593Smuzhiyun help 102*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 103*4882a593Smuzhiyun 32 bits wide, say 'Y'. 104*4882a593Smuzhiyun 105*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_8 106*4882a593Smuzhiyun bool "Support 64-bit buswidth" if MTD_CFI_GEOMETRY 107*4882a593Smuzhiyun default n 108*4882a593Smuzhiyun help 109*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 110*4882a593Smuzhiyun 64 bits wide, say 'Y'. 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_16 113*4882a593Smuzhiyun bool "Support 128-bit buswidth" if MTD_CFI_GEOMETRY 114*4882a593Smuzhiyun default n 115*4882a593Smuzhiyun help 116*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 117*4882a593Smuzhiyun 128 bits wide, say 'Y'. 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_32 120*4882a593Smuzhiyun bool "Support 256-bit buswidth" if MTD_CFI_GEOMETRY 121*4882a593Smuzhiyun select MTD_COMPLEX_MAPPINGS if HAS_IOMEM 122*4882a593Smuzhiyun default n 123*4882a593Smuzhiyun help 124*4882a593Smuzhiyun If you wish to support CFI devices on a physical bus which is 125*4882a593Smuzhiyun 256 bits wide, say 'Y'. 126*4882a593Smuzhiyun 127*4882a593Smuzhiyunconfig MTD_CFI_I1 128*4882a593Smuzhiyun bool "Support 1-chip flash interleave" if MTD_CFI_GEOMETRY 129*4882a593Smuzhiyun default y 130*4882a593Smuzhiyun help 131*4882a593Smuzhiyun If your flash chips are not interleaved - i.e. you only have one 132*4882a593Smuzhiyun flash chip addressed by each bus cycle, then say 'Y'. 133*4882a593Smuzhiyun 134*4882a593Smuzhiyunconfig MTD_CFI_I2 135*4882a593Smuzhiyun bool "Support 2-chip flash interleave" if MTD_CFI_GEOMETRY 136*4882a593Smuzhiyun default y 137*4882a593Smuzhiyun help 138*4882a593Smuzhiyun If your flash chips are interleaved in pairs - i.e. you have two 139*4882a593Smuzhiyun flash chips addressed by each bus cycle, then say 'Y'. 140*4882a593Smuzhiyun 141*4882a593Smuzhiyunconfig MTD_CFI_I4 142*4882a593Smuzhiyun bool "Support 4-chip flash interleave" if MTD_CFI_GEOMETRY 143*4882a593Smuzhiyun default n 144*4882a593Smuzhiyun help 145*4882a593Smuzhiyun If your flash chips are interleaved in fours - i.e. you have four 146*4882a593Smuzhiyun flash chips addressed by each bus cycle, then say 'Y'. 147*4882a593Smuzhiyun 148*4882a593Smuzhiyunconfig MTD_CFI_I8 149*4882a593Smuzhiyun bool "Support 8-chip flash interleave" if MTD_CFI_GEOMETRY 150*4882a593Smuzhiyun default n 151*4882a593Smuzhiyun help 152*4882a593Smuzhiyun If your flash chips are interleaved in eights - i.e. you have eight 153*4882a593Smuzhiyun flash chips addressed by each bus cycle, then say 'Y'. 154*4882a593Smuzhiyun 155*4882a593Smuzhiyunconfig MTD_OTP 156*4882a593Smuzhiyun bool "Protection Registers aka one-time programmable (OTP) bits" 157*4882a593Smuzhiyun depends on MTD_CFI_ADV_OPTIONS 158*4882a593Smuzhiyun default n 159*4882a593Smuzhiyun help 160*4882a593Smuzhiyun This enables support for reading, writing and locking so called 161*4882a593Smuzhiyun "Protection Registers" present on some flash chips. 162*4882a593Smuzhiyun A subset of them are pre-programmed at the factory with a 163*4882a593Smuzhiyun unique set of values. The rest is user-programmable. 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun The user-programmable Protection Registers contain one-time 166*4882a593Smuzhiyun programmable (OTP) bits; when programmed, register bits cannot be 167*4882a593Smuzhiyun erased. Each Protection Register can be accessed multiple times to 168*4882a593Smuzhiyun program individual bits, as long as the register remains unlocked. 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun Each Protection Register has an associated Lock Register bit. When a 171*4882a593Smuzhiyun Lock Register bit is programmed, the associated Protection Register 172*4882a593Smuzhiyun can only be read; it can no longer be programmed. Additionally, 173*4882a593Smuzhiyun because the Lock Register bits themselves are OTP, when programmed, 174*4882a593Smuzhiyun Lock Register bits cannot be erased. Therefore, when a Protection 175*4882a593Smuzhiyun Register is locked, it cannot be unlocked. 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun This feature should therefore be used with extreme care. Any mistake 178*4882a593Smuzhiyun in the programming of OTP bits will waste them. 179*4882a593Smuzhiyun 180*4882a593Smuzhiyunconfig MTD_CFI_INTELEXT 181*4882a593Smuzhiyun tristate "Support for CFI command set 0001 (Intel/Sharp chips)" 182*4882a593Smuzhiyun depends on MTD_GEN_PROBE 183*4882a593Smuzhiyun select MTD_CFI_UTIL 184*4882a593Smuzhiyun help 185*4882a593Smuzhiyun The Common Flash Interface defines a number of different command 186*4882a593Smuzhiyun sets which a CFI-compliant chip may claim to implement. This code 187*4882a593Smuzhiyun provides support for command set 0001, used on Intel StrataFlash 188*4882a593Smuzhiyun and other parts. 189*4882a593Smuzhiyun 190*4882a593Smuzhiyunconfig MTD_CFI_AMDSTD 191*4882a593Smuzhiyun tristate "Support for CFI command set 0002 (AMD/Fujitsu/Spansion chips)" 192*4882a593Smuzhiyun depends on MTD_GEN_PROBE 193*4882a593Smuzhiyun select MTD_CFI_UTIL 194*4882a593Smuzhiyun help 195*4882a593Smuzhiyun The Common Flash Interface defines a number of different command 196*4882a593Smuzhiyun sets which a CFI-compliant chip may claim to implement. This code 197*4882a593Smuzhiyun provides support for command set 0002, used on chips including 198*4882a593Smuzhiyun the AMD Am29LV320. 199*4882a593Smuzhiyun 200*4882a593Smuzhiyunconfig MTD_CFI_STAA 201*4882a593Smuzhiyun tristate "Support for CFI command set 0020 (ST (Advanced Architecture) chips)" 202*4882a593Smuzhiyun depends on MTD_GEN_PROBE 203*4882a593Smuzhiyun select MTD_CFI_UTIL 204*4882a593Smuzhiyun help 205*4882a593Smuzhiyun The Common Flash Interface defines a number of different command 206*4882a593Smuzhiyun sets which a CFI-compliant chip may claim to implement. This code 207*4882a593Smuzhiyun provides support for command set 0020. 208*4882a593Smuzhiyun 209*4882a593Smuzhiyunconfig MTD_CFI_UTIL 210*4882a593Smuzhiyun tristate 211*4882a593Smuzhiyun 212*4882a593Smuzhiyunconfig MTD_RAM 213*4882a593Smuzhiyun tristate "Support for RAM chips in bus mapping" 214*4882a593Smuzhiyun help 215*4882a593Smuzhiyun This option enables basic support for RAM chips accessed through 216*4882a593Smuzhiyun a bus mapping driver. 217*4882a593Smuzhiyun 218*4882a593Smuzhiyunconfig MTD_ROM 219*4882a593Smuzhiyun tristate "Support for ROM chips in bus mapping" 220*4882a593Smuzhiyun help 221*4882a593Smuzhiyun This option enables basic support for ROM chips accessed through 222*4882a593Smuzhiyun a bus mapping driver. 223*4882a593Smuzhiyun 224*4882a593Smuzhiyunconfig MTD_ABSENT 225*4882a593Smuzhiyun tristate "Support for absent chips in bus mapping" 226*4882a593Smuzhiyun help 227*4882a593Smuzhiyun This option enables support for a dummy probing driver used to 228*4882a593Smuzhiyun allocated placeholder MTD devices on systems that have socketed 229*4882a593Smuzhiyun or removable media. Use of this driver as a fallback chip probe 230*4882a593Smuzhiyun preserves the expected registration order of MTD device nodes on 231*4882a593Smuzhiyun the system regardless of media presence. Device nodes created 232*4882a593Smuzhiyun with this driver will return -ENODEV upon access. 233*4882a593Smuzhiyun 234*4882a593Smuzhiyunconfig MTD_XIP 235*4882a593Smuzhiyun bool "XIP aware MTD support" 236*4882a593Smuzhiyun depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && ARCH_MTD_XIP 237*4882a593Smuzhiyun default y if XIP_KERNEL 238*4882a593Smuzhiyun help 239*4882a593Smuzhiyun This allows MTD support to work with flash memory which is also 240*4882a593Smuzhiyun used for XIP purposes. If you're not sure what this is all about 241*4882a593Smuzhiyun then say N. 242*4882a593Smuzhiyun 243*4882a593Smuzhiyunendmenu 244