From patchwork Thu Sep 12 13:26:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tero Kristo X-Patchwork-Id: 173702 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp2127569ilq; Thu, 12 Sep 2019 06:26:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqx4rtyMsECojOyA442OUcXLGn3YnQfjlSvZ/d9neYieFUb98tYIazx8t/+pLkWpl06Pw9Un X-Received: by 2002:a05:6402:347:: with SMTP id r7mr41692909edw.41.1568294789476; Thu, 12 Sep 2019 06:26:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568294789; cv=none; d=google.com; s=arc-20160816; b=epEpn5idWsE71IpQOcVrmTWEFs48XuFW/fM2NSyFkXBLOUi8H6nT3vdK7WsxH+6lEX K6nWfD7NtpdhRbAHkKj+cjRuh1TKwF9p4RQq9e1MS5nwm4dSnn/eLZofPCm1irNbY8E2 NWei8eIPs3DL4byoeO06YJE4Vdblcg0wXRQyhOuwAEPBmKwpefvsdQAJjm7t9Q0kz4a1 3lTIJHZisrV+GpoLhWjlev6wGLRwfcIUMowPrOLnzO9ezNMIWtWahGsFopTo8+KicpTg GiGmrs7/fFVYRp+KUpSSwoOvdl0B5U4yJ86TKI1MSQ5jaFD4Xi8s8/oog5we6nDHCp1K PoKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=+qrcnaR3a/pZ4OviE1ZKc8IWLJlt6Yebqe6i5IEbb64=; b=y9zNICV1oVS2DoRwUJedrUPnQw1rLdHEikr6NDNbXjNb6QxCIvsoezcKnwGZKAD7UJ rVQSnbF3a5qWe3kby+SbFSaL+NjF16Ebgb5bqKqFrWoWwzhEpaHk0D/iEs5+FFutvgD3 OKHh5utCmF4RUzHwObhCs3lSQwnNfkcgo272ktbHvPmq215awRIGW5MQvTemX2xbGTLX wb7zHoIAhU5STJiW0FzCmx6Kuba7yU2dOJAmMHehq5Q9HrTW2glBC/OgKjkBe5KaBG57 L5HeMzJHUymZfClWn/FoR1U3FwM/UYDVbSlWiSCJkRgnBP+cDm8cZE5UN51BhLCWjrn0 91pQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A8JSNdgo; spf=pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-omap-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s11si12814304ejz.384.2019.09.12.06.26.29; Thu, 12 Sep 2019 06:26:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A8JSNdgo; spf=pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-omap-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732099AbfILN02 (ORCPT + 5 others); Thu, 12 Sep 2019 09:26:28 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:59656 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732093AbfILN02 (ORCPT ); Thu, 12 Sep 2019 09:26:28 -0400 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id x8CDQOf6011927; Thu, 12 Sep 2019 08:26:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1568294784; bh=+qrcnaR3a/pZ4OviE1ZKc8IWLJlt6Yebqe6i5IEbb64=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=A8JSNdgohFwtatBw+XFGPRUpp2hpxdX9Lq/w1OAb8zjFsNSw2NFg5fa9oTYnUyffx 1tc2kKk3P/zmQ8sg8AxTe2ZrKhzzWUymfUjvgYFUgLaDzllGjP1AdFR4RB0vu6ettW qzTflc3wR7sZDCpRiz2RJnIfKvtI/8xWJDLlnyZw= Received: from DLEE108.ent.ti.com (dlee108.ent.ti.com [157.170.170.38]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x8CDQOKw015237 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 12 Sep 2019 08:26:24 -0500 Received: from DLEE110.ent.ti.com (157.170.170.21) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Thu, 12 Sep 2019 08:26:23 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DLEE110.ent.ti.com (157.170.170.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Thu, 12 Sep 2019 08:26:23 -0500 Received: from sokoban.bb.dnainternet.fi (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id x8CDQFvS130575; Thu, 12 Sep 2019 08:26:21 -0500 From: Tero Kristo To: , , , CC: , Subject: [PATCHv3 03/10] clk: ti: clkctrl: add new exported API for checking standby info Date: Thu, 12 Sep 2019 16:26:06 +0300 Message-ID: <20190912132613.28093-4-t-kristo@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190912132613.28093-1-t-kristo@ti.com> References: <20190912132613.28093-1-t-kristo@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Standby status is provided for certain clkctrl clocks to see if the given module has entered standby or not. This is mostly needed by remoteproc code to see if the remoteproc has entered standby and the clock can be turned off safely. Signed-off-by: Tero Kristo --- drivers/clk/ti/clkctrl.c | 33 +++++++++++++++++++++++++++++++++ include/linux/clk/ti.h | 1 + 2 files changed, 34 insertions(+) -- 2.17.1 -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c index d904a9a7626a..e3e0a66a6ce2 100644 --- a/drivers/clk/ti/clkctrl.c +++ b/drivers/clk/ti/clkctrl.c @@ -34,6 +34,9 @@ #define OMAP4_IDLEST_MASK (0x3 << 16) #define OMAP4_IDLEST_SHIFT 16 +#define OMAP4_STBYST_MASK BIT(18) +#define OMAP4_STBYST_SHIFT 18 + #define CLKCTRL_IDLEST_FUNCTIONAL 0x0 #define CLKCTRL_IDLEST_INTERFACE_IDLE 0x2 #define CLKCTRL_IDLEST_DISABLED 0x3 @@ -647,3 +650,33 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node) } CLK_OF_DECLARE(ti_omap4_clkctrl_clock, "ti,clkctrl", _ti_omap4_clkctrl_setup); + +/** + * ti_clk_is_in_standby - Check if clkctrl clock is in standby or not + * @clk: clock to check standby status for + * + * Finds whether the provided clock is in standby mode or not. Returns + * true if the provided clock is a clkctrl type clock and it is in standby, + * false otherwise. + */ +u32 ti_clk_is_in_standby(struct clk *clk) +{ + struct clk_hw *hw; + struct clk_hw_omap *hwclk; + u32 val; + + hw = __clk_get_hw(clk); + + if (!omap2_clk_is_hw_omap(hw)) + return false; + + hwclk = to_clk_hw_omap(hw); + + val = ti_clk_ll_ops->clk_readl(&hwclk->enable_reg); + + if (val & OMAP4_STBYST_MASK) + return true; + + return false; +} +EXPORT_SYMBOL_GPL(ti_clk_is_in_standby); diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h index bb2c5af9082a..3fb777f7103a 100644 --- a/include/linux/clk/ti.h +++ b/include/linux/clk/ti.h @@ -298,6 +298,7 @@ struct ti_clk_features { void ti_clk_setup_features(struct ti_clk_features *features); const struct ti_clk_features *ti_clk_get_features(void); +u32 ti_clk_is_in_standby(struct clk *clk); int omap3_noncore_dpll_save_context(struct clk_hw *hw); void omap3_noncore_dpll_restore_context(struct clk_hw *hw);