23 Aug, 2013

3 commits


22 Jun, 2013

1 commit

  • adjust_size_for_badblocks reduces the operation size to account
    for the block skipping done by the read/write functions when an
    interval (partition name or whole chip) is specified rather than a data
    amount.

    Erase does not do block skipping, except for erase.spread which takes
    a data amount rather than an interval (and thus already does not call
    adjust_size_for_badblocks). Calling adjust_size_for_badblocks when
    block skipping is not done means that if bad blocks are present,
    the "nand erase.part" and "nand erase.chip" commands will fail to erase
    blocks at the end of the interval.

    Signed-off-by: Scott Wood
    Cc: Harvey Chapman
    Acked-by: Heiko Schocher

    Scott Wood
     

01 Jun, 2013

1 commit

  • This patch is essentially an update of u-boot MTD subsystem to
    the state of Linux-3.7.1 with exclusion of some bits:

    - the update is concentrated on NAND, no onenand or CFI/NOR/SPI
    flashes interfaces are updated EXCEPT for API changes.

    - new large NAND chips support is there, though some updates
    have got in Linux-3.8.-rc1, (which will follow on top of this patch).

    To produce this update I used tag v3.7.1 of linux-stable repository.

    The update was made using application of relevant patches,
    with changes relevant to U-Boot-only stuff sticked together
    to keep bisectability. Then all changes were grouped together
    to this patch.

    Signed-off-by: Sergey Lapin
    [scottwood@freescale.com: some eccstrength and build fixes]
    Signed-off-by: Scott Wood

    Sergey Lapin
     

23 May, 2013

1 commit


10 Apr, 2013

2 commits

  • The flag changed from WITH_INLINE_OOB to WITH_YAFFS_OOB by accident in
    418396e.

    Signed-off-by: Tom Rini

    Tom Rini
     
  • We make these two functions take a size_t pointer to how much space
    was used on NAND to read or write the buffer (when reads/writes happen)
    so that bad blocks can be accounted for. We also make them take an
    loff_t limit on how much data can be read or written. This means that
    we can now catch the case of when writing to a partition would exceed
    the partition size due to bad blocks. To do this we also need to make
    check_skip_len count not just complete blocks used but partial ones as
    well. All callers of nand_(read|write)_skip_bad are adjusted to call
    these with the most sensible limits available.

    The changes were started by Pantelis and finished by Tom.

    Signed-off-by: Pantelis Antoniou
    Signed-off-by: Tom Rini

    Tom Rini
     

01 Mar, 2013

1 commit


23 Feb, 2013

1 commit


27 Nov, 2012

1 commit

  • This patch adds a NAND Flash torture feature, which is useful as a block stress
    test to determine if a block is still good and reliable (or should be marked as
    bad), e.g. after a write error.

    This code is ported from mtd-utils' lib/libmtd.c.

    Signed-off-by: Benoît Thébaudeau
    Cc: Scott Wood
    [scottwood@freescale.com: removed unnec. ifdef and unwrapped error strings]
    Signed-off-by: Scott Wood

    Benoît Thébaudeau
     

05 Nov, 2012

