• Heiko Stuebner's avatar
    soc: rockchip: add driver handling grf setup · 4c58063d
    Heiko Stuebner authored
    The General Register Files are an area of registers containing a lot
    of single-bit settings for numerous components as well full components
    like usbphy control. Therefore all used components are accessed
    via the syscon provided by the grf nodes or from the sub-devices
    created through the simple-mfd created from the grf node.
    
    Some settings are not used by anything but will need to be set up
    according to expectations on the kernel side.
    
    Best example is the force_jtag setting, which defaults to on and
    results in the soc switching the pin-outputs between jtag and sdmmc
    automatically depending on the card-detect status. This conflicts
    heavily with how the dw_mmc driver expects to do its work and also
    with the clock-controller, which has most likely deactivated the
    jtag clock due to it being unused.
    
    So far the handling of this setting was living in the mach-rockchip
    code for the arm32-based rk3288 but that of course doesn't work
    for arm64 socs and would also look ugly for further arm32 socs.
    
    Also always disabling this setting is quite specific to linux and
    its subsystems, other operating systems might prefer other settings,
    so that the bootloader cannot really set a sane default for all.
    
    So introduce a top-level driver for the grf that handles these
    settings that need to be a certain way but nobody cares about.
    
    Other needed settings might surface in the future and can then
    be added here, but only as a last option. Ideally general GRF
    settings should be handled in the driver needing them.
    Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    4c58063d
grf.c 3.41 KB