From patchwork Tue Jan 25 00:27:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Collins X-Patchwork-Id: 12723081 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 6EB14C433F5 for ; Tue, 25 Jan 2022 00:51:17 +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=FhlgvVD/oN+TsJhtZw0yqPsh5ptxoZE8gMr2AARrKXE=; b=j2JnL041fPTN4t XxlA3jYL46ELLDcZ6twAtLPXw0gHNQgJhpTyWlR/YQOn8y6I+3xe0ehwSH7PHM6sjKuR/SjU5xifS KBUCnCMrwziZPpKQ5Q6QzYQ0XKsp4oW4q1jlmgA9HRDRQWXohplTkU1H6+8S3py5r+8iE34TPv02n LaZVmHknfkuTssCYYfbwpJz6Z59xFmyK8KB1cz9quS0Hu3tsZzkYBSqzFF7atEJVBDCCSpZU+Agn+ wKfwqwPcdJXNuZtVDCeviHrhXCN+NUSvHZsM1MIm5Ez+kEbi5Or9HwQLgz0wK+dp4ccIjj2yimPXI 2ZWvlc6MxOR7Wf5T9MyQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCA1c-005rUa-OV; Tue, 25 Jan 2022 00:49:33 +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 1nC9gm-005jz4-9k for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 00:28:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1643070480; x=1674606480; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=2wr8SGhJDgwc1rii8kTEvDvFvWDeC6rw0Za8FEAfY5c=; b=poBnU/e0g084c5qNaBJ+ogxXtCPtabQWC+C8loEbX5g2+PKeS565XkI9 ylw5/zJvaX9b/SmG+3Y3FOT4+sQ2QtaYd6YQTURXjDUGWiSykBXBBQWxg vt16ek9G7KeXKlSaWvOAFenNoaY3WaLM0IcKQlvS/BkObLAzWVF4FptRA A=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-01.qualcomm.com with ESMTP; 24 Jan 2022 16:27:50 -0800 X-QCInternal: smtphost Received: from nasanex01b.na.qualcomm.com ([10.46.141.250]) by ironmsg01-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jan 2022 16:27:49 -0800 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.922.19; Mon, 24 Jan 2022 16:27:49 -0800 From: David Collins To: Rob Herring , Sudeep Holla , CC: David Collins , Mark Brown , Liam Girdwood , Cristian Marussi , , , , "Subbaraman Narayanamurthy" Subject: [RESEND PATCH 1/2] dt-bindings: firmware: arm, scmi: define support for name based regulators Date: Mon, 24 Jan 2022 16:27:35 -0800 Message-ID: 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-20220124_162800_507090_2CA43CCB X-CRM114-Status: GOOD ( 11.39 ) 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 "regulator-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 Reviewed-by: Rob Herring --- .../devicetree/bindings/firmware/arm,scmi.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml index 5c4c6782e052..bc4a84fe25d2 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,13 @@ properties: maxItems: 1 description: Identifier for the voltage regulator. - required: - - reg + regulator-name: true + + anyOf: + - required: + - reg + - required: + - regulator-name additionalProperties: false From patchwork Tue Jan 25 00:27:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Collins X-Patchwork-Id: 12723080 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 0763AC433EF for ; Tue, 25 Jan 2022 00:50: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=0K06kmd66AUE1sVl+C9mZE1mstYCYU6y+fiH2WDWWi8=; b=4rhEid/9AoAL9m YH11WHt/2QsOhaxLlg+KIEL3p0dcdFrZmvKblBwzs0yM91x+CZvjY5FxP6nGkfvY6usv6Au4sF7gh Wi+sz37PDlsLNKjObFlmGqQzU2h7T0yeLSl0cStVWpOYLNvFbqdYaZV82hQwNxLRt9GtH1YR4jV6x 3CeNl+Pt+uKskADhW21DgEsa4rH4th2I+Lb6gMIOAEKQJKFJD0wHu3DP0svJPoV6Mo4f30s4A9xLu imeLtx5qZ9/8ou+uAF0yDo2tOO7Ed3ZyBzgXX/BoHuvVMiOcBeb1ydfrb4GFK3Qqq7QWsSPNa/7le mqeEk0YOXCTol/Wbcq3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCA0n-005rB3-8R; Tue, 25 Jan 2022 00:48:42 +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 1nC9gl-005jx0-Bm for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 00:28:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1643070479; x=1674606479; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=lHW3hLnV/NwAlPaJvWLZeYHn/Z13jsz9Dd88QrFizYA=; b=Nnddf+wO1y3YCtxu/v4Tzr7AcEFjG7QuM7RUsb5db9Orvx3d5P4ct3QG 8RN0hCVvdxj3ahel61AkmDVFyirv5zGpt2iR65JDH1whZTjEFUjYFhebO a32ddMwDDXAnozTouMI8IBPFNJoAb0bSXvs51KL5VFVf3qk+Ffw94788P E=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 24 Jan 2022 16:27:50 -0800 X-QCInternal: smtphost Received: from nasanex01b.na.qualcomm.com ([10.46.141.250]) by ironmsg02-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jan 2022 16:27:50 -0800 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.922.19; Mon, 24 Jan 2022 16:27:49 -0800 From: David Collins To: Mark Brown , Liam Girdwood , Sudeep Holla CC: David Collins , Rob Herring , Cristian Marussi , , , , Subbaraman Narayanamurthy Subject: [RESEND PATCH 2/2] regulator: scmi: add support for registering SCMI regulators by name Date: Mon, 24 Jan 2022 16:27:36 -0800 Message-ID: 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-20220124_162759_478009_1A8CFF86 X-CRM114-Status: GOOD ( 18.06 ) 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 'regulator-name' device tree property. In doing so, make the 'reg' property optional with the constraint that at least one of 'reg' or 'regulator-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 | 57 ++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/scmi-regulator.c b/drivers/regulator/scmi-regulator.c index 1f02f60ad136..c3287901975e 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,66 @@ 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, "regulator-name", NULL)) { + ret = of_property_read_string(np, "regulator-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;