1 commit

  • cmd_boot.c:40:5: warning: symbol 'do_go' was not declared. Should it be static?
    cmd_bootm.c:164:6: warning: symbol '__arch_preboot_os' was not declared. Should it be static?
    cmd_bootm.c:477:5: warning: symbol 'do_bootm_subcommand' was not declared. Should it be static?
    cmd_bootm.c:1022:1: error: directive in argument list
    cmd_bootm.c:1028:1: error: directive in argument list
    cmd_bootm.c:1029:1: error: directive in argument list
    cmd_bootm.c:1036:1: error: directive in argument list
    cmd_bootm.c:1042:1: error: directive in argument list
    cmd_bootm.c:1044:1: error: directive in argument list
    cmd_bootm.c:1045:1: error: directive in argument list
    cmd_bootm.c:1047:1: error: directive in argument list
    cmd_bootm.c:1089:5: warning: symbol 'do_iminfo' was not declared. Should it be static?
    cmd_bootm.c:1176:5: warning: symbol 'do_imls' was not declared. Should it be static?
    cmd_bootm.c:1654:1: error: directive in argument list
    cmd_bootm.c:1660:1: error: directive in argument list
    cmd_console.c:32:5: warning: symbol 'do_coninfo' was not declared. Should it be s
    cmd_date.c:46:5: warning: symbol 'do_date' was not declared. Should it be static?
    cmd_echo.c:27:5: warning: symbol 'do_echo' was not declared. Should it be static?
    cmd_exit.c:27:5: warning: symbol 'do_exit' was not declared. Should it be static?
    cmd_fat.c:97:5: warning: symbol 'do_fat_ls' was not declared. Should it be static?
    cmd_fat.c:136:5: warning: symbol 'do_fat_fsinfo' was not declared. Should it be s
    cmd_fdt.c:66:5: warning: symbol 'do_fdt' was not declared. Should it be static?
    cmd_fdt.c:542:43: warning: incorrect type in assignment (different base types)
    cmd_fdt.c:542:43: expected unsigned int [unsigned] [usertype]
    cmd_fdt.c:542:43: got restricted __be32 [usertype]
    cmd_fdt.c:679:42: warning: cast to restricted __be32
    cmd_fdt.c:820:1: error: directive in argument list
    cmd_fdt.c:822:1: error: directive in argument list
    cmd_flash.c:292:5: warning: symbol 'do_flinfo' was not declared. Should it be static?
    cmd_flash.c:324:5: warning: symbol 'do_flerase' was not declared. Should it be static?
    cmd_flash.c:457:5: warning: symbol 'do_protect' was not declared. Should it be st
    cmd_help.c:27:5: warning: symbol 'do_help' was not declared. Should it be static?
    cmd_i2c.c:136:6: warning: symbol '__def_i2c_init_board' was not declared. Should it be static?
    cmd_i2c.c:144:14: warning: symbol '__def_i2c_get_bus_speed' was not declared. Should it be static?
    cmd_i2c.c:151:5: warning: symbol '__def_i2c_set_bus_speed' was not declared. Should it be static?
    cmd_i2c.c:1322:1: error: directive in argument list
    cmd_i2c.c:1324:1: error: directive in argument list
    cmd_i2c.c:1326:1: error: directive in argument list
    cmd_i2c.c:1328:1: error: directive in argument list
    cmd_i2c.c:1337:1: error: directive in argument list
    cmd_i2c.c:1339:1: error: directive in argument list
    cmd_irq.c:27:5: warning: symbol 'do_interrupts' was not declared. Should it be static?
    cmd_itest.c:133:5: warning: symbol 'binary_test' was not declared. Should it be static?
    cmd_itest.c:158:5: warning: symbol 'do_itest' was not declared. Should it be stat
    cmd_load.c:54:5: warning: symbol 'do_load_serial' was not declared. Should it be static?
    cmd_load.c:431:6: warning: symbol 'his_eol' was not declared. Should it be static?
    cmd_load.c:432:6: warning: symbol 'his_pad_count' was not declared. Should it be static?
    cmd_load.c:433:6: warning: symbol 'his_pad_char' was not declared. Should it be static?
    cmd_load.c:434:6: warning: symbol 'his_quote' was not declared. Should it be static?
    cmd_load.c:436:5: warning: symbol 'do_load_serial_bin' was not declared. Should it be static?
    cmd_load.c:549:6: warning: symbol 'send_pad' was not declared. Should it be static?
    cmd_load.c:558:6: warning: symbol 'ktrans' was not declared. Should it be static?
    cmd_load.c:568:5: warning: symbol 'chk1' was not declared. Should it be static?
    cmd_load.c:578:6: warning: symbol 's1_sendpacket' was not declared. Should it be static?
    cmd_load.c:587:6: warning: symbol 'send_ack' was not declared. Should it be static?
    cmd_load.c:600:6: warning: symbol 'send_nack' was not declared. Should it be static?
    cmd_load.c:614:6: warning: symbol 'os_data_init' was not declared. Should it be static?
    cmd_load.c:615:6: warning: symbol 'os_data_char' was not declared. Should it be static?
    cmd_load.c:657:6: warning: symbol 'k_data_init' was not declared. Should it be static?
    cmd_load.c:663:6: warning: symbol 'k_data_save' was not declared. Should it be static?
    cmd_load.c:669:6: warning: symbol 'k_data_restore' was not declared. Should it be static?
    cmd_load.c:675:6: warning: symbol 'k_data_char' was not declared. Should it be static?
    cmd_load.c:693:6: warning: symbol 'send_parms' was not declared. Should it be static?
    cmd_load.c:694:6: warning: symbol 'send_ptr' was not declared. Should it be static?
    cmd_load.c:698:6: warning: symbol 'handle_send_packet' was not declared. Should i
    cmd_mdio.c:60:5: warning: symbol 'mdio_write_ranges' was not declared. Should it be static?
    cmd_mdio.c:82:5: warning: symbol 'mdio_read_ranges' was not declared. Should it be static?
    cmd_mdio.c:115:5: warning: symbol 'extract_reg_range' was not declared. Should it be static?
    cmd_mdio.c:144:5: warning: symbol 'extract_phy_range' was not declared. Should it
    cmd_mem.c:54:5: warning: symbol 'do_mem_md' was not declared. Should it be static?
    cmd_mem.c:150:5: warning: symbol 'do_mem_mm' was not declared. Should it be static?
    cmd_mem.c:154:5: warning: symbol 'do_mem_nm' was not declared. Should it be static?
    cmd_mem.c:159:5: warning: symbol 'do_mem_mw' was not declared. Should it be static?
    cmd_mem.c:256:5: warning: symbol 'do_mem_cmp' was not declared. Should it be static?
    cmd_mem.c:326:5: warning: symbol 'do_mem_cp' was not declared. Should it be static?
    cmd_mem.c:436:5: warning: symbol 'do_mem_base' was not declared. Should it be static?
    cmd_mem.c:449:5: warning: symbol 'do_mem_loop' was not declared. Should it be static?
    cmd_mem.c:595:5: warning: symbol 'do_mem_mtest' was not declared. Should it be static?
    cmd_mem.c:618:26: warning: Using plain integer as NULL pointer
    cmd_mem.c:1057:5: warning: symbol 'do_mem_crc' was not declared. Should it be static?
    cmd_misc.c:30:5: warning: symbol 'do_sleep' was not declared. Should it be static
    cmd_mmc.c:118:5: warning: symbol 'do_mmcinfo' was not declared. Should it be static?
    cmd_mmc.c:272:32: warning: Using plain integer as NULL pointer
    cmd_mmc.c:150:5: warning: symbol 'do_mmcops' was not declared. Should it be stati
    cmd_mp.c:27:1: warning: symbol 'cpu_cmd' was not declared. Should it be static?
    cmd_mp.c:85:1: error: directive in argument list
    cmd_mp.c:88:1: error: directive in argument list
    cmd_mtdparts.c:150:18: warning: symbol 'mtdids' was not declared. Should it be static?
    cmd_mtdparts.c:153:18: warning: symbol 'devices' was not declared. Should it be static?
    cmd_mtdparts.c:713:5: warning: symbol 'mtd_device_validate' was not declared. Should it be static?
    cmd_mtdparts.c:1887:5: warning: symbol 'do_chpart' was not declared. Should it be static?
    cmd_mtdparts.c:1925:5: warning: symbol 'do_mtdparts' was not declared. Should it be static?
    cmd_mtdparts.c:2060:1: error: directive in argument list
    cmd_mtdparts.c:2063:1: error: directive in argument list
    cmd_mtdparts.c:2066:1: error: directive in argument list
    cmd_mtdparts.c:2071:1: error: directive in argument list
    cmd_mtdparts.c:2073:1: error: directive in argument list
    cmd_nand.c:377:18: error: bad constant expression
    cmd_nand.c:431:5: warning: symbol 'do_nand' was not declared. Should it be static?
    cmd_nand.c:796:1: error: directive in argument list
    cmd_nand.c:801:1: error: directive in argument list
    cmd_nand.c:802:1: error: directive in argument list
    cmd_nand.c:806:1: error: directive in argument list
    cmd_nand.c:819:1: error: directive in argument list
    cmd_nand.c:824:1: error: directive in argument list
    cmd_nand.c:825:1: error: directive in argument list
    cmd_nand.c:831:1: error: directive in argument list
    cmd_nand.c:918:5: warning: symbol 'do_nandboot' was not declared. Should it be static?
    cmd_net.c:33:5: warning: symbol 'do_bootp' was not declared. Should it be static?
    cmd_net.c:107:5: warning: symbol 'do_dhcp' was not declared. Should it be static?
    cmd_net.c:120:5: warning: symbol 'do_nfs' was not declared. Should it be static?
    cmd_nvedit.c:138:5: warning: symbol 'do_env_print' was not declared. Should it be static?
    cmd_nvedit.c:323:5: warning: symbol '_do_env_set' was not declared. Should it be static?
    cmd_nvedit.c:435:5: warning: symbol 'do_env_set' was not declared. Should it be static?
    cmd_nvedit.c:514:5: warning: symbol 'do_env_edit' was not declared. Should it be static?
    cmd_nvedit.c:620:5: warning: symbol 'do_env_save' was not declared. Should it be static?
    cmd_nvedit.c:1016:1: error: directive in argument list
    cmd_nvedit.c:1018:1: error: directive in argument list
    cmd_nvedit.c:1021:1: error: directive in argument list
    cmd_nvedit.c:1023:1: error: directive in argument list
    cmd_nvedit.c:1024:1: error: directive in argument list
    cmd_nvedit.c:1026:1: error: directive in argument list
    cmd_nvedit.c:1027:1: error: directive in argument list
    cmd_nvedit.c:1029:1: error: directive in argument list
    cmd_nvedit.c:1030:1: error: directive in argument list
    cmd_nvedit.c:1032:1: error: directive in argument list
    cmd_nvedit.c:1034:1: error: directive in argument list
    cmd_nvedit.c:1036:1: error: directive in argument list
    cmd_nvedit.c:1037:1: error: directive in argument list
    cmd_nvedit.c:1039:1: error: directive in argument list
    cmd_pci.c:38:17: warning: symbol 'ShortPCIListing' was not declared. Should it be static?
    cmd_pci.c:38:22: warning: 'ShortPCIListing' defined but not used [-Wunused-variable]
    cmd_pci.c:411:5: warning: symbol 'do_pci' was not declared. Should it be static?
    cmd_pci.c:494:1: error: directive in argument list
    cmd_pci.c:497:1: error: directive in argument list
    cmd_reginfo.c:40:5: warning: symbol 'do_reginfo' was not declared. Should it be static?
    cmd_sata.c:31:5: warning: symbol 'sata_curr_device' was not declared. Should it be static?
    note -> ata_piix.c doesn't seem to use 'sata_curr_device'; deleted.
    cmd_sata.c:32:18: warning: symbol 'sata_dev_desc' was not declared. Should it be static?
    cmd_sata.c:70:5: warning: symbol 'do_sata' was not declared. Should it be static?
    cmd_setexpr.c:53:5: warning: symbol 'do_setexpr' was not declared. Should it be static?
    cmd_source.c:186:1: error: directive in argument list
    cmd_source.c:190:1: error: directive in argument list
    cmd_test.c:27:5: warning: symbol 'do_test' was not declared. Should it be static?
    cmd_test.c:153:5: warning: symbol 'do_false' was not declared. Should it be static?
    cmd_test.c:164:5: warning: symbol 'do_true' was not declared. Should it be static
    cmd_usb.c:43:6: warning: symbol 'usb_get_class_desc' was not declared. Should it be static?
    cmd_usb.c:69:6: warning: symbol 'usb_display_class_sub' was not declared. Should it be static?
    cmd_usb.c:151:6: warning: symbol 'usb_display_string' was not declared. Should it be static?
    cmd_usb.c:161:6: warning: symbol 'usb_display_desc' was not declared. Should it be static?
    cmd_usb.c:195:6: warning: symbol 'usb_display_conf_desc' was not declared. Should it be static?
    cmd_usb.c:210:6: warning: symbol 'usb_display_if_desc' was not declared. Should it be static?
    cmd_usb.c:227:6: warning: symbol 'usb_display_ep_desc' was not declared. Should it be static?
    cmd_usb.c:252:6: warning: symbol 'usb_display_config' was not declared. Should it be static?
    cmd_usb.c:283:6: warning: symbol 'usb_show_tree_graph' was not declared. Should it be static?
    cmd_usb.c:343:6: warning: symbol 'usb_show_tree' was not declared. Should it be static?
    cmd_usb.c:356:5: warning: symbol 'do_usbboot' was not declared. Should it be static?
    cmd_usb.c:366:5: warning: symbol 'do_usb' was not declared. Should it be static?
    cmd_version.c:31:5: warning: symbol 'do_version' was not declared. Should it be s
    cmd_ximg.c:46:1: warning: symbol 'do_imgextract' was not declared. Should it be static?
    cmd_ximg.c:272:1: error: directive in argument list
    cmd_ximg.c:276:1: error: directive in argument list

    Signed-off-by: Kim Phillips

    Kim Phillips
     

