25 Sep, 2014

2 commits


09 Aug, 2014

1 commit


19 Jun, 2014

10 commits

  • Before this commit, fdt_initrd() just returned if initrd
    start address is zero.
    But it is possible if the RAM is located at address 0.

    This commit makes the return condition more reasonable:
    Just return if the size of initrd is zero.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • Data written to DTB must be converted to big endian order.
    It is usually done by using cpu_to_fdt32(), cpu_to_fdt64(), etc.

    fdt_initrd() invoked write_cell(), which always swaps byte order.
    It means the function only worked on little endian architectures.
    (On big endian architectures, the byte order should be kept as it is)

    This commit uses cpu_to_fdt32() and cpu_to_fdt64()
    and deletes write_cell().

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • Data written to DTB must be converted to big endian order.
    It is usually done by using cpu_to_fdt32(), cpu_to_fdt64(), etc.

    fdt_fixup_memory_banks() invoked write_cell(), which always
    swaps byte order.
    It means the function only worked on little endian architectures.

    This commit adds and uses a new helper function, fdt_pack_reg(),
    which works on both big endian and little endian architrectures.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • In the next commit, I will add a new function, fdt_pack_reg()
    which uses get_cells_len().

    Beforehand, this commit adds 'const' qualifier to get_cells_len().
    Otherwise, a warning message will appear:
    warning: passing argument 1 of 'get_cells_len' discards 'const'
    qualifier from pointer target type [enabled by default]

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • - Do not use a deep indentation. We have only 80-character
    on each line and 1 indentation consumes 8 spaces. Before the
    code moves far to the right, you should consider to
    fix your code. See Linux Documentation/CodingStyle.

    - Add CONFIG_OF_STDOUT_VIA_ALIAS and OF_STDOUT_PATH macros
    only to their definition. Do not add them to both
    callee and caller. This is a tip to avoid using #ifdef
    everywhere.

    - OF_STDOUT_PATH and CONFIG_OF_STDOUT_VIA_ALIAS are exclusive.
    If both are defined, the former takes precedence.
    Do not try to fix-up "linux,stdout-path" property twice.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • After all, we have realized "force" argument is completely
    useless. fdt_chosen() was always called with force = 1.

    We should always want to do the same thing
    (set appropriate value to the property)
    even if the property already exists.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • After all, we have realized "force" argument is completely
    useless. fdt_initrd() was always called with force = 1.

    We should always want to do the same thing
    (set appropriate value to the property)
    even if the property already exists.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • Some functions in fdt_support.c do the same routine:
    search a node with a given name ("chosen", "memory", etc.)
    or newly create it if it does not exist.

    So this commit makes that routine to a helper function.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • gd->bd is not used in fdt_support.c.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • A board that has a USB ethernet device only may set the usbetheraddr
    and not the ethaddr.
    ethaddr will be the default MAC address that is chosen and if that
    is not populated then the usbethaddr is looked at. If neither are set
    then then device tree blob is not modified.

    Signed-off-by: Dan Murphy

    Dan Murphy
     

23 Apr, 2014

2 commits

  • This patch adds a helper function that can be used to interpret most
    "ranges" properties in the device tree.

    It reads the n'th range out of a "ranges" array and returns the node's
    virtual address of the range, the physical address that range starts at
    and the size of the range.

    Signed-off-by: Alexander Graf
    Acked-by: Scott Wood
    Reviewed-by: York Sun

    Alexander Graf
     
  • We already have a nice helper to give us a property cell value with default
    fall back from a path. Split that into two helpers - one for the old path
    based lookup and one to give us a value based on a node offset.

    Signed-off-by: Alexander Graf
    Acked-by: Scott Wood
    Reviewed-by: York Sun

    Alexander Graf
     

21 Jan, 2014

1 commit

  • The change to add 64bit initrd support broke 32bit initrd support as it
    always set 64bits worth of data into the properties, even on 32bit
    systems. The fix is to use addr_cell_len (which already says how much
    data is in 'tmp') to set the property, rather than always setting 8.
    Thanks to Stephen Warren for pointing out the fix here.

    Reported-by: Otavio Salvador
    Signed-off-by: Tom Rini

    Tom Rini
     

10 Jan, 2014

1 commit


09 Jan, 2014

1 commit


16 Dec, 2013

1 commit


16 Oct, 2013

