28 May, 2016

2 commits

  • Pull UBI/UBIFS updates from Richard Weinberger:
    "This contains mostly cleanups and minor improvements of UBI and UBIFS"

    * tag 'upstream-4.7-rc1' of git://git.infradead.org/linux-ubifs:
    ubifs: ubifs_dump_inode: Fix dumping field bulk_read
    UBI: Fix static volume checks when Fastmap is used
    UBI: Set free_count to zero before walking through erase list
    UBI: Silence an unintialized variable warning
    UBI: Clean up return in ubi_remove_volume()
    UBI: Modify wrong comment in ubi_leb_map function.
    UBI: Don't read back all data in ubi_eba_copy_leb()
    UBI: Add ro-mode sysfs attribute

    Linus Torvalds
     
  • Pull MTD fixes from Brian Norris:
    "We've already noticed a few flaws in the MTD work for v4.7-rc1:

    - The Atmel folks got ahead of themselves on trying to support their
    latest hardware and were working off incorrect documentation. Fix
    up the NAND driver to get this correct.

    - Fix up device tree example documentation to use the latest
    recommendations for describing NAND ECC algorithms"

    * tag 'for-linus-20160527' of git://git.infradead.org/linux-mtd:
    Documentation: dt: mtd: drop "soft_bch" from example
    Revert "mtd: atmel_nand: Support variable RB_EDGE interrupts"

    Linus Torvalds
     

26 May, 2016