22 Sep, 2012

1 commit


18 Sep, 2012

2 commits


08 Sep, 2012

1 commit


09 Jun, 2012

1 commit

  • Commit 418396e212b59bf907dbccad997ff50f7eb61b16 introduced a
    bug that causes nand read and nand write to crash in strcmp
    due to a null pointer.

    Root cause is that strchr(cmd, '.') returns a null pointer when
    the input string does not contain a '.'

    The strcmp function does not check for null pointers, resulting
    in a crash.

    Signed-off-by: Steve Sakoman
    Signed-off-by: Scott Wood

    Steve Sakoman
     

22 May, 2012

1 commit


19 May, 2012

1 commit


29 Apr, 2012

1 commit

  • cmd_nand.c: In function ‘arg_off_size’:
    cmd_nand.c:216:5: warning: ‘maxsize’ may be used uninitialized in this function [-Wmaybe-uninitialized]

    Signed-off-by: Marek Vasut
    Cc: Scott Wood
    Cc: Wolfgang Denk

    Marek Vasut
     

19 Mar, 2012

3 commits


07 Mar, 2012

1 commit


29 Feb, 2012

1 commit

  • With 2a8e0fc nand_do_read_ops changed in behavior slightly (keeping in sync
    with the kernel which did this change in b64d39d8) such that the OOB data is
    always copied into oobbuf and never appended to datbuf. Within U-Boot only
    the nand_dump function (for the dump nand subcommand) was expecting the OOB
    data to only be appended to datbuf. So we now change nand_dump to not
    malloc extra space, correct the comment about datbuf and OOB data and switch
    the pointer to oobbuf before printing.

    Cc: Scott Wood
    Signed-off-by: Tom Rini
    Signed-off-by: Scott Wood

    Tom Rini
     

