From mboxrd@z Thu Jan 1 00:00:00 1970 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 2AA41C3DA6F for ; Thu, 24 Aug 2023 18:35:44 +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:In-Reply-To:From:References:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TP0J31Hz0kPLA0Yc7Vj9xSNwIxw+smNpUBIiPOw5jpM=; b=cfgmEG0Gb7bgKi YbawA/JRNlFyks5JCVWLwWvD6q9fgwf46pW4YQbLvQHNHnelYgCaSlwKnNGHcm8J1k4ONkj6Uy6W+ ASVAX4VPk1cbesaRe2ZhuQMRkj4Cf72fmjMmdTQuZdFTHz54CWh1jNsFsLE1irve1Rp59KltM76uz kusMfCCeM8JnBW/9iS50NEJDBx1NFTnKM63QIuv1Qi4Gd0VZ86A2l848Ttwa3UlI8RWZ1yL2KUdxb /+hJE91255/bW7i8Prqpf/tfhXZ5PDiV5QPKITuQdAj535UG5ScPPquguo3EIJetgt2JSOsS2w7l4 rODnD0mbj3s/7giJ+UCg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZFAq-003bfM-1A; Thu, 24 Aug 2023 18:35:16 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZFAn-003ben-0C for linux-arm-kernel@lists.infradead.org; Thu, 24 Aug 2023 18:35:14 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2bc63e0d8cdso1243001fa.2 for ; Thu, 24 Aug 2023 11:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1692902110; x=1693506910; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=63IMv05Wwo79pfsmf+e0wX0GK3Q1zRO0q/xIjyXo/aY=; b=ldzTAUlb5sUN3Sv9DwwPtFk+2of5oPdIhSVhXVYc5DE+6lYaUPvyCznSM6dVSOyTAr kOjajgVtM3d+YzqXAkC6avIJwnxd5+o0t4GPXIVNXB1Ihpt8017fmxJpG4zxkgJiHtPC IVqd6mK/65oRQwMJXOuUCxbZ5yz00gSG+ekSTrOczM+QBDi3Bnii6kus+V7xUDn2abdV GaFiKPgFzid2y68/Ipnurg1H9yYJez738+jC+CSoB/XkvmP5KGoKgyQJfMqfhhPqyPwG T6ZLsM9NcQbT4vg2+u3lZBNa38sixSE+le/Y/ke/xiUxfB5Mr7/s4w+ulrxmbhl94eM+ p18Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692902110; x=1693506910; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=63IMv05Wwo79pfsmf+e0wX0GK3Q1zRO0q/xIjyXo/aY=; b=Dk0iILRTIoNvfVkQGQZARNbmFA07iyHj3DJVFdzR9Hpkp7yUI/bvNn3IbPZ+L5IP+3 KkaBFbyIgbcTv8f9BrOSV//pd1BLMDsc8mL/VfXoPKImk1bbovCHoHm6bYcsBE7shkWt K8nZZt7KDooFwhphYa6DCwvL3hK3tuKdS4wakomBAznTCnCaoK+y35UDSwzpvY/i6z0K 7ez3lckQPtJnLCo6UvhwNgO4ffidRt48fIhlETNabn9jZ4whib+8HBF3Pn2uE4v2Bke0 pVtRjXSVFZs17FxgGWA7Ryw0H4Tp9T+6Hr6425BecntSfOZE20P0c9BA1MoLxU14BcOL xupA== X-Gm-Message-State: AOJu0YzO7mbFCtiN1eGlRswtGZljpQ8oL5GY2QlIpbX20E2ljlYORmQD Bs7z9balxBsABDFobKrNEE7NVA== X-Google-Smtp-Source: AGHT+IEtd5lEmEoTesgIafxH/9D8vmp8+ZH+cx9fliUkshNJAGljW11juAwI+hqOSe/uPDY/dPfXhA== X-Received: by 2002:a2e:978c:0:b0:2bc:bb3e:1abe with SMTP id y12-20020a2e978c000000b002bcbb3e1abemr10525939lji.41.1692902110352; Thu, 24 Aug 2023 11:35:10 -0700 (PDT) Received: from [192.168.0.22] ([77.252.47.198]) by smtp.gmail.com with ESMTPSA id v18-20020a170906b01200b0098e78ff1a87sm11314650ejy.120.2023.08.24.11.35.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 24 Aug 2023 11:35:09 -0700 (PDT) Message-ID: Date: Thu, 24 Aug 2023 20:35:08 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [PATCH v5 07/11] firmware: imx: init-fw api exchange on imx93 Content-Language: en-US To: Pankaj Gupta , shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, clin@suse.com, conor+dt@kernel.org, pierre.gondois@arm.com, ping.bai@nxp.com, xiaoning.wang@nxp.com, wei.fang@nxp.com, peng.fan@nxp.com, haibo.chen@nxp.com, festevam@gmail.com, linux-imx@nxp.com, davem@davemloft.net, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, gaurav.jain@nxp.com, alexander.stein@ew.tq-group.com, sahil.malhotra@nxp.com, aisheng.dong@nxp.com, V.Sethi@nxp.com References: <20230823073330.1712721-1-pankaj.gupta@nxp.com> <20230823073330.1712721-8-pankaj.gupta@nxp.com> From: Krzysztof Kozlowski In-Reply-To: <20230823073330.1712721-8-pankaj.gupta@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_113513_108704_CB90A28E X-CRM114-Status: GOOD ( 29.82 ) 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: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 23/08/2023 09:33, Pankaj Gupta wrote: > On imx93 platforms, exchange init-fw message with enclave's firmware > is to be done. > > Signed-off-by: Pankaj Gupta > --- > drivers/firmware/imx/Makefile | 2 +- > drivers/firmware/imx/ele_fw_api.c | 56 +++++++++++++++++++++++++ > drivers/firmware/imx/se_fw.c | 11 +++++ > include/linux/firmware/imx/ele_fw_api.h | 19 +++++++++ > 4 files changed, 87 insertions(+), 1 deletion(-) > create mode 100644 drivers/firmware/imx/ele_fw_api.c > create mode 100644 include/linux/firmware/imx/ele_fw_api.h > > diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile > index eab3f03e2e5e..bc6ed5514a19 100644 > --- a/drivers/firmware/imx/Makefile > +++ b/drivers/firmware/imx/Makefile > @@ -2,5 +2,5 @@ > obj-$(CONFIG_IMX_DSP) += imx-dsp.o > obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o > obj-$(CONFIG_IMX_SCU_PD) += scu-pd.o > -sec_enclave-objs = se_fw.o ele_common.o ele_base_msg.o > +sec_enclave-objs = se_fw.o ele_common.o ele_base_msg.o ele_fw_api.o > obj-${CONFIG_IMX_SEC_ENCLAVE} += sec_enclave.o > diff --git a/drivers/firmware/imx/ele_fw_api.c b/drivers/firmware/imx/ele_fw_api.c > new file mode 100644 > index 000000000000..1df1fbcb6d9e > --- /dev/null > +++ b/drivers/firmware/imx/ele_fw_api.c > @@ -0,0 +1,56 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright 2023 NXP > + */ > + > +#include > +#include > + > +#include "ele_common.h" > + > +/* Fill a command message header with a given command ID and length in bytes. */ > +static int plat_fill_cmd_msg_hdr(struct ele_mu_priv *priv, > + struct mu_hdr *hdr, > + uint8_t cmd, uint32_t len) > +{ > + int err = 0; > + > + hdr->tag = priv->cmd_tag; > + hdr->ver = MESSAGING_VERSION_7; > + hdr->command = cmd; > + hdr->size = (uint8_t)(len / sizeof(uint32_t)); > + > + return err; > +} > + > +int ele_init_fw(struct device *dev) > +{ > + struct ele_mu_priv *priv = dev_get_drvdata(dev); > + int ret; > + unsigned int tag, command, size, ver, status; > + > + ret = plat_fill_cmd_msg_hdr(priv, > + (struct mu_hdr *)&priv->tx_msg.header, > + ELE_INIT_FW_REQ, 4); This is some weird code. Why do you store TX and RX messages in state container? This should be local to the function. > + if (ret) > + return ret; > + > + ret = imx_ele_msg_send_rcv(priv); > + if (ret < 0) > + return ret; > + > + tag = MSG_TAG(priv->rx_msg.header); > + command = MSG_COMMAND(priv->rx_msg.header); > + size = MSG_SIZE(priv->rx_msg.header); > + ver = MSG_VER(priv->rx_msg.header); > + status = RES_STATUS(priv->rx_msg.data[0]); > + > + if (tag == priv->rsp_tag > + && command == ELE_INIT_FW_REQ > + && size == ELE_INIT_FW_RSP_SZ > + && ver == MESSAGING_VERSION_7 > + && status == priv->success_tag) > + return 0; Your coding style here and in all other places like this is unreadable. Fix alignment. > + > + return -EINVAL; > +} > diff --git a/drivers/firmware/imx/se_fw.c b/drivers/firmware/imx/se_fw.c > index 2c97b2adf18b..88300c41d62b 100644 > --- a/drivers/firmware/imx/se_fw.c > +++ b/drivers/firmware/imx/se_fw.c > @@ -8,6 +8,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -41,6 +42,7 @@ struct imx_info { > uint8_t *se_name; > uint8_t *pool_name; > bool reserved_dma_ranges; > + bool init_fw; > }; > > static LIST_HEAD(priv_data_list); > @@ -55,6 +57,7 @@ static const struct imx_info imx8ulp_info = { > .se_name = "ele", > .pool_name = "sram-pool", > .reserved_dma_ranges = true, > + .init_fw = false, > }; > > static const struct imx_info imx93_info = { > @@ -67,6 +70,7 @@ static const struct imx_info imx93_info = { > .se_name = "ele", > .pool_name = NULL, > .reserved_dma_ranges = true, > + .init_fw = true, > }; > > static const struct of_device_id se_fw_match[] = { > @@ -1120,6 +1124,13 @@ static int se_fw_probe(struct platform_device *pdev) > priv->flags |= RESERVED_DMA_POOL; > } > > + if (info->init_fw) { > + /* start initializing ele fw */ > + ret = ele_init_fw(dev); > + if (ret) > + dev_err(dev, "Failed to initialize ele fw.\n"); > + } > + > if (info->socdev) { > ret = imx_soc_device_register(dev, info); > if (ret) { > diff --git a/include/linux/firmware/imx/ele_fw_api.h b/include/linux/firmware/imx/ele_fw_api.h > new file mode 100644 > index 000000000000..36c3f743cb38 > --- /dev/null > +++ b/include/linux/firmware/imx/ele_fw_api.h There is no need this to be Linux-wide. Keep it next to the driver. Best regards, Krzysztof _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel