On Wed, Mar 29, 2017 at 02:38:23PM +0300, Daniel Baluta wrote: > If I read the code correctly, both machine and codec driver are doing: > * codec_clk = clk_get(...) > I guess that the codec driver is the first to be loaded and it will call: > * __clk_create_clk > which will do the allocation. Then when machine driver is loaded, it > will only take a reference to the allocated clock. > I might be very wrong on this. Can you clarify what does moving allocation > of the clock into codec driver implies? Machine driver only needs a reference > to codec_clk to just get the clock's rate. Oh, so the CODEC is already requesting the clock. Then what I'm saying is work out a way to use the handle to the clock that the CODEC driver created. In effect the machine driver is telling the CODEC driver to do things with the input clock.