07 Dec, 2018

1 commit


08 May, 2018

1 commit

  • The syscon implementation in U-Boot is different from that in Linux.
    Thus, DT files imported from Linux do not work for U-Boot.

    In U-Boot driver model, each node is bound to a dedicated driver
    that is the most compatible to it. This design gets along with the
    concept of DT, and the syscon in Linux originally worked like that.

    However, Linux commit bdb0066df96e ("mfd: syscon: Decouple syscon
    interface from platform devices") changed the behavior because it is
    useful to let a device bind to another driver, but still work as a
    syscon provider.

    That change had happened before U-Boot initially supported the syscon
    driver by commit 6f98b7504f70 ("dm: Add support for generic system
    controllers (syscon)"). So, the U-Boot's syscon works differently
    from the beginning. I'd say this is mis-implementation given that
    DT is not oriented to a particular project, but Linux is the canon
    of DT in practice.

    The problem typically arises in the combination of "syscon" and
    "simple-mfd" compatibles.

    In Linux, they are orthogonal, i.e., the order between "syscon" and
    "simple-mfd" does not matter at all.

    Assume the following compatible.

    compatible = "foo,bar-syscon", "syscon", "simple-mfd";

    In U-Boot, this device node is bound to the syscon driver
    (driver/core/syscon-uclass.c) since the "syscon" is found to be the
    most compatible. Then, syscon_get_regmap() succeeds.

    However,

    compatible = "foo,bar-syscon", "simple-mfd", "syscon";

    does not work because this node is bound to the simple-bus driver
    (drivers/core/simple-bus.c) in favor of "simple-mfd" compatible.
    The compatible string "syscon" is just dismissed.

    Moreover,

    compatible = "foo,bar-syscon", "syscon";

    works like the first case because the syscon driver populates the
    child devices. This is wrong because populating children is the job
    of "simple-mfd" (or "simple-bus").

    This commit ports syscon_node_to_regmap() from Linux. This API
    does not require the given node to be bound to a driver in any way.

    Reported-by: Kunihiko Hayashi
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

15 Sep, 2017

1 commit

  • When using 32-bit addresses dtoc works correctly. For 64-bit addresses it
    does not since it ignores the #address-cells and #size-cells properties.

    Update the tool to use fdt64_t as the element type for reg properties when
    either the address or size is larger than one cell. Use the correct value
    so that C code can obtain the information from the device tree easily.

    Alos create a new type, fdt_val_t, which is defined to either fdt32_t or
    fdt64_t depending on the word size of the machine. This type corresponds
    to fdt_addr_t and fdt_size_t. Unfortunately we cannot just use those types
    since they are defined to phys_addr_t and phys_size_t which use
    'unsigned long' in the 32-bit case, rather than 'unsigned int'.

    Add tests for the four combinations of address and size values (32/32,
    64/64, 32/64, 64/32). Also update existing uses for rk3399 and rk3368
    which now need to use the new fdt_val_t type.

    Signed-off-by: Simon Glass

    Suggested-by: Heiko Stuebner
    Reported-by: Kever Yang
    Reviewed-by: Philipp Tomsich
    Tested-by: Kever Yang

    Simon Glass
     

15 Jul, 2016

1 commit


24 Jan, 2016

1 commit


22 Jul, 2015

1 commit

  • Many SoCs have a number of system controllers which are dealt with as a
    group by a single driver. It is a pain to have to add lots of compatible
    strings and/or separate drivers for each. Instead we can identify the
    controllers by a number and request the address of the one we want.

    Add a simple implementation of this which can be used by SoC driver code.

    Signed-off-by: Simon Glass

    Simon Glass