From patchwork Fri Feb 23 16:23:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 129433 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp788985lja; Fri, 23 Feb 2018 08:24:08 -0800 (PST) X-Google-Smtp-Source: AH8x227hEz+IUmjxhrUyDIsB6eXg6eBM+y476Y84jO+UN829KgmQK/JNUyscZTyIJ1CvxIYdEUID X-Received: by 10.98.105.9 with SMTP id e9mr2299638pfc.226.1519403048171; Fri, 23 Feb 2018 08:24:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519403048; cv=none; d=google.com; s=arc-20160816; b=gnJylXgwDYfTIDStFYMF/541/VeaDBjQREH/r9xvFNlQmJ5fc9ndCdoxrhoeivKVCd W4gy1pqqMd9gdvnP6iZ9k3WMAKC4CwFrluRohvsN1l2WdI57M3E6lRasTUKRme2G/fen F1XBB127b3yX/F8Rlo/r/uQBuUQpmsU3ZSgpi5VYpmK95ieV/mul8buGdITow27LDjWN wZ2KtJtaxBivopj7DXFytWFpuod3LYfnr+APtF7PLhnY2b0SL+6COj2cXJkGTEzu5sCG dvkbn3VWhoX6KtAGgR7X8yXur9poB0BW/A74sSPb8F2ZeWrE/A4egB/ISCaeWO/YQLNo aYhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=gg2oS7dHj3Ziq+zQJEixJmNai7G6WtqnQQG4WyaqB18=; b=nyisLFvNSUTYm1/GeQrKh2jcST0NcUK/T8ovoaSHfXNxAe9iCk4RLcap3pPKEKUCx1 x+/d+rJmJ9drSRk1fyaFYrEMUpXcSFsMipQ1RqZ7BeEMkBieIseONEl2iBCaFPcj9j1r lDAR2j8igmACqAA0jUlS81mAYv4zW9or3Ir91lT8pE/BwT5PH0PY7UggsJD2H8OvqnuL CUEDs3sN0jBQSgClNT/UWb7zUV/OjiVK9u/dQoXnLc0rcXqN1BPoXm40SY38yJSl2vT5 /02P5Ttzsfzfm1m4wQXplqr7yWIoJLupg9WfKDF4Fl5Sne2n+RUJ/8ur08MlUX98A8G7 09gw== 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 132si1707133pgc.114.2018.02.23.08.24.07; Fri, 23 Feb 2018 08:24:08 -0800 (PST) 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 S1751597AbeBWQYG (ORCPT + 6 others); Fri, 23 Feb 2018 11:24:06 -0500 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:57192 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751432AbeBWQYG (ORCPT ); Fri, 23 Feb 2018 11:24:06 -0500 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 C46871529; Fri, 23 Feb 2018 08:24:05 -0800 (PST) Received: from e107155-lin.cambridge.arm.com (unknown [10.1.210.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6D7E63F25C; Fri, 23 Feb 2018 08:24:04 -0800 (PST) From: Sudeep Holla To: ALKML , LKML , DTML Cc: Sudeep Holla , Alexey Klimov , Arnd Bergmann , Greg Kroah-Hartman Subject: [PATCH v6 00/20] firmware: ARM System Control and Management Interface(SCMI) support Date: Fri, 23 Feb 2018 16:23:30 +0000 Message-Id: <1519403030-21189-1-git-send-email-sudeep.holla@arm.com> X-Mailer: git-send-email 2.7.4 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi all, ARM System Control and Management Interface(SCMI) is more flexible and easily extensible than any of the existing interfaces. Many vendors were involved in the making of this formal specification and is now published[1]. There is a strong trend in the industry to provide micro-controllers in systems to abstract various power, or other system management tasks. These controllers usually have similar interfaces, both in terms of the functions that are provided by them, and in terms of how requests are communicated to them. This specification is to standardise and avoid (any further) fragmentation in the design of such interface by various vendors. It currently doesn't support notification, asynchronous/delayed response, perf/power statistics region and sensor register region to name a few. Some of the ideas of message allocation/management are borrowed from TI SCI. Changes: v5[7]->v6: - Dropped notification APIs as it's not fully supported, leftovers from development - Removed unnecessary mutex usage for allocation - Replace udelay with cpu_relax, found nice helper spin_until_cond - Added inline to couple of functions in header files - Fixed few checkpatch errors v4[6]->v5: - Rebased to v4.15-rc6 - Updated all the gathered Ack/Reviewed-by tags(which includes all the drivers using SCMI protocol) v3[5]->v4[6]: - Added SCMI protocol bus to enumerate supported protocols as suggested by Arnd - Dropped the abstraction to mailbox as it may be optional v2[4]->v3: - Addressed various comments received so far(clock, hwmon and cpufreq drivers along with scmi drivers) - Hwmon driver now uses core layer to create and manage sysfs attributes - Added a shim layer to abstract the mailbox interface to support any custom adaptation required by the controller driver - Simple ARM MHU shim layer using newly added abstraction v1[3]->v2[4]: - Additional support for polling based DVFS and per protocol channels - Dependent drivers(clock, hwmon, cpufreq and power domains) - Various other review comments and issued found during testing addressed - Explicit binding for method dropped as even SMC based method are adviertised as mailbox RFC[2]->v1[3]: - Add generic mailbox binding for shared memory(Rob H) - Dropped compatibles per protocol(Suggested by Matt S) - Dropped lot of unnecessary pointer casting(Arnd B) - Dropped packing of structures(Arnd B) - Few other changes/additions based initial testing with firmware providing SCMI interface to OSPM -- Regards, Sudeep [1] http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/index.html [2] https://marc.info/?l=linux-kernel&m=149685193627620&w=2 [3] https://marc.info/?l=linux-arm-kernel&m=149849482623492&w=2 [4] https://marc.info/?l=devicetree&m=150185763105926&w=2 [5] https://marc.info/?l=devicetree&m=150660452015351&w=2 [6] https://marc.info/?l=devicetree&m=150972061408961&w=2 [7] https://marc.info/?l=devicetree&m=151846114506163&w=2 Sudeep Holla (20): dt-bindings: mailbox: add support for mailbox client shared memory dt-bindings: arm: add support for ARM System Control and Management Interface(SCMI) protocol firmware: arm_scmi: add basic driver infrastructure for SCMI firmware: arm_scmi: add common infrastructure and support for base protocol firmware: arm_scmi: add scmi protocol bus to enumerate protocol devices firmware: arm_scmi: add initial support for performance protocol firmware: arm_scmi: add initial support for clock protocol firmware: arm_scmi: add initial support for power protocol firmware: arm_scmi: add initial support for sensor protocol firmware: arm_scmi: probe and initialise all the supported protocols firmware: arm_scmi: add support for polling based SCMI transfers firmware: arm_scmi: add option for polling based performance domain operations firmware: arm_scmi: refactor in preparation to support per-protocol channels firmware: arm_scmi: add per-protocol channels support using idr objects firmware: arm_scmi: add device power domain support using genpd clk: add support for clocks provided by SCMI hwmon: (core) Add hwmon_max to hwmon_sensor_types enumeration hwmon: add support for sensors exported via ARM SCMI cpufreq: add support for CPU DVFS based on SCMI message protocol cpufreq: scmi: add support for fast frequency switching Documentation/devicetree/bindings/arm/arm,scmi.txt | 179 +++++ .../devicetree/bindings/mailbox/mailbox.txt | 28 + MAINTAINERS | 11 +- drivers/clk/Kconfig | 10 + drivers/clk/Makefile | 1 + drivers/clk/clk-scmi.c | 213 +++++ drivers/cpufreq/Kconfig.arm | 11 + drivers/cpufreq/Makefile | 1 + drivers/cpufreq/scmi-cpufreq.c | 272 +++++++ drivers/firmware/Kconfig | 34 + drivers/firmware/Makefile | 1 + drivers/firmware/arm_scmi/Makefile | 5 + drivers/firmware/arm_scmi/base.c | 264 ++++++ drivers/firmware/arm_scmi/bus.c | 232 ++++++ drivers/firmware/arm_scmi/clock.c | 353 +++++++++ drivers/firmware/arm_scmi/common.h | 116 +++ drivers/firmware/arm_scmi/driver.c | 882 +++++++++++++++++++++ drivers/firmware/arm_scmi/perf.c | 492 ++++++++++++ drivers/firmware/arm_scmi/power.c | 232 ++++++ drivers/firmware/arm_scmi/scmi_pm_domain.c | 140 ++++ drivers/firmware/arm_scmi/sensors.c | 302 +++++++ drivers/hwmon/Kconfig | 12 + drivers/hwmon/Makefile | 1 + drivers/hwmon/scmi-hwmon.c | 233 ++++++ include/linux/hwmon.h | 1 + include/linux/scmi_protocol.h | 288 +++++++ 26 files changed, 4309 insertions(+), 5 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/arm,scmi.txt create mode 100644 drivers/clk/clk-scmi.c create mode 100644 drivers/cpufreq/scmi-cpufreq.c create mode 100644 drivers/firmware/arm_scmi/Makefile create mode 100644 drivers/firmware/arm_scmi/base.c create mode 100644 drivers/firmware/arm_scmi/bus.c create mode 100644 drivers/firmware/arm_scmi/clock.c create mode 100644 drivers/firmware/arm_scmi/common.h create mode 100644 drivers/firmware/arm_scmi/driver.c create mode 100644 drivers/firmware/arm_scmi/perf.c create mode 100644 drivers/firmware/arm_scmi/power.c create mode 100644 drivers/firmware/arm_scmi/scmi_pm_domain.c create mode 100644 drivers/firmware/arm_scmi/sensors.c create mode 100644 drivers/hwmon/scmi-hwmon.c create mode 100644 include/linux/scmi_protocol.h -- 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