• Sebastian Reichel's avatar
    clk: rockchip: rk3588: make gate linked clocks critical · 64042c28
    Sebastian Reichel authored
    RK3588 has a couple of hardware blocks called Native Interface Unit
    (NIU) that gate the clocks to devices behind them. Effectively this
    means that some clocks require two parent clocks being enabled.
    Downstream implemented this by using a separate clock driver
    ("clk-link") for them, which enables the second clock using PM
    framework.
    
    In the upstream kernel we are currently missing support for the second
    parent. The information about it is in the GATE_LINK() macro as
    linkname, but that is not used. Thus the second parent clock is not
    properly enabled. So far this did not really matter, since these clocks
    are mostly required for the more advanced IP blocks, that are not yet
    supported upstream. As this is about to change we need a fix. There
    are three options available:
    
    1. Properly implement support for having two parent clocks in the
       clock framework.
    2. Mark the affected clocks CLK_IGNORE_UNUSED, so that they are not
       disabled. This wastes some power, but keeps the hack contained
       within the clock driver. Going from this to the first solution
       is easy once that has been implemented.
    3. Enabling the extra clock in the consumer driver. This leaks some
       implementation details into DT.
    
    This patch implements the second option as an intermediate solution
    until the first one is available. I used an alias for CLK_IS_CRITICAL,
    so that it's easy to see which clocks are not really critical once
    the clock framework supports a better way to implement this.
    Tested-by: default avatarVincent Legoll <vincent.legoll@gmail.com>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    Link: https://lore.kernel.org/r/20230403193250.108693-2-sebastian.reichel@collabora.comSigned-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
    64042c28
clk-rk3588.c 117 KB