03 Aug, 2016

1 commit

  • Pull MTD updates from Brian Norris:
    "NAND:

    Quoting Boris:
    'This pull request contains only one notable change:
    - Addition of the MTK NAND controller driver

    And a bunch of specific NAND driver improvements/fixes. Here are the
    changes that are worth mentioning:
    - A few fixes/improvements for the xway NAND controller driver
    - A few fixes for the sunxi NAND controller driver
    - Support for DMA in the sunxi NAND driver
    - Support for the sunxi NAND controller IP embedded in A23/A33 SoCs
    - Addition for bitflips detection in erased pages to the brcmnand driver
    - Support for new brcmnand IPs
    - Update of the OMAP-GPMC binding to support DMA channel description'

    In addition, some small fixes around error handling, etc., as well
    as one long-standing corner case issue (2.6.20, I think?) with
    writing 1 byte less than a page.

    NOR:

    - rework some error handling on reads and writes, so we can better
    handle (for instance) SPI controllers which have limitations on
    their maximum transfer size

    - add new Cadence Quad SPI flash controller driver

    - add new Atmel QSPI flash controller driver

    - add new Hisilicon SPI flash controller driver

    - support a few new flash, and update supported features on others

    - fix the logic used for detecting a fully-unlocked flash

    And other miscellaneous small fixes"

    * tag 'for-linus-20160801' of git://git.infradead.org/linux-mtd: (60 commits)
    mtd: spi-nor: don't build Cadence QuadSPI on non-ARM
    mtd: mtk-nor: remove duplicated include from mtk-quadspi.c
    mtd: nand: fix bug writing 1 byte less than page size
    mtd: update description of MTD_BCM47XXSFLASH symbol
    mtd: spi-nor: Add driver for Cadence Quad SPI Flash Controller
    mtd: spi-nor: Bindings for Cadence Quad SPI Flash Controller driver
    mtd: nand: brcmnand: Change BUG_ON in brcmnand_send_cmd
    mtd: pmcmsp-flash: Allocating too much in init_msp_flash()
    mtd: maps: sa1100-flash: potential NULL dereference
    mtd: atmel-quadspi: add driver for Atmel QSPI controller
    mtd: nand: omap2: fix return value check in omap_nand_probe()
    Documentation: atmel-quadspi: add binding file for Atmel QSPI driver
    mtd: spi-nor: add hisilicon spi-nor flash controller driver
    mtd: spi-nor: support dual, quad, and WP for Gigadevice
    mtd: spi-nor: Added support for n25q00a.
    memory: Update dependency of IFC for Layerscape
    mtd: nand: jz4780: Update MODULE_AUTHOR email address
    mtd: nand: sunxi: prevent a small memory leak
    mtd: nand: sunxi: add reset line support
    mtd: nand: sunxi: update DT bindings
    ...

    Linus Torvalds
     

14 Jul, 2016

1 commit

  • This patch enables IFC NAND support on ARM layerscape platform.
    It fixes the dependency to enable NAND. The include files are being modified
    to ensure complilation for both PowerPC and ARM architectures.

    Signed-off-by: Raghav Dogra
    Acked-by: Scott Wood
    Signed-off-by: Brian Norris

    Raghav Dogra
     

02 Jun, 2016

1 commit

  • The EBI (External Bus Interface) is used to access external peripherals
    (NOR, SRAM, NAND, and other specific devices like ethernet controllers).
    Each device is assigned a CS line and an address range and can have its
    own configuration (timings, access mode, bus width, ...).
    This driver provides a generic DT binding to configure a device according
    to its requirements.
    For specific device controllers (like the NAND one) the SMC timings
    should be configured by the controller driver through the matrix and
    smc syscon regmaps.

    Signed-off-by: Boris Brezillon
    Signed-off-by: Alexandre Belloni

    Boris Brezillon
     

25 May, 2016

