Re: [alsa-devel] [PATCH v2] clkdev: add devm_of_clk_get()

From: Kuninori Morimoto
Date: Wed Nov 16 2016 - 00:17:40 EST



Hi Rob, Michael, Russell


What is the conclusion of this patch ?
We shouldn't add devm_of_clk_get() ? or can I continue ?

The problem of current [devm_]clk_get() handles *dev only,
but I need to get clocks from DT node, not dev

sound_soc {
...
cpu {
...
=> clocks = <&xxx>;
};
codec {
...
=> clocks = <&xxx>;
};
};

> > Thank you for your feedback
> >
> > > > struct clk *clk_get(struct device *dev, const char *con_id)
> > > > {
> > > > ...
> > > > if (dev) {
> > > > clk = __of_clk_get_by_name(dev->of_node, dev_id, con_id);
> > > > ~~~~~~~~~~~~
> > > > ...
> > > > }
> > > > }
> > > >
> > > > I would like to select specific device_node.
> > >
> > > Do you have access to the struct device that you want to target? Can you
> > > pass that device into either clk_get or devm_clk_get?
> >
> > If my understanding was correct, I think I can't.
> > In below case, "sound_soc" has its *dev, but "cpu" and "codec" doesn't
> > have *dev, it has node only. Thus, we are using of_clk_get() for these now.
> >
> > clk = of_clk_get(cpu, xxx);
> > clk = of_clk_get(codec, xxx);
> >
> > sound_soc {
> > ...
> > cpu {
> > ...
> > => clocks = <&xxx>;
> > };
> > codec {
> > ...
> > => clocks = <&xxx>;
> > };
> > };


Best regards
---
Kuninori Morimoto