Hi Changhuang, > Some StarFive clocks only advertise the divider and invert capabilities > (via JH71X0_CLK_INVERT, without ENABLE). Add the JH71X0_IDIV() macro > to declare such clocks, and jh71x0_clk_idiv_ops, which combines the > divider rate operations with get_phase/set_phase. > > Signed-off-by: Changhuang Liang <[email protected]> > > diff --git a/drivers/clk/starfive/clk-starfive-jh71x0.c > b/drivers/clk/starfive/clk-starfive-jh71x0.c > index bb7706ede1a6..1f98f1f8f0a5 100644 > --- a/drivers/clk/starfive/clk-starfive-jh71x0.c > +++ b/drivers/clk/starfive/clk-starfive-jh71x0.c > @@ -302,6 +302,15 @@ static const struct clk_ops jh71x0_clk_inv_ops = { > .debug_init = jh71x0_clk_debug_init, > }; > > +static const struct clk_ops jh71x0_clk_idiv_ops = { > + .get_phase = jh71x0_clk_get_phase, > + .set_phase = jh71x0_clk_set_phase, > + .recalc_rate = jh71x0_clk_recalc_rate, > + .determine_rate = jh71x0_clk_determine_rate, > + .set_rate = jh71x0_clk_set_rate, > + .debug_init = jh71x0_clk_debug_init, > +}; > + > const struct clk_ops *starfive_jh71x0_clk_ops(u32 max) > { > if (max & JH71X0_CLK_DIV_MASK) { > @@ -312,6 +321,9 @@ const struct clk_ops *starfive_jh71x0_clk_ops(u32 max) > } > if (max & JH71X0_CLK_ENABLE) > return &jh71x0_clk_gdiv_ops; > + else if (max & JH71X0_CLK_INVERT) > + return &jh71x0_clk_idiv_ops; > + > if (max == JH71X0_CLK_FRAC_MAX) > return &jh71x0_clk_fdiv_ops;
else if so that it's with the block above. Brian -- Brian Masney <[email protected]>