1 commit

  • commit 39ac34473f3c96e77cbe03a49141771ed1639486 ("cmd_mtdparts: use 64
    bits for flash size, partition size & offset") introduced warnings
    in a couple places due to printf formats or pointer casting.

    This patch fixes the warnings pointed out here:
    http://lists.denx.de/pipermail/u-boot/2013-October/164981.html

    Signed-off-by: Scott Wood
    Cc: York Sun
    Cc: Stefan Roese
    Cc: Paul Burton
    Cc: Tom Rini

    Scott Wood
     

24 Jul, 2013

1 commit


08 Jun, 2013

1 commit

  • Some ARM compilers may emit code that makes unaligned accesses when
    faced with constructs such as:

    char mac[16] = "ethaddr";

    Replace this with a strcpy() call instead to avoid this. strcpy() is
    used here, rather than replacing all usage of the mac variable with the
    string itself, since the loop itself sprintf()s to the variable each
    iteration, so strcpy() is doing basically the same thing.

    Reported-by: Florian Meier
    Signed-off-by: Stephen Warren

    Stephen Warren
     

18 May, 2013

1 commit


08 Feb, 2013

2 commits

  • trivial:

    fdt_support.c:89:64: warning: Using plain integer as NULL pointer
    fdt_support.c:325:65: warning: Using plain integer as NULL pointer
    fdt_support.c:352:65: warning: Using plain integer as NULL pointer

    For the following bad constant expression, We hardcode the max. number of
    memory banks to four for the foreseeable future, and add an error with
    instructions on what to do once it's exceeded:

    fdt_support.c:397:22: error: bad constant expression

    For the rest below, sparse found a couple of wrong endian conversions
    in of_bus_default_translate() and fdt_get_base_address(), but
    otherwise the rest is mostly annotation fixes:

    fdt_support.c:64:24: warning: cast to restricted __be32
    fdt_support.c:192:21: warning: incorrect type in assignment (different base types)
    fdt_support.c:192:21: expected unsigned int [unsigned] [usertype] tmp
    fdt_support.c:192:21: got restricted __be32 [usertype]
    fdt_support.c:201:21: warning: incorrect type in assignment (different base types)
    fdt_support.c:201:21: expected unsigned int [unsigned] [addressable] [usertype] tmp
    fdt_support.c:201:21: got restricted __be32 [usertype]
    fdt_support.c:304:13: warning: incorrect type in assignment (different base types)
    fdt_support.c:304:13: expected unsigned int [unsigned] [usertype] val
    fdt_support.c:304:13: got restricted __be32 [usertype]
    fdt_support.c:333:13: warning: incorrect type in assignment (different base types)
    fdt_support.c:333:13: expected unsigned int [unsigned] [usertype] val
    fdt_support.c:333:13: got restricted __be32 [usertype]
    fdt_support.c:359:13: warning: incorrect type in assignment (different base types)
    fdt_support.c:359:13: expected unsigned int [unsigned] [usertype] val
    fdt_support.c:359:13: got restricted __be32 [usertype]
    fdt_support.c:373:21: warning: cast to restricted __be32
    fdt_support.c:963:48: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:963:48: expected restricted __be32 const [usertype] *p
    fdt_support.c:963:48: got unsigned int [usertype] *
    fdt_support.c:971:48: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:971:48: expected restricted __be32 const [usertype] *p
    fdt_support.c:971:48: got unsigned int [usertype] *
    fdt_support.c:984:29: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:984:29: expected restricted __be32 const [usertype] *cell
    fdt_support.c:984:29: got unsigned int [usertype] *addr
    fdt_support.c:996:32: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:996:32: expected restricted __be32 const [usertype] *cell
    fdt_support.c:996:32: got unsigned int [usertype] *addr
    fdt_support.c:1041:41: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:1041:41: expected restricted __be32 const [usertype] *cell
    fdt_support.c:1041:41: got unsigned int [usertype] *addr
    fdt_support.c:1053:41: warning: incorrect type in argument 2 (different base types)
    fdt_support.c:1053:41: expected restricted __be32 const [usertype] *range
    fdt_support.c:1053:41: got unsigned int const [usertype] *[assigned] ranges
    fdt_support.c:1064:53: warning: incorrect type in argument 2 (different base types)
    fdt_support.c:1064:53: expected restricted __be32 const [usertype] *addr
    fdt_support.c:1064:53: got unsigned int [usertype] *addr
    fdt_support.c:1110:50: warning: incorrect type in argument 2 (different base types)
    fdt_support.c:1110:50: expected restricted __be32 const [usertype] *addr
    fdt_support.c:1110:50: got unsigned int *
    fdt_support.c:1121:49: warning: incorrect type in argument 1 (different base types)
    fdt_support.c:1121:49: expected restricted __be32 const [usertype] *cell
    fdt_support.c:1121:49: got unsigned int *
    fdt_support.c:1147:60: warning: incorrect type in argument 2 (different base types)
    fdt_support.c:1147:60: expected restricted __be32 const [usertype] *addr
    fdt_support.c:1147:60: got unsigned int *
    fdt_support.c:1081:5: warning: symbol '__of_translate_address' was not declared. Should it be static?
    fdt_support.c:1154:5: error: symbol 'fdt_translate_address' redeclared with different type (originally declared at include/fdt_support.h:95) - incompatible argument 3 (different base types)
    fdt_support.c: In function 'fdt_node_offset_by_compat_reg':
    fdt_support.c:1173:17: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]

    See also linux kernel commit 0131d897 "of/address: use proper
    endianess in get_flags".

    Signed-off-by: Kim Phillips
    Cc: Jerry Van Baren

    Kim Phillips
     
  • and, if including libfdt.h which includes libfdt_env.h in
    the correct order, don't include fdt.h before libfdt.h.

    this is needed to get the fdt type definitions set from
    the project environment before fdt.h uses them.

    Signed-off-by: Kim Phillips
    Cc: Jerry Van Baren

    Kim Phillips
     