1 commit

  • Pull MTD updates from Brian Norris:
    "First cycle with Boris as NAND maintainer! Many (most) bullets stolen
    from him.

    Generic:
    - Migrated NAND LED trigger to be a generic MTD trigger

    NAND:
    - Introduction of the "ECC algorithm" concept, to avoid overloading
    the ECC mode field too much more
    - Replaced the nand_ecclayout infrastructure with something a little
    more flexible (finally!) and future proof
    - Rework of the OMAP GPMC and NAND drivers; the TI folks pulled some
    of this into their own tree as well
    - Prepare the sunxi NAND driver to receive DMA support
    - Handle bitflips in erased pages on GPMI revisions that do not
    support this in hardware.

    SPI NOR:
    - Start using the spi_flash_read() API for SPI drivers that support
    it (i.e., SPI drivers with special memory-mapped flash modes)

    And other small scattered improvments"

    * tag 'for-linus-20160523' of git://git.infradead.org/linux-mtd: (155 commits)
    mtd: spi-nor: support GigaDevice gd25lq64c
    mtd: nand_bch: fix spelling of "probably"
    mtd: brcmnand: respect ECC algorithm set by NAND subsystem
    gpmi-nand: Handle ECC Errors in erased pages
    Documentation: devicetree: deprecate "soft_bch" nand-ecc-mode value
    mtd: nand: add support for "nand-ecc-algo" DT property
    mtd: mtd: drop NAND_ECC_SOFT_BCH enum value
    mtd: drop support for NAND_ECC_SOFT_BCH as "soft_bch" mapping
    mtd: nand: read ECC algorithm from the new field
    mtd: nand: fsmc: validate ECC setup by checking algorithm directly
    mtd: nand: set ECC algorithm to Hamming on fallback
    staging: mt29f_spinand: set ECC algorithm explicitly
    CRIS v32: nand: set ECC algorithm explicitly
    mtd: nand: atmel: set ECC algorithm explicitly
    mtd: nand: davinci: set ECC algorithm explicitly
    mtd: nand: bf5xx: set ECC algorithm explicitly
    mtd: nand: omap2: Fix high memory dma prefetch transfer
    mtd: nand: omap2: Start dma request before enabling prefetch
    mtd: nandsim: add __init attribute
    mtd: nand: move of_get_nand_xxx() helpers into nand_base.c
    ...

    Linus Torvalds
     

18 Apr, 2016

1 commit

  • This patch adds Exynos SROM controller driver which will handle
    save restore of SROM registers during S2R.

    Signed-off-by: Pankaj Dubey
    Reviewed-by: Krzysztof Kozlowski
    [p.fedin@samsung.com: tested on SMDK5410]
    Tested-by: Pavel Fedin
    Signed-off-by: Kukjin Kim
    [k.kozlowski: Minor COMPILE_TEST adjustments in Kconfig entries]
    Signed-off-by: Krzysztof Kozlowski

    Pankaj Dubey
     

15 Apr, 2016

1 commit


25 Feb, 2016

1 commit

  • This patch add SMI(Smart Multimedia Interface) driver. This driver
    is responsible to enable/disable iommu and control the power domain
    and clocks of each local arbiter.

    Signed-off-by: Yong Wu
    Tested-by: Philipp Zabel
    Reviewed-by: Daniel Kurtz
    Tested-by: Daniel Kurtz
    Signed-off-by: Matthias Brugger
    Signed-off-by: Joerg Roedel

    Yong Wu
     

13 Oct, 2015

1 commit

  • Commit 63aa945b1013 ("memory: omap-gpmc: Add Kconfig option for debug")
    added a debug option for GPMC, but somehow managed to keep it unselectable.

    This probably happened because I had some uncommitted changes and the
    GPMC option is selected in the platform specific Kconfig.

    Let's also update the description a bit, it does not mention that
    enabling the debug option also disables the reset of GPMC controller
    during the init as pointed out by Uwe Kleine-König
    and Roger Quadros .

    Fixes: 63aa945b1013 ("memory: omap-gpmc: Add Kconfig option for debug")
    Reported-by: Uwe Kleine-König
    Acked-by: Roger Quadros
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     

18 Jul, 2015

1 commit

  • This driver makes it possible to configure the static memory
    chip selects on the ARM PL172 MultiPort Memory Controller
    from a set of properties in DT. Configuration of dynamic
    memory is not supported and is left to the boot loader.

    The intended usage is to setup timing and configuration for
    static memory devices like NAND and NOR Flash before they
    are probed by a driver.

    Signed-off-by: Joachim Eastwood
    Signed-off-by: Olof Johansson

    Joachim Eastwood
     

02 Jun, 2015

1 commit

  • We support decoding the bootloader values if DEBUG is defined.
    But we also need to change the struct omap_hwmod flags to have
    HWMOD_INIT_NO_RESET to avoid the GPMC being reset during the
    boot. Otherwise just the default timings will be displayed
    instead of the bootloader configured timings.

    This also allows us to clean up the various GPMC related
    hwmod flags. For debugging, we only need HWMOD_INIT_NO_RESET,
    and HWMOD_INIT_NO_IDLE is not needed.

    Cc: Brian Hutchinson
    Cc: Paul Walmsley
    Cc: Roger Quadros
    Signed-off-by: Tony Lindgren
    Signed-off-by: Paul Walmsley

    Tony Lindgren
     

