On 06/21, A.s. Dong wrote: > > -----Original Message----- > > From: Stephen Boyd [mailto:sb...@codeaurora.org] > > Sent: Wednesday, June 21, 2017 4:42 AM > > To: Dong Aisheng > > Cc: A.s. Dong; linux-...@vger.kernel.org; linux-kernel@vger.kernel.org; > > linux-arm-ker...@lists.infradead.org; mturque...@baylibre.com; > > shawn...@kernel.org; Anson Huang; Jacky Bai > > Subject: Re: [PATCH 9/9] clk: imx: add imx7ulp clk driver > > > > On 06/20, Dong Aisheng wrote: > > > On Mon, Jun 19, 2017 at 07:01:19PM -0700, Stephen Boyd wrote: > > > > > > > > Any reason why it can't be a platform driver? If not, please add > > > > some comment explaining why. > > > > > > > > > > Timer is using it at early stage. GIC seems not although standard > > > binding claim possible clock requirement. > > > Others still not sure. > > > > > > What your suggestion? > > > Convert timer to platform driver and make clock as platform driver as > > well? > > > > > > > The timer can't be a platform driver because it would be too late. The > > clock driver could register whatever clks are required for the timer/GIC > > in a CLK_OF_DECLARE_DRIVER hook, and then leave the rest to a platform > > driver. This way we get some of the device driver framework in this code. > > > > Okay, I could try it. Thanks. > > One thing is that TPM clock has a lot parents and parents having parents, > as well as PIT timer. So I may need enable more than half clocks in > CLK_OF_DECLARE_DRIVER hook.
That's fine. > > BTW, What's benefit to convert into two parts of probe? > I'm not quite if I already get it all, can you help clarify it? > The benefit is that we still get a platform driver and we can associate a device pointer with the clock controller eventually. Here's a reply I sent yesterday on the same topic: Reasons (in no particular order): 1. We get a dev pointer to use with clk_hw_register() 2. We can handle probe defer if some resource is not available 3. Using device model gets us a hook into power management frameworks like runtime PM and system PM for things like suspend and hibernate 4. It encourages a single DT node clk controller style binding instead of a single node per clk style binding 5. We can use non-DT specific functions like devm_ioremap_resource() to map registers and acquire other resources, leading to more portable and generic code 6. We may be able to make the device driver a module, which will make distros happy if we don't have to compile in all these clk drivers to the resulting vmlinux (this one doesn't apply here) -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project