]> git.karo-electronics.de Git - linux-beck.git/log
linux-beck.git
9 years agomtd: fsl-quadspi: fix macro collision problems with READ/WRITE
Han Xu [Fri, 23 Oct 2015 18:18:28 +0000 (13:18 -0500)]
mtd: fsl-quadspi: fix macro collision problems with READ/WRITE

Change the READ/WRITE to FSL_READ/FSL_WRITE to resolve any possible
namespace collisions with READ/WRITE macros (e.g., from <linux/fs.h>).

Problems have been seen, for example, on mips:

>> drivers/mtd/spi-nor/fsl-quadspi.c:186:5: error: 'LUT_0' undeclared (first use in this function)
      ((LUT_##ins) << INSTR0_SHIFT))
        ^
>> drivers/mtd/spi-nor/fsl-quadspi.c:188:30: note: in expansion of macro 'LUT0'

On SPARC:

drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_init_lut':
drivers/mtd/spi-nor/fsl-quadspi.c:369:1: error: 'LUT_0' undeclared (first use in this function)
drivers/mtd/spi-nor/fsl-quadspi.c:418:1: error: pasting "LUT_" and "(" does not give a valid preprocessing token
drivers/mtd/spi-nor/fsl-quadspi.c:418:2: error: implicit declaration of function 'LUT_'

And surely on others.

Fixes: d26a22d06708 ("mtd: fsl-quadspi: allow building for other ARCHes with COMPILE_TEST")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Han Xu <b45815@freescale.com>
[Brian: rewrote commit description]
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: warn when registering the same master many times
Brian Norris [Mon, 1 Jun 2015 23:17:20 +0000 (16:17 -0700)]
mtd: warn when registering the same master many times

When CONFIG_MTD_PARTITIONED_MASTER=y, it is fatal to call
mtd_device_parse_register() twice on the same MTD, as we try to register
the same device/kobject multipile times.

When CONFIG_MTD_PARTITIONED_MASTER=n, calling
mtd_device_parse_register() is more of just a nuisance, as we can mostly
navigate around any conflicting actions.

But anyway, doing so is a Bad Thing (TM), and we should complain loudly
for any drivers that try to do this.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
9 years agomtd: fixup corner case error handling in mtd_device_parse_register()
Brian Norris [Mon, 1 Jun 2015 23:17:19 +0000 (16:17 -0700)]
mtd: fixup corner case error handling in mtd_device_parse_register()

Since commit 3efe41be224c ("mtd: implement common reboot notifier
boilerplate"), we might try to register a reboot notifier for an MTD
that failed to register. Let's avoid this by making the error path
clearer.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
9 years agomtd: tests: Replace timeval with ktime_t
Shraddha Barke [Thu, 22 Oct 2015 14:59:54 +0000 (20:29 +0530)]
mtd: tests: Replace timeval with ktime_t

Changes the 32-bit time type timeval to the 64-bit time type
ktime_t, since 32-bit systems using struct timeval will break in the
year 2038. Correspondingly change do_gettimeofday() to ktime_get()
since ktime_get returns a ktime_t, but do_gettimeofday returns a
struct timeval.Here, ktime_get() is used instead of ktime_get_real()
since ktime_get() uses monotonic clock.

Signed-off-by: Shraddha Barke <shraddha.6596@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: fsmc_nand: Add BCH4 SW ECC support for SPEAr600
Stefan Roese [Mon, 19 Oct 2015 06:40:13 +0000 (08:40 +0200)]
mtd: fsmc_nand: Add BCH4 SW ECC support for SPEAr600

This patch adds support for 4-bit ECC BCH4 for the SPEAr600 SoC. This can
be used by boards equipped with a NAND chip that requires 4-bit ECC
strength. The SPEAr600 HW ECC only supports 1-bit ECC strength.

To enable SW BCH4, you need to specify this in your nand controller
DT node:

nand-ecc-mode = "soft_bch";
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;

Tested on a custom SPEAr600 board.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
[Brian: tweaked the comments a bit]
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: vf610_nfc: use nand_check_erased_ecc_chunk() helper
Brian Norris [Tue, 29 Sep 2015 21:11:56 +0000 (14:11 -0700)]
mtd: nand: vf610_nfc: use nand_check_erased_ecc_chunk() helper

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
9 years agomtd: nand: increase ready wait timeout and report timeouts
Alex Smith [Tue, 6 Oct 2015 13:52:07 +0000 (14:52 +0100)]
mtd: nand: increase ready wait timeout and report timeouts

If nand_wait_ready() times out, this is silently ignored, and its
caller will then proceed to read from/write to the chip before it is
ready. This can potentially result in corruption with no indication as
to why.

While a 20ms timeout seems like it should be plenty enough, certain
behaviour can cause it to timeout much earlier than expected. The
situation which prompted this change was that CPU 0, which is
responsible for updating jiffies, was holding interrupts disabled
for a fairly long time while writing to the console during a printk,
causing several jiffies updates to be delayed. If CPU 1 happens to
enter the timeout loop in nand_wait_ready() just before CPU 0 re-
enables interrupts and updates jiffies, CPU 1 will immediately time
out when the delayed jiffies updates are made. The result of this is
that nand_wait_ready() actually waits less time than the NAND chip
would normally take to be ready, and then read_page() proceeds to
read out bad data from the chip.

The situation described above may seem unlikely, but in fact it can be
reproduced almost every boot on the MIPS Creator Ci20.

Therefore, this patch increases the timeout to 400ms. This should be
enough to cover cases where jiffies updates get delayed. In nand_wait()
the timeout was previously chosen based on whether erasing or
programming. This is changed to be 400ms unconditionally as well to
avoid similar problems there. nand_wait() is also slightly refactored
to be consistent with nand_wait{,_status}_ready(). These changes should
have no effect during normal operation.

Debugging this was made more difficult by the misleading comment above
nand_wait_ready() stating "The timeout is caught later" - no timeout was
ever reported, leading me away from the real source of the problem.
Therefore, a pr_warn() is added when a timeout does occur so that it is
easier to pinpoint similar problems in future.

Signed-off-by: Alex Smith <alex.smith@imgtec.com>
Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com>
Reviewed-by: Niklas Cassel <niklas.cassel@axis.com>
Cc: Alex Smith <alex@alex-smith.me.uk>
Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: docg3: off by one in doc_register_sysfs()
Dan Carpenter [Mon, 19 Oct 2015 10:20:05 +0000 (13:20 +0300)]
mtd: docg3: off by one in doc_register_sysfs()

Smatch found a bug in the error handling:

drivers/mtd/devices/docg3.c:1634 doc_register_sysfs()
error: buffer overflow 'doc_sys_attrs' 4 <= 4

The problem is that if the very last device_create_file() fails, then we
are beyond the end of the array.  Actually, any time i == 3 then there
is a problem.  We can fix this an simplify the code at the same time by
moving the !ret conditions out of the for loops and using a goto
instead.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa3xx_nand: clean up the pxa3xx timings
Antoine Ténart [Wed, 21 Oct 2015 08:29:04 +0000 (10:29 +0200)]
mtd: pxa3xx_nand: clean up the pxa3xx timings

With the previous modifications, lots of pxa3xx specific definitions can
be removed.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa3xx_nand: rework flash detection and timing setup
Antoine Ténart [Wed, 21 Oct 2015 08:29:03 +0000 (10:29 +0200)]
mtd: pxa3xx_nand: rework flash detection and timing setup

Rework the pxa3xx_nand driver to allow using functions exported by the
nand framework to detect the flash and the timings. Then setup the
timings using the helpers previously added.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa3xx_nand: add helpers to setup the timings
Antoine Ténart [Wed, 21 Oct 2015 08:29:02 +0000 (10:29 +0200)]
mtd: pxa3xx_nand: add helpers to setup the timings

Add helpers to setup the timings in the pxa3xx driver. These helpers
allow to either make use of the nand framework nand_sdr_timings or the
pxa3xx specific pxa3xx_nand_host, for compatibility reasons.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa3xx_nand: fix some compile issues on non-ARM arches
Antoine Ténart [Wed, 21 Oct 2015 08:29:00 +0000 (10:29 +0200)]
mtd: pxa3xx_nand: fix some compile issues on non-ARM arches

Using readsl() result in a build error on i386. Fix this by using
ioread32_rep() instead, to allow compile testing the pxa3xx nand driver
on other architectures later.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: lpc32xx_mlc: fix warnings caused by enabling unprepared clock
Vladimir Zapolskiy [Sat, 17 Oct 2015 18:09:30 +0000 (21:09 +0300)]
mtd: lpc32xx_mlc: fix warnings caused by enabling unprepared clock

If common clock framework is configured, the driver generates a warning,
which is fixed by this change:

    WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 4.3.0-rc2+ #206
    Hardware name: LPC32XX SoC (Flattened Device Tree)
    Backtrace:
    [<>] (dump_backtrace) from [<>] (show_stack+0x18/0x1c)
    [<>] (show_stack) from [<>] (dump_stack+0x20/0x28)
    [<>] (dump_stack) from [<>] (warn_slowpath_common+0x90/0xb8)
    [<>] (warn_slowpath_common) from [<>] (warn_slowpath_null+0x24/0x2c)
    [<>] (warn_slowpath_null) from [<>] (clk_core_enable+0x2c/0xa4)
    [<>] (clk_core_enable) from [<>] (clk_enable+0x24/0x38)
    [<>] (clk_enable) from [<>] (lpc32xx_nand_probe+0x208/0x248)
    [<>] (lpc32xx_nand_probe) from [<>] (platform_drv_probe+0x50/0xa0)
    [<>] (platform_drv_probe) from [<>] (driver_probe_device+0x18c/0x408)
    [<>] (driver_probe_device) from [<>] (__driver_attach+0x70/0x94)
    [<>] (__driver_attach) from [<>] (bus_for_each_dev+0x74/0x98)
    [<>] (bus_for_each_dev) from [<>] (driver_attach+0x20/0x28)
    [<>] (driver_attach) from [<>] (bus_add_driver+0x11c/0x248)
    [<>] (bus_add_driver) from [<>] (driver_register+0xa4/0xe8)
    [<>] (driver_register) from [<>] (__platform_driver_register+0x50/0x64)
    [<>] (__platform_driver_register) from [<>] (lpc32xx_nand_driver_init+0x18/0x20)
    [<>] (lpc32xx_nand_driver_init) from [<>] (do_one_initcall+0x11c/0x1dc)
    [<>] (do_one_initcall) from [<>] (kernel_init_freeable+0x10c/0x1d4)
    [<>] (kernel_init_freeable) from [<>] (kernel_init+0x10/0xec)
    [<>] (kernel_init) from [<>] (ret_from_fork+0x14/0x24)

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: lpc32xx_slc: fix warnings caused by enabling unprepared clock
Vladimir Zapolskiy [Sat, 17 Oct 2015 18:09:29 +0000 (21:09 +0300)]
mtd: lpc32xx_slc: fix warnings caused by enabling unprepared clock

If common clock framework is configured, the driver generates a warning,
which is fixed by this change:

    WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 4.3.0-rc2+ #201
    Hardware name: LPC32XX SoC (Flattened Device Tree)
    Backtrace:
    [<>] (dump_backtrace) from [<>] (show_stack+0x18/0x1c)
    [<>] (show_stack) from [<>] (dump_stack+0x20/0x28)
    [<>] (dump_stack) from [<>] (warn_slowpath_common+0x90/0xb8)
    [<>] (warn_slowpath_common) from [<>] (warn_slowpath_null+0x24/0x2c)
    [<>] (warn_slowpath_null) from [<>] (clk_core_enable+0x2c/0xa4)
    [<>] (clk_core_enable) from [<>] (clk_enable+0x24/0x38)
    [<>] (clk_enable) from [<>] (lpc32xx_nand_probe+0x290/0x568)
    [<>] (lpc32xx_nand_probe) from [<>] (platform_drv_probe+0x50/0xa0)
    [<>] (platform_drv_probe) from [<>] (driver_probe_device+0x18c/0x408)
    [<>] (driver_probe_device) from [<>] (__driver_attach+0x70/0x94)
    [<>] (__driver_attach) from [<>] (bus_for_each_dev+0x74/0x98)
    [<>] (bus_for_each_dev) from [<>] (driver_attach+0x20/0x28)
    [<>] (driver_attach) from [<>] (bus_add_driver+0x11c/0x248)
    [<>] (bus_add_driver) from [<>] (driver_register+0xa4/0xe8)
    [<>] (driver_register) from [<>] (__platform_driver_register+0x50/0x64)
    [<>] (__platform_driver_register) from [<>] (lpc32xx_nand_driver_init+0x18/0x20)
    [<>] (lpc32xx_nand_driver_init) from [<>] (do_one_initcall+0x11c/0x1dc)
    [<>] (do_one_initcall) from [<>] (kernel_init_freeable+0x10c/0x1d4)
    [<>] (kernel_init_freeable) from [<>] (kernel_init+0x10/0xec)
    [<>] (kernel_init) from [<>] (ret_from_fork+0x14/0x24)

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: rbtx4939-flash: fix compile error
Brian Norris [Mon, 19 Oct 2015 19:22:57 +0000 (12:22 -0700)]
mtd: maps: rbtx4939-flash: fix compile error

We got the syntax wrong here. Compile tested this time!

Error:

   drivers/mtd/maps/rbtx4939-flash.c: In function 'rbtx4939_flash_probe':
>> drivers/mtd/maps/rbtx4939-flash.c:99:11: error: request for member 'dev' in something not a structure or union
     info->mtd.dev.parent = &dev->dev;
              ^

Fixes: 9aa7e50276c1 ("mtd: maps: rbtx4939-flash: show parent device in sysfs")
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Cc: Frans Klaver <fransklaver@gmail.com>
9 years agomtd: mtd-user: remove stdint.h include
Mikko Rapeli [Thu, 15 Oct 2015 05:56:48 +0000 (07:56 +0200)]
mtd: mtd-user: remove stdint.h include

Kernel headers should use linux/types.h instead.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: mtdram: check offs and len in mtdram->erase
Dongsheng Yang [Wed, 30 Sep 2015 01:01:19 +0000 (09:01 +0800)]
mtd: mtdram: check offs and len in mtdram->erase

We should prevent user to erasing mtd device with
an unaligned offset or length.

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa3xx_nand: switch to device PM
Brian Norris [Mon, 12 Oct 2015 21:07:41 +0000 (14:07 -0700)]
mtd: pxa3xx_nand: switch to device PM

The old PM model is deprecated. This is equivalent.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
9 years agomtd: pxa3xx_nand: don't duplicate MTD suspend/resume
Brian Norris [Mon, 12 Oct 2015 20:33:11 +0000 (13:33 -0700)]
mtd: pxa3xx_nand: don't duplicate MTD suspend/resume

mtd_{suspend,resume}() get called from mtdcore in a class suspend/resume
callback. We don't need to call them again here. In practice, this would
actually work OK, as nand_base actually handles nesting OK -- it just
might print warnings.

Untested, but there are few (no?) users of PM for this driver AFAIK.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
9 years agomtd: fsl-quadspi: Include <linux/sizes.h> to avoid build error
Fabio Estevam [Wed, 14 Oct 2015 03:39:44 +0000 (00:39 -0300)]
mtd: fsl-quadspi: Include <linux/sizes.h> to avoid build error

Building for x86 results in the following build errors:

   drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_init_lut':
>> drivers/mtd/spi-nor/fsl-quadspi.c:355:21: error: 'SZ_16M' undeclared (first use in this function)
     if (q->nor_size <= SZ_16M) {
                        ^
   drivers/mtd/spi-nor/fsl-quadspi.c:355:21: note: each undeclared identifier is reported only once for each function it appears in
   drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_read':
>> drivers/mtd/spi-nor/fsl-quadspi.c:208:27: error: 'SZ_4M' undeclared (first use in this function)
    #define QUADSPI_MIN_IOMAP SZ_4M
                              ^
>> drivers/mtd/spi-nor/fsl-quadspi.c:845:25: note: in expansion of macro 'QUADSPI_MIN_IOMAP'
      q->memmap_len = len > QUADSPI_MIN_IOMAP ? len : QUADSPI_MIN_IOMAP;

Explicitly include <linux/sizes.h> to fix the problem.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: fsl-quadspi: allow building for other ARCHes with COMPILE_TEST
Brian Norris [Mon, 12 Oct 2015 20:35:16 +0000 (13:35 -0700)]
mtd: fsl-quadspi: allow building for other ARCHes with COMPILE_TEST

This driver doesn't actually need ARCH_MXC to compile. Relax the
constraints.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Acked-by: Han xu <han.xu@freescale.com>
9 years agomtd: fsl-quadspi: fix printk() format warning for size_t
Brian Norris [Mon, 12 Oct 2015 20:35:15 +0000 (13:35 -0700)]
mtd: fsl-quadspi: fix printk() format warning for size_t

Seen when compile-testing on non-32-bit arch:

    CC      drivers/mtd/spi-nor/fsl-quadspi.o
  drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_read':
  drivers/mtd/spi-nor/fsl-quadspi.c:873:2: warning: format '%d' expects argument of type 'int', but argument 6 has type 'size_t' [-Wformat=]
    dev_dbg(q->dev, "cmd [%x],read from 0x%p, len:%d\n",
    ^

Also drop the '0x' prefixing to the '%p' formatter, since %p already
knows how to format pointers appropriately.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Acked-by: Han xu <han.xu@freescale.com>
9 years agomtd: spi-nor: add DUAL_READ for w25q{32,64}dw
Brian Norris [Tue, 1 Sep 2015 19:57:13 +0000 (12:57 -0700)]
mtd: spi-nor: add DUAL_READ for w25q{32,64}dw

These flash support dual and quad read. Tested dual read on the 32 Mbit
version.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: disable protection for Winbond flash at startup
Brian Norris [Tue, 1 Sep 2015 19:57:15 +0000 (12:57 -0700)]
mtd: spi-nor: disable protection for Winbond flash at startup

In case the flash was locked at boot time.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: support lock/unlock/is_locked for Winbond
Brian Norris [Tue, 1 Sep 2015 19:57:14 +0000 (12:57 -0700)]
mtd: spi-nor: support lock/unlock/is_locked for Winbond

Many other flash share the same features as ST Micro. I've tested some
Winbond flash, so add them.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: add mtd_is_locked() support
Brian Norris [Tue, 1 Sep 2015 19:57:12 +0000 (12:57 -0700)]
mtd: spi-nor: add mtd_is_locked() support

This enables ioctl(MEMISLOCKED). Status can now be reported in the
mtdinfo or flash_lock utilities found in mtd-utils.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: refactor block protection functions
Brian Norris [Tue, 1 Sep 2015 19:57:11 +0000 (12:57 -0700)]
mtd: spi-nor: refactor block protection functions

This code was a bit sloppy, would produce a lot of copy-and-paste, and
did not always provide a sensible interface:

 * It didn't validate the length for LOCK and the offset for UNLOCK, so
   we were essentially discarding half of the user-supplied data and
   assuming what they wanted to lock/unlock
 * It didn't do very good error checking
 * It didn't make use of the fact that this operation works on
   power-of-two dimensions

So, rewrite this to do proper bit arithmetic rather than a bunch of
hard-coded condition tables. Now we have:

 * More comments on how this was derived
 * Notes on what is (and isn't) supported
 * A more exendible function, so we could add support for other
   protection ranges
 * More accurate locking - e.g., suppose the top quadrant is locked (75%
   to 100%); then in the following cases, case (a) will succeed but (b)
   will not (return -EINVAL):
     (a) user requests lock 3rd quadrant (50% to 75%)
     (b) user requests lock 3rd quadrant, minus a few blocks (e.g., 50%
         to 73%)
   Case (b) *should* fail, since we'd have to lock blocks that weren't
   requested. But the old implementation didn't know the difference and
   would lock the entire second half (50% to 100%)

This refactoring work will also help enable the addition of
mtd_is_locked() support and potentially the support of bottom boot
protection (TB=1).

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: fixup kernel-doc for flash lock/unlock function pointers
Brian Norris [Tue, 1 Sep 2015 19:57:10 +0000 (12:57 -0700)]
mtd: spi-nor: fixup kernel-doc for flash lock/unlock function pointers

I got the names of these fields wrong.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: use SNOR_MFR_* instead of CFI_MFR_*
Brian Norris [Tue, 1 Sep 2015 19:57:09 +0000 (12:57 -0700)]
mtd: spi-nor: use SNOR_MFR_* instead of CFI_MFR_*

No functional change, just cosmetic.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: add SPI NOR manufacturer IDs
Brian Norris [Tue, 1 Sep 2015 19:57:08 +0000 (12:57 -0700)]
mtd: spi-nor: add SPI NOR manufacturer IDs

These are often similar for CFI (parallel NOR) and for SPI NOR, but they
aren't always the same, for various reasons (different namespaces,
company acquisitions and renames, etc.). And some don't have CFI_MFR_*
entries at all.

So let's make a proper place to list the SPI NOR IDs, with all the SPI
NOR specific assumptions and comments.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: make bitfield constants more consistent
Brian Norris [Tue, 1 Sep 2015 19:57:07 +0000 (12:57 -0700)]
mtd: spi-nor: make bitfield constants more consistent

These status bits use different ways of representing similar integer
constants -- some are decimal, some are hex. Make them more consistent.

At the same time, impose my own preference, since IMO it's clearer what
these are when using the BIT() macro.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: make implicit <linux/bitops.h> dependency explicit
Brian Norris [Tue, 1 Sep 2015 19:57:06 +0000 (12:57 -0700)]
mtd: spi-nor: make implicit <linux/bitops.h> dependency explicit

We use BIT() in the header. No real problem for now, but it's better to
be accurate.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: Add support for s25fl004k
Sean Nyekjaer [Tue, 13 Oct 2015 06:50:30 +0000 (08:50 +0200)]
mtd: spi-nor: Add support for s25fl004k

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: s25fl204k supports dual I/0
Sean Nyekjaer [Tue, 13 Oct 2015 06:51:14 +0000 (08:51 +0200)]
mtd: spi-nor: s25fl204k supports dual I/0

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: pass page number to ecc->write_xxx() methods
Boris BREZILLON [Tue, 13 Oct 2015 09:22:18 +0000 (11:22 +0200)]
mtd: nand: pass page number to ecc->write_xxx() methods

The ->read_xxx() methods are all passed the page number the NAND controller
is supposed to read, but ->write_xxx() do not have such a parameter.

This is a problem if we want to properly implement data
scrambling/randomization in order to mitigate MLC sensibility to repeated
pattern: to prevent bitflips in adjacent pages in the same block we need
to avoid repeating the same pattern at the same offset in those pages,
hence the randomizer/scrambler engine need to be passed the page value
in order to adapt its seed accordingly.

Moreover, adding the page parameter to the ->write_xxx() methods add some
consistency to the current API.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
CC: Josh Wu <josh.wu@atmel.com>
CC: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
CC: Maxime Ripard <maxime.ripard@free-electrons.com>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: Huang Shijie <shijie.huang@arm.com>
CC: Stefan Agner <stefan@agner.ch>
CC: devel@driverdev.osuosl.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: txx9ndfmc: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:09 +0000 (22:39 +0200)]
mtd: nand: txx9ndfmc: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: jz4740_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:51 +0000 (22:38 +0200)]
mtd: nand: jz4740_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: fsl_upm: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:46 +0000 (22:38 +0200)]
mtd: nand: fsl_upm: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: socrates_nand: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:39:06 +0000 (22:39 +0200)]
mtd: nand: socrates_nand: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: fsl_elbc_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:44 +0000 (22:38 +0200)]
mtd: nand: fsl_elbc_nand: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: pxa3xx_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:01 +0000 (22:39 +0200)]
mtd: nand: pxa3xx_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: gpio: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:48 +0000 (22:38 +0200)]
mtd: nand: gpio: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agostaging: mt29f_spinand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:14 +0000 (22:39 +0200)]
staging: mt29f_spinand: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, take advantage of the default owner and name values set by
mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: onenand: omap2: drop owner and name assignment
Frans Klaver [Wed, 10 Jun 2015 20:39:11 +0000 (22:39 +0200)]
mtd: onenand: omap2: drop owner and name assignment

