From patchwork Wed Apr 26 10:57:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 98240 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp261578qgf; Wed, 26 Apr 2017 03:58:34 -0700 (PDT) X-Received: by 10.84.131.1 with SMTP id 1mr42268388pld.40.1493204314049; Wed, 26 Apr 2017 03:58:34 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w20si25075278pgj.196.2017.04.26.03.58.33; Wed, 26 Apr 2017 03:58:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2998895AbdDZK6M (ORCPT + 7 others); Wed, 26 Apr 2017 06:58:12 -0400 Received: from mail-pf0-f169.google.com ([209.85.192.169]:33508 "EHLO mail-pf0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2998876AbdDZK51 (ORCPT ); Wed, 26 Apr 2017 06:57:27 -0400 Received: by mail-pf0-f169.google.com with SMTP id a188so40690176pfa.0 for ; Wed, 26 Apr 2017 03:57:27 -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 :in-reply-to:references; bh=4auqnbtD7FxfxzF9MpcA8KnQmeKCj5LBK6kHUhWTBQA=; b=cpJvL1FZ35LiZn89szpsgaFnob9CEUiQJXFKhDyAN02AjLJLuvH2yHglNTlgyRtXfq vbC3LJfY0T8w+eVbFebtrWxVcSK3VCDhHDtwvPfRM4qn87w08YhQA7WnmeNoSkO/La7e LK1YfJlOI6jEHDZJARn1fAMlLbtTRhSp3hmq0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=4auqnbtD7FxfxzF9MpcA8KnQmeKCj5LBK6kHUhWTBQA=; b=oKpj1JkU4Wyue2CsAmTHDcJyIJgnXUZMRl4hbgZz5Rnu5Qw5qxFSlxP/Hcf289ktWs Ad++nerh0ZLK6aM1riHG7wHvqApdysZ8N+OkNKjRdiQnGKUfJJAs6SIFpnb8leH5AD4t WiABfhBMdkAwx5gYQsYUAfkdy74ooDPLkhrv4LcQtJIOWe1D9tNT5hpie/QCdSk1qf1R jwltqZpyRaskRAmA0J12T+yxefjb3+6TsN+Y5yl/Vsf+Fem3X8M11ZLfmvnk4vRJUbSr LOB1fNGjh4T6BBqeR1Wa+OHnY52UncqEreBKOz/lMClAGnmQzcPcMxdITiVLzMnFHLXN DKlg== X-Gm-Message-State: AN3rC/5M6yRz0R1dePGZ4dKegVFelB7j/9VN5hSl30hbXIC93aEVA/VA PWIOX2tAnKA1JSAM X-Received: by 10.84.217.215 with SMTP id d23mr42391991plj.59.1493204246782; Wed, 26 Apr 2017 03:57:26 -0700 (PDT) Received: from localhost ([122.172.121.5]) by smtp.gmail.com with ESMTPSA id 186sm24182230pfd.26.2017.04.26.03.57.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 26 Apr 2017 03:57:26 -0700 (PDT) From: Viresh Kumar To: Rafael Wysocki , ulf.hansson@linaro.org, Kevin Hilman , Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Guittot , robh+dt@kernel.org, lina.iyer@linaro.org, rnayak@codeaurora.org, sudeep.holla@arm.com, Viresh Kumar , devicetree@vger.kernel.org Subject: [PATCH V6 1/9] PM / OPP: Introduce "power-domain-opp" property Date: Wed, 26 Apr 2017 16:27:05 +0530 Message-Id: <025acedb263eaa6089d354d9630214ada8013990.1493203884.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.12.0.432.g71c3a4f4ba37 In-Reply-To: References: In-Reply-To: References: Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Power-domains need to express their active states in DT and the devices within the power-domain need to express their dependency on those active states. The power-domains can use the OPP tables without any modifications to the bindings. Add a new property "power-domain-opp", which will contain phandle to the OPP node of the parent power domain. This is required for devices which have dependency on the configured active state of the power domain for their working. For some platforms the actual frequency and voltages of the power domains are managed by the firmware and are so hidden from the high level operating system. The "opp-hz" property is relaxed a bit to contain indexes instead of actual frequency values to support such platforms. Signed-off-by: Viresh Kumar --- Documentation/devicetree/bindings/opp/opp.txt | 74 ++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) -- 2.12.0.432.g71c3a4f4ba37 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/Documentation/devicetree/bindings/opp/opp.txt b/Documentation/devicetree/bindings/opp/opp.txt index 63725498bd20..6e30cae2a936 100644 --- a/Documentation/devicetree/bindings/opp/opp.txt +++ b/Documentation/devicetree/bindings/opp/opp.txt @@ -77,7 +77,10 @@ This defines voltage-current-frequency combinations along with other related properties. Required properties: -- opp-hz: Frequency in Hz, expressed as a 64-bit big-endian integer. +- opp-hz: Frequency in Hz, expressed as a 64-bit big-endian integer. In some + cases the exact frequency in Hz may be hidden from the OS by the firmware and + this field may contain values that represent the frequency in a firmware + dependent way, for example an index of an array in the firmware. Optional properties: - opp-microvolt: voltage in micro Volts. @@ -154,6 +157,13 @@ properties. - status: Marks the node enabled/disabled. +- power-domain-opp: Phandle to the OPP node of the parent power-domain. The + parent power-domain should be configured to the OPP whose node is pointed by + the phandle, in order to configure the device for the OPP node that contains + this property. The order in which the device and power domain should be + configured is implementation defined. The OPP table of a device can set this + property only if the device node contains "power-domains" property. + Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together. / { @@ -528,3 +538,65 @@ Example 5: opp-supported-hw }; }; }; + +Example 7: Power domains with their own OPP tables: +(example: For 1GHz device require domain state 1 and for 1.1 & 1.2 GHz device require state 2) + +/ { + domain_opp_table: opp_table0 { + compatible = "operating-points-v2"; + + /* + * NOTE: Actual frequency is managed by firmware and is hidden + * from HLOS, so we simply use index in the opp-hz field to + * select the OPP. + */ + domain_opp_1: opp-1 { + opp-hz = /bits/ 64 <1>; + opp-microvolt = <975000 970000 985000>; + }; + domain_opp_2: opp-2 { + opp-hz = /bits/ 64 <2>; + opp-microvolt = <1075000 1000000 1085000>; + }; + }; + + foo_domain: power-controller@12340000 { + compatible = "foo,power-controller"; + reg = <0x12340000 0x1000>; + #power-domain-cells = <0>; + operating-points-v2 = <&domain_opp_table>; + } + + cpu0_opp_table: opp_table1 { + compatible = "operating-points-v2"; + opp-shared; + + opp-1000000000 { + opp-hz = /bits/ 64 <1000000000>; + power-domain-opp = <&domain_opp_1>; + }; + opp-1100000000 { + opp-hz = /bits/ 64 <1100000000>; + power-domain-opp = <&domain_opp_2>; + }; + opp-1200000000 { + opp-hz = /bits/ 64 <1200000000>; + power-domain-opp = <&domain_opp_2>; + }; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + compatible = "arm,cortex-a9"; + reg = <0>; + clocks = <&clk_controller 0>; + clock-names = "cpu"; + operating-points-v2 = <&cpu0_opp_table>; + power-domains = <&foo_domain>; + }; + }; +}; From patchwork Wed Apr 26 10:57:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 98239 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp261448qgf; Wed, 26 Apr 2017 03:58:06 -0700 (PDT) X-Received: by 10.84.194.37 with SMTP id g34mr11319991pld.182.1493204286242; Wed, 26 Apr 2017 03:58:06 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w28si25058184pfk.227.2017.04.26.03.58.05; Wed, 26 Apr 2017 03:58:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2998837AbdDZK6C (ORCPT + 7 others); Wed, 26 Apr 2017 06:58:02 -0400 Received: from mail-pf0-f172.google.com ([209.85.192.172]:35533 "EHLO mail-pf0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2998886AbdDZK5b (ORCPT ); Wed, 26 Apr 2017 06:57:31 -0400 Received: by mail-pf0-f172.google.com with SMTP id v14so36979589pfd.2 for ; Wed, 26 Apr 2017 03:57:31 -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 :in-reply-to:references; bh=M9xboe2gk3K0vC/KLtsDxjRIgZFexrq3cJ7j/l2m6wY=; b=RhKV6rV0LrnMAUxqJUcKBVXOarc9WP9dHAHkERyiH7kLza2B0F65yLacVXyp8Mo2rV s8oIUdOyaG6cMvjHf6PnD1GIuf3ECjJKj81Q/wqv7V2hVVSC0fouTeMM7EgQpZ5Frow3 guBZJvzqsZRGEV5lKNKrtGJJmtFjCNhM/MM10= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=M9xboe2gk3K0vC/KLtsDxjRIgZFexrq3cJ7j/l2m6wY=; b=AyaAhCkLBhLhggYytc8kEmxCaKKWpiOHRRojapjyPuDxC3SmM4skykspcsT6X/nOQs /uYXUdeyKpD+3D7m734m7cVUM4BfSFvfo5VylNha29XDQh4xl2Bqj8y/WUA72XHMXSHo YyhySYUhGl3nG0tJoT8UGH+spwp/S7oEB4IAyUbHbEtt/Q+CMigcpS68sd9YcHz8gU1h 3205unkTVNdU889KMG6hxNTUrlJf53/9hLjjYzwZCLen6btgnwQhgF3Y9cq6AZWelWbX 6ic44SKVUCHWqVjEUs74nvPR3Pb4dL0Vfto+1Ruhr65PhW4QX1t2WtWir1sJ91J70yKt 3FgA== X-Gm-Message-State: AN3rC/7atWPVdLNaDNO1POsBYgnI0/fmPqVZjsS/VK3Uel1+PX5tybLx kRDou5PIbqXjDmgx X-Received: by 10.99.56.90 with SMTP id h26mr31661157pgn.43.1493204250250; Wed, 26 Apr 2017 03:57:30 -0700 (PDT) Received: from localhost ([122.172.121.5]) by smtp.gmail.com with ESMTPSA id b8sm41999855pgn.51.2017.04.26.03.57.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 26 Apr 2017 03:57:29 -0700 (PDT) From: Viresh Kumar To: Rafael Wysocki , ulf.hansson@linaro.org, Kevin Hilman Cc: linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Guittot , Stephen Boyd , Nishanth Menon , robh+dt@kernel.org, lina.iyer@linaro.org, rnayak@codeaurora.org, sudeep.holla@arm.com, Viresh Kumar , devicetree@vger.kernel.org Subject: [PATCH V6 2/9] PM / Domains: Allow OPP table to be used for power-domains Date: Wed, 26 Apr 2017 16:27:06 +0530 Message-Id: X-Mailer: git-send-email 2.12.0.432.g71c3a4f4ba37 In-Reply-To: References: In-Reply-To: References: Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Update the power-domain bindings to allow "operating-points-v2" to be present within the power-domain's provider node. Also allow consumer devices that don't use OPP tables, to specify the parent power-domain's OPP node in their "power-domain-opp" property. Also note that the "operating-points-v2" property is extended to support an array for the power domain providers. Signed-off-by: Viresh Kumar --- .../devicetree/bindings/power/power_domain.txt | 106 +++++++++++++++++++++ 1 file changed, 106 insertions(+) -- 2.12.0.432.g71c3a4f4ba37 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/Documentation/devicetree/bindings/power/power_domain.txt b/Documentation/devicetree/bindings/power/power_domain.txt index 14bd9e945ff6..730af0afc09a 100644 --- a/Documentation/devicetree/bindings/power/power_domain.txt +++ b/Documentation/devicetree/bindings/power/power_domain.txt @@ -40,6 +40,10 @@ phandle arguments (so called PM domain specifiers) of length specified by the domain's idle states. In the absence of this property, the domain would be considered as capable of being powered-on or powered-off. +- operating-points-v2 : Phandles to the OPP tables for a power domain provider. + If the provider provides a single power domain, then this shall contain a + single phandle. Refer to ../opp/opp.txt for more information. + Example: power: power-controller@12340000 { @@ -120,4 +124,106 @@ The node above defines a typical PM domain consumer device, which is located inside a PM domain with index 0 of a power controller represented by a node with the label "power". +Optional properties: +- power-domain-opp: Phandle to the OPP node of the parent power-domain. The + parent power-domain should be configured to the OPP whose node is pointed by + the phandle, in order to use the device that contains this property. + + +Example: +- Device with parent power domain with two active states represented by OPP + table. + + domain_opp_table: opp_table { + compatible = "operating-points-v2"; + + /* + * NOTE: Actual frequency is managed by firmware and is hidden + * from HLOS, so we simply use index in the opp-hz field to + * select the OPP. + */ + domain_opp_1: opp-1 { + opp-hz = /bits/ 64 <1>; + opp-microvolt = <975000 970000 985000>; + }; + domain_opp_2: opp-2 { + opp-hz = /bits/ 64 <2>; + opp-microvolt = <1075000 1000000 1085000>; + }; + }; + + + parent: power-controller@12340000 { + compatible = "foo,power-controller"; + reg = <0x12340000 0x1000>; + #power-domain-cells = <0>; + operating-points-v2 = <&domain_opp_table>; + }; + + leaky-device@12350000 { + compatible = "foo,i-leak-current"; + reg = <0x12350000 0x1000>; + power-domains = <&parent>; + power-domain-opp = <&domain_opp_2>; + }; + +- OPP table for domain provider that provides two domains. + + domain0_opp_table: opp_table0 { + compatible = "operating-points-v2"; + + /* + * NOTE: Actual frequency is managed by firmware and is hidden + * from HLOS, so we simply use index in the opp-hz field to + * select the OPP. + */ + domain0_opp_1: opp-1 { + opp-hz = /bits/ 64 <1>; + opp-microvolt = <975000 970000 985000>; + }; + domain0_opp_2: opp-2 { + opp-hz = /bits/ 64 <2>; + opp-microvolt = <1075000 1000000 1085000>; + }; + }; + + domain1_opp_table: opp_table1 { + compatible = "operating-points-v2"; + + /* + * NOTE: Actual frequency is managed by firmware and is hidden + * from HLOS, so we simply use index in the opp-hz field to + * select the OPP. + */ + domain1_opp_1: opp-1 { + opp-hz = /bits/ 64 <1>; + opp-microvolt = <975000 970000 985000>; + }; + domain1_opp_2: opp-2 { + opp-hz = /bits/ 64 <2>; + opp-microvolt = <1075000 1000000 1085000>; + }; + }; + + parent: power-controller@12340000 { + compatible = "foo,power-controller"; + reg = <0x12340000 0x1000>; + #power-domain-cells = <1>; + operating-points-v2 = <&domain0_opp_table>, <&domain1_opp_table>; + }; + + leaky-device0@12350000 { + compatible = "foo,i-leak-current"; + reg = <0x12350000 0x1000>; + power-domains = <&parent 0>; + power-domain-opp = <&domain0_opp_2>; + }; + + leaky-device1@12350000 { + compatible = "foo,i-leak-current"; + reg = <0x12350000 0x1000>; + power-domains = <&parent 1>; + power-domain-opp = <&domain1_opp_2>; + }; + [1]. Documentation/devicetree/bindings/power/domain-idle-state.txt