27 Mar, 2015

1 commit

  • Add a driver for the NAND/External Memory Controller (NEMC) on JZ4780
    and later SoCs.

    The primary function of this driver is to configure parameters, such
    as timings, for external memory devices using data supplied in the
    device tree. Devices connected to the NEMC are represented in the DT
    as children of the NEMC node, the driver uses optional properties
    specified in these child nodes to configure the parameters of each
    bank.

    Signed-off-by: Alex Smith
    Signed-off-by: Zubair Lutfullah Kakakhel
    Signed-off-by: Greg Kroah-Hartman

    Alex Smith
     

10 Dec, 2014

1 commit

  • Pull ARM SoC/OMAP GPMC driver cleanup and move from Arnd Bergmann:
    "The GPMC driver has traditionally been considered a part of the OMAP
    platform code and tightly interweaved with some of the boards.

    With this cleanup, it has finally come to the point where it makes
    sense to move it out of arch/arm into drivers/memory, where we already
    have other drivers for similar hardware. The cleanups are still
    ongoing, with the goal of eventually having a standalone driver that
    does not require an interface to architecture code.

    This is a separate branch because of dependencies on multiple other
    branches, and to keep the drivers changes separate from the normal
    cleanups"

    * tag 'omap-gpmc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    memory: gpmc: Move omap gpmc code to live under drivers
    ARM: OMAP2+: Move GPMC initcall to devices.c
    ARM: OMAP2+: Prepare to move GPMC to drivers by platform data header
    ARM: OMAP2+: Remove unnecesary include in GPMC driver
    ARM: OMAP2+: Drop board file for 3430sdp
    ARM: OMAP2+: Drop board file for ti8168evm
    ARM: OMAP2+: Drop legacy code for gpmc-smc91x.c
    ARM: OMAP2+: Require proper GPMC timings for devices
    ARM: OMAP2+: Show bootloader GPMC timings to allow configuring the .dts file
    ARM: OMAP2+: Fix support for multiple devices on a GPMC chip select
    ARM: OMAP2+: gpmc: Sanity check GPMC fck on probe
    ARM: OMAP2+: gpmc: Keep Chip Select disabled while configuring it
    ARM: OMAP2+: gpmc: Always enable A26-A11 for non NAND devices
    ARM: OMAP2+: gpmc: Error out if timings fail in gpmc_probe_generic_child()
    ARM: OMAP2+: gpmc: Print error message in set_gpmc_timing_reg()

    Linus Torvalds
     

04 Dec, 2014

1 commit

  • The memory controller on NVIDIA Tegra exposes various knobs that can be
    used to tune the behaviour of the clients attached to it.

    Currently this driver sets up the latency allowance registers to the HW
    defaults. Eventually an API should be exported by this driver (via a
    custom API or a generic subsystem) to allow clients to register latency
    requirements.

    This driver also registers an IOMMU (SMMU) that's implemented by the
    memory controller. It is supported on Tegra30, Tegra114 and Tegra124
    currently. Tegra20 has a GART instead.

    The Tegra SMMU operates on memory clients and SWGROUPs. A memory client
    is a unidirectional, special-purpose DMA master. A SWGROUP represents a
    set of memory clients that form a logical functional unit corresponding
    to a single device. Typically a device has two clients: one client for
    read transactions and one client for write transactions, but there are
    also devices that have only read clients, but many of them (such as the
    display controllers).

    Because there is no 1:1 relationship between memory clients and devices
    the driver keeps a table of memory clients and the SWGROUPs that they
    belong to per SoC. Note that this is an exception and due to the fact
    that the SMMU is tightly integrated with the rest of the Tegra SoC. The
    use of these tables is discouraged in drivers for generic IOMMU devices
    such as the ARM SMMU because the same IOMMU could be used in any number
    of SoCs and keeping such tables for each SoC would not scale.

    Acked-by: Joerg Roedel
    Signed-off-by: Thierry Reding

    Thierry Reding
     

29 Nov, 2014

1 commit


25 Aug, 2014

1 commit


30 Jul, 2014

1 commit

  • The CoreNet Coherency Fabric is part of the memory subsystem on
    some Freescale QorIQ chips. It can report coherency violations (e.g.
    due to misusing memory that is mapped noncoherent) as well as
    transactions that do not hit any local access window, or which hit a
    local access window with an invalid target ID.

    Signed-off-by: Scott Wood
    Reviewed-by: Bharat Bhushan

    Scott Wood
     

15 Jul, 2014