Owner and name are automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: s3c2410: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:03 +0000 (22:39 +0200)]
mtd: nand: s3c2410: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: sharpsl: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:05 +0000 (22:39 +0200)]
mtd: nand: sharpsl: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: omap2: show parent device structure in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:57 +0000 (22:38 +0200)]
mtd: nand: omap2: show parent device structure in sysfs

Make sure the device structure is properly shown in sysfs by properly
filling in dev.parent.

While at it, make use of the default owner and name values set by
mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: onenand: samsung: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:39:12 +0000 (22:39 +0200)]
mtd: onenand: samsung: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: lpc32xx_mlc: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:52 +0000 (22:38 +0200)]
mtd: nand: lpc32xx_mlc: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: ndfc: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:55 +0000 (22:38 +0200)]
mtd: nand: ndfc: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: pasemi_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:59 +0000 (22:38 +0200)]
mtd: nand: pasemi_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: mxc_nand: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:54 +0000 (22:38 +0200)]
mtd: nand: mxc_nand: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: onenand: generic: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:10 +0000 (22:39 +0200)]
mtd: onenand: generic: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, take advantage of the default owner and name values set by
mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: tmio_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:08 +0000 (22:39 +0200)]
mtd: nand: tmio_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: sunxi_nand: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:39:07 +0000 (22:39 +0200)]
mtd: nand: sunxi_nand: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: sh_flctl: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:04 +0000 (22:39 +0200)]
mtd: nand: sh_flctl: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: r852: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:39:02 +0000 (22:39 +0200)]
mtd: nand: r852: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: plat_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:39:00 +0000 (22:39 +0200)]
mtd: nand: plat_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner and name set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: orion_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:58 +0000 (22:38 +0200)]
mtd: nand: orion_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: nuc900_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:56 +0000 (22:38 +0200)]
mtd: nand: nuc900_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: mpc5121_nfc: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:53 +0000 (22:38 +0200)]
mtd: nand: mpc5121_nfc: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: hisi504_nand: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:50 +0000 (22:38 +0200)]
mtd: nand: hisi504_nand: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: gpmi-nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:49 +0000 (22:38 +0200)]
mtd: nand: gpmi-nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: fsmc_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:47 +0000 (22:38 +0200)]
mtd: nand: fsmc_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: fsl_ifc_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:45 +0000 (22:38 +0200)]
mtd: nand: fsl_ifc_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: docg4: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:43 +0000 (22:38 +0200)]
mtd: nand: docg4: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: denali: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:42 +0000 (22:38 +0200)]
mtd: nand: denali: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: davinci_nand: drop owner and name assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:41 +0000 (22:38 +0200)]
mtd: nand: davinci_nand: drop owner and name assignment

