10 Jan, 2012

1 commit


11 Sep, 2011

7 commits

  • The ecctype and eccsize fields have been obsolete for a while. Since they
    don't have any users, we can kill them and leave padding in their place
    for now.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • We're missing a lot of important documentation in include/mtd/mtd-abi.h:

    * add a simple description of each ioctl (feel free to expand!)
    * give full explanations of recently added and modified operations
    * explain the usage of "RAW" that appear in different modes and types of
    operations
    * fix some comment style along the way

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • Implement a new ioctl for writing both page data and OOB to flash at the
    same time. This ioctl is intended to be a generic interface that can
    replace other ioctls (MEMWRITEOOB and MEMWRITEOOB64) and cover the
    functionality of several other old ones, e.g., MEMWRITE can:

    * write autoplaced OOB instead of using ECCGETLAYOUT (deprecated) and
    working around the reserved areas
    * write raw (no ECC) OOB instead of using MTDFILEMODE to set the
    per-file-descriptor MTD_FILE_MODE_RAW
    * write raw (no ECC) data instead of using MTDFILEMODE
    (MTD_FILE_MODE_RAW) and using standard character device "write"

    This ioctl is especially useful for MLC NAND, which cannot be written
    twice (i.e., we cannot successfully write the page data and OOB in two
    separate operations). Instead, MEMWRITE can write both in a single
    operation.

    Note that this ioctl is not affected by the MTD file mode (i.e.,
    MTD_FILE_MODE_RAW vs. MTD_FILE_MODE_NORMAL), since it receives its write
    mode as an input parameter.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • These modes hold their state only for the life of their file descriptor,
    and they overlap functionality with the MTD_OPS_* modes. Particularly,
    MTD_MODE_RAW and MTD_OPS_RAW cover the same function: to provide raw
    (i.e., without ECC) access to the flash. In fact, although it may not be
    clear, MTD_MODE_RAW implied that operations should enable the
    MTD_OPS_RAW mode.

    Thus, we should be specific on what each mode means. This is a start,
    where MTD_FILE_MODE_* actually represents a "file mode," not necessarily
    a true global MTD mode.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • These modes are not necessarily for OOB only. Particularly, MTD_OOB_RAW
    affected operations on in-band page data as well. To clarify these
    options and to emphasize that their effect is applied per-operation, we
    change the primary prefix to MTD_OPS_.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • We will want to use the MTD_OOB_{PLACE,AUTO,RAW} modes in user-space
    applications through the introduction of new ioctls, so we should make
    this enum a shared type.

    This enum is now anonymous.

    Artem: tweaked the patch.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     
  • MEMSETOOBSEL is completely unused and useless. Remove the definition.

    Note: it's probably best not to use this ioctl number in the future for
    MTD, since that may cause conflicts between old kernels and new user
    software (or new kernels and old user software).

    Artem: leave a comment about MEMSETOOBSEL.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     

14 Apr, 2011

4 commits

  • Fix checkpatch.pl errors and warnings:

    * space before tab
    * line over 80 characters
    * include linux/ioctl.h instead of asm/ioctl.h

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • There was an attempt to standartize various "__attribute__" and
    other macros in order to have potentially portable and more
    consistent code, see commit 82ddcb040570411fc2d421d96b3e69711c670328.

    Note, that commit refers Rober Love's blog post, but the URL
    is broken, the valid URL is:
    http://blog.rlove.org/2005/10/with-little-help-from-your-compiler.html

    Moreover, nowadays checkpatch.pl warns about using
    __attribute__((packed)):

    "WARNING: __packed is preferred over __attribute__((packed))"

    It is not a big deal for UBI to use __packed, so let's do it.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • Cleanup and improve commentaries around the "set volume properties" ioctl,
    make a simple indentation fix as well.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • Rename the ioctl which sets volume properties from 'UBI_IOCSETPROP' to
    'UBI_IOCSETVOLPROP' to reflect the fact that this ioctl is about volume
    properties, not device properties. This is also consistent with the
    other volume ioctl name - 'UBI_IOCVOLUP'.

    The main motivation for the re-name, however, is that we are going
    to introduce the per-UBI device "set properties" ioctl, so we need
    good and logical naming.

    At the same time, re-name the "set volume properties request" data
    structure from 'struct ubi_set_prop_req' to
    'struct ubi_set_vol_prop_req'.

    And re-name 'UBI_PROP_DIRECT_WRITE' to 'UBI_VOL_PROP_DIRECT_WRITE'.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     