1 commit


01 Mar, 2014

2 commits

  • Add new AEMIF driver for EMIF16 Texas Instruments controller.
    The EMIF16 module is intended to provide a glue-less interface to
    a variety of asynchronous memory devices like ASRA M, NOR and NAND
    memory. A total of 256M bytes of any of these memories can be
    accessed at any given time via 4 chip selects with 64M byte access
    per chip select.

    Synchronous memories such as DDR1 SD RAM, SDR SDRAM and Mobile SDR
    are not supported.

    This controller is used on SoCs like Davinci, Keysone2

    Acked-by: Santosh Shilimkar
    Signed-off-by: Murali Karicheri
    Signed-off-by: Ivan Khoronzhuk
    Signed-off-by: Greg Kroah-Hartman

    Ivan Khoronzhuk
     
  • commit d2ae2e20fbdde5a65f3a5a153044ab1e5c53f7cc ("driver/memory:Move
    Freescale IFC driver to a common driver") introduces this build
    regression into the mpc85xx_defconfig:

    drivers/built-in.o: In function `fsl_ifc_nand_remove':
    drivers/mtd/nand/fsl_ifc_nand.c:1147: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/mtd/nand/fsl_ifc_nand.c:1147: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/built-in.o: In function `fsl_ifc_nand_probe':
    drivers/mtd/nand/fsl_ifc_nand.c:1031: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/mtd/nand/fsl_ifc_nand.c:1031: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/built-in.o: In function `match_bank':
    drivers/mtd/nand/fsl_ifc_nand.c:1013: undefined reference to `convert_ifc_address'
    drivers/built-in.o: In function `fsl_ifc_nand_probe':
    drivers/mtd/nand/fsl_ifc_nand.c:1059: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/mtd/nand/fsl_ifc_nand.c:1080: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/mtd/nand/fsl_ifc_nand.c:1069: undefined reference to `fsl_ifc_ctrl_dev'
    drivers/mtd/nand/fsl_ifc_nand.c:1069: undefined reference to `fsl_ifc_ctrl_dev'
    make: *** [vmlinux] Error 1

    This happens because there is nothing to descend us into the
    drivers/memory directory in the mpc85xx_defconfig. It wasn't
    selecting CONFIG_MEMORY. So we never built drivers/memory/fsl_ifc.o
    and so we have nothing to link the above symbols against.

    Since the goal of the original commit was to relocate the driver to
    an arch independent location, it only makes sense to relocate the
    Kconfig setting there as well. But that alone won't fix the build
    failure; for that we ensure whoever selects FSL_IFC also selects MEMORY.

    Cc: Prabhakar Kushwaha
    Cc: Scott Wood
    Cc: Arnd Bergmann
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Greg Kroah-Hartman

    Paul Gortmaker
     

22 May, 2013

1 commit

  • Marvell EBU SoCs such as Armada 370/XP, Orion5x (88f5xxx) and
    Discovery (mv78xx0) supports a Device Bus controller to access several
    kinds of memories and I/O devices (NOR, NAND, SRAM, FPGA).

    This commit adds a driver to handle this controller. So far only
    Armada 370, Armada XP and Discovery SoCs are supported.

    The driver must be registered through a device tree node;
    as explained in the binding document.

    For each child node in the device tree, this driver will:
    * set timing parameters
    * register a child device
    * setup an address decoding window, using the mbus driver

    Keep in mind the address decoding window setup is only a temporary hack.
    This code will be removed from this devbus driver as soon as a proper device
    tree binding for the mbus driver is added.

    Signed-off-by: Ezequiel Garcia
    Acked-by: Arnd Bergmann
    Acked-by: Jason Cooper
    Signed-off-by: Greg Kroah-Hartman

    Ezequiel Garcia
     

12 May, 2012

2 commits


11 May, 2012

2 commits


05 May, 2012

1 commit


02 May, 2012

1 commit

  • EMIF is an SDRAM controller used in various Texas Instruments
    SoCs. EMIF supports, based on its revision, one or more of
    LPDDR2/DDR2/DDR3 protocols.

    Add the basic infrastructure for EMIF driver that includes
    driver registration, probe, parsing of platform data etc.

    Signed-off-by: Aneesh V
    Reviewed-by: Santosh Shilimkar
    Reviewed-by: Benoit Cousson
    [santosh.shilimkar@ti.com: Moved to drivers/memory from drivers/misc]
    Signed-off-by: Santosh Shilimkar
    Tested-by: Lokesh Vutla
    Signed-off-by: Greg Kroah-Hartman

    Aneesh V