04 Oct, 2011

3 commits

  • The "nand info" and "nand device" now set shell/environment variables:
    nand_writesize ... nand page size
    nand_oobsize ..... nand oob area size
    nand_erasesize ... nand erase block size

    Also, the "nand info" command now displays this info.

    Signed-off-by: Marek Vasut
    Cc: Scott Wood
    Cc: Stefano Babic
    Cc: Wolfgang Denk
    Cc: Detlev Zundel
    [scottwood@freescale.com: removed unnecessary memsets]
    Signed-off-by: Scott Wood

    Marek Vasut
     
  • This allows the scrub command to scrub without asking the user if he really
    wants to scrub the area. Useful in scripts.

    Signed-off-by: Marek Vasut
    Cc: Scott Wood
    Cc: Stefano Babic
    Cc: Wolfgang Denk
    Cc: Detlev Zundel
    Acked-by: Mike Frysinger
    Signed-off-by: Scott Wood

    Marek Vasut
     
  • These commands should work around various "hardware" ECC and BCH methods.

    Signed-off-by: Marek Vasut
    Cc: Scott Wood
    Cc: Stefano Babic
    Cc: Wolfgang Denk
    Cc: Detlev Zundel
    [scottwood@freescale.com: s/write the page/access the page/]
    Signed-off-by: Scott Wood

    Marek Vasut
     

