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
     

20 Oct, 2010

1 commit

  • Commit a6bd9e8 "FDT: Add fixup support for multiple banks of memory"
    removed code but forgot to remove the variables used by it, resulting
    in warnings:

    fdt_support.c: In function 'fdt_fixup_memory_banks':
    fdt_support.c:399: warning: unused variable 'sizecell'
    fdt_support.c:399: warning: unused variable 'addrcell'

    Remove the declarations, too.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

19 Oct, 2010

1 commit


14 Oct, 2010

1 commit

  • Fix build error introduced in beca5a5f5bf0d88125580e5e9c1730469cd50ab8

    common/libcommon.a(fdt_support.o): In function `fdt_add_edid':
    /local/hudson/jobs/mirrors-u-boot.git/workspace/common/fdt_support.c:1205: undefined reference to `fdt_increase_size'
    make: *** [u-boot] Error 1

    Signed-off-by: Matthew McClintock
    Signed-off-by: Anatolij Gustschin

    Matthew McClintock
     

13 Oct, 2010

1 commit

  • Boards can pass display timing info for drivers using EDID
    block. Provide common function to add board specific EDID
    data to the device tree. Subsequent patch makes use of this
    functionality.

    Detailed timing descriptor data from EDID is used for
    programming the display controller. This is currently
    implemented on the Linux side by the fsl-diu-fb frame
    buffer driver and it is documented there in
    Documentation/powerpc/dts-bindings/fsl/diu.txt.

    Signed-off-by: Anatolij Gustschin
    Acked-by: Detlev Zundel
    Cc: Gerald Van Baren

    Anatolij Gustschin
     

04 Oct, 2010

1 commit


23 Sep, 2010

1 commit

  • This patch changes the behaviour of the fdt_fixup_nor_flash_node()
    function. Now it doesn't patch the size of the "reg" property with the
    chip-select size, but with the size returned from the new function
    flash_get_bank_size(). This function will return per weak default the
    flash size of the bank (bank = chip-select numer) detected by the flash
    driver. If this does not fit your needs, this function may be overridden
    by a board specific one.

    For this the parameters needed to be changed. So I intentionally squashed
    the PPC4xx stuff using this routine into this patch. Otherwise it would
    not be git-bisectable anymore.

    The board specific function for the AMCC/APM Ebony eval board is now
    included in this patch version.

    Signed-off-by: Stefan Roese
    Tested-by: Detlev Zundel
    Cc: Gerald Van Baren
    Cc: Wolfgang Denk

    Stefan Roese
     

20 Aug, 2010

1 commit

  • fdt_parent_offset() is an expensive operation, so we'd like to reduce
    unnecessary calls to it.

    Further, the practice of iterating up to the root if address/size cells
    aren't found was apparently done for Linux for compatibility with certain
    buggy Open Firmware implementations, and U-Boot inherited the code. The
    compliant behavior is to treat a missing #address-cells as 2, and a missing
    #size-cells as 1 -- never looking anywhere but the immediate parent of the
    node of interest.

    Signed-off-by: Scott Wood
    Signed-off-by: Kumar Gala

    Scott Wood
     

09 Aug, 2010

1 commit

  • Original bug description from Feng (fdt_resize() bug caused "WARNING:
    could not set linux, initrd-start FDT_ERR_NOSPACE."):

    What I got is an error: "WARNING: could not set linux,initrd-start
    FDT_ERR_NOSPACE." after loading Device Tree blob. This in turn caused
    linux to miss init part.

    After some digging, I found out the reason for this error, it is caused
    by fdt_resize().

    FDT blob got resized after filling in all board specific information of
    PowerPC. (in boot_body_linux()). It reduced blob size with only extra
    space for two fdt_reserve_entry, one for fdt itself, and one for initrd.
    Then it's aligned to a 0x1000 page boundary. However, later in
    fdt_initrd(), it could add two more properties, initrd-start AND
    initrd-end, each one needs at least two fdt_reserve_entry sizes done by
    _fdt_add_property() (name and value). Thus, the two fdt_reserve_entry
    extra space is not sufficient.

    So for some specific fdt size which is just under the page boundary
    after resizing, this will cause an error of FDT_ERR_NOSPACE in
    fdt_initrd() when setting those two properties, and failed to pass
    initrd information to linux.

    My fix is in fdt_resize(), leave at least 4 fdt_reserve_entry for
    initrd. So instead of 2*sizeof(struct fdt_reserve_entry) for
    actual_totalsize, use 5*sizeof(struc fdt_reserve_entry).

    Stefan: I got this same error on katmai, when trying to boot with
    initrd (run flash_self). This patch fixes this issue.

    Signed-off-by: Feng Wang
    Tested-by: Stefan Roese
    Cc: Jerry Van Baren
    Acked-by: Gerald Van Baren

    Feng Wang
     

27 Jul, 2010

1 commit

  • If we are creating reference (handles) to nodes in a device tree we need
    to first create a new phandle in node and this needs a new phandle
    value. So we search through the whole dtb to find the max phandle value
    and return the next greater value for a new phandle allocation.

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

    Kumar Gala
     

20 Jul, 2010

2 commits

  • Given a compatible string and physical address try and find a node that
    matches. This is useful when we want to find a specific device node to
    update (for example if we have multiple PCI nodes we can use the
    physical address to distinguish them when trying to update the device
    tree).

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

    Kumar Gala
     
  • This code is extracted out of the Linux Kernel code from
    arch/powerpc/kernel/prom_parse.c.

    We maintain some of the same structure to support multiple bus types even
    though we only have one in the current code. In the future we might want
    to translate across a PCI bus and thus it will be easier to add that
    functionality back in.

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

    Kumar Gala
     

16 Jul, 2010

1 commit


31 May, 2010

1 commit

  • Add sec3.1 h/w geometry for fdt node fixups.

    Also, technically, whilst SEC v3.3 h/w honours the tls_ssl_stream descriptor
    type, it lacks the ARC4 algorithm execution unit required to be able
    to execute anything meaningful with it. Change the node to agree with
    the documentation that declares that the sec3.3 really doesn't have such
    a descriptor type.

    Reported-by: Haiying Wang
    Signed-off-by: Kim Phillips
    Signed-off-by: Kumar Gala

    Kim Phillips
     

07 Apr, 2010

1 commit


22 Mar, 2010

1 commit