summaryrefslogtreecommitdiff
path: root/drivers/mtd
AgeCommit message (Collapse)Author
2012-12-11mtd: nand: mxs: reset BCH earlier, too, to avoid NAND startup problemsWolfram Sang
It could happen (1 out of 100 times) that NAND did not start up correctly after warm rebooting, so we end up with various failures or DMA timed out due to a stalled BCH. When resetting BCH together with GPMI, the issue could not be observed anymore (after 10000+ reboots). We probably need the consistent state already before sending commands to NAND. This behaviour was observed in barebox and kernel, so I assume it affects U-Boot as well. I chose to keep the extra reset for BCH when changing the flash layout to be on the safe side. Signed-off-by: Wolfram Sang <[email protected]> Acked-by: Marek Vasut <[email protected]>
2012-12-10am33xx_spl_bch: simple SPL nand loader for AM33XXIlya Yanok
AM33XX with BCH8 can't work with nand_spl_simple correctly because custom read_page implementation is required for proper syndrome generation. This simple driver mostly duplicates nand_spl_simple but has nand_read_page changed to suit our needs. Signed-off-by: Ilya Yanok <[email protected]>
2012-12-10omap_gpmc: BCH8 support (ELM based)Mansoor Ahamed
This patch adds support for BCH8 error correction code to omap_gpmc driver. We use GPMC to generate codes/syndromes but we need ELM to find error locations from given syndrome. Signed-off-by: Mansoor Ahamed <[email protected]> [ilya: merge it with omap_gpmc driver, some fixes and cleanup] Signed-off-by: Ilya Yanok <[email protected]>
2012-11-26nand: Add torture featureBenoît Thébaudeau
This patch adds a NAND Flash torture feature, which is useful as a block stress test to determine if a block is still good and reliable (or should be marked as bad), e.g. after a write error. This code is ported from mtd-utils' lib/libmtd.c. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> [[email protected]: removed unnec. ifdef and unwrapped error strings] Signed-off-by: Scott Wood <[email protected]>
2012-11-26nand: Fix nand_erase_opts() offset checkBenoît Thébaudeau
NAND Flash is erased by blocks, not by pages. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]>
2012-11-26nand: Clean up nand_utilBenoît Thébaudeau
This patch cleans up nand_util.c: - Fix tabs. - Fix typos. - Remove space character before opening parenthesis in function calls. - Fix comments. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]>
2012-11-26nand: Move the sub-page read support enable to a flagJoe Hershberger
Use a flag instead of a hard-coded macro so that sub-page reads can be enabled in other cases (such as on-die ecc). This is the same as a5ff4f102937a3492bca4a9ff0c341d78813414c in Linux Signed-off-by: Joe Hershberger <[email protected]>
2012-11-26driver/mtd:IFC NAND:Initialise internal SRAM before any writePrabhakar Kushwaha
IFC-1.1.0 uses 28nm techenology for SRAM. This tech has known limitaion for SRAM i.e. "byte select" is not supported. Hence Read Modify Write is implemented in IFC for any "system side write" into sram buffer. Reading an uninitialized memory results in ECC Error from sram wrapper. Hence we must initialize/prefill SRAM buffer by any data before writing anything in SRAM from system side. To initialize SRAM user can use "READID" NAND command with read bytes equal to SRAM size. It will be a one time activity post boot Signed-off-by: Prabhakar Kushwaha <[email protected]> [[email protected]: fix fsl_ifc_sram_init prototype] Signed-off-by: Scott Wood <[email protected]>
2012-11-26nand/fsl: add NAND_NO_SUBPAGE_WRITE to eLBC and IFC driversScott Wood
These controllers can only do hardware ECC on full page transfers. Signed-off-by: Scott Wood <[email protected]>
2012-11-26spl/nand: config symbol documentationScott Wood
Document parameters used for specifying the NAND image to be loaded. Also fix the definition of CONFIG_SPL_NAND_SIMPLE -- it's only nand_spl_simple.c, not the entire nand directory. The word "simple" is there for a reason. :-) Signed-off-by: Scott Wood <[email protected]> --- v2: updated for makefile changes earlier in patchset
2012-11-26spl/nand: introduce CONFIG_SPL_NAND_DRIVERS, _BASE, and _ECC.Scott Wood
Some small SPLs do not use nand_base.c, and a subset of those also require a special driver. Some SPLs need software ECC but others can't fit it. All existing boards that specify CONFIG_SPL_NAND_SUPPORT have these symbols added to preserve existing behavior. Signed-off-by: Scott Wood <[email protected]> -- v2: use positive logic for including bits of NAND, rather than a MINIMAL symbol that excludes things.
2012-11-05Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini
2012-11-04drivers/mtd/nand: sparse fixesKim Phillips
nand_ecc.c:82:5: warning: symbol 'nand_calculate_ecc' was not declared. Should it be static? nand_ecc.c:155:5: warning: symbol 'nand_correct_data' was not declared. Should it be static? nand_base.c:2854:1: error: directive in argument list nand_base.c:2856:1: error: directive in argument list Signed-off-by: Kim Phillips <[email protected]> Acked-by: Scott Wood <[email protected]>
2012-11-04drivers/mtd/cfi_flash.c: sparse fixesKim Phillips
cfi_flash.c:756:43: warning: Using plain integer as NULL pointer cfi_flash.c:1150:52: warning: cast to non-scalar cfi_flash.c:1433:46: warning: cast truncates bits from constant value (890089 becomes 89) cfi_flash.c:1490:61: warning: cast truncates bits from constant value (1f001f becomes 1f) cfi_flash.c:1508:61: warning: cast truncates bits from constant value (10001 becomes 1) cfi_flash.c:1738:63: warning: cast truncates bits from constant value (10001 becomes 1) cfi_flash.c:1857:6: warning: symbol '__flash_cmd_reset' was not declared. Should it be static? Signed-off-by: Kim Phillips <[email protected]>
2012-11-04include/linux/byteorder: import latest endian definitions from linuxKim Phillips
u-boot's byteorder headers did not contain endianness attributions for use with sparse, causing a lot of false positives. Import the kernel's latest definitions, and enable them by including compiler.h and types.h. They come with 'const' added for some swab functions, so fix those up, too: include/linux/byteorder/big_endian.h:46:2: warning: passing argument 1 of '__swab64p' discards 'const' qualifier from pointer target type [enabled by default] Also, note: u-boot's historic __BYTE_ORDER definition has been preserved (for the time being at least). We also remove ad-hoc barrier() definitions, since we're including compiler.h in files that hadn't in the past: macb.c:54:0: warning: "barrier" redefined [enabled by default] In addition, including compiler.h in byteorder changes the 'noinline' definition to expand to __attribute__((noinline)). This fixes arch/powerpc/lib/bootm.c: bootm.c:329:16: error: attribute '__attribute__': unknown attribute bootm.c:329:16: error: expected ')' before '__attribute__' bootm.c:329:25: error: expected identifier or '(' before ')' token powerpc sparse builds yield: include/common.h:356:22: error: marked inline, but without a definition the unknown-reason inlining without a definition is considered obsolete given it was part of the 2002 initial commit, and no arm version was 'fixed.' also fixed: ydirectenv.h:60:0: warning: "inline" redefined [enabled by default] and: Configuring for devconcenter - Board: intip, Options: DEVCONCENTER make[1]: *** [4xx_ibm_ddr2_autocalib.o] Error 1 make: *** [arch/powerpc/cpu/ppc4xx/libppc4xx.o] Error 2 powerpc-fsl-linux-size: './u-boot': No such file 4xx_ibm_ddr2_autocalib.c: In function 'DQS_autocalibration': include/asm/ppc4xx-sdram.h:1407:13: sorry, unimplemented: inlining failed in call to 'ppc4xx_ibm_ddr2_register_dump': function body not available 4xx_ibm_ddr2_autocalib.c:1243:32: sorry, unimplemented: called from here and: In file included from crc32.c:50:0: crc32table.h:4:1: warning: implicit declaration of function '___constant_swab32' [-Wimplicit-function-declaration] crc32table.h:4:1: error: initializer element is not constant crc32table.h:4:1: error: (near initialization for 'crc32table_le[0]') Signed-off-by: Kim Phillips <[email protected]> [trini: Remove '#endif' in include/common.h around setenv portion] Signed-off-by: Tom Rini <[email protected]>
2012-10-29tegra: nand: make ONFI detection workLucas Stach
Add the missing bits to the Tegra NAND driver to make ONFI detection work properly. Also add it to the Tegra default config, as it seems to be a reasonable thing to have it available on all boards that use any kind of NAND. Signed-off-by: Lucas Stach <[email protected]> Acked-by: Scott Wood <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2012-10-15tegra: nand: add board pinmuxLucas Stach
Boards may require a different pinmux setup for NAND than the default one. Add a way to call into board specific code to set this up. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2012-10-15Tegra20: Move some include files to arch-tegra for sharing with Tegra30Tom Warren
The move is pretty straight-forward. ap20.h and tegra20.h were renamed to ap.h and tegra.h. Some files remain in arch-tegra20 but 'include' a file in 'arch-tegra' with #defines & structs that will be common between T20 and T30 HW. HW-specific #defines, etc. stay in the 'arch-tegra20' 'root' file. All boards build OK w/MAKEALL -s tegra20. Checkpatch.pl runs clean. Seaboard works OK. Signed-off-by: Tom Warren <[email protected]>
2012-10-05MPC85xx: remove support for TQM85xx boardsWolfgang Denk
Due to grown code sizes the TQM85xx boards don't build any more with some older tool chains (like ELDK 4.2). As these boards have long reached EOL it seems a waste of effort trying to fix them. The vendor has agreed to drop support for them, too. So let's get rid of them. Signed-off-by: Wolfgang Denk <[email protected]> Cc: Stefan Roese <[email protected]> cc: Kim Phillips <[email protected]> Acked-by: Stefan Roese <[email protected]>
2012-09-30Merge remote-tracking branch 'u-boot/master'Albert ARIBAUD
2012-09-29Merge remote-tracking branch 'u-boot-atmel/master'Albert ARIBAUD
2012-09-27SPL: SPI: Enhance spi_spl_load to match the other load functionsTom Rini
Signed-off-by: Tom Rini <[email protected]>
2012-09-21Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini
2012-09-18mxc nand: Fix warning on !MXC_NFC_V2_1Tom Rini
In board_nand_init() we only need the 'tmp' variable if MXC_NFC_V2_1 is defined. Signed-off-by: Tom Rini <[email protected]>
2012-09-17mxc nand: Homogenize IP revisions with LinuxBenoît Thébaudeau
Use the same IP revisions as in Linux in order to make the comparison more clear. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mtd mxc nand: Merge init functionsBenoît Thébaudeau
Merge mxc_setup_config1() into board_nand_init() in order to ease the addition of i.MX5 support in the following patches. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mtd mxc nand: Fix ECC state after read_page_raw_syndrome()Benoît Thébaudeau
mxc_nand_read_page_raw_syndrome() should reenable ECC upon exit. This fixes ECC errors left uncorrected after a call to this function. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mtd mxc nand: Use _mxc_nand_enable_hwecc()Benoît Thébaudeau
Use _mxc_nand_enable_hwecc() instead of duplicating its code. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mxc nand: Access all ecc_status_result fieldsBenoît Thébaudeau
On the NFC IP 1.1, the 32-bit ecc_status_result value comes from 2 consecutive 16-bit registers. This patch reads all the fields of this value, which makes a difference for 4-kiB NF pages. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mxc nand: cosmectic: Light cleanupBenoît Thébaudeau
Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mxc nand: Merge mtd and spl register definitionsBenoît Thébaudeau
This patches fixes the TODO to use same register definitions in mtd mxc_nand and nand_spl fsl nfc drivers. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Scott Wood <[email protected]> Cc: Stefano Babic <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driverMarek Vasut
This is based on Linux kernel -next: commit 14f44abf1dafc20ba42ce8616a8fc8fbd1b3712b Author: Brian Norris <[email protected]> Date: Fri Jul 13 09:28:24 2012 -0700 mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver The NAND_CHIPOPTIONS_MSK has limited utility and is causing real bugs. It silently masks off at least one flag that might be set by the driver (NAND_NO_SUBPAGE_WRITE). This breaks the GPMI NAND driver and possibly others. Really, as long as driver writers exercise a small amount of care with NAND_* options, this mask is not necessary at all; it was only here to prevent certain options from accidentally being set by the driver. But the original thought turns out to be a bad idea occasionally. Thus, kill it. Note, this patch fixes some major gpmi-nand breakage. Signed-off-by: Marek Vasut <[email protected]> Cc: Brian Norris <[email protected]> Cc: Eric Nelson <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Otavio Salvador <[email protected]> Cc: Scott Wood <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17nand: Make NAND lock status compatible with MicronJoe Hershberger
Micron NAND flash (e.g. MT29F4G08ABADAH4) BLOCK LOCK READ STATUS is not the same as others. Instead of bit 1 being lock, it is #lock_tight. To make the driver support either format, ignore bit 1 and use only bit 0 and bit 2. Signed-off-by: Joe Hershberger <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17nand: consolidate duplicated constantsJoe Hershberger
NAND_CMD_ constants for lock/unlock should be in the header Signed-off-by: Joe Hershberger <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17nand: Change ulong to loff_t and size_tJoe Hershberger
Missed in previous cleanup. Signed-off-by: Joe Hershberger <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17nand: Add support for unlock.invertJoe Hershberger
NAND unlock command allows an invert bit to be set to unlock all but the selected page range. Signed-off-by: Joe Hershberger <[email protected]> [[email protected]: updated docs and added comment about invert bit] Signed-off-by: Scott Wood <[email protected]>
2012-09-17mtd: support ONFI multi lun NANDMatthieu CASTET
With onfi a flash is organized into one or more logical units (LUNs). A logical unit (LUN) is the minimum unit that can independently execute commands and report status. Mtd does not exploit LUN, so make it see a big single flash where size is lun_size * number_of_lun. Without this patch MT29F8G08ADBDAH4 size is 512MiB instead of 1GiB. Artem: split long line on 2 shorter ones. This is commit 637957551c0ac80de8dfc7650d320c5a98c2c0c0 from Linux Signed-off-by: Matthieu Castet <[email protected]> Acked-by: Florian Fainelli <[email protected]> Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: David Woodhouse <[email protected]> [[email protected]: picked from Linux into U-Boot] Reported-by: Rafael Beims <[email protected]> Signed-off-by: Scott Wood <[email protected]>
2012-09-17spiflash: at25: using common spi flash operationBo Shen
Using common spi flash operation function to replace private operation funtion Signed-off-by: Bo Shen <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-17spi: add atmel at25df321 serial flash supportBo Shen
Add atmel at25df321 serial flash support Signed-off-by: Bo Shen <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-13atmel_nand: fix the U-Boot output information about nand flash with PMECC ↵Wu, Josh
enable. Before the patch, it looks like: |U-Boot 2012.07-00441-gd578d6f-dirty (Sep 10 2012 - 16:11:06) | |CPU: AT91SAM9G35 |Crystal frequency: 12 MHz |CPU clock : 400 MHz |Master clock : 133.333 MHz |DRAM: 128 MiB |WARNING: Caches not enabled > |NAND: Initialize PMECC params, cap: 2, sector: 512 > |256 MiB |MMC: mci: 0 |In: serial |Out: serial |Err: serial |Net: macb0 |Hit any key to stop autoboot: 0 After the patch: |U-Boot 2012.07-00441-gd578d6f-dirty (Sep 10 2012 - 16:18:11) | |CPU: AT91SAM9G35 |Crystal frequency: 12 MHz |CPU clock : 400 MHz |Master clock : 133.333 MHz |DRAM: 128 MiB |WARNING: Caches not enabled > |NAND: 256 MiB | ... ... |Hit any key to stop autoboot: 0 Signed-off-by: Josh Wu <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-10NAND: MXS: include common.h first so cache.h is included in correct orderTom Warren
With Simon Glass's include/nand.h alignment changes, some mxs builds were generating errors. Fix is to ensure asm/cache.h is included before linux/mtd/nand.h. Moving common.h to top of include list does that. Signed-off-by: Tom Warren <[email protected]> Acked-by: Simon Glass <[email protected]> Acked-by: Marek Vasut <[email protected]>
2012-09-07tegra: nand: Add Tegra NAND driverJim Lin
A device tree is used to configure the NAND, including memory timings and block/pages sizes. If this node is not present or is disabled, then NAND will not be initialized. Signed-off-by: Jim Lin <[email protected]> Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2012-09-07nand: Try to align the default buffersSimon Glass
The NAND layer needs to use cache-aligned buffers by default. Towards this goal. align the default buffers and their members according to the minimum DMA alignment defined for the architecture. Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Tom Warren <[email protected]> Acked-by: Scott Wood <[email protected]>
2012-09-03cfi: Make the flash erase and write operations abortableJoe Hershberger
Check for ctrlc() in operations that take time and loop over the flash addresses. In netconsole, tstc() is expensive. Only check once in a while to not slow down the operation significantly. Signed-off-by: Joe Hershberger <[email protected]> Signed-off-by: Stefan Roese <[email protected]>
2012-09-03cfi: Check for blank before eraseJoe Hershberger
Added an optional check in the CFI driver to evaluate if the sector is already blank before issuing an erase command. Improves erase time by over a factor of 10 if already blank. Signed-off-by: Joe Hershberger <[email protected]> Signed-off-by: Stefan Roese <[email protected]>
2012-09-01at91: atmel_nand: Update driver to support Programmable Multibit ECC controllerWu, Josh
The Programmable Multibit ECC (PMECC) controller is a programmable binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder. This controller can be used to support both SLC and MLC NAND Flash devices. It supports to generate ECC to correct 2, 4, 8, 12 or 24 bits of error per sector of data. To use PMECC in this driver, the user needs to set the PMECC correction capability, the sector size and ROM lookup table offsets in board config file. This driver is ported from Linux kernel atmel_nand PMECC patch. The main difference is in this version it uses registers structure access hardware instead of using macros. It is tested in 9x5 serial boards. Signed-off-by: Josh Wu <[email protected]> [rebase] Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-01at91: atmel_nand: remove unused variables.Wu, Josh
Signed-off-by: Josh Wu <[email protected]> Acked-by: Scott Wood <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-01at91: atmel_nand: extract HWECC initialization code into one function: ↵Wu, Josh
atmel_hw_nand_init_param(). This patch 1. extract the hwecc initialization code into one function. It is a preparation for adding atmel PMECC support. 2. enable CONFIG_SYS_NAND_SELF_INIT. Which make us can configurate the ecc parameters between nand_scan_ident() and nand_scan_tail(). Signed-off-by: Josh Wu <[email protected]> [fix empty newline at EOF error and move return value check into ifdef] Signed-off-by: Andreas Bießmann <[email protected]>
2012-09-01mxs: Convert sys_proto.h prefixes to 'mxs'Otavio Salvador
The sys_proto.h functions (except the boot modes) are compatible with i.MX233 and i.MX28 so we use 'mxs' prefix for its methods. Signed-off-by: Otavio Salvador <[email protected]>
2012-09-01arm: omap: Fix switching back to nandecc sw.Jeroen Hofstee
Orjan Friberg wrote at [1]: "For the beagleboard, ecc.size is not explicitly set when doing 'nandecc sw'. If it's not set for the NAND_ECC_SOFT case in nand_scan_tail, it's set to 256 bytes. When doing 'nandecc hw', ecc.size is set to 512 bytes. Hence, when changing back to 'nandecc sw' ecc.size remains at 512 bytes and suddenly the format has changed." No patch has been submitted and the issue was still present. This patch adds the mentioned solution. Tested on a tam3517 board. [1] http://lists.denx.de/pipermail/u-boot/2012-February/119002.html cc: Orjan Friberg <[email protected]> Acked-by: Igor Grinberg <[email protected]> Acked-by: Nikita Kiryanov <[email protected]> Signed-off-by: Jeroen Hofstee <[email protected]>