02 Oct, 2011

1 commit

  • cmd_nand.c: In function ‘do_nand’:
    cmd_nand.c:490:7: warning: variable ‘chip’ set but not used
    [-Wunused-but-set-variable]
    cmd_nand.c:489:7: warning: variable ‘part’ set but not used
    [-Wunused-but-set-variable]

    Signed-off-by: Marek Vasut
    Cc: Scott Wood
    Acked-by: Mike Frysinger

    Marek Vasut
     

26 Jul, 2011

1 commit


02 Jul, 2011

2 commits

  • Add another nand write. variant, trimffs. This command will request of
    nand_write_skip_bad() that all trailing all-0xff pages will be
    dropped from eraseblocks when they are written to flash as-per the
    reccommended behaviour of the UBI FAQ [1].

    The function that implements this timming is the drop_ffs() function
    by Artem Bityutskiy, ported from the mtd-utils tree.

    [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo

    Signed-off-by: Ben Gardiner
    CC: Artem Bityutskiy
    CC: Detlev Zundel
    Acked-by: Scott Wood
    Signed-off-by: Scott Wood

    Ben Gardiner
     
  • In a future commit the behaviour of nand_write_skip_bad()
    will be further extended.

    Convert the only flag currently passed to the nand_write_
    skip_bad() function to a bitfield of only one allocated
    member. This should avoid an explosion of int's at the
    end of the parameter list or the ambiguous calls like

    nand_write_skip_bad(info, offset, len, buf, 0, 1, 1);
    nand_write_skip_bad(info, offset, len, buf, 0, 1, 0);

    Instead there will be:

    nand_write_skip_bad(info, offset, len, buf, WITH_YAFFS_OOB |
    WITH_OTHER);

    Signed-off-by: Ben Gardiner
    Acked-by: Detlev Zundel
    Signed-off-by: Scott Wood

    Ben Gardiner
     

25 May, 2011

1 commit


13 Jan, 2011

1 commit


12 Jan, 2011

1 commit


29 Nov, 2010

2 commits


19 Oct, 2010

1 commit

  • Commit ea533c260a801c4e51f92f75165cebe6d7b01e35 changed
    arg_off_size to take a pointer to a device index, rather than
    to the device itself. When updating callers, the nand unlock
    code was missed.

    Signed-off-by: Scott Wood

    Scott Wood
     

12 Oct, 2010

2 commits

  • The dump command is made to increment its address on repeat,
    as md does. Other commands do not make sense to issue repeatedly,
    and can be irritating when it happens accidentally, so don't.

    Signed-off-by: Scott Wood
    Tested-by: Ben Gardiner

    Scott Wood
     
  • A while back, in http://lists.denx.de/pipermail/u-boot/2009-June/054428.html,
    Michele De Candia posted a patch to not count bad blocks toward the
    requested size to be erased. This is desireable when you're passing in
    something like $filesize, but not when you're trying to erase a partition.

    Thus, a .spread subcommand (named for consistency with
    http://lists.denx.de/pipermail/u-boot/2010-August/075163.html) is introduced
    to make explicit the user's desire to erase for a given amount of data,
    rather than to erase a specific region of the chip.

    While passing $filesize to "nand erase" is useful, accidentally passing
    something like $fliesize currently produces quite unpleasant results, as the
    variable evaluates to nothing and U-Boot assumes that you want to erase
    the entire rest of the chip/partition. To improve the safety of the
    erase command, require the user to make explicit their intentions by
    using a .part or .chip subcommand. This is an incompatible user interface
    change, but keeping compatibility would eliminate the safety gain, and IMHO
    it's worth it.

    While touching nand_erase_opts(), make it accept 64-bit offsets and sizes,
    fix the percentage display when erase length is rounded up, eliminate
    an inconsistent warning about rounding up the erase length which only
    happened when the length was less than one block (rounding up for $filesize
    is normal operation), and add a diagnostic if there's an attempt to erase
    beginning at a non-block boundary.

    Signed-off-by: Scott Wood
    Tested-by: Ben Gardiner

    Scott Wood