From patchwork Mon Mar 8 21:38:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Carriere X-Patchwork-Id: 395510 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2061980jai; Mon, 8 Mar 2021 13:38:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJwD9aTXltF41UugGRDkGlvE7sh8Of4tvTW+Cgxhgzi+9Im9ngKwCqSYm4mWb6hBvgsUoRqf X-Received: by 2002:a05:6402:2d0:: with SMTP id b16mr630635edx.194.1615239533377; Mon, 08 Mar 2021 13:38:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615239533; cv=none; d=google.com; s=arc-20160816; b=G7XXyd0iw6k6NlP68RhfdXbkuTfLUJQxu9YQK3GgC3eUThIO0p5jmgWWaKFdUuVy2Q 5qtIb4hb0x2Y6/dufFNjOsMOOBlc1DQYVMA2tf3CR82azaF6v5MCJlSt1Pb/ylu8JfS1 qjazacGKzdcmySOzNZZwZqpMAS5ZETO6B+uI053dNoQfkgAdMJJIqqcrVeFsdrgk/prI +yjMVUb4LJ9yUGI5G5OWXb6zdKghOFKPZ0CT/0aOGVetZgeL0QqTvYIqfKOV7c3ggYOq 4yy5N88kKPTLadc8WPvO/7UCj16HtTdGtkEysATkTfD2XAGiMUo9wgrj2fxtEJiRqviD O6mA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=pdYp6e3fFznWOqANC/GzYUPTPGzEAyatYU7+DxSPoMQ=; b=XlCBn6DdoPnOwnPhlQsmzIgQOvOHki95OV0qxEzsBoswlliyJxlgvrUoyD1+/bHh7P 88A7a6BZqn/YGRn/bx6pucjWOPMNvZzIhi1IRvWm2vJCwAts70ZgB/hU7mpCOVz40d8/ n0n6r6tT0xby0IcHFHvRcCNlk5gwwlIO3dRD+PBWFkzfwKGXDGNE96M/smloAW1KCrnM rHpdUBCJg5gCTDcm7ndAc1VTlclKK2gPtTZ4Q/vHG/wxJEfAbIa4nXmAcKe+Wp4o51UY Ag6wj4tHyroSoMV6JTFqgojNsFMhZD8iNJhRCSUXuqPSgvNvpwfR1JeMM4g+zkLv3cdR fpEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=q9VtVzf5; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id dj7si7616567edb.378.2021.03.08.13.38.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:53 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=q9VtVzf5; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 51E48826B2; Mon, 8 Mar 2021 22:38:40 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="q9VtVzf5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6A11082700; Mon, 8 Mar 2021 22:38:34 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 4D42582625 for ; Mon, 8 Mar 2021 22:38:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=etienne.carriere@linaro.org Received: by mail-wm1-x32c.google.com with SMTP id m20-20020a7bcb940000b029010cab7e5a9fso4682991wmi.3 for ; Mon, 08 Mar 2021 13:38:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=pdYp6e3fFznWOqANC/GzYUPTPGzEAyatYU7+DxSPoMQ=; b=q9VtVzf5eMzHyGncr82spOYmNWODiUw5gAMuf5ll8pcz4Fv0LfcFcAsbCmz/rEwtbW De4o+EUavnuEIKlEvGQuYcP1eMofr37+JwV6qZRy54xDDI1kK3cEwTj+/ecV3m0zgCE2 wBM55LAdQplwdGk/rxPulxtL7BFBG8d2Miy/MJffwWePcnWWxirN5cD+IX1+mK/IJIj4 yVTIjotSCdMnfb8o6QkT6P7JiQc6wfLgjCKBtPjBX+L8wQ5vNFp6fjjzt2DN0ZsDnYEH OD0Z7WWb6w5TNzQOEIQoRw+riCkAP3O9sJWey8Ftkebz+VS6KSRcR+22a1yb26C0g2Er ukrQ== 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; bh=pdYp6e3fFznWOqANC/GzYUPTPGzEAyatYU7+DxSPoMQ=; b=YEennn0gihophEqtPMJz4QjKcoY/bXPs04Rmp7CZ9mwpsM7/h+fjPKNJKsO684mFR6 XiLsmGkMCg+lHuSyDk5B0ha1WAQ/hsWadiDXOzqyNSRKjujHDcbylLfgxrIdwLLFT6tb ApHny0sxbNtlLV6GBeQ7v4pJeE/104caEFa+xh8WpHpJdJQ0xobrSCngnO8ThAFq1Wx5 OrUi+evLN9UNwT3NCDyvUWXtRIAnznUrMf6Axyepz4LLAqlSE3/k3RBiMAOROrA842iU nTjUOulKXP8bkt4fx2HJCkFilhKWVl/Zco4A2djZf0VxWFyi+O1Yl6xanHqdCiBcka3v OJZg== X-Gm-Message-State: AOAM5330kfmM4dj8oaQdL/KLiYGE+eLyxShdnmPXZws0U882oW9syiza DQYsdHvrQ3a9VAwNHcDET7469kPlqGVW2w== X-Received: by 2002:a1c:1f8f:: with SMTP id f137mr731239wmf.66.1615239507453; Mon, 08 Mar 2021 13:38:27 -0800 (PST) Received: from lmecxl0524.home (2a01cb058b85080038d9665c555bdad2.ipv6.abo.wanadoo.fr. [2a01:cb05:8b85:800:38d9:665c:555b:dad2]) by smtp.gmail.com with ESMTPSA id e8sm865238wme.14.2021.03.08.13.38.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:27 -0800 (PST) From: Etienne Carriere To: u-boot@lists.denx.de Cc: Simon Glass , Jaehoon Chung , Patrick Delaunay , Patrice Chotard , Etienne Carriere Subject: [PATCH v4 1/5] firmware: scmi: voltage regulator Date: Mon, 8 Mar 2021 22:38:06 +0100 Message-Id: <20210308213810.29535-1-etienne.carriere@linaro.org> X-Mailer: git-send-email 2.17.1 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Implement voltage regulators interfaced by the SCMI voltage domain protocol. The DT bindings are defined in the Linux kernel since SCMI voltage domain and regulators patches [1] and [2] integration in v5.11-rc7. Link: [1] https://github.com/torvalds/linux/commit/0f80fcec08e9c50b8d2992cf26495673765ebaba Link: [2] https://github.com/torvalds/linux/commit/2add5cacff3531e54c50b0832128299faa9f0563 Signed-off-by: Etienne Carriere --- Changes in v4: - define a device for SCMI voltage protocol that binds the SCMI regulators as suggested by Patrick. - removed Simon and Jaehoon tags since changes. Changes in v3: - applied review tags Changes in v2: - no change --- doc/device-tree-bindings/arm/arm,scmi.txt | 34 ++++ drivers/firmware/scmi/scmi_agent-uclass.c | 10 ++ drivers/power/regulator/Kconfig | 8 + drivers/power/regulator/Makefile | 1 + drivers/power/regulator/scmi_regulator.c | 195 ++++++++++++++++++++++ include/scmi_protocols.h | 113 +++++++++++++ 6 files changed, 361 insertions(+) create mode 100644 drivers/power/regulator/scmi_regulator.c -- 2.17.1 Reviewed-by: Jaehoon Chung diff --git a/doc/device-tree-bindings/arm/arm,scmi.txt b/doc/device-tree-bindings/arm/arm,scmi.txt index 1f293ea24..a76124f4a 100644 --- a/doc/device-tree-bindings/arm/arm,scmi.txt +++ b/doc/device-tree-bindings/arm/arm,scmi.txt @@ -62,6 +62,20 @@ Required properties: - #power-domain-cells : Should be 1. Contains the device or the power domain ID value used by SCMI commands. +Regulator bindings for the SCMI Regulator based on SCMI Message Protocol +------------------------------------------------------------ +An SCMI Regulator is permanently bound to a well defined SCMI Voltage Domain, +and should be always positioned as a root regulator. +It does not support any current operation. + +SCMI Regulators are grouped under a 'regulators' node which in turn is a child +of the SCMI Voltage protocol node inside the desired SCMI instance node. + +This binding uses the common regulator binding[6]. + +Required properties: + - reg : shall identify an existent SCMI Voltage Domain. + Sensor bindings for the sensors based on SCMI Message Protocol -------------------------------------------------------------- SCMI provides an API to access the various sensors on the SoC. @@ -105,6 +119,7 @@ Required sub-node properties: [3] Documentation/devicetree/bindings/thermal/thermal.txt [4] Documentation/devicetree/bindings/sram/sram.yaml [5] Documentation/devicetree/bindings/reset/reset.txt +[6] Documentation/devicetree/bindings/regulator/regulator.yaml Example: @@ -169,6 +184,25 @@ firmware { reg = <0x16>; #reset-cells = <1>; }; + + scmi_voltage: protocol@17 { + reg = <0x17>; + + regulators { + regulator_devX: regulator@0 { + reg = <0x0>; + regulator-max-microvolt = <3300000>; + }; + + regulator_devY: regulator@9 { + reg = <0x9>; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <4200000>; + }; + + ... + }; + }; }; }; diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c index 516e690ac..f13e46c36 100644 --- a/drivers/firmware/scmi/scmi_agent-uclass.c +++ b/drivers/firmware/scmi/scmi_agent-uclass.c @@ -79,6 +79,16 @@ static int scmi_bind_protocols(struct udevice *dev) if (IS_ENABLED(CONFIG_RESET_SCMI)) drv = DM_DRIVER_GET(scmi_reset_domain); break; + case SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN: + if (IS_ENABLED(CONFIG_DM_REGULATOR_SCMI)) { + node = ofnode_find_subnode(node, "regulators"); + if (!ofnode_valid(node)) { + dev_err(dev, "no regulators node\n"); + return -ENXIO; + } + drv = DM_DRIVER_GET(scmi_voltage_domain); + } + break; default: break; } diff --git a/drivers/power/regulator/Kconfig b/drivers/power/regulator/Kconfig index fbbea18c7..5d6180229 100644 --- a/drivers/power/regulator/Kconfig +++ b/drivers/power/regulator/Kconfig @@ -353,3 +353,11 @@ config DM_REGULATOR_TPS65941 TPS65941 series of PMICs have 5 single phase BUCKs that can also be configured in multi phase modes & 4 LDOs. The driver implements get/set api for value and enable. + +config DM_REGULATOR_SCMI + bool "Enable driver for SCMI voltage domain regulators" + depends on DM_REGULATOR + select SCMI_AGENT + help + Enable this option if you want to support regulators exposed through + the SCMI voltage domain protocol by a SCMI server. diff --git a/drivers/power/regulator/Makefile b/drivers/power/regulator/Makefile index 9d58112dc..b2f5972ea 100644 --- a/drivers/power/regulator/Makefile +++ b/drivers/power/regulator/Makefile @@ -30,3 +30,4 @@ obj-$(CONFIG_DM_REGULATOR_TPS65910) += tps65910_regulator.o obj-$(CONFIG_DM_REGULATOR_TPS62360) += tps62360_regulator.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_STPMIC1) += stpmic1.o obj-$(CONFIG_DM_REGULATOR_TPS65941) += tps65941_regulator.o +obj-$(CONFIG_DM_REGULATOR_SCMI) += scmi_regulator.o diff --git a/drivers/power/regulator/scmi_regulator.c b/drivers/power/regulator/scmi_regulator.c new file mode 100644 index 000000000..b3142bf4e --- /dev/null +++ b/drivers/power/regulator/scmi_regulator.c @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2020-2021 Linaro Limited + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * struct scmi_regulator_platdata - Platform data for a scmi voltage domain regulator + * @domain_id: ID representing the regulator for the related SCMI agent + */ +struct scmi_regulator_platdata { + u32 domain_id; +}; + +static int scmi_voltd_set_enable(struct udevice *dev, bool enable) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + struct scmi_voltd_config_set_in in = { + .domain_id = pdata->domain_id, + .config = enable ? SCMI_VOLTD_CONFIG_ON : SCMI_VOLTD_CONFIG_OFF, + }; + struct scmi_voltd_config_set_out out; + struct scmi_msg msg = SCMI_MSG_IN(SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN, + SCMI_VOLTAGE_DOMAIN_CONFIG_SET, + in, out); + int ret; + + ret = devm_scmi_process_msg(dev->parent->parent, &msg); + if (ret) + return ret; + + ret = scmi_to_linux_errno(out.status); + if (ret) + return ret; + + return ret; +} + +static int scmi_voltd_get_enable(struct udevice *dev) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + struct scmi_voltd_config_get_in in = { + .domain_id = pdata->domain_id, + }; + struct scmi_voltd_config_get_out out; + struct scmi_msg msg = SCMI_MSG_IN(SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN, + SCMI_VOLTAGE_DOMAIN_CONFIG_GET, + in, out); + int ret; + + ret = devm_scmi_process_msg(dev->parent->parent, &msg); + if (ret < 0) + return ret; + + ret = scmi_to_linux_errno(out.status); + if (ret < 0) + return ret; + + return out.config == SCMI_VOLTD_CONFIG_ON; +} + +static int scmi_voltd_set_voltage_level(struct udevice *dev, int uV) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + struct scmi_voltd_level_set_in in = { + .domain_id = pdata->domain_id, + .voltage_level = uV, + }; + struct scmi_voltd_level_set_out out; + struct scmi_msg msg = SCMI_MSG_IN(SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN, + SCMI_VOLTAGE_DOMAIN_LEVEL_SET, + in, out); + int ret; + + ret = devm_scmi_process_msg(dev->parent->parent, &msg); + if (ret < 0) + return ret; + + return scmi_to_linux_errno(out.status); +} + +static int scmi_voltd_get_voltage_level(struct udevice *dev) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + struct scmi_voltd_level_get_in in = { + .domain_id = pdata->domain_id, + }; + struct scmi_voltd_level_get_out out; + struct scmi_msg msg = SCMI_MSG_IN(SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN, + SCMI_VOLTAGE_DOMAIN_LEVEL_GET, + in, out); + int ret; + + ret = devm_scmi_process_msg(dev->parent->parent, &msg); + if (ret < 0) + return ret; + + ret = scmi_to_linux_errno(out.status); + if (ret < 0) + return ret; + + return out.voltage_level; +} + +static int scmi_regulator_of_to_plat(struct udevice *dev) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + fdt_addr_t reg; + + reg = dev_read_addr(dev); + if (reg == FDT_ADDR_T_NONE) + return -EINVAL; + + pdata->domain_id = (u32)reg; + + return 0; +} + +static int scmi_regulator_probe(struct udevice *dev) +{ + struct scmi_regulator_platdata *pdata = dev_get_plat(dev); + struct scmi_voltd_attr_in in = { 0 }; + struct scmi_voltd_attr_out out = { 0 }; + struct scmi_msg scmi_msg = { + .protocol_id = SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN, + .message_id = SCMI_VOLTAGE_DOMAIN_ATTRIBUTES, + .in_msg = (u8 *)&in, + .in_msg_sz = sizeof(in), + .out_msg = (u8 *)&out, + .out_msg_sz = sizeof(out), + }; + int ret; + + /* Check voltage domain is known from SCMI server */ + in.domain_id = pdata->domain_id; + + ret = devm_scmi_process_msg(dev->parent->parent, &scmi_msg); + if (ret) { + dev_err(dev, "Failed to query voltage domain %u: %d\n", + pdata->domain_id, ret); + return -ENXIO; + } + + return 0; +} + +static const struct dm_regulator_ops scmi_voltd_ops = { + .get_value = scmi_voltd_get_voltage_level, + .set_value = scmi_voltd_set_voltage_level, + .get_enable = scmi_voltd_get_enable, + .set_enable = scmi_voltd_set_enable, +}; + +U_BOOT_DRIVER(scmi_regulator) = { + .name = "scmi_regulator", + .id = UCLASS_REGULATOR, + .ops = &scmi_voltd_ops, + .probe = scmi_regulator_probe, + .of_to_plat = scmi_regulator_of_to_plat, + .plat_auto = sizeof(struct scmi_regulator_platdata), +}; + +static int scmi_regulator_bind(struct udevice *dev) +{ + struct driver *drv; + ofnode node; + int ret; + + drv = DM_DRIVER_GET(scmi_regulator); + + ofnode_for_each_subnode(node, dev_ofnode(dev)) { + ret = device_bind(dev, drv, ofnode_get_name(node), + NULL, node, NULL); + if (ret) + return ret; + } + + return 0; +} + +U_BOOT_DRIVER(scmi_voltage_domain) = { + .name = "scmi_voltage_domain", + .id = UCLASS_NOP, + .bind = scmi_regulator_bind, +}; diff --git a/include/scmi_protocols.h b/include/scmi_protocols.h index ccab97c96..2db71697e 100644 --- a/include/scmi_protocols.h +++ b/include/scmi_protocols.h @@ -23,6 +23,7 @@ enum scmi_std_protocol { SCMI_PROTOCOL_ID_CLOCK = 0x14, SCMI_PROTOCOL_ID_SENSOR = 0x15, SCMI_PROTOCOL_ID_RESET_DOMAIN = 0x16, + SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN = 0x17, }; enum scmi_status_code { @@ -176,4 +177,116 @@ struct scmi_rd_reset_out { s32 status; }; +/* + * SCMI Voltage Domain Protocol + */ + +enum scmi_voltage_domain_message_id { + SCMI_VOLTAGE_DOMAIN_ATTRIBUTES = 0x3, + SCMI_VOLTAGE_DOMAIN_CONFIG_SET = 0x5, + SCMI_VOLTAGE_DOMAIN_CONFIG_GET = 0x6, + SCMI_VOLTAGE_DOMAIN_LEVEL_SET = 0x7, + SCMI_VOLTAGE_DOMAIN_LEVEL_GET = 0x8, +}; + +#define SCMI_VOLTD_NAME_LEN 16 + +#define SCMI_VOLTD_CONFIG_MASK GENMASK(3, 0) +#define SCMI_VOLTD_CONFIG_OFF 0 +#define SCMI_VOLTD_CONFIG_ON 0x7 + +/** + * struct scmi_voltd_attr_in - Payload for VOLTAGE_DOMAIN_ATTRIBUTES message + * @domain_id: SCMI voltage domain ID + */ +struct scmi_voltd_attr_in { + u32 domain_id; +}; + +/** + * struct scmi_voltd_attr_out - Payload for VOLTAGE_DOMAIN_ATTRIBUTES response + * @status: SCMI command status + * @attributes: Retrieved attributes of the voltage domain + * @name: Voltage domain name + */ +struct scmi_voltd_attr_out { + s32 status; + u32 attributes; + char name[SCMI_VOLTD_NAME_LEN]; +}; + +/** + * struct scmi_voltd_config_set_in - Message payload for VOLTAGE_CONFIG_SET cmd + * @domain_id: SCMI voltage domain ID + * @config: Configuration data of the voltage domain + */ +struct scmi_voltd_config_set_in { + u32 domain_id; + u32 config; +}; + +/** + * struct scmi_voltd_config_set_out - Response for VOLTAGE_CONFIG_SET command + * @status: SCMI command status + */ +struct scmi_voltd_config_set_out { + s32 status; +}; + +/** + * struct scmi_voltd_config_get_in - Message payload for VOLTAGE_CONFIG_GET cmd + * @domain_id: SCMI voltage domain ID + */ +struct scmi_voltd_config_get_in { + u32 domain_id; +}; + +/** + * struct scmi_voltd_config_get_out - Response for VOLTAGE_CONFIG_GET command + * @status: SCMI command status + * @config: Configuration data of the voltage domain + */ +struct scmi_voltd_config_get_out { + s32 status; + u32 config; +}; + +/** + * struct scmi_voltd_level_set_in - Message payload for VOLTAGE_LEVEL_SET cmd + * @domain_id: SCMI voltage domain ID + * @flags: Parameter flags for configuring target level + * @voltage_level: Target voltage level in microvolts (uV) + */ +struct scmi_voltd_level_set_in { + u32 domain_id; + u32 flags; + s32 voltage_level; +}; + +/** + * struct scmi_voltd_level_set_out - Response for VOLTAGE_LEVEL_SET command + * @status: SCMI command status + */ +struct scmi_voltd_level_set_out { + s32 status; +}; + +/** + * struct scmi_voltd_level_get_in - Message payload for VOLTAGE_LEVEL_GET cmd + * @domain_id: SCMI voltage domain ID + */ +struct scmi_voltd_level_get_in { + u32 domain_id; +}; + +/** + * struct scmi_voltd_level_get_out - Response for VOLTAGE_LEVEL_GET command + * @status: SCMI command status + * @voltage_level: Voltage level in microvolts (uV) + */ +struct scmi_voltd_level_get_out { + s32 status; + s32 voltage_level; +}; + #endif /* _SCMI_PROTOCOLS_H */ From patchwork Mon Mar 8 21:38:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Carriere X-Patchwork-Id: 395513 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2062283jai; Mon, 8 Mar 2021 13:39:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJy+t8Rc+s68m+8ZWS5+JBHPBjcl1GAGIIwvccjof8So+RgRs0nzw1KMOzPiRDKuJqYY5xdl X-Received: by 2002:a17:906:b2cd:: with SMTP id cf13mr11879494ejb.181.1615239569399; Mon, 08 Mar 2021 13:39:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615239569; cv=none; d=google.com; s=arc-20160816; b=sPNvXBHHRjsMXVkCrEa2aEfA7hZnhLR0MzgEE3BGeA2j+4tyfEMzWFRKU1WME5Fje1 RMyyIY94XERZ60kRrueeHQPQ1kIL7j6FZiWpIn9RgSbPyaT0tx2Lha98mm/3sZfytFMj oa84mK2zY2VaZXsoNoK7Le51JAwaaiP0Me4Ll2tGIh+LipDAJMob7syCqKvZAApadzbc 6D2G+X+RRuRfKtWhcshV94FhpY1kZXaGalnpIBBeWqJMe2pabP38ovilJOPKHR7AFQ8x K7logFe2LCQFGYgIC3U6b9uq//8KRLjDbnijfbKS7lnH0s53FZ7lrmd+9pxVVraFFW+w ZpqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=AsYVw7uC6UjhIHWBkcRlNy5KTu/bd6IowzE32Cet2E8=; b=HJgfLioEH+x9EpgRo7+41Ek2z7p7HWkV4JvcekOZCgV5boxQezaz6LeH5Cjm7g5jom x8ssr+POOTSoZJkhtfjVNCcUm2oYU6I8UrZJx5ikew36my+bdFnlgamy1BenGxTuYdbj b7fpU/7szs9D0zltgcu4ijtmvAzT+SIoMIjjM80n29zBIsykoVvHXXruCJV0EV+ipZo/ u1u8Kk3Kx9x1qAAdUeNV3v09snGOz5fCGWWKVveOxq78FlOoMloDwpXtqUl0sooeQRZI DuoJSu7wiIZwRTooB7LOTqqhkDl9FRjT+nr8Ro7J148fStkIsFeJnXlHn4WHLz0zsWN4 qsQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xEDukCWl; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id w25si7660558eja.753.2021.03.08.13.39.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:39:29 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xEDukCWl; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A6712827D2; Mon, 8 Mar 2021 22:38:52 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="xEDukCWl"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6E98082700; Mon, 8 Mar 2021 22:38:39 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5161982652 for ; Mon, 8 Mar 2021 22:38:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=etienne.carriere@linaro.org Received: by mail-wr1-x432.google.com with SMTP id u16so13010136wrt.1 for ; Mon, 08 Mar 2021 13:38:28 -0800 (PST) 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; bh=AsYVw7uC6UjhIHWBkcRlNy5KTu/bd6IowzE32Cet2E8=; b=xEDukCWl0vEvxhdmat4PyvOtVKMytxl+UgD66ZlKErHdfelO27kl7TlaODfsZ3PIuZ cXxkvkgkmWui5PMsllwEF+g8DZcyc4apmW3eZ/FTphGrvhVu/Qh8ZX2nrtR8MxLshAeX TENshflPXgUI3MWrQIsSRZjjiVbsOFFbRYD1SVmZUipUY1gBHdEIAHs3da578BSq7WJk mT6RpZ1JupnK3K0svKyNvhvt1DO4x5GR2Ih6VybZd8Yoihwt2X/2uSxLeSpqrsp6wKeB XOEdvlihGOGLRDcX2SO+Xd3OVnYUoZnbilVnVH2sNX4ZguVsPtCQZffZICXRfwb051vW O1HQ== 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; bh=AsYVw7uC6UjhIHWBkcRlNy5KTu/bd6IowzE32Cet2E8=; b=LLt2871Voe6dp0yPlOCC5i8yN7tKLi+W8LvsuLE0fGW74aO4xkzvtFykjFB+xGgAXN XNVI6/ClcLSpU1FG/kxwLVAILCF27pEf1PmNtvhwIdGOj2/BeOwR/SPef9bim+kpisAe f+W2ZSdrH13IqpOAC6MMcvSCalPzmZkvpr6Tq5/aykisgcMMoc2yUAnzML0Bsrz++202 dAAKD4BqAAj7AnXToZYCoAFJjzqeuq4fUuTzmWukm3cxxOIul/wkVEj0hPAutTIEohSu lz8V82XmIZdKbY16mBZFWV3c3Q0MqTwDei1+P6houBtgbMH8g/SkTgwfA+hBB09g4A9U MUbg== X-Gm-Message-State: AOAM531obLsZJWiiJ0RKShCQbl2jzJDgILukZuSrfQZAK/807MW8S1DD 5E7eWLthMHb/Vr8K4pcQJpnieOc+PGRJOg== X-Received: by 2002:a5d:6a49:: with SMTP id t9mr25409448wrw.131.1615239507981; Mon, 08 Mar 2021 13:38:27 -0800 (PST) Received: from lmecxl0524.home (2a01cb058b85080038d9665c555bdad2.ipv6.abo.wanadoo.fr. [2a01:cb05:8b85:800:38d9:665c:555b:dad2]) by smtp.gmail.com with ESMTPSA id e8sm865238wme.14.2021.03.08.13.38.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:27 -0800 (PST) From: Etienne Carriere To: u-boot@lists.denx.de Cc: Simon Glass , Jaehoon Chung , Patrick Delaunay , Patrice Chotard , Etienne Carriere Subject: [PATCH v4 2/5] firmware: scmi: sandbox test for voltage regulator Date: Mon, 8 Mar 2021 22:38:07 +0100 Message-Id: <20210308213810.29535-2-etienne.carriere@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210308213810.29535-1-etienne.carriere@linaro.org> References: <20210308213810.29535-1-etienne.carriere@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Implement sandbox regulator devices for SCMI voltage domains and test them in DM scmi tests. Signed-off-by: Etienne Carriere Reviewed-by: Simon Glass Reviewed-by: Jaehoon Chung --- Changes in v4: - no change Changes in v3: - applied review tags Changes in v2: - don't test IS_ENABLED(CONFIG_DM_REGULATOR_SCMI) in test/dm/scmi.c, it's expected enabled when CONFIG_FIRMWARE_SCMI is enabled in sandbox. --- arch/sandbox/dts/test.dts | 23 +++ arch/sandbox/include/asm/scmi_test.h | 20 ++ configs/sandbox_defconfig | 1 + drivers/firmware/scmi/sandbox-scmi_agent.c | 203 ++++++++++++++++++- drivers/firmware/scmi/sandbox-scmi_devices.c | 25 ++- test/dm/scmi.c | 58 ++++++ 6 files changed, 327 insertions(+), 3 deletions(-) -- 2.17.1 diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index e95f4631b..14d6983e7 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -451,6 +451,27 @@ reg = <0x16>; #reset-cells = <1>; }; + + protocol@17 { + reg = <0x17>; + + regulators { + #address-cells = <1>; + #size-cells = <0>; + + regul0_scmi0: reg@0 { + reg = <0>; + regulator-name = "sandbox-voltd0"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <3300000>; + }; + regul1_scmi0: reg@1 { + reg = <0x1>; + regulator-name = "sandbox-voltd1"; + regulator-min-microvolt = <1800000>; + }; + }; + }; }; sandbox-scmi-agent@1 { @@ -1217,6 +1238,8 @@ compatible = "sandbox,scmi-devices"; clocks = <&clk_scmi0 7>, <&clk_scmi0 3>, <&clk_scmi1 1>; resets = <&reset_scmi0 3>; + regul0-supply = <®ul0_scmi0>; + regul1-supply = <®ul1_scmi0>; }; pinctrl { diff --git a/arch/sandbox/include/asm/scmi_test.h b/arch/sandbox/include/asm/scmi_test.h index 3e8b0068f..9b7031531 100644 --- a/arch/sandbox/include/asm/scmi_test.h +++ b/arch/sandbox/include/asm/scmi_test.h @@ -31,6 +31,18 @@ struct sandbox_scmi_reset { bool asserted; }; +/** + * struct sandbox_scmi_voltd - Simulated voltage regulator exposed by SCMI + * @id: Identifier of the voltage domain used in the SCMI protocol + * @enabled: Regulator state: true if on, false if off + * @voltage_uv: Regulator current voltage in microvoltd (uV) + */ +struct sandbox_scmi_voltd { + uint id; + bool enabled; + int voltage_uv; +}; + /** * struct sandbox_scmi_agent - Simulated SCMI service seen by SCMI agent * @idx: Identifier for the SCMI agent, its index @@ -38,6 +50,8 @@ struct sandbox_scmi_reset { * @clk_count: Simulated clocks array size * @clk: Simulated reset domains * @clk_count: Simulated reset domains array size + * @voltd: Simulated voltage domains (regulators) + * @voltd_count: Simulated voltage domains array size */ struct sandbox_scmi_agent { uint idx; @@ -45,6 +59,8 @@ struct sandbox_scmi_agent { size_t clk_count; struct sandbox_scmi_reset *reset; size_t reset_count; + struct sandbox_scmi_voltd *voltd; + size_t voltd_count; }; /** @@ -63,12 +79,16 @@ struct sandbox_scmi_service { * @clk_count: Number of clock devices probed * @reset: Array the reset controller devices * @reset_count: Number of reset controller devices probed + * @regul: Array regulator devices + * @regul_count: Number of regulator devices probed */ struct sandbox_scmi_devices { struct clk *clk; size_t clk_count; struct reset_ctl *reset; size_t reset_count; + struct udevice **regul; + size_t regul_count; }; #ifdef CONFIG_SCMI_FIRMWARE diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 0c7674efc..790158445 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -214,6 +214,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_REGULATOR_RK8XX=y CONFIG_REGULATOR_S5M8767=y CONFIG_DM_REGULATOR_SANDBOX=y +CONFIG_DM_REGULATOR_SCMI=y CONFIG_REGULATOR_TPS65090=y CONFIG_DM_PWM=y CONFIG_PWM_SANDBOX=y diff --git a/drivers/firmware/scmi/sandbox-scmi_agent.c b/drivers/firmware/scmi/sandbox-scmi_agent.c index 35de68c75..3eafc49bd 100644 --- a/drivers/firmware/scmi/sandbox-scmi_agent.c +++ b/drivers/firmware/scmi/sandbox-scmi_agent.c @@ -19,14 +19,15 @@ * SCMI protocols embedded in U-Boot. Currently: * - SCMI clock protocol: emulate 2 agents each exposing few clocks * - SCMI reset protocol: emulate 1 agents each exposing a reset + * - SCMI voltage domain protocol: emulate 1 agent exposing 2 regulators * - * Agent #0 simulates 2 clocks and 1 reset domain. + * Agent #0 simulates 2 clocks, 1 reset domain and 1 voltage domain. * See IDs in scmi0_clk[]/scmi0_reset[] and "sandbox-scmi-agent@0" in test.dts. * * Agent #1 simulates 1 clock. * See IDs in scmi1_clk[] and "sandbox-scmi-agent@1" in test.dts. * - * All clocks are default disabled and reset levels down. + * All clocks and regulators are default disabled and reset controller down. * * This Driver exports sandbox_scmi_service_ct() for the test sequence to * get the state of the simulated services (clock state, rate, ...) and @@ -45,6 +46,11 @@ static struct sandbox_scmi_reset scmi0_reset[] = { { .id = 3 }, }; +static struct sandbox_scmi_voltd scmi0_voltd[] = { + { .id = 0, .voltage_uv = 3300000 }, + { .id = 1, .voltage_uv = 1800000 }, +}; + static struct sandbox_scmi_clk scmi1_clk[] = { { .id = 1, .rate = 44 }, }; @@ -81,6 +87,13 @@ static void debug_print_agent_state(struct udevice *dev, char *str) agent->reset_count, agent->reset_count ? agent->reset[0].asserted : -1, agent->reset_count > 1 ? agent->reset[1].asserted : -1); + dev_dbg(dev, " scmi%u_voltd (%zu): %u/%d, %u/%d, ...\n", + agent->idx, + agent->voltd_count, + agent->voltd_count ? agent->voltd[0].enabled : -1, + agent->voltd_count ? agent->voltd[0].voltage_uv : -1, + agent->voltd_count ? agent->voltd[1].enabled : -1, + agent->voltd_count ? agent->voltd[1].voltage_uv : -1); }; static struct sandbox_scmi_clk *get_scmi_clk_state(uint agent_id, uint clock_id) @@ -123,6 +136,20 @@ static struct sandbox_scmi_reset *get_scmi_reset_state(uint agent_id, return NULL; } +static struct sandbox_scmi_voltd *get_scmi_voltd_state(uint agent_id, + uint domain_id) +{ + size_t n; + + if (agent_id == 0) { + for (n = 0; n < ARRAY_SIZE(scmi0_voltd); n++) + if (scmi0_voltd[n].id == domain_id) + return scmi0_voltd + n; + } + + return NULL; +} + /* * Sandbox SCMI agent ops */ @@ -290,6 +317,160 @@ static int sandbox_scmi_rd_reset(struct udevice *dev, struct scmi_msg *msg) return 0; } +static int sandbox_scmi_voltd_attribs(struct udevice *dev, struct scmi_msg *msg) +{ + struct sandbox_scmi_agent *agent = dev_get_priv(dev); + struct scmi_voltd_attr_in *in = NULL; + struct scmi_voltd_attr_out *out = NULL; + struct sandbox_scmi_voltd *voltd_state = NULL; + + if (!msg->in_msg || msg->in_msg_sz < sizeof(*in) || + !msg->out_msg || msg->out_msg_sz < sizeof(*out)) + return -EINVAL; + + in = (struct scmi_voltd_attr_in *)msg->in_msg; + out = (struct scmi_voltd_attr_out *)msg->out_msg; + + voltd_state = get_scmi_voltd_state(agent->idx, in->domain_id); + if (!voltd_state) { + dev_err(dev, "Unexpected domain ID %u\n", in->domain_id); + + out->status = SCMI_NOT_FOUND; + } else { + memset(out, 0, sizeof(*out)); + snprintf(out->name, sizeof(out->name), "regu%u", in->domain_id); + + out->status = SCMI_SUCCESS; + } + + return 0; +} + +static int sandbox_scmi_voltd_config_set(struct udevice *dev, + struct scmi_msg *msg) +{ + struct sandbox_scmi_agent *agent = dev_get_priv(dev); + struct scmi_voltd_config_set_in *in = NULL; + struct scmi_voltd_config_set_out *out = NULL; + struct sandbox_scmi_voltd *voltd_state = NULL; + + if (!msg->in_msg || msg->in_msg_sz < sizeof(*in) || + !msg->out_msg || msg->out_msg_sz < sizeof(*out)) + return -EINVAL; + + in = (struct scmi_voltd_config_set_in *)msg->in_msg; + out = (struct scmi_voltd_config_set_out *)msg->out_msg; + + voltd_state = get_scmi_voltd_state(agent->idx, in->domain_id); + if (!voltd_state) { + dev_err(dev, "Unexpected domain ID %u\n", in->domain_id); + + out->status = SCMI_NOT_FOUND; + } else if (in->config & ~SCMI_VOLTD_CONFIG_MASK) { + dev_err(dev, "Invalid config value 0x%x\n", in->config); + + out->status = SCMI_INVALID_PARAMETERS; + } else if (in->config != SCMI_VOLTD_CONFIG_ON && + in->config != SCMI_VOLTD_CONFIG_OFF) { + dev_err(dev, "Unexpected custom value 0x%x\n", in->config); + + out->status = SCMI_INVALID_PARAMETERS; + } else { + voltd_state->enabled = in->config == SCMI_VOLTD_CONFIG_ON; + out->status = SCMI_SUCCESS; + } + + return 0; +} + +static int sandbox_scmi_voltd_config_get(struct udevice *dev, + struct scmi_msg *msg) +{ + struct sandbox_scmi_agent *agent = dev_get_priv(dev); + struct scmi_voltd_config_get_in *in = NULL; + struct scmi_voltd_config_get_out *out = NULL; + struct sandbox_scmi_voltd *voltd_state = NULL; + + if (!msg->in_msg || msg->in_msg_sz < sizeof(*in) || + !msg->out_msg || msg->out_msg_sz < sizeof(*out)) + return -EINVAL; + + in = (struct scmi_voltd_config_get_in *)msg->in_msg; + out = (struct scmi_voltd_config_get_out *)msg->out_msg; + + voltd_state = get_scmi_voltd_state(agent->idx, in->domain_id); + if (!voltd_state) { + dev_err(dev, "Unexpected domain ID %u\n", in->domain_id); + + out->status = SCMI_NOT_FOUND; + } else { + if (voltd_state->enabled) + out->config = SCMI_VOLTD_CONFIG_ON; + else + out->config = SCMI_VOLTD_CONFIG_OFF; + + out->status = SCMI_SUCCESS; + } + + return 0; +} + +static int sandbox_scmi_voltd_level_set(struct udevice *dev, + struct scmi_msg *msg) +{ + struct sandbox_scmi_agent *agent = dev_get_priv(dev); + struct scmi_voltd_level_set_in *in = NULL; + struct scmi_voltd_level_set_out *out = NULL; + struct sandbox_scmi_voltd *voltd_state = NULL; + + if (!msg->in_msg || msg->in_msg_sz < sizeof(*in) || + !msg->out_msg || msg->out_msg_sz < sizeof(*out)) + return -EINVAL; + + in = (struct scmi_voltd_level_set_in *)msg->in_msg; + out = (struct scmi_voltd_level_set_out *)msg->out_msg; + + voltd_state = get_scmi_voltd_state(agent->idx, in->domain_id); + if (!voltd_state) { + dev_err(dev, "Unexpected domain ID %u\n", in->domain_id); + + out->status = SCMI_NOT_FOUND; + } else { + voltd_state->voltage_uv = in->voltage_level; + out->status = SCMI_SUCCESS; + } + + return 0; +} + +static int sandbox_scmi_voltd_level_get(struct udevice *dev, + struct scmi_msg *msg) +{ + struct sandbox_scmi_agent *agent = dev_get_priv(dev); + struct scmi_voltd_level_get_in *in = NULL; + struct scmi_voltd_level_get_out *out = NULL; + struct sandbox_scmi_voltd *voltd_state = NULL; + + if (!msg->in_msg || msg->in_msg_sz < sizeof(*in) || + !msg->out_msg || msg->out_msg_sz < sizeof(*out)) + return -EINVAL; + + in = (struct scmi_voltd_level_get_in *)msg->in_msg; + out = (struct scmi_voltd_level_get_out *)msg->out_msg; + + voltd_state = get_scmi_voltd_state(agent->idx, in->domain_id); + if (!voltd_state) { + dev_err(dev, "Unexpected domain ID %u\n", in->domain_id); + + out->status = SCMI_NOT_FOUND; + } else { + out->voltage_level = voltd_state->voltage_uv; + out->status = SCMI_SUCCESS; + } + + return 0; +} + static int sandbox_scmi_test_process_msg(struct udevice *dev, struct scmi_msg *msg) { @@ -316,6 +497,22 @@ static int sandbox_scmi_test_process_msg(struct udevice *dev, break; } break; + case SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN: + switch (msg->message_id) { + case SCMI_VOLTAGE_DOMAIN_ATTRIBUTES: + return sandbox_scmi_voltd_attribs(dev, msg); + case SCMI_VOLTAGE_DOMAIN_CONFIG_SET: + return sandbox_scmi_voltd_config_set(dev, msg); + case SCMI_VOLTAGE_DOMAIN_CONFIG_GET: + return sandbox_scmi_voltd_config_get(dev, msg); + case SCMI_VOLTAGE_DOMAIN_LEVEL_SET: + return sandbox_scmi_voltd_level_set(dev, msg); + case SCMI_VOLTAGE_DOMAIN_LEVEL_GET: + return sandbox_scmi_voltd_level_get(dev, msg); + default: + break; + } + break; case SCMI_PROTOCOL_ID_BASE: case SCMI_PROTOCOL_ID_POWER_DOMAIN: case SCMI_PROTOCOL_ID_SYSTEM: @@ -367,6 +564,8 @@ static int sandbox_scmi_test_probe(struct udevice *dev) .clk_count = ARRAY_SIZE(scmi0_clk), .reset = scmi0_reset, .reset_count = ARRAY_SIZE(scmi0_reset), + .voltd = scmi0_voltd, + .voltd_count = ARRAY_SIZE(scmi0_voltd), }; break; case '1': diff --git a/drivers/firmware/scmi/sandbox-scmi_devices.c b/drivers/firmware/scmi/sandbox-scmi_devices.c index 1a6fafbf5..aab5782fd 100644 --- a/drivers/firmware/scmi/sandbox-scmi_devices.c +++ b/drivers/firmware/scmi/sandbox-scmi_devices.c @@ -1,16 +1,18 @@ // SPDX-License-Identifier: GPL-2.0 /* - * Copyright (C) 2020, Linaro Limited + * Copyright (C) 2020-2021, Linaro Limited */ #include #include #include +#include #include #include #include #include #include +#include /* * Simulate to some extent a SCMI exchange. @@ -21,16 +23,19 @@ #define SCMI_TEST_DEVICES_CLK_COUNT 3 #define SCMI_TEST_DEVICES_RD_COUNT 1 +#define SCMI_TEST_DEVICES_VOLTD_COUNT 2 /* * struct sandbox_scmi_device_priv - Storage for device handles used by test * @clk: Array of clock instances used by tests * @reset_clt: Array of the reset controller instances used by tests + * @regulators: Array of regulator device references used by the tests * @devices: Resources exposed by sandbox_scmi_devices_ctx() */ struct sandbox_scmi_device_priv { struct clk clk[SCMI_TEST_DEVICES_CLK_COUNT]; struct reset_ctl reset_ctl[SCMI_TEST_DEVICES_RD_COUNT]; + struct udevice *regulators[SCMI_TEST_DEVICES_VOLTD_COUNT]; struct sandbox_scmi_devices devices; }; @@ -74,6 +79,8 @@ static int sandbox_scmi_devices_probe(struct udevice *dev) .clk_count = SCMI_TEST_DEVICES_CLK_COUNT, .reset = priv->reset_ctl, .reset_count = SCMI_TEST_DEVICES_RD_COUNT, + .regul = priv->regulators, + .regul_count = SCMI_TEST_DEVICES_VOLTD_COUNT, }; for (n = 0; n < SCMI_TEST_DEVICES_CLK_COUNT; n++) { @@ -92,8 +99,24 @@ static int sandbox_scmi_devices_probe(struct udevice *dev) } } + for (n = 0; n < SCMI_TEST_DEVICES_VOLTD_COUNT; n++) { + char name[32]; + + ret = snprintf(name, sizeof(name), "regul%zu-supply", n); + assert(ret >= 0 && ret < sizeof(name)); + + ret = device_get_supply_regulator(dev, name, + priv->devices.regul + n); + if (ret) { + dev_err(dev, "%s: Failed on voltd %zu\n", __func__, n); + goto err_regul; + } + } + return 0; +err_regul: + n = SCMI_TEST_DEVICES_RD_COUNT; err_reset: for (; n > 0; n--) reset_free(priv->devices.reset + n - 1); diff --git a/test/dm/scmi.c b/test/dm/scmi.c index be60b44b3..792410338 100644 --- a/test/dm/scmi.c +++ b/test/dm/scmi.c @@ -20,6 +20,7 @@ #include #include #include +#include #include static int ut_assert_scmi_state_preprobe(struct unit_test_state *uts) @@ -47,6 +48,7 @@ static int ut_assert_scmi_state_postprobe(struct unit_test_state *uts, ut_asserteq(3, scmi_devices->clk_count); if (IS_ENABLED(CONFIG_RESET_SCMI)) ut_asserteq(1, scmi_devices->reset_count); + ut_asserteq(2, scmi_devices->regul_count); /* State of the simulated SCMI server exposed */ scmi_ctx = sandbox_scmi_service_ctx(); @@ -58,6 +60,8 @@ static int ut_assert_scmi_state_postprobe(struct unit_test_state *uts, ut_assertnonnull(scmi_ctx->agent[0]->clk); ut_asserteq(1, scmi_ctx->agent[0]->reset_count); ut_assertnonnull(scmi_ctx->agent[0]->reset); + ut_asserteq(2, scmi_ctx->agent[0]->voltd_count); + ut_assertnonnull(scmi_ctx->agent[0]->voltd); ut_assertnonnull(scmi_ctx->agent[1]); ut_assertnonnull(scmi_ctx->agent[1]->clk); @@ -201,3 +205,57 @@ static int dm_test_scmi_resets(struct unit_test_state *uts) } DM_TEST(dm_test_scmi_resets, UT_TESTF_SCAN_FDT); + +static int dm_test_scmi_voltage_domains(struct unit_test_state *uts) +{ + struct sandbox_scmi_devices *scmi_devices; + struct sandbox_scmi_service *scmi_ctx; + struct sandbox_scmi_voltd *sandbox_voltd; + struct dm_regulator_uclass_plat *uc_pdata; + struct udevice *dev; + struct udevice *regul_dev; + + ut_assertok(load_sandbox_scmi_test_devices(uts, &dev)); + + scmi_devices = sandbox_scmi_devices_ctx(dev); + scmi_ctx = sandbox_scmi_service_ctx(); + + /* Set/Get an SCMI voltage domain level */ + sandbox_voltd = &scmi_ctx->agent[0]->voltd[0]; + regul_dev = scmi_devices->regul[0]; + ut_assert(regul_dev); + + uc_pdata = dev_get_uclass_plat(regul_dev); + ut_assert(uc_pdata); + + ut_assertok(regulator_set_value(regul_dev, uc_pdata->min_uV)); + ut_asserteq(sandbox_voltd->voltage_uv, uc_pdata->min_uV); + + ut_assert(regulator_get_value(regul_dev) == uc_pdata->min_uV); + + ut_assertok(regulator_set_value(regul_dev, uc_pdata->max_uV)); + ut_asserteq(sandbox_voltd->voltage_uv, uc_pdata->max_uV); + + ut_assert(regulator_get_value(regul_dev) == uc_pdata->max_uV); + + /* Enable/disable SCMI voltage domains */ + ut_assertok(regulator_set_enable(scmi_devices->regul[0], false)); + ut_assertok(regulator_set_enable(scmi_devices->regul[1], false)); + ut_assert(!scmi_ctx->agent[0]->voltd[0].enabled); + ut_assert(!scmi_ctx->agent[0]->voltd[1].enabled); + + ut_assertok(regulator_set_enable(scmi_devices->regul[0], true)); + ut_assert(scmi_ctx->agent[0]->voltd[0].enabled); + ut_assert(!scmi_ctx->agent[0]->voltd[1].enabled); + + ut_assertok(regulator_set_enable(scmi_devices->regul[1], true)); + ut_assert(scmi_ctx->agent[0]->voltd[0].enabled); + ut_assert(scmi_ctx->agent[0]->voltd[1].enabled); + + ut_assertok(regulator_set_enable(scmi_devices->regul[0], false)); + ut_assert(!scmi_ctx->agent[0]->voltd[0].enabled); + ut_assert(scmi_ctx->agent[0]->voltd[1].enabled); + + return release_sandbox_scmi_test_devices(uts, dev); +} +DM_TEST(dm_test_scmi_voltage_domains, UT_TESTF_SCAN_FDT); From patchwork Mon Mar 8 21:38:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Carriere X-Patchwork-Id: 395509 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2061853jai; Mon, 8 Mar 2021 13:38:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJz4p8QtCpWZyLKsCEbOMvE8114/d+6SHqr0Y8VokJH9XggWz6Dj/rZEQ0ThtapXWpPFXGdD X-Received: by 2002:a17:907:d09:: with SMTP id gn9mr10586775ejc.538.1615239519825; Mon, 08 Mar 2021 13:38:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615239519; cv=none; d=google.com; s=arc-20160816; b=oqaf2KoNBAciwgLaqpkl419WGh1B7ljM1VwBASpQv5SARquNO7d0keqD9DlOs9CU+L zCy9DrtT8HoRTw7Kwo5/k6cK5XhbTbnHcEujkl288VPsnWCGnobiLblplqBEkBg/Irw/ +kTDOWgIS7BndzTaQDlNYO6kVnOSv2K2EgJggKBfxNn3KpqxQ+7q796XNbTtn3D68ZJQ TPxkp6Fld31Cf6k85YMnGRN2B4OmYm6EKM5yhXIg+whomAy3jy7eGb6l3wzIyWCHuy+F P08LeZ3SxKRXVjAC4ni+/QtHPJ40YTXeTEIzDeWgkp/8QkfCvdNB+9qLVptVQX/+Y4ZS OCgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=RD0NbGg8AXnkocvGHMO5+/OFb3LsF2D+0QCCbdGSXEc=; b=kLTlzNsE+mlXZOOJ1Y3QqyWipQrou5KIN3xpMxRAw017npZk3htdn2SRFF77QP6+wu 90UDDXwPtDf3u02NFsJhvpSV7fpGcaPXXh8PIa/uVbfqJjodxxVRq/O6ezx1TZ8qxr/Y 1teD4pc5ZaQHptvH1VVoHH7DGgBqdJd3jYmdKf3OV9ZqwSTSpvkVhzP3Bcjw53Zsxnl3 dqp/sRPRWXOxCqwBfOGW8lMyvTTMR6Qx0XbxE4G73JrArfa/xPGXhgcvOv8u/Cnbtve7 Lg3fgsGcduIteDSVaYjjRheIwdLPsr/X5mA7KgiyDg6C11M58XXYUEhXCiTfz3JBNkGB a5tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mJOx3xoC; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id q21si7228220ejo.166.2021.03.08.13.38.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:39 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mJOx3xoC; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C79AE82699; Mon, 8 Mar 2021 22:38:35 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="mJOx3xoC"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 16DE382764; Mon, 8 Mar 2021 22:38:33 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5648D82699 for ; Mon, 8 Mar 2021 22:38:29 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=etienne.carriere@linaro.org Received: by mail-wm1-x335.google.com with SMTP id n22so373674wmc.2 for ; Mon, 08 Mar 2021 13:38:29 -0800 (PST) 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; bh=RD0NbGg8AXnkocvGHMO5+/OFb3LsF2D+0QCCbdGSXEc=; b=mJOx3xoC8ysXok7W8OEN6jf7XgvOXsI742FNxpXaq0tHG8RZDOGdCrMYNJDLwWCymB iWoDXCJs8IUxAYJGktu0xlDxPB9264ho0ZTynHO4vn+jaQzQ64e4ogl7qTbLjIaPtBWf Y/EaHrQY8nv1b35XePdbnn9WjODhqUQjnKwn3uKCAcImNy3++ijqCZ54txYtynBwi/HK eaHb8wq+5sXnGZXN5Kto4FPLnq0YHnJVWh+3bTHfeZAfohEvYTX3oWQOGsedir1FjbPo EwO3tRW78mtgK4xh9RdCGt8oMBLs3R1MiO6tHZ49gYVXUizeCDmdco/BhXpmZ3D0MhKy B+WA== 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; bh=RD0NbGg8AXnkocvGHMO5+/OFb3LsF2D+0QCCbdGSXEc=; b=CksPhi0rxhP7oCXqtg9Be8KtaUSlG5Zx2Por4hCpk+AeeT4FBP3GM1N21qQ0oIPA+9 yubyoZU+9p6BqTgeZwER+bZdn5qJVOkYH1zVkFewVogsRCTpl2YdWkqeH9+qP0h1IA1H ACjv3L0f4Kl967B4X0/C2tFA+zbzKd03KluWYuSl176y6uKxZxooqbN0DoxCoLNMiD7z l/svb5VIWhpqqh9HaWi7aTK+wBsL9Hd62IznNzZkGfyEQPsa4CCAOj1TQ8kU0YdRaHsp iXwCE86qeA4sPQQwnU0q++4Puo5AXaWKnQxk49UUaPLyFez1mcEN81GksAr9hxlQT2Sf Bq/w== X-Gm-Message-State: AOAM531yQEiF2JG4ZFHf8EabYOlMyZHpvo/ytTC64elNO1WBfhjWIUWm 4psS5b+btgPWXjbbU33Az7wquFJCFdlDjw== X-Received: by 2002:a1c:4c17:: with SMTP id z23mr718825wmf.17.1615239508449; Mon, 08 Mar 2021 13:38:28 -0800 (PST) Received: from lmecxl0524.home (2a01cb058b85080038d9665c555bdad2.ipv6.abo.wanadoo.fr. [2a01:cb05:8b85:800:38d9:665c:555b:dad2]) by smtp.gmail.com with ESMTPSA id e8sm865238wme.14.2021.03.08.13.38.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:28 -0800 (PST) From: Etienne Carriere To: u-boot@lists.denx.de Cc: Simon Glass , Jaehoon Chung , Patrick Delaunay , Patrice Chotard , Etienne Carriere Subject: [PATCH v4 3/5] firmware: scmi: fix inline comments and minor coding style issues Date: Mon, 8 Mar 2021 22:38:08 +0100 Message-Id: <20210308213810.29535-3-etienne.carriere@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210308213810.29535-1-etienne.carriere@linaro.org> References: <20210308213810.29535-1-etienne.carriere@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Fix inline comments and empty line in scmi driver and test files. Remove test on IS_ENABLED(CONFIG_*_SCMI) in test/dm/scmi.c since these configuration are expected enabled when CONFIG_FIRMWARE_SCMI is enabled in sandbox configuration. Signed-off-by: Etienne Carriere Reviewed-by: Simon Glass Reviewed-by: Jaehoon Chung --- Changes in v4: - no change Changes in v3: - applied review tags Changes in v2: - discard adding tests on IS_ENABLED(CONFIG_*_SCMI) in test/dm/scmi.c for the reason stated in commit log. --- arch/sandbox/include/asm/scmi_test.h | 5 +++-- drivers/firmware/scmi/sandbox-scmi_agent.c | 4 ++-- test/dm/scmi.c | 15 ++------------- 3 files changed, 7 insertions(+), 17 deletions(-) -- 2.17.1 diff --git a/arch/sandbox/include/asm/scmi_test.h b/arch/sandbox/include/asm/scmi_test.h index 9b7031531..2930e686d 100644 --- a/arch/sandbox/include/asm/scmi_test.h +++ b/arch/sandbox/include/asm/scmi_test.h @@ -24,6 +24,7 @@ struct sandbox_scmi_clk { /** * struct sandbox_scmi_reset - Simulated reset controller exposed by SCMI + * @id: Identifier of the reset controller used in the SCMI protocol * @asserted: Reset control state: true if asserted, false if desasserted */ struct sandbox_scmi_reset { @@ -48,8 +49,8 @@ struct sandbox_scmi_voltd { * @idx: Identifier for the SCMI agent, its index * @clk: Simulated clocks * @clk_count: Simulated clocks array size - * @clk: Simulated reset domains - * @clk_count: Simulated reset domains array size + * @reset: Simulated reset domains + * @reset_count: Simulated reset domains array size * @voltd: Simulated voltage domains (regulators) * @voltd_count: Simulated voltage domains array size */ diff --git a/drivers/firmware/scmi/sandbox-scmi_agent.c b/drivers/firmware/scmi/sandbox-scmi_agent.c index 3eafc49bd..56125a57b 100644 --- a/drivers/firmware/scmi/sandbox-scmi_agent.c +++ b/drivers/firmware/scmi/sandbox-scmi_agent.c @@ -18,7 +18,7 @@ * processing. It simulates few of the SCMI services for some of the * SCMI protocols embedded in U-Boot. Currently: * - SCMI clock protocol: emulate 2 agents each exposing few clocks - * - SCMI reset protocol: emulate 1 agents each exposing a reset + * - SCMI reset protocol: emulate 1 agent exposing a reset controller * - SCMI voltage domain protocol: emulate 1 agent exposing 2 regulators * * Agent #0 simulates 2 clocks, 1 reset domain and 1 voltage domain. @@ -29,7 +29,7 @@ * * All clocks and regulators are default disabled and reset controller down. * - * This Driver exports sandbox_scmi_service_ct() for the test sequence to + * This Driver exports sandbox_scmi_service_ctx() for the test sequence to * get the state of the simulated services (clock state, rate, ...) and * check back-end device state reflects the request send through the * various uclass devices, as clocks and reset controllers. diff --git a/test/dm/scmi.c b/test/dm/scmi.c index 792410338..2eaf06392 100644 --- a/test/dm/scmi.c +++ b/test/dm/scmi.c @@ -44,10 +44,8 @@ static int ut_assert_scmi_state_postprobe(struct unit_test_state *uts, scmi_devices = sandbox_scmi_devices_ctx(dev); ut_assertnonnull(scmi_devices); - if (IS_ENABLED(CONFIG_CLK_SCMI)) - ut_asserteq(3, scmi_devices->clk_count); - if (IS_ENABLED(CONFIG_RESET_SCMI)) - ut_asserteq(1, scmi_devices->reset_count); + ut_asserteq(3, scmi_devices->clk_count); + ut_asserteq(1, scmi_devices->reset_count); ut_asserteq(2, scmi_devices->regul_count); /* State of the simulated SCMI server exposed */ @@ -110,7 +108,6 @@ static int dm_test_scmi_sandbox_agent(struct unit_test_state *uts) return ret; } - DM_TEST(dm_test_scmi_sandbox_agent, UT_TESTF_SCAN_FDT); static int dm_test_scmi_clocks(struct unit_test_state *uts) @@ -121,9 +118,6 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) int ret_dev; int ret; - if (!IS_ENABLED(CONFIG_CLK_SCMI)) - return 0; - ret = load_sandbox_scmi_test_devices(uts, &dev); if (ret) return ret; @@ -172,7 +166,6 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) return release_sandbox_scmi_test_devices(uts, dev); } - DM_TEST(dm_test_scmi_clocks, UT_TESTF_SCAN_FDT); static int dm_test_scmi_resets(struct unit_test_state *uts) @@ -182,9 +175,6 @@ static int dm_test_scmi_resets(struct unit_test_state *uts) struct udevice *dev = NULL; int ret; - if (!IS_ENABLED(CONFIG_RESET_SCMI)) - return 0; - ret = load_sandbox_scmi_test_devices(uts, &dev); if (ret) return ret; @@ -203,7 +193,6 @@ static int dm_test_scmi_resets(struct unit_test_state *uts) return release_sandbox_scmi_test_devices(uts, dev); } - DM_TEST(dm_test_scmi_resets, UT_TESTF_SCAN_FDT); static int dm_test_scmi_voltage_domains(struct unit_test_state *uts) From patchwork Mon Mar 8 21:38:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Carriere X-Patchwork-Id: 395512 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2062170jai; Mon, 8 Mar 2021 13:39:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJz7FO79/zrLz0fndDO9AKQECp7/NCWvLRA5OnNRwiYenht/XcTqUyo+PCYbqrzTo36yQ/MI X-Received: by 2002:a17:906:3881:: with SMTP id q1mr17152906ejd.490.1615239556087; Mon, 08 Mar 2021 13:39:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615239556; cv=none; d=google.com; s=arc-20160816; b=kr50BtOl8KsqTKWTyclBiLdOwZHHHiTKp+UWrlJSUG7Cbh0IFOdRxz+robZzo06poi OfYOJVqeWqYj31GCRxZfoMElqGwh5SevoIMBjxKXe1vOUcoU/XaiMJFtW7r5cGG9pQfj pHV0PSNEBxZIvg7tgDn7AcdwQ4ajp6kD26XGfuqBJbA6/JGqWuD/mO4qElwOsMjv7Uca iBDoRgEqXEcRnu2gBXg3dn/7TVWbUxuJ6s5t9XiqdvuStY7zF0+RPNIXEttb6Nr5txu2 X0GSUP0s6w9stWulAax7QWkpZBEaoBzWur5tRPYd42sZ0si7VPcpeWgQzzhzNF0dCfmr DFaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=zMge/MdqAxoriKjvpg9+dWvINmk2NCFaSMM9dehnhjo=; b=bQgNeziwENdlyPN/cdUrMXpwlIrbotmI7pA+icbkdKAx42erstlydx+sebDMEB2oQ2 LIAx9JAciGkMSbTYXF3GEejkTVdnuzvrWyvTawvL47pejP+r7Z6nuC04O4wiEmKl0UZd PDGpozav+B+kZS4Jx7dRPzZmI2nziOJ+NWQU4x1Cd5CqPrApXYt8g/YS5+QHZl0cCzMO IlBLSymxhcZmMH+r4fXO2XvaiPQJSQ3nbA4ton5t4yxA508dsZ02tN0tuYuxuz7qpoOU 6FGPBmXEgS3LGu8BVUOHZkc0ksmavY7FxLN9EyWmb40Wu3zFd+vD/v7N8SETJEH0n7Ey DLgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pqSp+KWD; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id s23si7641584ejf.192.2021.03.08.13.39.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:39:16 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pqSp+KWD; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 935628279C; Mon, 8 Mar 2021 22:38:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="pqSp+KWD"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 1417882790; Mon, 8 Mar 2021 22:38:38 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BF956826B2 for ; Mon, 8 Mar 2021 22:38:29 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=etienne.carriere@linaro.org Received: by mail-wr1-x431.google.com with SMTP id h98so12975882wrh.11 for ; Mon, 08 Mar 2021 13:38:29 -0800 (PST) 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; bh=zMge/MdqAxoriKjvpg9+dWvINmk2NCFaSMM9dehnhjo=; b=pqSp+KWDkZG0UKumvBERXDTDG/V4Sr+vh1qFDYnoOgV1YJa3fCRolifbxd9cQTeXvA nD8N4TXWBrvFN/Bg/M1sVMiM/g9Ki79x0RBHPU6flg8E5SJDmKEDM83jAYUoCD1mPibX ZOM2vrlpivH2NxlpaKT49gFYyAnstskskAw4DtnJLZ8i3/BnFcCYQt/8y+rlqlTn2pDI j0Yd35ECSNjqLGnVS+vvpC6QNhjWbjayhT9bwgEwwDE9l9GnQLgqNg2qFzPJ9NUNxOX6 CUDNVZVIUR8QXdkCvvZWN7KMkAK0++NDoFVh5NtN81fafYKjGLyB1I5K0Ihw4mZTvmka dR2g== 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; bh=zMge/MdqAxoriKjvpg9+dWvINmk2NCFaSMM9dehnhjo=; b=mx8kb7NJSZKIFbffZ8QOt32mrw6gS0LNMzXqUpsYzkvYJdqo4Lx67sqveLCBX4XyGD +hT0GvrsbQzFsnu73QjBlvgeWC8B2WXvd7daS6vxFW53HwTLvM4An+zfJY3EsYhdKb+t fajN2kLsKFU9i87pMEOIZ8HUbADQX33fOoyooj7j+9EW2frMxVqXf4X85/518nc7rn4n UmTPF2NACj6unb9AJwMIyskVAzF030iTV/Rxv+RipCNKLm9blrd1wsO6qoc19RueIzLn YzIeuUeTQTkRzGa4VSLGpAtfjV+EvSyFofxtXDfq8sXIcrhLkw8A203TOi8RYG48lkzH +Ejg== X-Gm-Message-State: AOAM5336ktFwYLfZ0fTVIV0TB0y/xp+Znti+5RcFA/v8oxOLtMmq6ITk WZOpCIPG+HNNXBMgkSiFmCIzYWjBgDsFcA== X-Received: by 2002:a5d:698e:: with SMTP id g14mr24467852wru.127.1615239508985; Mon, 08 Mar 2021 13:38:28 -0800 (PST) Received: from lmecxl0524.home (2a01cb058b85080038d9665c555bdad2.ipv6.abo.wanadoo.fr. [2a01:cb05:8b85:800:38d9:665c:555b:dad2]) by smtp.gmail.com with ESMTPSA id e8sm865238wme.14.2021.03.08.13.38.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:28 -0800 (PST) From: Etienne Carriere To: u-boot@lists.denx.de Cc: Simon Glass , Jaehoon Chung , Patrick Delaunay , Patrice Chotard , Etienne Carriere Subject: [PATCH v4 4/5] test: scmi: add local variables for scmi agent reference Date: Mon, 8 Mar 2021 22:38:09 +0100 Message-Id: <20210308213810.29535-4-etienne.carriere@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210308213810.29535-1-etienne.carriere@linaro.org> References: <20210308213810.29535-1-etienne.carriere@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Add local variables agent0/agent1 to refer to SCMI sandbox context agent and ease readability of the test. For consistency, rename regul_dev to regul0_dev and remove sandbox_voltd in dm_test_scmi_voltage_domains(). Signed-off-by: Etienne Carriere --- Changes in v4 - no change Changes in v3 - new change added to the series, suggested from patch v2 review. --- test/dm/scmi.c | 100 +++++++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 45 deletions(-) -- 2.17.1 Reviewed-by: Simon Glass diff --git a/test/dm/scmi.c b/test/dm/scmi.c index 2eaf06392..c938e6d4f 100644 --- a/test/dm/scmi.c +++ b/test/dm/scmi.c @@ -39,6 +39,8 @@ static int ut_assert_scmi_state_postprobe(struct unit_test_state *uts, { struct sandbox_scmi_devices *scmi_devices; struct sandbox_scmi_service *scmi_ctx; + struct sandbox_scmi_agent *agent0; + struct sandbox_scmi_agent *agent1; /* Device references to check context against test sequence */ scmi_devices = sandbox_scmi_devices_ctx(dev); @@ -50,20 +52,22 @@ static int ut_assert_scmi_state_postprobe(struct unit_test_state *uts, /* State of the simulated SCMI server exposed */ scmi_ctx = sandbox_scmi_service_ctx(); + agent0 = scmi_ctx->agent[0]; + agent1 = scmi_ctx->agent[1]; ut_asserteq(2, scmi_ctx->agent_count); - ut_assertnonnull(scmi_ctx->agent[0]); - ut_asserteq(2, scmi_ctx->agent[0]->clk_count); - ut_assertnonnull(scmi_ctx->agent[0]->clk); - ut_asserteq(1, scmi_ctx->agent[0]->reset_count); - ut_assertnonnull(scmi_ctx->agent[0]->reset); - ut_asserteq(2, scmi_ctx->agent[0]->voltd_count); - ut_assertnonnull(scmi_ctx->agent[0]->voltd); + ut_assertnonnull(agent0); + ut_asserteq(2, agent0->clk_count); + ut_assertnonnull(agent0->clk); + ut_asserteq(1, agent0->reset_count); + ut_assertnonnull(agent0->reset); + ut_asserteq(2, agent0->voltd_count); + ut_assertnonnull(agent0->voltd); - ut_assertnonnull(scmi_ctx->agent[1]); - ut_assertnonnull(scmi_ctx->agent[1]->clk); - ut_asserteq(1, scmi_ctx->agent[1]->clk_count); + ut_assertnonnull(agent1); + ut_assertnonnull(agent1->clk); + ut_asserteq(1, agent1->clk_count); return 0; } @@ -114,6 +118,8 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) { struct sandbox_scmi_devices *scmi_devices; struct sandbox_scmi_service *scmi_ctx; + struct sandbox_scmi_agent *agent0; + struct sandbox_scmi_agent *agent1; struct udevice *dev = NULL; int ret_dev; int ret; @@ -124,6 +130,8 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) scmi_devices = sandbox_scmi_devices_ctx(dev); scmi_ctx = sandbox_scmi_service_ctx(); + agent0 = scmi_ctx->agent[0]; + agent1 = scmi_ctx->agent[1]; /* Test SCMI clocks rate manipulation */ ut_asserteq(1000, clk_get_rate(&scmi_devices->clk[0])); @@ -133,9 +141,9 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) ret_dev = clk_set_rate(&scmi_devices->clk[1], 1088); ut_assert(!ret_dev || ret_dev == 1088); - ut_asserteq(1000, scmi_ctx->agent[0]->clk[0].rate); - ut_asserteq(1088, scmi_ctx->agent[0]->clk[1].rate); - ut_asserteq(44, scmi_ctx->agent[1]->clk[0].rate); + ut_asserteq(1000, agent0->clk[0].rate); + ut_asserteq(1088, agent0->clk[1].rate); + ut_asserteq(44, agent1->clk[0].rate); ut_asserteq(1000, clk_get_rate(&scmi_devices->clk[0])); ut_asserteq(1088, clk_get_rate(&scmi_devices->clk[1])); @@ -146,23 +154,23 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts) ut_assert(!ret_dev || ret_dev == 333); /* Test SCMI clocks gating manipulation */ - ut_assert(!scmi_ctx->agent[0]->clk[0].enabled); - ut_assert(!scmi_ctx->agent[0]->clk[1].enabled); - ut_assert(!scmi_ctx->agent[1]->clk[0].enabled); + ut_assert(!agent0->clk[0].enabled); + ut_assert(!agent0->clk[1].enabled); + ut_assert(!agent1->clk[0].enabled); ut_asserteq(0, clk_enable(&scmi_devices->clk[1])); ut_asserteq(0, clk_enable(&scmi_devices->clk[2])); - ut_assert(!scmi_ctx->agent[0]->clk[0].enabled); - ut_assert(scmi_ctx->agent[0]->clk[1].enabled); - ut_assert(scmi_ctx->agent[1]->clk[0].enabled); + ut_assert(!agent0->clk[0].enabled); + ut_assert(agent0->clk[1].enabled); + ut_assert(agent1->clk[0].enabled); ut_assertok(clk_disable(&scmi_devices->clk[1])); ut_assertok(clk_disable(&scmi_devices->clk[2])); - ut_assert(!scmi_ctx->agent[0]->clk[0].enabled); - ut_assert(!scmi_ctx->agent[0]->clk[1].enabled); - ut_assert(!scmi_ctx->agent[1]->clk[0].enabled); + ut_assert(!agent0->clk[0].enabled); + ut_assert(!agent0->clk[1].enabled); + ut_assert(!agent1->clk[0].enabled); return release_sandbox_scmi_test_devices(uts, dev); } @@ -172,6 +180,7 @@ static int dm_test_scmi_resets(struct unit_test_state *uts) { struct sandbox_scmi_devices *scmi_devices; struct sandbox_scmi_service *scmi_ctx; + struct sandbox_scmi_agent *agent0; struct udevice *dev = NULL; int ret; @@ -181,15 +190,16 @@ static int dm_test_scmi_resets(struct unit_test_state *uts) scmi_devices = sandbox_scmi_devices_ctx(dev); scmi_ctx = sandbox_scmi_service_ctx(); + agent0 = scmi_ctx->agent[0]; /* Test SCMI resect controller manipulation */ - ut_assert(!scmi_ctx->agent[0]->reset[0].asserted) + ut_assert(!agent0->reset[0].asserted) ut_assertok(reset_assert(&scmi_devices->reset[0])); - ut_assert(scmi_ctx->agent[0]->reset[0].asserted) + ut_assert(agent0->reset[0].asserted) ut_assertok(reset_deassert(&scmi_devices->reset[0])); - ut_assert(!scmi_ctx->agent[0]->reset[0].asserted); + ut_assert(!agent0->reset[0].asserted); return release_sandbox_scmi_test_devices(uts, dev); } @@ -199,51 +209,51 @@ static int dm_test_scmi_voltage_domains(struct unit_test_state *uts) { struct sandbox_scmi_devices *scmi_devices; struct sandbox_scmi_service *scmi_ctx; - struct sandbox_scmi_voltd *sandbox_voltd; + struct sandbox_scmi_agent *agent0; struct dm_regulator_uclass_plat *uc_pdata; struct udevice *dev; - struct udevice *regul_dev; + struct udevice *regul0_dev; ut_assertok(load_sandbox_scmi_test_devices(uts, &dev)); scmi_devices = sandbox_scmi_devices_ctx(dev); scmi_ctx = sandbox_scmi_service_ctx(); + agent0 = scmi_ctx->agent[0]; /* Set/Get an SCMI voltage domain level */ - sandbox_voltd = &scmi_ctx->agent[0]->voltd[0]; - regul_dev = scmi_devices->regul[0]; - ut_assert(regul_dev); + regul0_dev = scmi_devices->regul[0]; + ut_assert(regul0_dev); - uc_pdata = dev_get_uclass_plat(regul_dev); + uc_pdata = dev_get_uclass_plat(regul0_dev); ut_assert(uc_pdata); - ut_assertok(regulator_set_value(regul_dev, uc_pdata->min_uV)); - ut_asserteq(sandbox_voltd->voltage_uv, uc_pdata->min_uV); + ut_assertok(regulator_set_value(regul0_dev, uc_pdata->min_uV)); + ut_asserteq(agent0->voltd[0].voltage_uv, uc_pdata->min_uV); - ut_assert(regulator_get_value(regul_dev) == uc_pdata->min_uV); + ut_assert(regulator_get_value(regul0_dev) == uc_pdata->min_uV); - ut_assertok(regulator_set_value(regul_dev, uc_pdata->max_uV)); - ut_asserteq(sandbox_voltd->voltage_uv, uc_pdata->max_uV); + ut_assertok(regulator_set_value(regul0_dev, uc_pdata->max_uV)); + ut_asserteq(agent0->voltd[0].voltage_uv, uc_pdata->max_uV); - ut_assert(regulator_get_value(regul_dev) == uc_pdata->max_uV); + ut_assert(regulator_get_value(regul0_dev) == uc_pdata->max_uV); /* Enable/disable SCMI voltage domains */ ut_assertok(regulator_set_enable(scmi_devices->regul[0], false)); ut_assertok(regulator_set_enable(scmi_devices->regul[1], false)); - ut_assert(!scmi_ctx->agent[0]->voltd[0].enabled); - ut_assert(!scmi_ctx->agent[0]->voltd[1].enabled); + ut_assert(!agent0->voltd[0].enabled); + ut_assert(!agent0->voltd[1].enabled); ut_assertok(regulator_set_enable(scmi_devices->regul[0], true)); - ut_assert(scmi_ctx->agent[0]->voltd[0].enabled); - ut_assert(!scmi_ctx->agent[0]->voltd[1].enabled); + ut_assert(agent0->voltd[0].enabled); + ut_assert(!agent0->voltd[1].enabled); ut_assertok(regulator_set_enable(scmi_devices->regul[1], true)); - ut_assert(scmi_ctx->agent[0]->voltd[0].enabled); - ut_assert(scmi_ctx->agent[0]->voltd[1].enabled); + ut_assert(agent0->voltd[0].enabled); + ut_assert(agent0->voltd[1].enabled); ut_assertok(regulator_set_enable(scmi_devices->regul[0], false)); - ut_assert(!scmi_ctx->agent[0]->voltd[0].enabled); - ut_assert(scmi_ctx->agent[0]->voltd[1].enabled); + ut_assert(!agent0->voltd[0].enabled); + ut_assert(agent0->voltd[1].enabled); return release_sandbox_scmi_test_devices(uts, dev); } From patchwork Mon Mar 8 21:38:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Carriere X-Patchwork-Id: 395511 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2062074jai; Mon, 8 Mar 2021 13:39:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJxSzdie4RGPTGDjerH7/pkhx9Ct0dMgNXDMHvnLJ12Gq7ZlAVe0apICauhqYkFR9mssD+gn X-Received: by 2002:a17:906:d790:: with SMTP id pj16mr16635427ejb.255.1615239546352; Mon, 08 Mar 2021 13:39:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615239546; cv=none; d=google.com; s=arc-20160816; b=jsUi3X5N9N4ySabFX5HGVmO5atgthub+e+4Hc7H8biRw1IFbMryTrHpbxW0D3W1T7O HPF29BPae6zRF7Df+uDrJ97M5xArGfFzhFTfP48XgMxTEp5SySATnQF7vWMNJfYQducp iPqgkNvVR/z1j7U8yY2xqsTI7N7+kKTM6750ANmVjlE+/TskulvMbTcH0D+OI+SuH4pt QQlYOLi6Ype3xbJ9wVwpBECFOXM4x7JFxXt27ozRqnOlKLE/J2dT7UvGhFc/XHSwMbwX 2n64wsrbbL/dhHkGHAcuZsrvsvWQmeINCuyEApMGBVR4blA7JDlTccrCz0cPJ5deuh54 AyeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=2EJFovB9i/U8GtNBJ0m0WRC2grMZRVQgqt1r+4GMuJU=; b=QKW8JLqTxiUeEr4i0cNdvER1QAnY2vRAl4batzjtN53AMT0YBtUzlKKVB5P13WSe04 lPc3IVwzwrSB3qv29EalSntKvWjJygx/Z5W4Sxt8dYAfy+e6rzOVgwxY5XV/zOKiKALj 8OTs5+Jyknk3OxpkIizm6MD/qfLzDsWuMMCh3Ox3dhmG/roD4qsqKw+nugOoeK4TDVRO VqiSI4C2hNf7PCV8aXdAF6d53cvHEoPI1IfhGQURxy6ra2AfxTDEAWwNBFPSwLyD3zwM LLVGMr6UZyf/uhnwabw4wNwqcds4cQ3DcPpA0BuxjuLOkoxJI/kMkvElz/YuBbY6d/Om a+OQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xFSqSlSF; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id f16si7601829eds.608.2021.03.08.13.39.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:39:06 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xFSqSlSF; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4F86F827B1; Mon, 8 Mar 2021 22:38:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="xFSqSlSF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 658BA82794; Mon, 8 Mar 2021 22:38:37 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 21C9C826CA for ; Mon, 8 Mar 2021 22:38:30 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=etienne.carriere@linaro.org Received: by mail-wr1-x434.google.com with SMTP id d15so13028369wrv.5 for ; Mon, 08 Mar 2021 13:38:30 -0800 (PST) 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; bh=2EJFovB9i/U8GtNBJ0m0WRC2grMZRVQgqt1r+4GMuJU=; b=xFSqSlSFVxJLbbYxfzIjmA+ABI62s//c/EVSzYLLO8g0Sr5Nv6PD07JgII/F95J6Yu TTjeTqlnMHcMthg4EdwIWKXW409Klp5ZSZXv2u4fTTFqNNoK8i76ystFKf0j7Jl9mmlB m+QRp1R+ThJb/YoSRZL9fNEsYxNjxpY1p/bFUEF5i9yjJWfM7FP+tQndc9tmFOZ2aYZ2 hMos5allcaWyUa5bDN6ocLxz8HwLkmhxeEynOllmJxXqBDI6Sn5lwTFmxkqk3PeiXjI/ ynU/LiQaY/wdOsoHioy4MRawWA+ScmAfXKnFnsWWJY+A7l5y2xVMKIEW+/9+ljMoIMJ2 06eg== 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; bh=2EJFovB9i/U8GtNBJ0m0WRC2grMZRVQgqt1r+4GMuJU=; b=LmMOZlZrSxZHYzo60jh21KcFhgi5orcxWTS8L3uHFEPOO8OqQPrlDf1TWNzuxFbNZc zoqU6LU+HoIzkghtD2qtzmQEAEs4Wzt5HUfmQHEbFQXciHMWSYRiCXPE3aVr4ckVe1gA fE8y+uwhLvzC7orq7dmnFbrVSidCz6l7QwMpBG4wzFct5p/niOGSH6OZK7XsmZ/S0Yw/ hwVhUlhYQiJ3x8O00edYI41bxADlUIJ6mtQWzmnTcJApE/kLyyMq+Jd2QRO5bo72bng/ 3UW/gihmtsZi2GOq3QlRfeKcSmpu0LUPFss8c3GelLZYZmUsM6e9pqGVB1oHQOuL2RNc MDtQ== X-Gm-Message-State: AOAM531sl5O0x33Ce5XOtgqe7/osSolajrubuk1TyyjIzvLctTckjGjI 5GCp9tphun234gGIHN4HdnqOAN34foSYJQ== X-Received: by 2002:a5d:4281:: with SMTP id k1mr1080857wrq.374.1615239509617; Mon, 08 Mar 2021 13:38:29 -0800 (PST) Received: from lmecxl0524.home (2a01cb058b85080038d9665c555bdad2.ipv6.abo.wanadoo.fr. [2a01:cb05:8b85:800:38d9:665c:555b:dad2]) by smtp.gmail.com with ESMTPSA id e8sm865238wme.14.2021.03.08.13.38.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 13:38:29 -0800 (PST) From: Etienne Carriere To: u-boot@lists.denx.de Cc: Simon Glass , Jaehoon Chung , Patrick Delaunay , Patrice Chotard , Etienne Carriere Subject: [PATCH v4 5/5] regulator: scmi: fix header file inclusion order Date: Mon, 8 Mar 2021 22:38:10 +0100 Message-Id: <20210308213810.29535-5-etienne.carriere@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210308213810.29535-1-etienne.carriere@linaro.org> References: <20210308213810.29535-1-etienne.carriere@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean Fix header file inclusion order in SCMI regulators driver. Signed-off-by: Etienne Carriere --- Changes in v4 - new change added to the series. --- drivers/firmware/scmi/scmi_agent-uclass.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 2.17.1 Reviewed-by: Simon Glass diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c index f13e46c36..91632588a 100644 --- a/drivers/firmware/scmi/scmi_agent-uclass.c +++ b/drivers/firmware/scmi/scmi_agent-uclass.c @@ -5,11 +5,10 @@ #include #include -#include #include #include #include - +#include #include #include