From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161087AbcFPAo0 (ORCPT ); Wed, 15 Jun 2016 20:44:26 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:47195 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753136AbcFPAoV (ORCPT ); Wed, 15 Jun 2016 20:44:21 -0400 Date: Wed, 15 Jun 2016 17:44:19 -0700 From: Stephen Boyd To: Ricardo Ribalda Delgado Cc: Michael Turquette , s.hauer@pengutronix.de, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() Message-ID: <20160616004419.GQ28218@codeaurora.org> References: <1465381201-11537-1-git-send-email-ricardo.ribalda@gmail.com> <1465381201-11537-2-git-send-email-ricardo.ribalda@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1465381201-11537-2-git-send-email-ricardo.ribalda@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/08, Ricardo Ribalda Delgado wrote: > of_clk_is_provider() checks if a device_node has already been added to > the clk provider list. This can be used to avoid adding the same clock > provider twice. > > Signed-off-by: Ricardo Ribalda Delgado While I don't disagree with the concept, I'd like to do this outside of the clk framework checking for nodes, because the problem doesn't seem clk specific. From digging in the OF platform layer I see of_node_test_and_set_flag(OF_POPULATED) may be what we should be using. It looks like this can be used to make sure that any clk provider nodes aren't populated as platform devices when we've initialized them early. The only problem now is that we have drivers using a hybrid approach with of_clk_init(). Sometimes drivers need to get clks up early for timers, so they have CLK_OF_DECLARE() in their driver, but then they also use a platform driver to handle the non-timer related clks. If we mark all nodes as populated in of_clk_init() we'll preclude these drivers from working. The solution there is to make those drivers specifically clear the populated flag in the clk init callback. Or we can automatically do that with some new CLK_OF_DECLARE_EARLY() macro that hides this clearing from them. Either way, the drivers will need to indicate they're using this hybrid style so that we still populate platform devices. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project