• Cristian Ciocaltea's avatar
    clk: actions: Fix bisp_factor_table based clocks on Owl S500 SoC · a8f1f03c
    Cristian Ciocaltea authored
    The following clocks of the Actions Semi Owl S500 SoC have been defined
    to use a shared clock factor table 'bisp_factor_table[]': DE[1-2], VCE,
    VDE, BISP, SENSOR[0-1]
    
    There are several issues involved in this approach:
    
    * 'bisp_factor_table[]' describes the configuration of a regular 8-rates
      divider, so its usage is redundant. Additionally, judging by the BISP
      clock context, it is incomplete since it maps only 8 out of 12
      possible entries.
    
    * The clocks mentioned above are not identical in terms of the available
      rates, therefore cannot rely on the same factor table. Specifically,
      BISP and SENSOR* are standard 12-rate dividers so their configuration
      should rely on a proper clock div table, while VCE and VDE require a
      factor table that is a actually a subset of the one needed for DE[1-2]
      clocks.
    
    Let's fix this by implementing the following:
    
    * Add new factor tables 'de_factor_table' and 'hde_factor_table' to
      properly handle DE[1-2], VCE and VDE clocks.
    
    * Add a common div table 'std12rate_div_table' for BISP and SENSOR[0-1]
      clocks converted to OWL_COMP_DIV.
    
    * Drop the now unused 'bisp_factor_table[]'.
    
    Additionally, drop the CLK_IGNORE_UNUSED flag for SENSOR[0-1] since
    there is no reason to always keep ON those clocks.
    
    Fixes: ed6b4795 ("clk: actions: Add clock driver for S500 SoC")
    Signed-off-by: default avatarCristian Ciocaltea <cristian.ciocaltea@gmail.com>
    Reviewed-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://lore.kernel.org/r/e675820a46cd9930d8d576c6cae61d41c1a8416f.1623354574.git.cristian.ciocaltea@gmail.comSigned-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    a8f1f03c
owl-s500.c 21.2 KB