From patchwork Fri Aug 4 14:31:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 109403 Delivered-To: patch@linaro.org Received: by 10.140.101.6 with SMTP id t6csp2234149qge; Fri, 4 Aug 2017 07:32:11 -0700 (PDT) X-Received: by 10.84.139.195 with SMTP id 61mr3057327plr.445.1501857131880; Fri, 04 Aug 2017 07:32:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1501857131; cv=none; d=google.com; s=arc-20160816; b=LQakKNFdcWsMB5BXci1a1sI0P4pRJ1a08HIDLT5cX/31ZrMCSITvRivLeb0+KpbcQX xPBFAR9kjiB3DJh2FpdPGNakkRPPz0cPYsA0aoHr9Y6sK3sw0Psld5NY0z+A/6sqpvWK wuXmTVzzUu55FlsVF8qjAi0IrZynC5Ba1naUIS4MOmZ85h13v1jbgL25eb++TY3xctrY rhAdYgfTP87guqbfuvyEPqjx/xKTxAd0oEAGaj8d6bfOCd1Mu9h7jsVVQMAtZXQhca0v Nyyne4LEMau2KL0inm+KXiIYQ2Umz37XScHmvvKYjxZG9kcL3GkreBIMFW4PF0goAean 187w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=+0r0btmTHBI3/AGq8GtajBY6SAJbYyx7FmASuZs3ZMI=; b=y7mGJkwjnDqBiyHniErgSFQNQLM/1Xzuli6aP15JDZ4dgAacnh/8yvsqPkDn4L24sc +e1OsXOwE2ScP5evEemRkT6glSnkx0g1tZElisiATmbC8SItoL1RbRcp3u8iwamMyI3l 3vJs4JpIMJBvPw3JKjyOYl7Z5adI5kK4a+gO11j8kbSksDms6lk3Bu2+6SZsNNGOEoGN mxLKkp1i36UZiU8zf1eZLQewFEHIwQdod8r+o2noXT7jrjuuhkNIy/0VrQcFcbbrdDvZ Egj5kASqkI38RgwyHxwfnLEnmNmVcbGDVyzzTqV+KEYonJjTvN4uVlBe3fNYJVGKWLzu hZDQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v20si1103092pfj.370.2017.08.04.07.32.11; Fri, 04 Aug 2017 07:32:11 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752168AbdHDOcJ (ORCPT + 6 others); Fri, 4 Aug 2017 10:32:09 -0400 Received: from foss.arm.com ([217.140.101.70]:54184 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751304AbdHDOcH (ORCPT ); Fri, 4 Aug 2017 10:32:07 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 986DA1596; Fri, 4 Aug 2017 07:32:06 -0700 (PDT) Received: from e107155-lin.cambridge.arm.com (unknown [10.1.210.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 31D953F3E1; Fri, 4 Aug 2017 07:32:04 -0700 (PDT) From: Sudeep Holla To: ALKML , LKML , DTML Cc: Sudeep Holla , Roy Franz , Harb Abdulhamid , Nishanth Menon , Arnd Bergmann , Loc Ho , Alexey Klimov , Ryan Harkin , Jassi Brar , Rob Herring , Mark Rutland Subject: [PATCH v2 01/18] dt-bindings: mailbox: add support for mailbox client shared memory Date: Fri, 4 Aug 2017 15:31:27 +0100 Message-Id: <1501857104-11279-2-git-send-email-sudeep.holla@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1501857104-11279-1-git-send-email-sudeep.holla@arm.com> References: <1501857104-11279-1-git-send-email-sudeep.holla@arm.com> Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Many users of the mailbox controllers depend on the shared memory between the two end points to exchange the main data while using simple doorbell mechanism to alert the end points of the presence of a message. This patch defines device tree bindings to represent such shared memory in a generic way. Cc: Rob Herring Cc: Mark Rutland Acked-by: Rob Herring Signed-off-by: Sudeep Holla --- .../devicetree/bindings/mailbox/mailbox.txt | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) -- 2.7.4 -- 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/mailbox/mailbox.txt b/Documentation/devicetree/bindings/mailbox/mailbox.txt index be05b9746c69..af8ecee2ac68 100644 --- a/Documentation/devicetree/bindings/mailbox/mailbox.txt +++ b/Documentation/devicetree/bindings/mailbox/mailbox.txt @@ -23,6 +23,11 @@ assign appropriate mailbox channel to client drivers. Optional property: - mbox-names: List of identifier strings for each mailbox channel. +- shmem : List of phandle pointing to the shared memory(SHM) area between the + users of these mailboxes for IPC, one for each mailbox. This shared + memory can be part of any memory reserved for the purpose of this + communication between the mailbox client and the remote. + Example: pwr_cntrl: power { @@ -30,3 +35,26 @@ assign appropriate mailbox channel to client drivers. mbox-names = "pwr-ctrl", "rpc"; mboxes = <&mailbox 0 &mailbox 1>; }; + +Example with shared memory(shmem): + + sram: sram@50000000 { + compatible = "mmio-sram"; + reg = <0x50000000 0x10000>; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x50000000 0x10000>; + + cl_shmem: shmem@0 { + compatible = "client-shmem"; + reg = <0x0 0x200>; + }; + }; + + client@2e000000 { + ... + mboxes = <&mailbox 0>; + shmem = <&cl_shmem>; + .. + }; From patchwork Fri Aug 4 14:31:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 109408 Delivered-To: patch@linaro.org Received: by 10.140.101.6 with SMTP id t6csp2234656qge; Fri, 4 Aug 2017 07:32:35 -0700 (PDT) X-Received: by 10.84.216.30 with SMTP id m30mr3213963pli.218.1501857154939; Fri, 04 Aug 2017 07:32:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1501857154; cv=none; d=google.com; s=arc-20160816; b=WgaZ1xgGhyVVVk+eX4vM/6PSeDcHKa9aT3kdE9zk/NN7Nd4wH5BqCcCejxgQUVagYt xVjYCGm/35oBY7hTxFVqsCJdjDNVoDMbVQLWdDeFYkfR0rPMMkisdqg3IHcwolT0CqNP qv48hFa6kLD9k06kovDGO818F4bCATqby6/7plEfSUCWQaYSsIRvvfBKll+IrM6+o6bO Zy2IcDzB2wuRvLYDVmjMVCX5tQxeF4L7RLPWdAnVmBlX+lUPsRDFkdozmIpfjNWtMwGm MTmHtQZvHuxBXBd7ekGDsJEBK8iWEOAnqleKPe7f1YR4sYE1UASZKnBMlUWz54tmSxH7 LbUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=xXZyNzZRDNClLMOYFjiWLGQ+w2zEL7Xz3qnHxrNrpeY=; b=wyK5NboCz6aZuE0zt8CVN6M/vytVYm/z9LYdW3PJD8+Y98t2ExhqoniwvwvERTiHih pk6tJypFP2PkKYh9LeaMP7CW4ncbiAyZpcowYwiXh3swRcg0M5WYWSlJimgVbjy/Zlae o84luMXmpBoB/SJ8JCogMQjhAKFTovKR/j8Qze7iE7Tf6NtjbMRhnsaVmi0kY2EjU/BO vVSPg6uKNKvq1jlU7vQl3kOT7tWHy4+twjtEvgfXCfNH4vBVfUBmj85GP1D5sp/KIftT K+f3UU4PVqGNdDZLmT9SFU+Hs4dYmHXG+k09raOef/EKiMJHt3Fb8BoXPBkWa593mZZp YFHA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f6si1029133pgc.774.2017.08.04.07.32.34; Fri, 04 Aug 2017 07:32: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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752562AbdHDOcc (ORCPT + 6 others); Fri, 4 Aug 2017 10:32:32 -0400 Received: from foss.arm.com ([217.140.101.70]:54366 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752519AbdHDOcb (ORCPT ); Fri, 4 Aug 2017 10:32:31 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E6399168F; Fri, 4 Aug 2017 07:32:30 -0700 (PDT) Received: from e107155-lin.cambridge.arm.com (unknown [10.1.210.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C92B03F3E1; Fri, 4 Aug 2017 07:32:28 -0700 (PDT) From: Sudeep Holla To: ALKML , LKML , DTML Cc: Sudeep Holla , Roy Franz , Harb Abdulhamid , Nishanth Menon , Arnd Bergmann , Loc Ho , Alexey Klimov , Ryan Harkin , Jassi Brar Subject: [PATCH v2 11/18] firmware: arm_scmi: add option for polling based performance domain operations Date: Fri, 4 Aug 2017 15:31:37 +0100 Message-Id: <1501857104-11279-12-git-send-email-sudeep.holla@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1501857104-11279-1-git-send-email-sudeep.holla@arm.com> References: <1501857104-11279-1-git-send-email-sudeep.holla@arm.com> Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org In order to implement fast CPU DVFS switching, we need to perform all DVFS operations atomically. Since SCMI transfer already provide option to choose between pooling vs interrupt driven(default), we can opt for polling based transfers for set,get performance domain operations. This patch adds option to choose between polling vs interrupt driven SCMI transfers for set,get performance level operations. Cc: Arnd Bergmann Signed-off-by: Sudeep Holla --- drivers/firmware/arm_scmi/perf.c | 19 +++++++++++-------- include/linux/scmi_protocol.h | 8 ++++---- 2 files changed, 15 insertions(+), 12 deletions(-) -- 2.7.4 -- 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/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c index 13d84d829201..334e8ec321ed 100644 --- a/drivers/firmware/arm_scmi/perf.c +++ b/drivers/firmware/arm_scmi/perf.c @@ -305,8 +305,8 @@ static int scmi_perf_limits_get(const struct scmi_handle *handle, u32 domain, return ret; } -static int -scmi_perf_level_set(const struct scmi_handle *handle, u32 domain, u32 level) +static int scmi_perf_level_set(const struct scmi_handle *handle, u32 domain, + u32 level, bool poll) { int ret; struct scmi_xfer *t; @@ -317,6 +317,7 @@ scmi_perf_level_set(const struct scmi_handle *handle, u32 domain, u32 level) if (ret) return ret; + t->hdr.poll_completion = poll; lvl = t->tx.buf; lvl->domain = cpu_to_le32(domain); lvl->level = cpu_to_le32(level); @@ -327,8 +328,8 @@ scmi_perf_level_set(const struct scmi_handle *handle, u32 domain, u32 level) return ret; } -static int -scmi_perf_level_get(const struct scmi_handle *handle, u32 domain, u32 *level) +static int scmi_perf_level_get(const struct scmi_handle *handle, u32 domain, + u32 *level, bool poll) { int ret; struct scmi_xfer *t; @@ -338,6 +339,7 @@ scmi_perf_level_get(const struct scmi_handle *handle, u32 domain, u32 *level) if (ret) return ret; + t->hdr.poll_completion = poll; *(__le32 *)t->tx.buf = cpu_to_le32(domain); ret = scmi_do_xfer(handle, t); @@ -445,21 +447,22 @@ static int scmi_dvfs_get_transition_latency(struct device *dev) } static int scmi_dvfs_freq_set(const struct scmi_handle *handle, u32 domain, - unsigned long freq) + unsigned long freq, bool poll) { struct perf_dom_info *dom = perf_info.dom_info + domain; - return scmi_perf_level_set(handle, domain, freq / dom->mult_factor); + return scmi_perf_level_set(handle, domain, freq / dom->mult_factor, + poll); } static int scmi_dvfs_freq_get(const struct scmi_handle *handle, u32 domain, - unsigned long *freq) + unsigned long *freq, bool poll) { int ret; u32 level; struct perf_dom_info *dom = perf_info.dom_info + domain; - ret = scmi_perf_level_get(handle, domain, &level); + ret = scmi_perf_level_get(handle, domain, &level, poll); if (!ret) *freq = level * dom->mult_factor; diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h index d2a34cc9df8b..cf48fc3e2243 100644 --- a/include/linux/scmi_protocol.h +++ b/include/linux/scmi_protocol.h @@ -99,15 +99,15 @@ struct scmi_clk_ops { struct scmi_perf_ops { int (*limits_set)(const struct scmi_handle *, u32, u32, u32); int (*limits_get)(const struct scmi_handle *, u32, u32 *, u32 *); - int (*level_set)(const struct scmi_handle *, u32, u32); - int (*level_get)(const struct scmi_handle *, u32, u32 *); + int (*level_set)(const struct scmi_handle *, u32, u32, bool); + int (*level_get)(const struct scmi_handle *, u32, u32 *, bool); int (*limits_notify_enable)(const struct scmi_handle *, u32, bool); int (*level_notify_enable)(const struct scmi_handle *, u32, bool); int (*device_domain_id)(struct device *); int (*get_transition_latency)(struct device *); int (*add_opps_to_device)(struct device *); - int (*freq_set)(const struct scmi_handle *, u32, unsigned long); - int (*freq_get)(const struct scmi_handle *, u32, unsigned long *); + int (*freq_set)(const struct scmi_handle *, u32, unsigned long, bool); + int (*freq_get)(const struct scmi_handle *, u32, unsigned long *, bool); }; /**