On Tue 17 Oct 2023 at 22:39, Chuan Liu <chuan.liu@xxxxxxxxxxx> wrote: >>>>> + >>>>> +static struct clk_fixed_factor fclk_div2p5_div = { >>>>> + .mult = 2, >>>>> + .div = 5, >>>>> + .hw.init = &(struct clk_init_data){ >>>>> + .name = "fclk_div2p5_div", >>>>> + .ops = &clk_fixed_factor_ops, >>>>> + .parent_hws = (const struct clk_hw *[]) { >>>>> + &fixed_pll.hw >>>>> + }, >>>>> + .num_parents = 1, >>>>> + }, >>>>> +}; >>>> This one is wrong if I follow the doc. >>>> It is supposed to be fixed 8 divider taking it's source directly from >>>> the DCO, skipping the OD post divider ... assuming the doc is up to date. >>>> >>> No, C3 SoC div2p5 is not skipping the OD post divider. >> I a bit surprised there would be a frequency multiplier considering the >> complexity of it, when skiping a divider is possible HW wise. Are you >> sure ? > This part confirms with our chip design engineer that fclk_div2p5 here is > actually a clock output by a divider with decimal (divider factor is > 2.5). The divider factor in clk-divider.c is int, so this description is > used in the software. Or what do you suggest would be a better way to > describe this type of divider with decimals? It's alright. keep it that way then. Consider fixing the doc maybe. >>>>> + >>>>> +static struct clk_regmap fclk_div2p5 = { >>>>> + .data = &(struct clk_regmap_gate_data){ >>>>> + .offset = ANACTRL_FIXPLL_CTRL4, >>>>> + .bit_idx = 4, >>>>> + }, >>>>> + .hw.init = &(struct clk_init_data) { >>>>> + .name = "fclk_div2p5", >>>>> + .ops = &clk_regmap_gate_ro_ops, >>>>> + .parent_hws = (const struct clk_hw *[]) { >>>>> + &fclk_div2p5_div.hw >>>>> + }, >>>>> + .num_parents = 1, >>>>> + }, >>>>> +}; >>>>> +