12 Dec, 2012

1 commit


16 Oct, 2012

1 commit


14 Nov, 2011

2 commits


18 Oct, 2011

2 commits

  • Add common function fdt_set_node_status() to assist in various locations
    that we set a nodes status. This function utilizes the status values
    that are part of the EPAPR spec (on power.org).

    fdt_set_status_by_alias() is based on fdt_set_node_status() but uses an
    alias string to identify the node to update.

    We also add some shortcut functions to help the common cases of setting
    "okay" and "disabled":

    fdt_status_okay()
    fdt_status_disabled()
    fdt_status_okay_by_alias()
    fdt_status_disabled_by_alias()

    Finally, we fixup the corenet_ds ethernet code which previously had
    a function by the same name that can be replaced with the new helpers.

    Signed-off-by: Shengzhou Liu
    Signed-off-by: Kumar Gala
    Acked-by: Gerald Van Baren

    Shengzhou Liu
     
  • This fixes a problems when building on some 64-bit machines.

    Signed-off-by: Simon Glass

    Simon Glass
     

15 Oct, 2011

2 commits

  • The device tree compiler, dtc, can use "phandle" and/or "linux,phandle"
    properties to specify the phandle for any node. By default, it uses
    both, but "linux,phandle" is deprecated. One day, we'd like to stop using
    "linux,phandle", but U-boot needs to support both properties equally
    first.

    fdt_alloc_phandle() generates a unique phandle, but it was only checking
    the "linux,phandle" properties. Instead, we use fdt_get_phandle(),
    which checks both properties automatically. This ensures that we
    support dtbs that only use "phandle".

    The side-effect is that fdt_alloc_phandle() now takes twice as long, since
    it has to check for two properties instead of one in each node that it
    searches.

    Signed-off-by: Timur Tabi

    Timur Tabi
     
  • fdt_create_phandle() was ignoring errors from fdt_set_phandle(). If an
    error occurs, print an error message and return 0, which is an invalid
    phandle. We also need to change the return type for fdt_create_phandle()
    to indicate that it cannot return an error code.

    Signed-off-by: Timur Tabi

    Timur Tabi
     

30 Sep, 2011

2 commits


15 Jul, 2011

2 commits

  • The ePAPR specification says that phandle properties should be called
    "phandle", and not "linux,phandle". To facilitate the migration from
    "linux,phandle" to "phandle", introduce function fdt_create_phandle(),
    which creates a phandle in a given node. For now, we create both the
    "phandle" and "linux,phandle" properties. A later version of this
    function will remove support for "linux,phandle".

    Signed-off-by: Timur Tabi

    Gerald Van Baren
     
  • Introduce two functions, fdt_verify_alias_address() and
    fdt_get_base_address(), which can be used to verify the physical address
    of a device in a device tree.

    fdt_get_base_address() returns the base address of an SOC or PCI node.

    fdt_verify_alias_address() prints a message if the address of a node
    specified by an alias does not match the given physical address.

    Signed-off-by: Timur Tabi

    Timur Tabi
     

26 Apr, 2011

1 commit


18 Apr, 2011

1 commit

  • When fdt_fixup_memory_banks is called with 2-cell address and size
    fields in the device-tree (IE: 64-bit address and size), then it will
    overflow its on-stack "tmp" buffer.

    This fixes the buffer size and adds a comment explaining how many bytes
    need to be allocated per record.

    Signed-off-by: Kyle Moffett
    Cc: Jerry Van Baren
    Acked-by: Gerald Van Baren

    Kyle Moffett
     

28 Nov, 2010

1 commit

  • Fix compiler warning

    fdt_support.c: In function 'of_bus_default_count_cells':
    fdt_support.c:957: warning: passing argument 1 of '__swab32p' discards qualifiers from pointer target type
    fdt_support.c:965: warning: passing argument 1 of '__swab32p' discards qualifiers from pointer target type

    be32_to_cpup() expects an 'u32 *' while prop is 'const u32 *'.

    Signed-off-by: Dirk Behme

    Dirk Behme