1. 23 Feb, 2023 2 commits
    • Miquel Raynal's avatar
      Merge tag 'nand/for-6.3' into mtd/next · f4440abc
      Miquel Raynal authored
      NAND core changes:
      * Check the data only read pattern only once
      * Prepare the late addition of supported operation checks
      * Support for sequential cache reads
      * Fix nand_chip kdoc
      
      Raw NAND changes:
      * Fsl_elbc: Propagate HW ECC settings to HW
      * Marvell: Add missing layouts
      * Pasemi: Don't use static data to track per-device state
      * Sunxi:
        - Fix the size of the last OOB region
        - Remove an unnecessary check
        - Remove an unnecessary check
        - Clean up chips after failed init
        - Precompute the ECC_CTL register value
        - Embed sunxi_nand_hw_ecc by value
        - Update OOB layout to match hardware
      * tmio_nand: Remove driver
      * vf610_nfc: Use regular comments for functions
      
      SPI-NAND changes:
      * Add support for AllianceMemory AS5F34G04SND
      * Macronix: use scratch buffer for DMA operation
      
      NAND ECC changes:
      * Mediatek:
        - Add ECC support fot MT7986 IC
        - Add compatible for MT7986
        - dt-bindings: Split ECC engine with rawnand controller
      f4440abc
    • Miquel Raynal's avatar
      Merge tag 'spi-nor/for-6.3' into mtd/next · 27121864
      Miquel Raynal authored
      SPI NOR changes:
      * small fixes on core and spansion driver.
      27121864
  2. 06 Feb, 2023 7 commits
  3. 03 Feb, 2023 3 commits
  4. 30 Jan, 2023 3 commits
  5. 26 Jan, 2023 4 commits
  6. 23 Jan, 2023 2 commits
  7. 13 Jan, 2023 4 commits
    • Randy Dunlap's avatar
      mtd: rawnand: vf610_nfc: use regular comments for functions · a2cfa6a2
      Randy Dunlap authored
      These comments are not quite in kernel-doc format and they don't need
      to be, so just use "/*" comment markers for them. This prevents these
      kernel-doc warnings:
      
      drivers/mtd/nand/raw/vf610_nfc.c:210: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       * Read accessor for internal SRAM buffer
      drivers/mtd/nand/raw/vf610_nfc.c:245: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       * Write accessor for internal SRAM buffer
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Stefan Agner <stefan@agner.ch>
      Cc: Miquel Raynal <miquel.raynal@bootlin.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Vignesh Raghavendra <vigneshr@ti.com>
      Cc: linux-mtd@lists.infradead.org
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Link: https://lore.kernel.org/linux-mtd/20230113064004.24391-1-rdunlap@infradead.org
      a2cfa6a2
    • JaimeLiao's avatar
      mtd: rawnand: Support for sequential cache reads · 003fe4b9
      JaimeLiao authored
      Add support for sequential cache reads for controllers using the generic
      core helpers for their fast read/write helpers.
      
      Sequential reads may reduce the overhead when accessing physically
      continuous data by loading in cache the next page while the previous
      page gets sent out on the NAND bus.
      
      The ONFI specification provides the following additional commands to
      handle sequential cached reads:
      
      * 0x31 - READ CACHE SEQUENTIAL:
        Requires the NAND chip to load the next page into cache while keeping
        the current cache available for host reads.
      * 0x3F - READ CACHE END:
        Tells the NAND chip this is the end of the sequential cache read, the
        current cache shall remain accessible for the host but no more
        internal cache loading operation is required.
      
      On the bus, a multi page read operation is currently handled like this:
      
      	00 -- ADDR1 -- 30 -- WAIT_RDY (tR+tRR) -- DATA1_IN
      	00 -- ADDR2 -- 30 -- WAIT_RDY (tR+tRR) -- DATA2_IN
      	00 -- ADDR3 -- 30 -- WAIT_RDY (tR+tRR) -- DATA3_IN
      
      Sequential cached reads may instead be achieved with:
      
      	00 -- ADDR1 -- 30 -- WAIT_RDY (tR) -- \
      		       31 -- WAIT_RDY (tRCBSY+tRR) -- DATA1_IN \
      		       31 -- WAIT_RDY (tRCBSY+tRR) -- DATA2_IN \
      		       3F -- WAIT_RDY (tRCBSY+tRR) -- DATA3_IN
      
      Below are the read speed test results with regular reads and
      sequential cached reads, on NXP i.MX6 VAR-SOM-SOLO in mapping mode with
      a NAND chip characterized with the following timings:
      * tR: 20 µs
      * tRCBSY: 5 µs
      * tRR: 20 ns
      and the following geometry:
      * device size: 2 MiB
      * eraseblock size: 128 kiB
      * page size: 2 kiB
      
      ============= Normal read @ 33MHz =================
      mtd_speedtest: eraseblock read speed is 15633 KiB/s
      mtd_speedtest: page read speed is 15515 KiB/s
      mtd_speedtest: 2 page read speed is 15398 KiB/s
      ===================================================
      
      ========= Sequential cache read @ 33MHz ===========
      mtd_speedtest: eraseblock read speed is 18285 KiB/s
      mtd_speedtest: page read speed is 15875 KiB/s
      mtd_speedtest: 2 page read speed is 16253 KiB/s
      ===================================================
      
      We observe an overall speed improvement of about 5% when reading
      2 pages, up to 15% when reading an entire block. This is due to the
      ~14us gain on each additional page read (tR - (tRCBSY + tRR)).
      Co-developed-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Signed-off-by: default avatarJaimeLiao <jaimeliao.tw@gmail.com>
      Tested-by: default avatarLiao Jaime <jaimeliao.tw@gmail.com>
      Link: https://lore.kernel.org/linux-mtd/20230112093637.987838-4-miquel.raynal@bootlin.com
      003fe4b9
    • Miquel Raynal's avatar
      mtd: rawnand: Prepare the late addition of supported operation checks · b1f9ffbf
      Miquel Raynal authored
      Add an empty envelope just to show how to add additional checks for new
      operations. This is going to be used for sequential cached reads, which
      require the page size to be known (and the discovery to be over), hence
      the "late" designation.
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Tested-by: default avatarLiao Jaime <jaimeliao.tw@gmail.com>
      Link: https://lore.kernel.org/linux-mtd/20230112093637.987838-3-miquel.raynal@bootlin.com
      b1f9ffbf
    • Miquel Raynal's avatar
      mtd: rawnand: Check the data only read pattern only once · 9f820fc0
      Miquel Raynal authored
      Instead of checking if a pattern is supported each time we need it,
      let's create a bitfield that only the core would be allowed to fill at
      startup time. The core and the individual drivers may then use it in
      order to check what operation they should use. This bitfield is supposed
      to grow over time.
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Tested-by: default avatarLiao Jaime <jaimeliao.tw@gmail.com>
      Link: https://lore.kernel.org/linux-mtd/20230112093637.987838-2-miquel.raynal@bootlin.com
      9f820fc0
  8. 07 Jan, 2023 3 commits
  9. 02 Jan, 2023 9 commits
  10. 01 Jan, 2023 3 commits