Owner and name are automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: cafe_nand: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:40 +0000 (22:38 +0200)]
mtd: nand: cafe_nand: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: bf5xx_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:39 +0000 (22:38 +0200)]
mtd: nand: bf5xx_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: bcm47xxnflash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:38 +0000 (22:38 +0200)]
mtd: nand: bcm47xxnflash: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: au1550nd: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:37 +0000 (22:38 +0200)]
mtd: nand: au1550nd: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: atmel_nand: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:36 +0000 (22:38 +0200)]
mtd: nand: atmel_nand: show parent device in sysfs

Fix a bug where parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: sa1100-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:35 +0000 (22:38 +0200)]
mtd: maps: sa1100-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.
Incidentally, it seems the owner field in the concatenated mtds is not
actually used, so this shouldn't make much of a difference anyway.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: rbtx4939-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:34 +0000 (22:38 +0200)]
mtd: maps: rbtx4939-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: pxa2xx-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:33 +0000 (22:38 +0200)]
mtd: maps: pxa2xx-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: plat_ram: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:32 +0000 (22:38 +0200)]
mtd: maps: plat_ram: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: physmap_of: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:31 +0000 (22:38 +0200)]
mtd: maps: physmap_of: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: physmap: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:30 +0000 (22:38 +0200)]
mtd: maps: physmap: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: latch-addr-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:29 +0000 (22:38 +0200)]
mtd: maps: latch-addr-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: lantiq-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:28 +0000 (22:38 +0200)]
mtd: maps: lantiq-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: ixp4xx: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:27 +0000 (22:38 +0200)]
mtd: maps: ixp4xx: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: intel_vr_nor: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:26 +0000 (22:38 +0200)]
mtd: maps: intel_vr_nor: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: maps: gpio-addr-flash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:25 +0000 (22:38 +0200)]
mtd: maps: gpio-addr-flash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: lpddr: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:23 +0000 (22:38 +0200)]
mtd: lpddr: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: devices: sst251: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:22 +0000 (22:38 +0200)]
mtd: devices: sst251: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: devices: spear_smi: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:21 +0000 (22:38 +0200)]
mtd: devices: spear_smi: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: devices: mtd_dataflash: drop owner assignment
Frans Klaver [Wed, 10 Jun 2015 20:38:20 +0000 (22:38 +0200)]
mtd: devices: mtd_dataflash: drop owner assignment

