Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp797306pxb; Tue, 14 Sep 2021 08:57:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5F6pWeEKaWowu3JNrqdt19TuivBCriRu1/3q2HKYvAZLSZiT6q9/eMlyReVed8YaeZWz9 X-Received: by 2002:a6b:7a03:: with SMTP id h3mr14023084iom.39.1631635031312; Tue, 14 Sep 2021 08:57:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631635031; cv=none; d=google.com; s=arc-20160816; b=xwPTBPOXqdfT3pvR8aAALezsHt4YO5BifEVVvPmQs/JhGLalVyGuWIy2TztxMbYFO5 oFBPpwVNxvY2joIHHMb+A8ec8HMJuZKaGmKOrSiAI4Da595iNhDA1aaNwnslPlxRpWFv xd2HBztXkniLL9wXWuFf/KDqK0FKDmivxODUC8ER+UVvhMsxL3VvA1x3kXKqk+eUzCwG HGRfBaKseBTW9F+hnKdF2sqhyDH395eU9kouzwOREIthieJReMPgefYWY5whz78gHsyV fhl317bOePMTB2sUf/bS2bkxfUH+ORINjd0a23crlK7iG3hJ7RrokMgmdkBzwpVSsM4U 0MCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Q4orUGhIY8AIL0IaUBN0v2F6x+wP94qlQUHr4gzQ1HY=; b=O1UCCDPsykh+4IGlCuQkLYQ43m2u9dlZ/vU98qxQAZwuvrhll+oNR+/DTB7hnMwgyt EnxQjvzX6dtQaaIKDr1s9AKY0AO7O4Ps+TuH2a4Ul9kpUWb/5gxv1z4BT8fFlAcuNPD1 MuAE1MbyjSqZcbf9DMUcGkGhClPTSN8O+U4AZw00pKOB/AP88PTPwcR+Dhst4HFcYV8n Grfx4+dt3+oKpRv3VZ5U+z1RZPdW97pW/lmhKJbbUx49e/EkwC6/fNiFu+UVW6egFZTj RX0pg7/BqyHstc/z0MKv5byCngafv/UDCxvR3ztNV5NlijPc4EtpdZoxMsVsnxiwUWFF eOVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="xH/7ymzM"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d21si4690063iof.73.2021.09.14.08.56.58; Tue, 14 Sep 2021 08:57:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="xH/7ymzM"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234786AbhINP5b (ORCPT + 99 others); Tue, 14 Sep 2021 11:57:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233716AbhINP53 (ORCPT ); Tue, 14 Sep 2021 11:57:29 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4309AC061764 for ; Tue, 14 Sep 2021 08:56:12 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id p15so24835177ljn.3 for ; Tue, 14 Sep 2021 08:56:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q4orUGhIY8AIL0IaUBN0v2F6x+wP94qlQUHr4gzQ1HY=; b=xH/7ymzMCA4XcMiCojiw0g6bs54GiLlLySMqIyU/azwTgDlDc8dm1BM5B3ZtNofVZy CtlruqKxsj7Q4XODxjwk6CTBW58RKIYGTprrnYClD75XzK+fv/kFilw5nhIxVlJRhg3q ChAtMDKJ1ZfcawdBVGfyk0vyPlghG2sysom3cRHLHKYG9M52CCTNmZ9yS0g//VHLCOQ/ IGLc6otc/Hqp0+lyyE22anuVBfcT5/m1z8LHgD4xfejk7CQzwY2z7UWPSRbmTck9qYsZ A2NQkvqd4uQOmdhiyKxfDlThhUQbxTP+aOnEcm7Gw6oLxuGAwdBdptuiMz5Ptkr2nEe7 mmHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q4orUGhIY8AIL0IaUBN0v2F6x+wP94qlQUHr4gzQ1HY=; b=MLU+MwUhOmXMGCKK+ZZCjk5YWNyO7IZiROShA6ZoHao4AuZKGAhuvlQBqjoj7+8aJj la+rA8voMfOji/+DooT9ooFq2zbKYsIVpUsv8vu+hHG1pIIz4vs5sHtIuwTq+utRl1yi Rfhz2xJjVsx8QRMTrJHUqtDt10ybuE8zVN16ZdV6erv3K8hWf1Deq5YIhaUY1oSzC7Yo oJg1RXjpc5Vu5Y6rHwLYrxiuH3w/7wFvFerdq3lQiAAqtyOO7+P5nSBeHpRm+dNcSVT2 fNsy9CseKfkDyHvG5aeZelwWTa9gnHqQTElM8xVxid2g4dHsG2r9uBkzRETHnuFhSf3K Bs6w== X-Gm-Message-State: AOAM530EvV7OuQmhcvcB2HXQph+N0+5/8zdvWYlAw6SivQ7shorauzgr NpnF+hAA9gXf48EZcgLd8CyA5Q== X-Received: by 2002:a2e:a4ad:: with SMTP id g13mr16112113ljm.391.1631634970657; Tue, 14 Sep 2021 08:56:10 -0700 (PDT) Received: from localhost ([31.134.121.151]) by smtp.gmail.com with ESMTPSA id b20sm1151951lfc.75.2021.09.14.08.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 08:56:09 -0700 (PDT) From: Sam Protsenko To: Krzysztof Kozlowski , Sylwester Nawrocki , =?UTF-8?q?Pawe=C5=82=20Chmiel?= , Chanwoo Choi , Tomasz Figa , Rob Herring , Stephen Boyd , Michael Turquette Cc: Ryu Euiyoul , Tom Gall , Sumit Semwal , John Stultz , Amit Pundir , 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 Subject: [PATCH 1/6] clk: samsung: Enable bus clock on init Date: Tue, 14 Sep 2021 18:56:02 +0300 Message-Id: <20210914155607.14122-2-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210914155607.14122-1-semen.protsenko@linaro.org> References: <20210914155607.14122-1-semen.protsenko@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By default if bus clock has no users its "enable count" value is 0. It might be actually running if it's already enabled in bootloader, but then in some cases it can be disabled by mistake. For example, such case was observed when dw_mci_probe() enabled bus clock, then failed to do something and disabled that bus clock on error path. After that even attempt to read the 'clk_summary' file in DebugFS freezed forever, as CMU bus clock ended up being disabled and it wasn't possible to access CMU registers anymore. To avoid such cases, CMU driver must increment the ref count for that bus clock by running clk_prepare_enable(). There is already existing '.clk_name' field in struct samsung_cmu_info, exactly for that reason. It was added in commit 523d3de41f02 ("clk: samsung: exynos5433: Add support for runtime PM"). But the clock is actually enabled only in Exynos5433 clock driver. Let's mimic what is done there in generic samsung_cmu_register_one() function, so other drivers can benefit from that `.clk_name' field. As was described above, it might be helpful not only for PM reasons, but also to prevent possible erroneous clock gating on error paths. Another way to workaround that issue would be to use CLOCK_IS_CRITICAL flag for corresponding gate clocks. But that might be not very good design decision, as we might still want to disable that bus clock, e.g. on PM suspend. Signed-off-by: Sam Protsenko --- drivers/clk/samsung/clk.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c index 1949ae7851b2..da65149fa502 100644 --- a/drivers/clk/samsung/clk.c +++ b/drivers/clk/samsung/clk.c @@ -357,6 +357,19 @@ struct samsung_clk_provider * __init samsung_cmu_register_one( ctx = samsung_clk_init(np, reg_base, cmu->nr_clk_ids); + /* Keep bus clock running, so it's possible to access CMU registers */ + if (cmu->clk_name) { + struct clk *bus_clk; + + bus_clk = __clk_lookup(cmu->clk_name); + if (bus_clk) { + clk_prepare_enable(bus_clk); + } else { + pr_err("%s: could not find bus clock %s\n", __func__, + cmu->clk_name); + } + } + if (cmu->pll_clks) samsung_clk_register_pll(ctx, cmu->pll_clks, cmu->nr_pll_clks, reg_base); -- 2.30.2