On Mon 01 Jul 2019 at 11:12, Neil Armstrong <narmstrong@xxxxxxxxxxxx> wrote: > Add a setup() callback in the eeclk structure, to call an optional > call() function at end of eeclk probe to setup clocks. > > It's used for the G12A clock controller to setup the CPU clock > notifiers. I'd prefer if you implement the probe function in the related controller have this probe function call meson_eeclkc_probe() for the common part In your case, I suppose it means implementing the g12a controller probe to deal with the notifiers > > Signed-off-by: Neil Armstrong <narmstrong@xxxxxxxxxxxx> > --- > drivers/clk/meson/meson-eeclk.c | 6 ++++++ > drivers/clk/meson/meson-eeclk.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/drivers/clk/meson/meson-eeclk.c b/drivers/clk/meson/meson-eeclk.c > index 6ba2094be257..81fd2abcd173 100644 > --- a/drivers/clk/meson/meson-eeclk.c > +++ b/drivers/clk/meson/meson-eeclk.c > @@ -61,6 +61,12 @@ int meson_eeclkc_probe(struct platform_device *pdev) > } > } > > + if (data->setup) { > + ret = data->setup(pdev); > + if (ret) > + return ret; > + } > + > return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, > data->hw_onecell_data); > } > diff --git a/drivers/clk/meson/meson-eeclk.h b/drivers/clk/meson/meson-eeclk.h > index 9ab5d6fa7ccb..7fdf424f71a6 100644 > --- a/drivers/clk/meson/meson-eeclk.h > +++ b/drivers/clk/meson/meson-eeclk.h > @@ -20,6 +20,7 @@ struct meson_eeclkc_data { > const struct reg_sequence *init_regs; > unsigned int init_count; > struct clk_hw_onecell_data *hw_onecell_data; > + int (*setup)(struct platform_device *pdev); > }; > > int meson_eeclkc_probe(struct platform_device *pdev); > -- > 2.21.0