Owner is automatically set by mtdcore. Make use of that.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: devices: docg3: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:18 +0000 (22:38 +0200)]
mtd: devices: docg3: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: devices: bcm47xxflash: show parent device in sysfs
Frans Klaver [Wed, 10 Jun 2015 20:38:17 +0000 (22:38 +0200)]
mtd: devices: bcm47xxflash: show parent device in sysfs

Fix a bug where mtd parent device symlinks aren't shown in sysfs.

While at it, make use of the default owner value set by mtdcore.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: core: set some defaults when dev.parent is set
Frans Klaver [Wed, 10 Jun 2015 20:38:16 +0000 (22:38 +0200)]
mtd: core: set some defaults when dev.parent is set

If a parent device is set, add_mtd_device() has enough knowledge to fill
in some sane default values for the module name and owner. Do so if they
aren't already set.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: core: tone down suggestion that dev.parent should be set
Frans Klaver [Wed, 10 Jun 2015 20:38:15 +0000 (22:38 +0200)]
mtd: core: tone down suggestion that dev.parent should be set

add_mtd_device() has a comment suggesting that the caller should have
set dev.parent. This is required to have the parent device symlink show
up in sysfs, but not for proper operation of the mtd device itself.
Currently we have five drivers registering mtd devices during module
initialization, so they don't actually provide a parent device to link
to. That means we cannot WARN_ON() here, as it would trigger false
positives.