25 Oct, 2010

3 commits

  • MLC NAND Flash has a different cell structure and differs in
    functioning than the SLC NAND Flash. Hence we are considering it as
    a different Flash type.

    Signed-off-by: Rohit H.S
    Signed-off-by: Raghav Gupta
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Rohit Hassan Sathyanarayan
     
  • There were some improvements and additions necessary in the
    comments explaining of the expansion of nand_ecclayout, the
    introduction of nand_ecclayout_user, and the deprecation of the
    ioctl ECCGETLAYOUT.

    Also, I found a better placement for the macro MTD_MAX_ECCPOS_ENTRIES;
    next to the definition of MTD_MAX_OOBFREE_ENTRIES in mtd-abi.h. The macro
    is really only important for the ioctl code (found in drivers/mtd/mtdchar.c)
    but since there are small edits being made to the user-space header, I
    figured this is a better location.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Brian Norris
     
  • struct nand_ecclayout is too small for many new chips; OOB regions can be as
    large as 448 bytes and may increase more in the future. Thus, copying that
    struct to user-space with the ECCGETLAYOUT ioctl is not a good idea; the ioctl
    would have to be updated every time there's a change to the current largest
    size.

    Instead, the old nand_ecclayout is renamed to nand_ecclayout_user and a
    new struct nand_ecclayout is created that can accomodate larger sizes and
    expand without affecting the user-space. struct nand_ecclayout can still
    be used in board drivers without modification -- at least for now.

    A new function is provided to convert from the new to the old in order to
    allow the deprecated ioctl to continue to work with truncated data. Perhaps
    the ioctl, the conversion process, and the struct nand_ecclayout_user can be
    removed altogether in the future.

    Note: There are comments in nand/davinci_nand.c::nand_davinci_probe()
    regarding this issue; this driver (and maybe others) can be updated to
    account for extra space. All kernel drivers can use the expanded
    nand_ecclayout as a drop-in replacement and ignore its benefits.

    Signed-off-by: Brian Norris
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Brian Norris
     

09 Aug, 2010

1 commit


02 Aug, 2010

1 commit


06 Jun, 2009

1 commit

  • This file does not define any kernel-userspace API, all
    it does it defines few helpers for userspace. Instead,
    userspace should have a private copy of this file.

    The main (if not the only) user is the mtd-utils package, but
    it already has a private copy of this file.

    This patch also removes references to 'jffs2-user.h' from
    'Kbuild' and MAINTAINERS' files.

    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Artem Bityutskiy
     

29 May, 2009

2 commits


27 Mar, 2009

2 commits

  • The MTD headers traditionally use stdint types rather than
    the kernel integer types. This converts them to do the
    same as all the others.

    Cc: David Woodhouse
    Signed-off-by: Arnd Bergmann
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Arnd Bergmann
     
  • A number of standard posix types are used in exported headers, which
    is not allowed if __STRICT_KERNEL_NAMES is defined. In order to
    get rid of the non-__STRICT_KERNEL_NAMES part and to make sane headers
    the default, we have to change them all to safe types.

    There are also still some leftovers in reiserfs_fs.h, elfcore.h
    and coda.h, but these files have not compiled in user space for
    a long time.

    This leaves out the various integer types ({u_,u,}int{8,16,32,64}_t),
    which we take care of separately.

    Signed-off-by: Arnd Bergmann
    Acked-by: Mauro Carvalho Chehab
    Cc: David Airlie
    Cc: Arnaldo Carvalho de Melo
    Cc: YOSHIFUJI Hideaki
    Cc: netdev@vger.kernel.org
    Cc: linux-ppp@vger.kernel.org
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: David Woodhouse
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Arnd Bergmann
     

