From patchwork Tue Mar 22 00:47:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Collins X-Patchwork-Id: 12787991 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1706EC433F5 for ; Tue, 22 Mar 2022 00:49:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ms41nPIuaVWwGWEd6qg+N4n+omSL6awcpUaIuUO4L1c=; b=qCPznC6EicaxSO +GdnwWS8PVC5ROfjzgNl8QOR/chKS/kTtOvqBZO9GS91lWswPPFfOK38zNBniPSX33v1HAK9xh2vx A1RVUvi4JGgLcR7rt4vycwg6/8YZpHj25QzzYHT2aRUnf4D/4HPt+jzQVgWMNlK/wR5qxQtzS7c2P 2kOgUlCLvyGiorKURqBrvRDlLZVnR9U8SkM/pJyJ1GW1P1IRaGPiAj82ISEknc/ajvtF+y4lWPs9H CFC9wVJa8VzBSfRroF2qp7+K7vfS2QbHsD3TfLFmRGAzODO1wvrsIS6NcE8vkYcoPqbrzoVS6hPJx AImYOsnezClnb9RPj82g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWSgz-009YAX-0v; Tue, 22 Mar 2022 00:48:09 +0000 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWSgm-009Y5c-8F for linux-arm-kernel@lists.infradead.org; Tue, 22 Mar 2022 00:47:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1647910076; x=1679446076; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=ubdrenh8RZbdb9SUuFRL3yPGdNKdx7dpJeScfreUfxs=; b=ozbZL03mpLpG3wRyLNK+Mhq7Nli1k1b8AiGWslzkznetRDRzE4CAVyhp UU+b4i+dzxQPOzis7qnNXuL+6KJIt+fD1foEABkgF+b5aRbFeGAqKHNB/ dlhs2wxqGnTsVNx59XDjgMLGek6iaL15dsvJyvCxL4+svdMKilQnEpmLs U=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 21 Mar 2022 17:47:48 -0700 X-QCInternal: smtphost Received: from nasanex01b.na.qualcomm.com ([10.46.141.250]) by ironmsg05-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Mar 2022 17:47:48 -0700 Received: from collinsd-linux.qualcomm.com (10.80.80.8) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 21 Mar 2022 17:47:47 -0700 From: David Collins To: Rob Herring , Sudeep Holla , CC: David Collins , Mark Brown , Liam Girdwood , Cristian Marussi , , , , "Subbaraman Narayanamurthy" Subject: [PATCH v2 1/2] dt-bindings: firmware: arm, scmi: define support for name based regulators Date: Mon, 21 Mar 2022 17:47:19 -0700 Message-ID: <4c94b4351b8d38167e972df46fbc507f9499513a.1647909090.git.quic_collinsd@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01b.na.qualcomm.com (10.46.141.250) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220321_174756_360107_C5F61D50 X-CRM114-Status: GOOD ( 12.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Allow SCMI regulator subnodes to be specified either by ID using the "reg" property or by name using the "arm,scmi-domain-name" property. Name based SCMI regulator specification helps ensure that an SCMI agent doesn't need to be aware of the numbering scheme used for Voltage Domains by the SCMI platform. It also ensures that the correct Voltage Domain is selected for a given physical regulator. This cannot be guaranteed with numeric Voltage Domain IDs alone. Signed-off-by: David Collins --- .../devicetree/bindings/firmware/arm,scmi.yaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml index 5c4c6782e052..08cb5de967ac 100644 --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml @@ -155,7 +155,7 @@ properties: The list of all regulators provided by this SCMI controller. patternProperties: - '^regulators@[0-9a-f]+$': + '^regulator.+$': type: object $ref: "../regulator/regulator.yaml#" @@ -164,8 +164,17 @@ properties: maxItems: 1 description: Identifier for the voltage regulator. - required: - - reg + arm,scmi-domain-name: + description: + A string matching the name of the SCMI voltage domain for this + regulator. + $ref: "/schemas/types.yaml#/definitions/string" + + anyOf: + - required: + - reg + - required: + - arm,scmi-domain-name additionalProperties: false From patchwork Tue Mar 22 00:47:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Collins X-Patchwork-Id: 12787992 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EA2A7C433F5 for ; Tue, 22 Mar 2022 00:49:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=HwMAa2skDCXdpHEnr+6HCxC6awTx2qK0zPSx4AvHrx8=; b=QoQ7zSc3rlWPnW 1CFjCDyvrcI413jj+Rmi0ycAzureN0chkcx0RM8d8apMl5xjc3mID50MW/Ykpc6M2TzYXN9PSlDrr oNw3uFwUdbvv3fxnJDPFYBi8JYgB8YPpoEgOQKHKqxO1lLpdRrV7G6/vUovAudsDRlmzJkYWvZdH4 K4HOPfbkilK+QIFe4JQCNOnrfs1/0RcFgMXxdkgkLV3RCnCGbJN58Cij/h8uE9O5LxILsiU7pp7XD 39gOE+lyMVNE291jVqcvHUU9ijtxoihz18PXDUxh92LlLbu8NFzguiGxctkfWW1avK2/eSpr3/aBa k4czuVLZHC4Tn4TzTLMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWSh8-009YBF-4H; Tue, 22 Mar 2022 00:48:18 +0000 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWSgp-009Y5c-Tm for linux-arm-kernel@lists.infradead.org; Tue, 22 Mar 2022 00:48:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1647910079; x=1679446079; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=4Hfyz22PouTDUj0o7xhLSgeFJEeNsb/nS9a947rwT5E=; b=StboKVSJzp3fo8buKCIj7XBEGxWtaOs2/8/gdyIZRHja+z6dd3bwY/8B qesL1nn7SxRUNMdUrvuvNgYO3t6TL7yYvZR68juRPwl6N2WDlTDc93Q2q SBsykao387BqyllLCwyU1d32YT1eQcb8FQgke/xnI80k0JW334B8lhIpb 4=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 21 Mar 2022 17:47:48 -0700 X-QCInternal: smtphost Received: from nasanex01b.na.qualcomm.com ([10.46.141.250]) by ironmsg03-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Mar 2022 17:47:49 -0700 Received: from collinsd-linux.qualcomm.com (10.80.80.8) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 21 Mar 2022 17:47:48 -0700 From: David Collins To: Mark Brown , Liam Girdwood , Sudeep Holla CC: David Collins , Rob Herring , Cristian Marussi , , , , Subbaraman Narayanamurthy Subject: [PATCH v2 2/2] regulator: scmi: add support for registering SCMI regulators by name Date: Mon, 21 Mar 2022 17:47:20 -0700 Message-ID: <822eefd3ad25daf2da66c9257e2a69e93d9df5a4.1647909090.git.quic_collinsd@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01b.na.qualcomm.com (10.46.141.250) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220321_174800_003413_0037E99E X-CRM114-Status: GOOD ( 18.45 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support to register SCMI regulator subnodes based on an SCMI Voltage Domain name specified via the "arm,scmi-domain-name" device tree property. In doing so, make the "reg" property optional with the constraint that at least one of "reg" or "arm,scmi-domain-name" must be specified. If both are specified, then both must match the Voltage Domain data exposed by the SCMI platform. Name based SCMI regulator registration helps ensure that an SCMI agent doesn't need to be aware of the numbering scheme used for Voltage Domains by the SCMI platform. It also ensures that the correct Voltage Domain is selected for a given physical regulator. This cannot be guaranteed with numeric Voltage Domain IDs alone. Signed-off-by: David Collins --- drivers/regulator/scmi-regulator.c | 58 ++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/scmi-regulator.c b/drivers/regulator/scmi-regulator.c index 1f02f60ad136..15f9167b96ab 100644 --- a/drivers/regulator/scmi-regulator.c +++ b/drivers/regulator/scmi-regulator.c @@ -31,6 +31,7 @@ #include #include #include +#include #include static const struct scmi_voltage_proto_ops *voltage_ops; @@ -252,16 +253,67 @@ static int scmi_regulator_common_init(struct scmi_regulator *sreg) return 0; } +static int scmi_regulator_map_name(struct scmi_protocol_handle *ph, + struct scmi_regulator_info *rinfo, + const char *name) +{ + const struct scmi_voltage_info *vinfo; + int i; + + for (i = 0; i < rinfo->num_doms; i++) { + vinfo = voltage_ops->info_get(ph, i); + if (!vinfo) + continue; + if (!strncmp(vinfo->name, name, sizeof(vinfo->name))) + return i; + } + + return -ENODEV; +} + static int process_scmi_regulator_of_node(struct scmi_device *sdev, struct scmi_protocol_handle *ph, struct device_node *np, struct scmi_regulator_info *rinfo) { u32 dom, ret; + int name_dom; + const char *name; - ret = of_property_read_u32(np, "reg", &dom); - if (ret) - return ret; + dom = rinfo->num_doms; + if (of_find_property(np, "reg", NULL)) { + ret = of_property_read_u32(np, "reg", &dom); + if (ret) + return ret; + + if (dom >= rinfo->num_doms) + return -ENODEV; + } + + if (of_find_property(np, "arm,scmi-domain-name", NULL)) { + ret = of_property_read_string(np, "arm,scmi-domain-name", + &name); + if (ret) + return ret; + + name_dom = scmi_regulator_map_name(ph, rinfo, name); + if (name_dom < 0) { + dev_err(&sdev->dev, + "No SCMI Voltage Domain found named %s. Skipping: %s\n", + name, np->full_name); + return name_dom; + } + + if (dom >= rinfo->num_doms) + dom = name_dom; + + if (name_dom != dom) { + dev_err(&sdev->dev, + "SCMI Voltage Domain %s ID mismatch, %u (DT) != %d (firmware). Skipping: %s\n", + name, dom, name_dom, np->full_name); + return -EINVAL; + } + } if (dom >= rinfo->num_doms) return -ENODEV;