1. 28 2月, 2015 2 次提交
    • R
      mtd: pxa3xx_nand: fix driver when num_cs is 0 · e423c90a
      Robert Jarzmik 提交于
      As the devicetree binding doesn't require num_cs to exist or be strictly
      positive, and neither does the platform data case, a bug appear when
      num_cs is set to 0 and panics the kernel.
      
      The issue is that in alloc_nand_resource(), chip is dereferenced without
      having a value assigned when num_cs == 0.
      
      Fix this by returning ENODEV is num_cs == 0.
      
      The panic seen is :
      Unable to handle kernel NULL pointer dereference at virtual address 000002b8
      pgd = c0004000
      [000002b8] *pgd=00000000
      Internal error: Oops: 5 [#1] PREEMPT ARM
      Modules linked in:
      Hardware name: Marvell PXA3xx (Device Tree Support)
      task: c3822aa0 ti: c3826000 task.ti: c3826000
      PC is at alloc_nand_resource+0x180/0x4a8
      LR is at alloc_nand_resource+0xa0/0x4a8
      pc : [<c0275b90>]    lr : [<c0275ab0>]    psr: 68000013
      sp : c3827d90  ip : 00000000  fp : 00000000
      r10: c3862200  r9 : 0000005e  r8 : 00000000
      r7 : c3865610  r6 : c3862210  r5 : c3924210  r4 : c3862200
      r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000000
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 0000397f  Table: 80004018  DAC: 00000035
      Process swapper (pid: 1, stack limit = 0xc3826198)
      Stack: (0xc3827d90 to 0xc3828000)
      ...zip...
      [<c0275b90>] (alloc_nand_resource) from [<c0275ff8>] (pxa3xx_nand_probe+0x140/0x978)
      [<c0275ff8>] (pxa3xx_nand_probe) from [<c0258c40>] (platform_drv_probe+0x48/0xa4)
      [<c0258c40>] (platform_drv_probe) from [<c0257650>] (driver_probe_device+0x80/0x21c)
      [<c0257650>] (driver_probe_device) from [<c0257878>] (__driver_attach+0x8c/0x90)
      [<c0257878>] (__driver_attach) from [<c0255ec4>] (bus_for_each_dev+0x58/0x88)
      [<c0255ec4>] (bus_for_each_dev) from [<c0256ec8>] (bus_add_driver+0xd8/0x1d4)
      [<c0256ec8>] (bus_add_driver) from [<c0257f14>] (driver_register+0x78/0xf4)
      [<c0257f14>] (driver_register) from [<c00088a8>] (do_one_initcall+0x80/0x1e4)
      [<c00088a8>] (do_one_initcall) from [<c048ed08>] (kernel_init_freeable+0xec/0x1b4)
      [<c048ed08>] (kernel_init_freeable) from [<c0377d8c>] (kernel_init+0x8/0xe4)
      [<c0377d8c>] (kernel_init) from [<c00095f8>] (ret_from_fork+0x14/0x3c)
      Code: e503b234 e5953008 e1530001 caffffd1 (e59002b8)
      ---[ end trace a5770060c8441895 ]---
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      Acked-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      e423c90a
    • M
      mtd: nand: pxa3xx: Fix PIO FIFO draining · 8dad0386
      Maxime Ripard 提交于
      The NDDB register holds the data that are needed by the read and write
      commands.
      
      However, during a read PIO access, the datasheet specifies that after each 32
      bytes read in that register, when BCH is enabled, we have to make sure that the
      RDDREQ bit is set in the NDSR register.
      
      This fixes an issue that was seen on the Armada 385, and presumably other mvebu
      SoCs, when a read on a newly erased page would end up in the driver reporting a
      timeout from the NAND.
      
      Cc: <stable@vger.kernel.org> # v3.14
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
      Acked-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      8dad0386
  2. 15 2月, 2015 1 次提交
  3. 08 2月, 2015 1 次提交
  4. 06 2月, 2015 4 次提交
  5. 02 2月, 2015 2 次提交
  6. 21 1月, 2015 3 次提交
  7. 16 1月, 2015 2 次提交
  8. 13 1月, 2015 1 次提交
  9. 10 1月, 2015 1 次提交
  10. 08 1月, 2015 1 次提交
    • S
      mtd: nand: added nand_shutdown · 72ea4036
      Scott Branden 提交于
      Add nand_shutdown to wait for current nand operations to finish and prevent
      further operations by changing the nand flash state to FL_SHUTDOWN.
      
      This is addressing a problem observed during reboot tests using UBIFS
      root file system: NAND erase operations that are in progress during
      system reboot/shutdown are causing partial erased blocks. Although UBI should
      be able to detect and recover from this error, this change will avoid
      the creation of partial erased blocks on reboot in the middle of a NAND erase
      operation.
      Signed-off-by: NScott Branden <sbranden@broadcom.com>
      Tested-by: NScott Branden <sbranden@broadcom.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      72ea4036
  11. 23 12月, 2014 2 次提交
  12. 01 12月, 2014 3 次提交
  13. 29 11月, 2014 1 次提交
  14. 26 11月, 2014 5 次提交
  15. 06 11月, 2014 4 次提交
  16. 05 11月, 2014 3 次提交
  17. 30 10月, 2014 2 次提交
  18. 23 10月, 2014 1 次提交
    • A
      nandsim: add id_bytes module parameter · b00358a5
      Akinobu Mita 提交于
      nandsim can simulate NAND Flash which returns the ID bytes specified
      by first_id_byte, ..., fourth_id_byte module parameters.
      
      In order to simulate NAND flash which returns more than four ID bytes,
      this adds id_bytes module parameter which is specified by the array of
      byte like this:
      
       # modprobe nandsim id_bytes=0x98,0xdc,0x90,0x26,0x76,0x15,0x01,0x08 bch=1
      
      This doesn't add fifth_id_byte, ..., seventh_id_byte module parameters,
      because they are redundant.  But the existing first_id_byte, ...,
      fourth_id_byte module parameters are preserved and add "(obsolete)" to
      the description.
      
      Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Brian Norris <computersforpeace@gmail.com>
      Cc: linux-mtd@lists.infradead.org
      Signed-off-by: NAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      b00358a5
  19. 22 10月, 2014 1 次提交
    • M
      mtd: orion_nand: fix error code path in probe · a0fa0b66
      Michael Opdenacker 提交于
      This replaces kzalloc() and ioremap() calls by devm_ functions
      in the probe() routine, which automatically release the corresponding
      resources when probe() fails or when the device is removed.
      
      This simplifies simplifies the error management code, and brings
      the below improvements or changes:
      
      A. Fixing a bug reported by "make coccicheck":
      
      If "board = devm_kzalloc()" fails, the probe() function jumps
      incorrectly to label "no_res" and therefore returns without
      running iounmap().
      
      B. Requesting the memory region
      
      Using devm_ioremap_resource() makes the probe() function request
      the corresponding memory region before running ioremap(), as
      it is supposed to do.
      
      C. Standardizing the error codes:
      
      The use of devm_ioremap_resource() changes the return value:
       * -ENOMEM instead of -EIO in case of ioremap() failure,
       * -EINVAL instead of -ENODEV in case of platform_get_resource()
         failure.
      Signed-off-by: NMichael Opdenacker <michael.opdenacker@free-electrons.com>
      Reviewed-by: NJingoo Han <jg1.han@samsung.com>
      Acked-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      a0fa0b66