• Linus Walleij's avatar
    mfd: db8500-prcmu: Support U8420-sysclk firmware · 22fb3ad0
    Linus Walleij authored
    There is a distinct version of the Ux500 U8420 variant
    with "sysclk", as can be seen from the vendor code that
    didn't make it upstream, this firmware lacks the
    ULPPLL (ultra-low power phase locked loop) which in
    effect means that the timer clock is instead wired to
    the 32768 Hz always-on clock.
    
    This has some repercussions when enabling the timer
    clock as the code as it stands will disable the timer
    clock on these platforms (lacking the so-called
    "doze mode") and obtaining the wrong rate of the timer
    clock.
    
    The timer frequency is of course needed very early in
    the boot, and as a consequence, we need to shuffle
    around the early PRCMU init code: whereas in the past
    we did not need to look up the PRCMU firmware version
    in the early init, but now we need to know the version
    before the core system timers are registered so we
    restructure the platform callbacks to the PRCMU so as
    not to take any arguments and instead look up the
    resources it needs directly from the device tree
    when initializing.
    
    As we do not yet support any platforms using this
    firmware it is not a regression, but as PostmarketOS
    is starting to support products with this firmware we
    need to fix this up.
    
    The low rate of 32kHz also makes the MTU timer unsuitable
    as delay timer but this needs to be fixed in a separate
    patch.
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Reviewed-by: default avatarStephan Gerhold <stephan@gerhold.net>
    Acked-by: default avatarOlof Johansson <olof@lixom.net>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    22fb3ad0
db8500-prcmu.c 80.8 KB