Make the comment a bit less firm in its assertion that dev.parent should
be set.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: spi-nor: Add support for Micron n25q032a
Aurelien Chanot [Wed, 7 Oct 2015 19:10:08 +0000 (12:10 -0700)]
mtd: spi-nor: Add support for Micron n25q032a

The N25Q032A is identical to the N25Q032 except it has a different
supply voltage range. Therefore, it has a new JEDEC ID.

Signed-off-by: Aurelien Chanot <chanot.a@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: Allow MTD_NAND_BRCMNAND to be selected for ARM64
Anup Patel [Fri, 2 Oct 2015 17:56:43 +0000 (23:26 +0530)]
mtd: nand: Allow MTD_NAND_BRCMNAND to be selected for ARM64

The BRCM NAND driver can be re-used for Broadcom ARM64 SoCs hence
this patch updates Kconfig to allow selection of MTD_NAND_BRCMNAND
for ARM64.

Signed-off-by: Anup Patel <anup.patel@broadcom.com>
Reviewed-by: Vikram Prakash <vikramp@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Pramod KUMAR <pramodku@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: brcmnand: Fix pointer type-cast in brcmnand_write()
Anup Patel [Fri, 2 Oct 2015 17:56:42 +0000 (23:26 +0530)]
mtd: brcmnand: Fix pointer type-cast in brcmnand_write()

