• Martin Blumenstingl's avatar
    clk: meson: mpll: fix division by zero in rate_from_params · 88e4ac68
    Martin Blumenstingl authored
    According to the public datasheet all register bits in HHI_MPLL_CNTL7,
    HHI_MPLL_CNTL8 and HHI_MPLL_CNTL9 default to zero. On all GX SoCs these
    seem to be initialized by the bootloader to some default value.
    However, on my Meson8 board they are not initialized, leading to a
    division by zero in rate_from_params as the math is:
    (parent_rate * SDM_DEN) / ((SDM_DEN * 0) + 0)
    
    According to the datasheet, the minimum n2 value is 4. The rate provided
    by the clock when n2 is less than this minimum is unpredictable. In such
    case, we report an error.
    
    Although the rate_from_params function was only introduced recently the
    original bug has been there for much longer. It was only exposed
    recently when the MPLL clocks were added to the Meson8b clock driver.
    
    Fixes: 1c50da4f ("clk: meson: add mpll support")
    Reviewed-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
    88e4ac68
clk-mpll.c 6.51 KB