• Masahiro Yamada's avatar
    bus: uniphier-system-bus: add UniPhier System Bus driver · 4b7f48d3
    Masahiro Yamada authored
    The UniPhier System Bus is an external bus that connects on-board
    devices to the UniPhier SoC.  Each bank (chip select) is dynamically
    mapped to the CPU-viewed address base via the bus controller.  The
    bus controller must be configured before any access to the bus.
    
    This driver parses the "ranges" property of the System Bus node and
    initialized the bus controller.  After the bus becomes ready, devices
    below it are populated.
    
    Note:
    Each bank can be mapped anywhere in the supported address space;
    there is nothing preventing us from assigning bank 0 on 0x42000000,
    0x43000000, or anywhere as long as such region is not used by others.
    So, the "ranges" is just one possible software configuration, which
    does not seem to fit in device tree because device tree is a hardware
    description language.  However, of_translate_address() requires
    "ranges" in every bus node between CPUs and device mapped on the CPU
    address space.  In other words, "ranges" properties must be statically
    defined in device tree.  After some discussion, I decided the dynamic
    address reassignment by the driver is too bothersome.  Instead, the
    device tree should provide a reasonable translation setup that the OS
    can rely on.
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: default avatarRob Herring <robh@kernel.org>
    Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
    4b7f48d3
uniphier-system-bus.c 7.53 KB