We should always type-cast pointer to "long" or "unsigned long"
because size of pointer is same as machine word size. This will
avoid pointer type-cast issues on both 32bit and 64bit systems.

This patch fixes pointer type-cast issue in brcmnand_write()
as-per above info.

Signed-off-by: Anup Patel <anup.patel@broadcom.com>
Reviewed-by: Vikram Prakash <vikramp@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: pxa2xx-flash: switch from ioremap_cache to memremap
Dan Williams [Fri, 9 Oct 2015 22:16:51 +0000 (18:16 -0400)]
mtd: pxa2xx-flash: switch from ioremap_cache to memremap

In preparation for deprecating ioremap_cache() convert its usage in
pxa2xx-flash to memremap.

Cc: David Woodhouse <dwmw2@infradead.org>
[brian: also convert iounmap to memunmap]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand_bbt: set the smallest size of bbt table
Sheng Yong [Fri, 31 Jul 2015 01:12:44 +0000 (01:12 +0000)]
mtd: nand_bbt: set the smallest size of bbt table

When using nandsim to simulate a 128K block nand with `overridesize = 1',
the size of mtd device is too small (mtd_size = 4 * block_size) to get the
right length of bbt. Then when creating bbt, kzmalloc() will return
ZERO_SIZE_PTR. This causes a NULL pointer oops when scanning bbt.

[  952.156166] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
[  952.157064] IP: [<ffffffff8148ad4a>] nand_isreserved_bbt+0x2a/0x40
[  952.157064] PGD 0
[  952.157064] Oops: 0000 [#1] SMP
[  952.157064] Modules linked in: nandsim(+) [last unloaded: nandsim]
[  952.157064] CPU: 1 PID: 7103 Comm: modprobe Not tainted 4.2.0-rc3-next-20150724 #4
[  952.157064] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[  952.157064] task: ffff88003e24b980 ti: ffff88003d274000 task.ti: ffff88003d274000
[  952.157064] RIP: 0010:[<ffffffff8148ad4a>]  [<ffffffff8148ad4a>] nand_isreserved_bbt+0x2a/0x40
[  952.157064] RSP: 0018:ffff88003d277b90  EFLAGS: 00010246
[  952.157064] RAX: 0000000000000010 RBX: ffff88003d5a1000 RCX: 0000000000000000
[  952.157064] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88003d919000
[  952.157064] RBP: ffff88003d277b98 R08: 0000000000020000 R09: 0000000000000000
[  952.157064] R10: 0000000000000000 R11: 0000000000000195 R12: ffff88003d919000
[  952.157064] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[  952.157064] FS:  00007fada4d07700(0000) GS:ffff88003fd00000(0000) knlGS:0000000000000000
[  952.157064] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  952.157064] CR2: 0000000000000010 CR3: 0000000037924000 CR4: 00000000000006a0
[  952.157064] Stack:
[  952.157064]  ffffffff814851ec ffff88003d277ba8 ffffffff8147e35f ffff88003d277bf8
[  952.157064]  ffffffff814816f3 ffff88003d277c08 ffff88003d277bc8 0000000000000282
[  952.157064]  0000000000000001 0000000000000000 ffff88003d209540 0000000000000001
[  952.157064] Call Trace:
[  952.157064]  [<ffffffff814851ec>] ? nand_block_isreserved+0x1c/0x20
[  952.157064]  [<ffffffff8147e35f>] mtd_block_isreserved+0x1f/0x30
[  952.157064]  [<ffffffff814816f3>] allocate_partition+0x463/0x6a0
[  952.157064]  [<ffffffff81481b3b>] add_mtd_partitions+0x4b/0xe0
[  952.157064]  [<ffffffff8147f14c>] mtd_device_parse_register+0x4c/0xe0
[  952.157064]  [<ffffffffa0013daf>] ns_init_module+0xdaf/0xde4 [nandsim]
[  952.157064]  [<ffffffff8128d7c8>] ? kasprintf+0x38/0x40
[  952.157064]  [<ffffffffa0013000>] ? 0xffffffffa0013000
[  952.157064]  [<ffffffff810002c3>] do_one_initcall+0x83/0x1b0
[  952.157064]  [<ffffffff8113afab>] ? kmem_cache_alloc_trace+0x6b/0x120
[  952.157064]  [<ffffffff8160b503>] do_init_module+0x5c/0x1dd
[  952.157064]  [<ffffffff810aa4db>] load_module+0x1bbb/0x20b0
[  952.157064]  [<ffffffff810a6fc0>] ? __symbol_put+0x30/0x30
[  952.157064]  [<ffffffff810aaac9>] SyS_init_module+0xf9/0x110
[  952.157064]  [<ffffffff810aa9d1>] ? SyS_init_module+0x1/0x110
[  952.157064]  [<ffffffff81615f57>] entry_SYSCALL_64_fastpath+0x12/0x6a
[  952.157064] Code: 00 55 48 8b 87 80 01 00 00 48 89 e5 8b 88 cc 00 00 00 48 8b 80 f0 03 00 00 5d 48 d3 fe 89 f2 83 e6 03 c1 fa 02 8d 0c 36 48 63 d2 <0f> b6 04 10 d3 f8 83 e0 03 3c 02 0f 94 c0 0f b6 c0 c3 0f 1f 40
[  952.157064] RIP  [<ffffffff8148ad4a>] nand_isreserved_bbt+0x2a/0x40
[  952.157064]  RSP <ffff88003d277b90>
[  952.157064] CR2: 0000000000000010
[  952.204010] ---[ end trace 6ca2e1c041fdba36 ]---

This patch gives a smallest length to bbt, 1 byte, which is enough to
represent up to 4 blocks.

Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: mtdpart: add debug prints to partition parser.
Michal Suchanek [Tue, 18 Aug 2015 15:34:07 +0000 (15:34 +0000)]
mtd: mtdpart: add debug prints to partition parser.

The probe of a mtd device can fail when a partition parser returns
error. The failure due to partition parsing can be quite mysterious when
multiple partitioning schemes are compiled in and any of them can fail
the probe.

Add debug prints which show what parsers were tried and what they
returned.

Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agojffs2: fix a memleak in read_direntry()
Wei Fang [Tue, 29 Sep 2015 03:23:55 +0000 (11:23 +0800)]
jffs2: fix a memleak in read_direntry()

Need to free the memory allocated for 'fd' if failed to read all
of the remainder name.

Signed-off-by: Wei Fang <fangwei1@huawei.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: nand: lpc32xx_slc: fix calculation of timing arcs from given values
Vladimir Zapolskiy [Wed, 30 Sep 2015 23:23:37 +0000 (02:23 +0300)]
mtd: nand: lpc32xx_slc: fix calculation of timing arcs from given values

According to LPC32xx User's Manual all values measured in clock cycles
are programmable from 1 to 16 clocks (4 bits) starting from 0 in
bitfield, the current version of calculated clock cycles is too
conservative.

Correctness of 0 bitfield value (i.e. programmed 1 clock
timing) is proven with actual NAND chip devices.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>