31 Jan, 2009

1 commit


27 Jan, 2009

1 commit

  • Introduce a new ioctl UBI_IOCSETPROP to set properties
    on a volume. Also add the first property:
    UBI_PROP_DIRECT_WRITE, this property is used to set the
    ability to use direct writes in userspace

    Signed-off-by: Sidney Amani
    Signed-off-by: Corentin Chary
    Signed-off-by: Artem Bityutskiy

    Sidney Amani
     

18 Jan, 2009

4 commits


06 Jan, 2009

1 commit


25 Jul, 2008

1 commit


24 Jul, 2008

2 commits


05 Jun, 2008

1 commit

  • Once upon a time, the MTD repository was using CVS.

    This patch therefore removes all usages of the no longer updated CVS
    keywords from the MTD code.

    This also includes code that printed them to the user.

    Signed-off-by: Adrian Bunk
    Signed-off-by: David Woodhouse

    Adrian Bunk
     

17 Apr, 2008

1 commit

  • The new trend in linux is not to store headers which define
    on-media format in the include/ directory, but instead, store
    them locally. This is because these headers "do not define any
    kerneluserspace interface".

    Do so for UBI as well.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     

03 Feb, 2008

2 commits

  • David Woodhouse
     
  • Patch for unlocking all Intel flash that has instant locking on power up.
    The patch has been tested on Intel M18, P30 and J3D Strata Flash.
    1. The automatic unlocking can be disabled for a particular partition
    in the map or the command line.
    a. For the bit mask in the map it should look like:
    .mask_flags = MTD_POWERUP_LOCK,
    b. For the command line parsing it should look like:
    mtdparts=0x80000(bootloader)lk
    2. This will only unlock parts with instant individual block locking.
    Intel parts with legacy unlocking will not be unlocked.

    Signed-off-by: Justin Treon
    Signed-off-by: Jared Hulbert
    Acked-by: Nicolas Pitre
    Signed-off-by: David Woodhouse

    Justin Treon
     

25 Jan, 2008

3 commits

  • We have to be able to change individual LEBs for utilities like
    ubifsck, ubifstune. For example, ubifsck has to be able to fix
    errors on the media, ubifstune has to be able to change the
    the superblock, hence this ioctl.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • Add more information about layout volume to make userspace tools
    use the macros instead of constants. Also rename UBI_LAYOUT_VOL_ID
    to make it consistent with other macros.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     
  • The problem: NAND flashes have different amount of initial bad physical
    eraseblocks (marked as bad by the manufacturer). For example, for 256MiB
    Samsung OneNAND flash there might be from 0 to 40 bad initial eraseblocks,
    which is about 2%. When UBI is used as the base system, one needs to know
    the exact amount of good physical eraseblocks, because this number is
    needed to create the UBI image which is put to the devices during
    production. But this number is not know, which forces us to use the
    minimum number of good physical eraseblocks. And UBI additionally
    reserves some percentage of physical eraseblocks for bad block handling
    (default is 1%), so we have 1-3% of PEBs reserved at the end, depending
    on the amount of initial bad PEBs. But it is desired to always have
    1% (or more, depending on the configuration).

    Solution: this patch adds an "auto-resize" flag to the volume table.
    The volume which has the "auto-resize" flag will automatically be re-sized
    (enlarged) on the first UBI initialization. UBI clears the flag when
    the volume is re-sized. Only one volume may have the "auto-resize" flag.

    So, the production UBI image may have one volume with "auto-resize"
    flag set, and its size is automatically adjusted on the first boot
    of the device.

    Signed-off-by: Artem Bityutskiy

    Artem Bityutskiy
     

27 Dec, 2007

1 commit