From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E32D4C433F5 for ; Sat, 20 Nov 2021 17:40:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=3r+ZQ+f7GTo6bgGkrPG06Dbw7Um2sR/yo+m9HyTlh2g=; b=WQ20sbV1/B9FP1jOdO4ip/x1iB zfLh3iwhRj5sCgAhnirUKOl2wlU7sVppT3XLLAvJE0Nvgvw+s3Qm4u1Hgx3PJVv1Ot5O8MQke+4x8 XuNUUC28XpxmnR/EF1FGXglz3saROglz9UygM442MYixJEtPIX1Ma0IeqdyfJxmRhQSf6D1Wk3xM1 bR1jcM/gufvNRMkk52XM7FkQmtr+AG4jGPNMAyDyg9QbCKs7b0fhoU1l00T5OvQann+VkuiC3o4dt 7ybq9Lt0frK879JWO4kbr7bBp6+v6mDsCQ1o/r3f2vdGYQyGetwhKBPhBgabNERYwlAh4Q1LNcmBp GZkxe2Yg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1moUJk-00Cm4e-4s; Sat, 20 Nov 2021 17:38:24 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1moUJg-00Cm3t-J1 for linux-arm-kernel@lists.infradead.org; Sat, 20 Nov 2021 17:38:21 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id E54AF60E9C; Sat, 20 Nov 2021 17:38:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1637429898; bh=DJSZbPQnZbwd2WMtdienM58036xGViO7g+aTcGftKeI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=ij/1yDQcdlKUSKM1H8ayOJ/NvPGBUdIxKJeNyVarsxGdAYhx+3v76Px/H1/3g/EEW 4mXlQ6AvqfrehgbZJKRAZVC1nYdC360Od70A0ZLoLdKxarrT4gIqxc8k1D/jszy+oc ZEsZweJ5FO37763k8ef+KNiNPf2TfcpCliBve4nQQD9r3AVzOfyuLHgw8U/Kin5bkp 7cHNRsr3JkStorMI9pMKMI2p3KRbUM6m5rHcQ9su9ac7XqjJ358BiWW02CRGzeZFDo 0MxhKxxdu6LetUNVFLNg64Ewgigi3Lh77Co/Kwq2JamPvNHu/tjZ5VR1d3OTmBI9ST F0R+Fl3Pzb/Sg== Subject: Re: [PATCH v2 1/1] clk: samsung: exynos850: Register clocks early To: Sam Protsenko Cc: Sumit Semwal , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , =?UTF-8?Q?Pawe=c5=82_Chmiel?= , Chanwoo Choi , Tomasz Figa , Rob Herring , Stephen Boyd , Michael Turquette , Sylwester Nawrocki References: <20211025161254.5575-1-semen.protsenko@linaro.org> From: Sylwester Nawrocki Message-ID: Date: Sat, 20 Nov 2021 18:38:13 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211120_093820_698522_76621E43 X-CRM114-Status: GOOD ( 19.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 20.11.2021 17:47, Sam Protsenko wrote: >>> @@ -920,8 +929,12 @@ static int __init exynos850_cmu_probe(struct platform_device *pdev) >>> struct device_node *np = dev->of_node; >>> >>> info = of_device_get_match_data(dev); >>> - exynos850_init_clocks(np, info->clk_regs, info->nr_clk_regs); >>> - samsung_cmu_register_one(np, info); >>> + >>> + /* Early clocks are already registered using CLK_OF_DECLARE_DRIVER() */ >>> + if (info != &peri_cmu_info) { >>> + exynos850_init_clocks(np, info->clk_regs, info->nr_clk_regs); >>> + samsung_cmu_register_one(np, info); >>> + } >> Don't you also need to register early CMU_TOP, which provides clocks >> for CMU_PERI? I'm afraid it might not work properly when you register >> CMU_PERI clocks early and only later in probe() you enable parent clock >> required for the already registered clocks to be usable. > Good point, I'll do that in v2. Not sure how I missed that dependency > point, but thank you for noticing that. Guess it only works for me > because clocks are already enabled in bootloader, and I'm using > "clk_ignore_unused" param for now. > >> How about registering also CMU_TOP early and enabling parent clock >> also in OF_CLK_DECLARE init callback, i.e. using either OF_CLK_DECLARE >> or platform driver for a CMU? >> > If you mean doing clk_prepare_enable() for "dout_peri_bus" clock in > exynos850_cmu_peri_init(), I don't think it's possible. clk_get() > needs "struct device *dev", and we only have that in platform driver > probe. Trying to pass dev=NULL won't work, so that's why I'm enabling > parent clocks in platform driver probe. Sorry, I didn't notice it earlier, actually CMU_TOP is already being initialized with OF_CLK_DECLARE. You could use of_clk_get() to get the clock, the consumer clock indexes are fixed and defined in the DT binding. There is also of_clk_get_by_name() which works similarly to clk_get(). _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel