On Mon, Aug 22, 2016 at 07:22:47PM +0200, Sylwester Nawrocki wrote:
I got suggestion from Mark not to request the main MCLK clock in the machine driver. But even if gating of that clock was added to the CODEC driver I would need to get hold of it in the machine driver to get rate of MCLK. So I thought about exporting a helper from the MFD for requesting MCLK clock or specifying MCLK clock back in the sound DT node.
No, the immediate suggestion is more about the requesting bit than the management bit - once the DT is there it's set in stone.
If we provided an interface like:
struct clk * arizona_get_mclk(struct arizona *arizona, int id); void arizona_put_mclk(struct clk *clk);
the machine driver would need to get hold of struct arizona*, which is not that straightforward if we are given on CODEC of_node (it can be a child of I2S or SPI bus).
We could add an interface for the machine driver to retrieve a clock from the CODEC as a transition measure...
Then how about specifying MCLK in the sound node and using regular devm_clk_get()?
This is what we're trying to avoid?