02 May, 2013

15 commits

  • Disks beyond 2T in size use blocksizes of 4096 bytes. However a lot of
    code in u-boot still assumes a 512 byte blocksize.
    This patch fixes the handling of GPTs.

    Signed-off-by: Egbert Eich

    Egbert Eich
     
  • Devices that used to have a whole disk FAT filesystem but got then
    partitioned will most likely still have a FAT or FAT32 signature
    in the first sector as this sector does not get overwritten by
    a partitioning tool (otherwise the tool would risk to kill the mbr).

    The current partition search algorithm will erronously detects such
    a device as a raw FAT device.

    Instead of looking for the FAT or FAT32 signatures immediately we
    use the same algorithm as used by the Linux kernel and first check
    for a valid boot indicator flag on each of the 4 partitions.
    If the value of this flag is invalid for the first entry we then
    do the raw partition check.
    If the flag for any higher partition is wrong we assume the device
    is neiter a MBR nor PBR device.

    Signed-off-by: Egbert Eich

    Egbert Eich
     
  • The number 512 appears quite a bit in the mmc code. Add a constant for this
    so that it can be used here and in other parts of the code (e.g. SPL code
    which loads from mmc).

    Signed-off-by: Simon Glass
    Reviewed-by: Vadim Bendebury

    Simon Glass
     
  • Signed-off-by: Wolfgang Denk
    Acked-by: Stefan Roese

    Wolfgang Denk
     
  • Align some comments.

    Signed-off-by: Wolfgang Denk
    Acked-by: Stefan Roese

    Wolfgang Denk
     
  • Signed-off-by: Wolfgang Denk

    Conflicts:
    include/configs/m28evk.h

    Wolfgang Denk
     
  • Change all "#define" sequences into "#define"

    Signed-off-by: Wolfgang Denk
    Acked-by: Marek Vasut

    Wolfgang Denk
     
  • Add "setexpr name gsub r s [t]" and "setexpr name sub r s [t]"
    commands which implement substring matching for the regular
    expression in the string , and substitution of the string .
    The result is assigned to the environment variable . If is
    not supplied, the previous value of is used instead. "gsub"
    performs global substitution, while "sub" will replace only the first
    substring.

    Both commands are closely modeled after the gawk functions with the
    same names.

    Examples:

    - Generate broadcast address by substituting the last two numbers of
    the IP address by "255.255":

    => print ipaddr
    ipaddr=192.168.1.104
    => setexpr broadcast sub "(.*\\.).*\\..*" "\\1255.255" $ipaddr
    broadcast=192.168.255.255

    - Depending on keyboard configuration (German vs. US keyboard) a
    barcode scanner may initialize the MAC address as C0:E5:4E:02:06:DC
    or as C0>E5>4E>02>06>DC. Make sure we always have a correct value:

    => print ethaddr
    ethaddr=C0>E5>4E>02>06>DC
    => setexpr ethaddr gsub > :
    ethaddr=C0:E5:4E:02:06:DC

    - Do the same, but substitute one step at a time in a loop until no
    futher matches:

    => setenv ethaddr C0>E5>4E>02>06>DC
    => while setexpr ethaddr sub > :
    > do
    > echo -----
    > done
    ethaddr=C0:E5>4E>02>06>DC
    -----
    ethaddr=C0:E5:4E>02>06>DC
    -----
    ethaddr=C0:E5:4E:02>06>DC
    -----
    ethaddr=C0:E5:4E:02:06>DC
    -----
    ethaddr=C0:E5:4E:02:06:DC
    -----
    C0:E5:4E:02:06:DC: No match
    => print ethaddr
    ethaddr=C0:E5:4E:02:06:DC

    etc.

    To enable this feature, the CONFIG_REGEX option has to be defined in
    the board config file.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • Simplify the argument checking for the "setexpr" command. This is
    done mainly to make future extensions easier.

    Also improve the help message for the one argument version of the
    command - this does not "load an address", but a value, which in
    this context may be a plain number or a pointer dereference.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • When CONFIG_REGEX is enabled, the new option "-e" becomes available
    which causes regular expression matches to be used. This allows for
    example things like these:

    - print all MAC addresses:

    => env grep -e eth.*addr
    eth1addr=00:10:ec:80:c5:15
    ethaddr=00:10:ec:00:c5:15

    - print all variables that have at least 2 colons in their value:

    => env grep -v -e :.*:
    addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off
    panic=1
    eth1addr=00:10:ec:80:c5:15
    ethaddr=00:10:ec:00:c5:15
    ver=U-Boot 2013.04-rc1-00289-g497746b-dirty (Mar 22 2013 - 12:50:25)

    etc.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • Downloaded from http://slre.sourceforge.net/
    and adapted for U-Boot environment.

    Used to implement regex operations on environment variables.
    Code size is ~ 3.5 KiB on PPC.

    To enable this code, define the CONFIG_REGEX option in your board
    config file.

    Note: There are more recent versions of the SLRE library available at
    http://slre.googlecode.com ; unfortunately, the new code has a heavily
    reorked API which makes it less usable for our purposes:
    - the return code is strings, which are more difficult to process
    - we don't get any information any more which sub-string of the data
    was matched by the given regex
    - it is much more cumbersome to work with arbitrary expressions, where
    for example the number of substrings for capturing are not known at
    compile time
    Also, there does not seem to be any real changes or improvements of
    the functionality.

    Because of this, we deliberately stick with the older code.

    Note 2: the test code (built when SLRE_TEST is defined) was modified
    to allow for more extensive testing; now we can test the regexp
    matching on all lines on a text file (instead of the whole data in the
    file as a single block).

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • Add options to "env grep" command:

    -n : search only the envrironment variable names
    -v : search only their values
    -b : search both names and values (= default)

    An option "--" will stop parsing options, so to print variables that
    contain the striing "- " please use:

    env grep -- "- "

    Or to print all environment varioables which have a '-' in their name,
    use:

    env grep -n -- -

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • Also drop hstrstr_r() which is not needed any more.
    The new code is way more flexible.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • The output of "env grep" is unsorted, and printing is done by a
    private implementation to parse the hash table. We have all the
    needed code in place in hexport_r() alsready, so let's use this
    instead. Here we prepare the code for this, without any functional
    changes yet.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • block_read returns unsigned long, so it doesn't make sense to check for
    < 0. and neither does marking the header structure as const and then
    casting away the constness to load data into it.

    Also cleanup some unneeded pointer casting while we're at it.

    Signed-off-by: Peter Korsgaard
    Reviewed-by: Tom Rini

    Peter Korsgaard
     

01 May, 2013

18 commits


30 Apr, 2013

5 commits


22 Apr, 2013

2 commits