1 commit

  • This reverts commit 5ddc7bd43ccc ("mtd: atmel_nand: Support variable
    RB_EDGE interrupts")

    Because for current SoCs, the RB_EDGE3(i.e. bit 27) of HSMC_SR
    register does not exist, the RB_EDGE0 (i.e. bit 24) is the ready/busy
    line edge status bit. It is a datasheet bug.

    Cc:
    Fixes: commit 5ddc7bd43ccc ("mtd: atmel_nand: Support variable RB_EDGE interrupts")
    Signed-off-by: Wenyou Yang
    Signed-off-by: Brian Norris

    Wenyou Yang
     

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
     

24 May, 2016

7 commits

  • Ezequiel reported that he's facing UBI going into read-only
    mode after power cut. It turned out that this behavior happens
    only when updating a static volume is interrupted and Fastmap is
    used.

    A possible trace can look like:
    ubi0 warning: ubi_io_read_vid_hdr [ubi]: no VID header found at PEB 2323, only 0xFF bytes
    ubi0 warning: ubi_eba_read_leb [ubi]: switch to read-only mode
    CPU: 0 PID: 833 Comm: ubiupdatevol Not tainted 4.6.0-rc2-ARCH #4
    Hardware name: SAMSUNG ELECTRONICS CO., LTD. 300E4C/300E5C/300E7C/NP300E5C-AD8AR, BIOS P04RAP 10/15/2012
    0000000000000286 00000000eba949bd ffff8800c45a7b38 ffffffff8140d841
    ffff8801964be000 ffff88018eaa4800 ffff8800c45a7bb8 ffffffffa003abf6
    ffffffff850e2ac0 8000000000000163 ffff8801850e2ac0 ffff8801850e2ac0
    Call Trace:
    [] dump_stack+0x63/0x82
    [] ubi_eba_read_leb+0x486/0x4a0 [ubi]
    [] ubi_check_volume+0x83/0xf0 [ubi]
    [] ubi_open_volume+0x177/0x350 [ubi]
    [] vol_cdev_open+0x58/0xb0 [ubi]
    [] chrdev_open+0xae/0x1d0
    [] do_dentry_open+0x1ff/0x300
    [] ? cdev_put+0x30/0x30
    [] vfs_open+0x56/0x60
    [] path_openat+0x4f4/0x1190
    [] do_filp_open+0x91/0x100
    [] ? __alloc_fd+0xc7/0x190
    [] do_sys_open+0x13f/0x210
    [] SyS_open+0x1e/0x20
    [] entry_SYSCALL_64_fastpath+0x1a/0xa4

    UBI checks static volumes for data consistency and reads the
    whole volume upon first open. If the volume is found erroneous
    users of UBI cannot read from it, but another volume update is
    possible to fix it. The check is performed by running
    ubi_eba_read_leb() on every allocated LEB of the volume.
    For static volumes ubi_eba_read_leb() computes the checksum of all
    data stored in a LEB. To verify the computed checksum it has to read
    the LEB's volume header which stores the original checksum.
    If the volume header is not found UBI treats this as fatal internal
    error and switches to RO mode. If the UBI device was attached via a
    full scan the assumption is correct, the volume header has to be
    present as it had to be there while scanning to get known as mapped.
    If the attach operation happened via Fastmap the assumption is no
    longer correct. When attaching via Fastmap UBI learns the mapping
    table from Fastmap's snapshot of the system state and not via a full
    scan. It can happen that a LEB got unmapped after a Fastmap was
    written to the flash. Then UBI can learn the LEB still as mapped and
    accessing it returns only 0xFF bytes. As UBI is not a FTL it is
    allowed to have mappings to empty PEBs, it assumes that the layer
    above takes care of LEB accounting and referencing.
    UBIFS does so using the LEB property tree (LPT).
    For static volumes UBI blindly assumes that all LEBs are present and
    therefore special actions have to be taken.

    The described situation can happen when updating a static volume is
    interrupted, either by a user or a power cut.
    The volume update code first unmaps all LEBs of a volume and then
    writes LEB by LEB. If the sequence of operations is interrupted UBI
    detects this either by the absence of LEBs, no volume header present
    at scan time, or corrupted payload, detected via checksum.
    In the Fastmap case the former method won't trigger as no scan
    happened and UBI automatically thinks all LEBs are present.
    Only by reading data from a LEB it detects that the volume header is
    missing and incorrectly treats this as fatal error.
    To deal with the situation ubi_eba_read_leb() from now on checks
    whether we attached via Fastmap and handles the absence of a
    volume header like a data corruption error.
    This way interrupted static volume updates will correctly get detected
    also when Fastmap is used.

    Cc:
    Reported-by: Ezequiel Garcia
    Tested-by: Ezequiel Garcia
    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • Set free_count to zero before walking through ai->erase list
    in wl_init().

    Found in U-Boot as U-Boot has no workqueue/threads, it immediately
    calls erase_worker(), which increase for each erased block
    free_count. Without this patch, free_count gets after
    this initialized to zero in wl_init(), so the free_count
    variable always has the maybe wrong value 0 in U-Boot.

    Signed-off-by: Heiko Schocher
    Reviewed-by: Boris Brezillon
    Signed-off-by: Richard Weinberger

    Heiko Schocher
     
  • My static checker complains that "val" is uninitialized when kstrtoint()
    fails.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Richard Weinberger

    Dan Carpenter
     
  • My static checker says that "err" can be uninitialized if
    "vol->reserved_pebs" is
    Signed-off-by: Richard Weinberger

    Dan Carpenter
     
  • Signed-off-by: z00189512
    Signed-off-by: Richard Weinberger

    z00189512
     
  • Drop this paranoia check from the old days.
    If our MTD driver or the flash is so bad that we even cannot
    trust it to write data we have bigger problems.

    If one really does not trust the flash and wants write-verify
    she can enable UBI io checks using debugfs.

    Signed-off-by: Richard Weinberger

    Richard Weinberger
     
  • On serious situations, UBI may detect serious device corruption,
    and switch to read-only mode to protect the data and allow debugging.
    This commit exposes this ro-mode on sysfs, so it can be obtained
    by userspace tools.

    Signed-off-by: Ezequiel Garcia
    Signed-off-by: Richard Weinberger

    Ezequiel Garcia
     

21 May, 2016

1 commit

  • Pull ARM updates from Russell King:
    "Changes included in this pull request:

    - revert pxa2xx-flash back to using ioremap_cached() and switch
    memremap() to use arch_memremap_wb()

    - remove pci=firmware command line argument handling

    - remove unnecessary arm_dma_set_mask() implementation, the generic
    implementation will do for ARM

    - removal of the ARM kallsyms "hack" to work around mode switching
    veneers and vectors located below PAGE_OFFSET

    - tidy up build system output a little

    - add L2 cache power management DT bindings

    - remove duplicated local_irq_disable() in reboot paths

    - handle AMBA primecell devices better at registration time with PM
    domains (needed for Samsung SoCs)

    - ARM specific preparation to support Keystone II kexec"

    * 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: 8567/1: cache-uniphier: activate ways for secondary CPUs
    ARM: 8570/2: Documentation: devicetree: Add PL310 PM bindings
    ARM: 8569/1: pl2x0: Add OF control of cache power management
    ARM: 8568/1: reboot: remove duplicated local_irq_disable()
    ARM: 8566/1: drivers: amba: properly handle devices with power domains
    ARM: provide arm_has_idmap_alias() helper
    ARM: kexec: remove 512MB restriction on kexec crashdump
    ARM: provide improved virt_to_idmap() functionality
    ARM: kexec: fix crashkernel= handling
    ARM: 8557/1: specify install, zinstall, and uinstall as PHONY targets
    ARM: 8562/1: suppress "include/generated/mach-types.h is up to date."
    ARM: 8553/1: kallsyms: remove --page-offset command line option
    ARM: 8552/1: kallsyms: remove special lower address limit for CONFIG_ARM
    ARM: 8555/1: kallsyms: ignore ARM mode switching veneers
    ARM: 8548/1: dma-mapping: remove arm_dma_set_mask()
    ARM: 8554/1: kernel: pci: remove pci=firmware command line parameter handling
    ARM: memremap: implement arch_memremap_wb()
    memremap: add arch specific hook for MEMREMAP_WB mappings
    mtd: pxa2xx-flash: switch back from memremap to ioremap_cached
    ARM: reintroduce ioremap_cached() for creating cached I/O mappings

    Linus Torvalds
     

19 May, 2016

2 commits

  • Pull ARM SoC driver updates from Arnd Bergmann:
    "Driver updates for ARM SoCs, these contain various things that touch
    the drivers/ directory but got merged through arm-soc for practical
    reasons.

    For the most part, this is now related to power management
    controllers, which have not yet been abstracted into a separate
    subsystem, and typically require some code in drivers/soc or arch/arm
    to control the power domains.

    Another large chunk here is a rework of the NVIDIA Tegra USB3.0
    support, which was surprisingly tricky and took a long time to get
    done.

    Finally, reset controller handling as always gets merged through here
    as well"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (97 commits)
    arm-ccn: Enable building as module
    soc/tegra: pmc: Add generic PM domain support
    usb: xhci: tegra: Add Tegra210 support
    usb: xhci: Add NVIDIA Tegra XUSB controller driver
    dt-bindings: usb: xhci-tegra: Add Tegra210 XUSB controller support
    dt-bindings: usb: Add NVIDIA Tegra XUSB controller binding
    PCI: tegra: Support per-lane PHYs
    dt-bindings: pci: tegra: Update for per-lane PHYs
    phy: tegra: Add Tegra210 support
    phy: Add Tegra XUSB pad controller support
    dt-bindings: phy: tegra-xusb-padctl: Add Tegra210 support
    dt-bindings: phy: Add NVIDIA Tegra XUSB pad controller binding
    phy: core: Allow children node to be overridden
    clk: tegra: Add interface to enable hardware control of SATA/XUSB PLLs
    drivers: firmware: psci: make two helper functions inline
    soc: renesas: rcar-sysc: Add support for R-Car H3 power areas
    soc: renesas: rcar-sysc: Add support for R-Car E2 power areas
    soc: renesas: rcar-sysc: Add support for R-Car M2-N power areas
    soc: renesas: rcar-sysc: Add support for R-Car M2-W power areas
    soc: renesas: rcar-sysc: Add support for R-Car H2 power areas
    ...

    Linus Torvalds
     
  • Pull misc vfs cleanups from Al Viro:
    "Assorted cleanups and fixes all over the place"

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    coredump: only charge written data against RLIMIT_CORE
    coredump: get rid of coredump_params->written
    ecryptfs_lookup(): try either only encrypted or plaintext name
    ecryptfs: avoid multiple aliases for directories
    bpf: reject invalid names right in ->lookup()
    __d_alloc(): treat NULL name as QSTR("/", 1)
    mtd: switch ubi_open_volume_path() to vfs_stat()
    mtd: switch open_mtd_by_chdev() to use of vfs_stat()

    Linus Torvalds
     

18 May, 2016

2 commits

  • Pull trivial tree updates from Jiri Kosina.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (21 commits)
    gitignore: fix wording
    mfd: ab8500-debugfs: fix "between" in printk
    memstick: trivial fix of spelling mistake on management
    cpupowerutils: bench: fix "average"
    treewide: Fix typos in printk
    IB/mlx4: printk fix
    pinctrl: sirf/atlas7: fix printk spelling
    serial: mctrl_gpio: Grammar s/lines GPIOs/line GPIOs/, /sets/set/
    w1: comment spelling s/minmum/minimum/
    Blackfin: comment spelling s/divsor/divisor/
    metag: Fix misspellings in comments.
    ia64: Fix misspellings in comments.
    hexagon: Fix misspellings in comments.
    tools/perf: Fix misspellings in comments.
    cris: Fix misspellings in comments.
    c6x: Fix misspellings in comments.
    blackfin: Fix misspelling of 'register' in comment.
    avr32: Fix misspelling of 'definitions' in comment.
    treewide: Fix typos in printk
    Doc: treewide : Fix typos in DocBook/filesystem.xml
    ...

    Linus Torvalds
     
  • Pull block driver updates from Jens Axboe:
    "On top of the core pull request, this is the drivers pull request for
    this merge window. This contains:

    - Switch drivers to the new write back cache API, and kill off the
    flush flags. From me.

    - Kill the discard support for the STEC pci-e flash driver. It's
    trivially broken, and apparently unmaintained, so it's safer to
    just remove it. From Jeff Moyer.

    - A set of lightnvm updates from the usual suspects (Matias/Javier,
    and Simon), and fixes from Arnd, Jeff Mahoney, Sagi, and Wenwei
    Tao.

    - A set of updates for NVMe:

    - Turn the controller state management into a proper state
    machine. From Christoph.

    - Shuffling of code in preparation for NVMe-over-fabrics, also
    from Christoph.

    - Cleanup of the command prep part from Ming Lin.

    - Rewrite of the discard support from Ming Lin.

    - Deadlock fix for namespace removal from Ming Lin.

    - Use the now exported blk-mq tag helper for IO termination.
    From Sagi.

    - Various little fixes from Christoph, Guilherme, Keith, Ming
    Lin, Wang Sheng-Hui.

    - Convert mtip32xx to use the now exported blk-mq tag iter function,
    from Keith"

    * 'for-4.7/drivers' of git://git.kernel.dk/linux-block: (74 commits)
    lightnvm: reserved space calculation incorrect
    lightnvm: rename nr_pages to nr_ppas on nvm_rq
    lightnvm: add is_cached entry to struct ppa_addr
    lightnvm: expose gennvm_mark_blk to targets
    lightnvm: remove mgt targets on mgt removal
    lightnvm: pass dma address to hardware rather than pointer
    lightnvm: do not assume sequential lun alloc.
    nvme/lightnvm: Log using the ctrl named device
    lightnvm: rename dma helper functions
    lightnvm: enable metadata to be sent to device
    lightnvm: do not free unused metadata on rrpc
    lightnvm: fix out of bound ppa lun id on bb tbl
    lightnvm: refactor set_bb_tbl for accepting ppa list
    lightnvm: move responsibility for bad blk mgmt to target
    lightnvm: make nvm_set_rqd_ppalist() aware of vblks
    lightnvm: remove struct factory_blks
    lightnvm: refactor device ops->get_bb_tbl()
    lightnvm: introduce nvm_for_each_lun_ppa() macro
    lightnvm: refactor dev->online_target to global nvm_targets
    lightnvm: rename nvm_targets to nvm_tgt_type
    ...

    Linus Torvalds
     

17 May, 2016

1 commit

  • Pull LED updates from Jacek Anaszewski:
    "In this merge cycle we had an interaction with MTD subsystem, that
    included converting drivers/mtd/nand/nand_base.c to use newly
    introduced MTD (NAND/NOR) LED trigger instead of implementing it on
    its own.

    Related MTD patches are intended to be merged through the LED tree,
    before MTD tree is merged, since further MTD development is based on
    those modifications.

    Summary:

    LEDs:
    - Introduce a kernel panic LED trigger

    - Introduce a MTD (NAND/NOR) trigger

    - led-tca6507: silence an uninitialized variable warning

    - ledtrig-ide-disk: Move ide_blink_delay to ledtrig_ide_activity()

    - leds-ss4200: Add depend on x86 arch

    - leds-ss4200: add DMI data for FSC SCALEO Home Server

    - leds-triggers: Allow to switch the trigger to "panic" on a kernel panic

    - devicetree: leds: Introduce "panic-indicator" optional property

    - leds-gpio: Support the "panic-indicator" firmware property

    MTD:
    - Uninline mtd_write_oob and move it to mtdcore.c

    - Remove the "nand-disk" LED trigger

    - Hook I/O activity to the MTD LED trigger"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
    leds: gpio: Support the "panic-indicator" firmware property
    devicetree: leds: Introduce "panic-indicator" optional property
    leds: triggers: Allow to switch the trigger to "panic" on a kernel panic
    leds: ss4200: add DMI data for FSC SCALEO Home Server
    leds: ss4200: Add depend on x86 arch
    leds: ledtrig-ide-disk: Move ide_blink_delay to ledtrig_ide_activity()
    leds: tca6507: silence an uninitialized variable warning
    mtd: Hook I/O activity to the MTD LED trigger
    mtd: nand: Remove the "nand-disk" LED trigger
    leds: trigger: Introduce a MTD (NAND/NOR) trigger
    mtd: Uninline mtd_write_oob and move it to mtdcore.c
    leds: trigger: Introduce a kernel panic LED trigger

    Linus Torvalds
     

11 May, 2016

1 commit


07 May, 2016

1 commit


06 May, 2016

21 commits

  • Updates from Boris Brezillon:

    This pull request contains the following infrastructure changes:
    * introduction of the ECC algo concept to extend the ECC mode one
    * replacement of the nand_ecclayout infrastructure by something more
    future-proof.
    * addition of an mtd-activity led trigger to replace the nand-activity
    one

    And a bunch of specific NAND driver improvements/fixes. Here are the
    changes that are worth mentioning:
    * rework of the OMAP GPMC and NAND drivers
    * prepare the sunxi NAND driver to receive DMA support
    * handle bitflips in erased pages on GPMI revisions that do not support
    this in hardware.

    * tag 'nand/for-4.7' of github.com:linux-nand/linux: (152 commits)
    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
    mtd: nand: sh_flctl: rely on generic DT parsing done in nand_scan_ident()
    mtd: nand: mxc: rely on generic DT parsing done in nand_scan_ident()
    ...

    Brian Norris
     
  • This is more obvious than guessing based on ECC strength. It allows
    using NAND on devices with BCH-1 (e.g. D-Link DIR-885L).

    This maintains DT backward compatibility by defaulting to Hamming if a
    1-bit ECC algorithm is specified without a corresponding algorithm
    selection. i.e., to use BCH-1, you must specify:

    nand-ecc-strength = ;
    nand-ecc-step-size = ;
    nand-ecc-algo = "bch";

    Also adds a check to ensure we haven't allowed someone to get by with SW
    ECC. If we want to support SW ECC, we need to refactor some other pieces
    of this driver.

    Signed-off-by: Brian Norris
    Tested-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Brian Norris
     
  • ECC is only calculated for written pages. As erased pages are not
    actively written the ECC is always invalid. For this purpose the
    Hardware BCH unit is able to check for erased pages and does not raise
    an ECC error in this case. This behaviour can be influenced using the
    BCH_MODE register which sets the number of allowed bitflips in an erased
    page. Unfortunately the unit is not capable of fixing the bitflips in
    memory.

    To avoid complete software checks for erased pages, we can simply check
    buffers with uncorrectable ECC errors because we know that any erased
    page with errors is uncorrectable by the BCH unit.

    This patch adds the generic nand_check_erased_ecc_chunk() to gpmi-nand
    to correct erased pages. To have the valid data in the buffer before
    using them, this patch moves the read_page_swap_end() call before the
    ECC status checking for-loop.

    Signed-off-by: Markus Pargmann
    [Squashed patches by Stefan and Boris to check ECC area]
    Tested-by: Stefan Christ
    Acked-by: Han xu
    Signed-off-by: Boris Brezillon

    Markus Pargmann
     
  • So far it was only possible to specify ECC algorithm using "soft" and
    "soft_bch" values of nand-ecc-mode prop. There wasn't a way to specify
    it for a hardware ECC mode.

    Now that we have independent field in NAND subsystem for storing info
    about ECC algorithm we may also add support for this new DT property.

    Signed-off-by: Rafał Miłecki
    Acked-by: Rob Herring
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • This value should not be part of nand_ecc_modes_t as it specifies
    algorithm not a mode. We successfully managed to introduce new "algo"
    field which is respected now.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • There isn't any difference between handling NAND_ECC_SOFT and
    NAND_ECC_SOFT_BCH now. What matters is the new field called "algo".
    Please note we're keeping backward DT compatibility. We are still
    treating "soft_bch" value as the one setting Hamming algorithm, it's
    just handled in of_get_nand_ecc_algo now.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • Now we have all drivers properly setting this new field we can start
    using it. For a very short period of time we should support both values:
    NAND_ECC_SOFT and NAND_ECC_SOFT_BCH treating them the same. It's because
    of_get_nand_ecc_mode may still be setting NAND_ECC_SOFT_BCH.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • NAND core sets ECC algorithm in algo field now and it should be
    preferred over the mode field. This also prepares driver for dropping
    NAND_ECC_SOFT_BCH.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • This is part of process deprecating NAND_ECC_SOFT_BCH (and switching to
    enum nand_ecc_algo).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • This is part of process deprecating NAND_ECC_SOFT_BCH (and switching to
    enum nand_ecc_algo).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • This is part of process deprecating NAND_ECC_SOFT_BCH (and switching to
    enum nand_ecc_algo).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • This is part of process deprecating NAND_ECC_SOFT_BCH (and switching to
    enum nand_ecc_algo).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Boris Brezillon

    Rafał Miłecki
     
  • Based on DMA documentation and testing using high memory buffer when doing
    dma transfers can lead to various issues including kernel panics.

    To workaround this simply use cpu copy.

    Signed-off-by: Franklin S Cooper Jr
    Signed-off-by: Boris Brezillon

    Cooper Jr., Franklin
     
  • The prefetch engine sends a dma request once a FIFO threshold has
    been met. No other requests are received until the previous request
    is handled.

    Starting a dma transfer (dma_async_issue_pending) results in any
    previous event for the dma channel to be cleared. Therefore, starting
    the prefetch engine before initiating the dma transfer may result in
    the prefetch triggering a dma request but instead of it being handled
    it can end up being cleared. This will result in a hang since the code
    will continue to wait for the dma request to complete.

    By initiating the dma request before enabling the prefetch engine this
    race condition is avoided and no dma request are missed/cleared.

    Signed-off-by: Franklin S Cooper Jr
    Signed-off-by: Boris Brezillon

    Cooper Jr., Franklin
     
  • Add __init attribute on functions that are only called from other __init
    functions and that are not inlined, at least with gcc version 4.8.4 on an
    x86 machine with allyesconfig. Currently, the functions are put in the
    .text.unlikely segment. Declaring them as __init will cause them to be
    put in the .init.text and to disappear after initialization.

    The result of objdump -x on the functions before the change is as follows:

    000000000000059a l F .text.unlikely 0000000000000239 alloc_device
    000000000000034e l F .text.unlikely 000000000000002e get_partition_name
    00000000000007d3 l F .text.unlikely 00000000000005da init_nandsim

    And after the change it is as follows:

    0000000000000029 l F .init.text 0000000000000234 alloc_device
    0000000000000000 l F .init.text 0000000000000029 get_partition_name
    000000000000025d l F .init.text 00000000000005d5 init_nandsim

    Done with the help of Coccinelle. The semantic patch checks for local
    static non-init functions that are called from an __init function and are
    not called from any other function.

    Signed-off-by: Julia Lawall
    Signed-off-by: Boris Brezillon

    Julia Lawall
     
  • Now that all drivers go through nand_set_flash_node() to parse the generic
    NAND properties, we can move all of_get_nand_xxx() helpers in to
    nand_base.c, make them static and remove of_mtd.c and of_mtd.h.

    Signed-off-by: Boris Brezillon

    Boris Brezillon
     
  • The core now takes care of parsing generic DT properties in
    nand_scan_ident() when nand_set_flash_node() has been called.
    Rely on this initialization instead of calling of_get_nand_xxx()
    manually.

    Signed-off-by: Boris Brezillon

    Boris Brezillon
     
  • The core now takes care of parsing generic DT properties in
    nand_scan_ident() when nand_set_flash_node() has been called.
    Rely on this initialization instead of calling of_get_nand_xxx()
    manually.

    Signed-off-by: Boris Brezillon

    Boris Brezillon
     
  • The core now takes care of parsing generic DT properties in
    nand_scan_ident() when nand_set_flash_node() has been called.
    Rely on this initialization instead of calling of_get_nand_xxx()
    manually.

    Signed-off-by: Boris Brezillon

    Boris Brezillon
     
  • The core now takes care of parsing generic DT properties in
    nand_scan_ident() when nand_set_flash_node() has been called.
    Rely on this initialization instead of calling of_get_nand_xxx()
    manually.

    Signed-off-by: Boris Brezillon

    Boris Brezillon
     
  • The core now takes care of parsing generic DT properties in
    nand_scan_ident() when nand_set_flash_node() has been called.
    Rely on this initialization instead of calling of_get_nand_xxx()
    manually.

    Signed-off-by: Boris Brezillon

    Boris Brezillon