On Wed, Sep 18, 2019 at 12:46:27PM +0200, Sylwester Nawrocki wrote: > The WM1811/WM8994/WM8958 audio CODEC DT bindings specify two optional > clocks: "MCLK1", "MCLK2". Add code for getting those clocks in the MFD > part of the wm8994 driver so they can be further handled in the audio > CODEC part. I think these are needed only for the codec so how about getting them in codec's probe? Best regards, Krzysztof > > Signed-off-by: Sylwester Nawrocki <s.nawrocki@xxxxxxxxxxx> > --- > drivers/mfd/wm8994-core.c | 9 +++++++++ > include/linux/mfd/wm8994/core.h | 9 +++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c > index 1e9fe7d92597..02c19a0bdeb0 100644 > --- a/drivers/mfd/wm8994-core.c > +++ b/drivers/mfd/wm8994-core.c > @@ -7,6 +7,7 @@ > * Author: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > */ > > +#include <linux/clk.h> > #include <linux/kernel.h> > #include <linux/module.h> > #include <linux/slab.h> > @@ -333,6 +334,14 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) > > dev_set_drvdata(wm8994->dev, wm8994); > > + wm8994->mclk[WM8994_MCLK1].id = "MCLK1"; > + wm8994->mclk[WM8994_MCLK2].id = "MCLK2"; > + > + ret = devm_clk_bulk_get_optional(wm8994->dev, ARRAY_SIZE(wm8994->mclk), > + wm8994->mclk); > + if (ret != 0) > + return ret; > + > /* Add the on-chip regulators first for bootstrapping */ > ret = mfd_add_devices(wm8994->dev, 0, > wm8994_regulator_devs, > diff --git a/include/linux/mfd/wm8994/core.h b/include/linux/mfd/wm8994/core.h > index e8b093522ffd..320297a1b70c 100644 > --- a/include/linux/mfd/wm8994/core.h > +++ b/include/linux/mfd/wm8994/core.h > @@ -10,12 +10,19 @@ > #ifndef __MFD_WM8994_CORE_H__ > #define __MFD_WM8994_CORE_H__ > > +#include <linux/clk.h> > #include <linux/mutex.h> > #include <linux/interrupt.h> > #include <linux/regmap.h> > > #include <linux/mfd/wm8994/pdata.h> > > +enum { > + WM8994_MCLK1, > + WM8994_MCLK2, > + WM8994_NUM_MCLK > +}; > + > enum wm8994_type { > WM8994 = 0, > WM8958 = 1, > @@ -60,6 +67,8 @@ struct wm8994 { > struct device *dev; > struct regmap *regmap; > > + struct clk_bulk_data mclk[WM8994_NUM_MCLK]; > + > bool ldo_ena_always_driven; > > int gpio_base; > -- > 2.17.1 >