From patchwork Mon Apr 7 16:20:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pankaj Gupta X-Patchwork-Id: 14040261 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 A1BA4C3601E for ; Mon, 7 Apr 2025 11:10:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=LCzFj4nrTzKnvMqs5VdUnDQw6FAw9hRqlswPTZi9QOY=; b=aiBdW8T2UoAFcgcQSYUFFQvLAe Vu8trgQm6bSfl2iOh7JylJtT3XhScId6pFyg0RpVtlidRv/pIp2Dj+C7hEC9GBSemWTyW6TdlowsE AdsRjBf0DuxPlF4sxalKPV/J6qB4/L3OC3KSBrbtTvv86gI5+27Qj11Ia5wvFPPySb2MGaL90QZ/z OwsWn4NuT7cb71Rv7+mY2UFqxJfWTGEvQfgX0sC2Y3/nVTTKN5RH/YRBf0BYjqVPBJyN+2j/GNZPf VMZRsUsDAxJv47L7c3H4yq0v+POsNfmFq+J5x5w63082NOubDjGsygeyyI5smGrP0IKbA1yUz/v1A 5RZFktSw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u1kMW-0000000HW9B-3D96; Mon, 07 Apr 2025 11:09:56 +0000 Received: from mail-db8eur05on2062b.outbound.protection.outlook.com ([2a01:111:f403:2614::62b] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u1kAk-0000000HSKD-27MK for linux-arm-kernel@lists.infradead.org; Mon, 07 Apr 2025 10:57:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bUQlBzvaWD/BxMcn86s8iOCY05ibeEVBiUII4EcY3gr7d0sh3vLtmhuF37IHqQ4ww2dGu1F+pkJveZLM9SEYBSRHPtSsKJS/5rvRy8psX5s1YtYrpxu2ireVjr4dFENUdFYMl6fxQ0218LaxnK1gdqFHm/D2pL9oRD2vF9NfhTzxDQkzwxoEfo135epPpV1sHpfPkKmMOouGPzQVys9OWB85JCAcWtj09WBpEUyFGmtfeIzCYy2pWr3tlH/crTix1ADHsekEoUJaJdZkTcLbpzbVYMhJ3qMSsPJ+rszJawtSoon+yNGSeSW1SKr185flcpHLY/tS9ZBjeWik5IgiCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LCzFj4nrTzKnvMqs5VdUnDQw6FAw9hRqlswPTZi9QOY=; b=Lerw3JKd//eQNjuhNC9mOHZ3mH3SkdVLDgPNG5+Zcal3bUrg1L/U4SzguU2pH+m1UzF4Q01w3SFYoxcqb7P/A6Ky7Mpo9F1CBOk0xAq5hO5QmDWXxkVm6/iXkR/xe9I835Sdd8j1MUREq3PwUftOKse3S55PBJixXhblFWOQ9RqQUVibgYAFc7VLI7uLjSC82uciq1YUzRaE/PhpWdYLdZniBPvhFOaw0tx94aGTToDd6dOqtPdEtozcYu8nbPbyAnCFck46LEZEvno2vN8QK/kUNdFI2mSS+50sgURVMEqLsMi1FXLOK6EPfsLtvFCGIYXYSV3fyem+44oOoexrXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LCzFj4nrTzKnvMqs5VdUnDQw6FAw9hRqlswPTZi9QOY=; b=kYGp72EIB0fLTPxJHTPCDR/88WEp6f6HtLYVaJE9zlyTosh1va9uGTicaDa2yLFID02vrMUySrq2E/3n2HxqmBDTqzTp2txMjuhEjYXufkIheqYGZOAR1nklY9UKd9ACMQvza1O/3l5yk2UBxZt04TDl+BON1oTmu4Dt84Sg3gi4xzeQqINqPMywYaaImF6Zb2ZtCWeHErZSu+AVSAWlBbt2lWjP6UpRh9MuZazWLwDRJLk4ba9LOdTwe3xhum/nNKnUED7VFl2E1rx3veN2nuBHvpp1sFyiIc0FjAb4e+mabCpHhhGssAHfpWb+326mBy92CXWOrb0gs7FatiFfJQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8604.eurprd04.prod.outlook.com (2603:10a6:20b:43b::21) by DB9PR04MB8493.eurprd04.prod.outlook.com (2603:10a6:10:2c5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.43; Mon, 7 Apr 2025 10:57:44 +0000 Received: from AM9PR04MB8604.eurprd04.prod.outlook.com ([fe80::e751:223e:aa3d:5827]) by AM9PR04MB8604.eurprd04.prod.outlook.com ([fe80::e751:223e:aa3d:5827%6]) with mapi id 15.20.8583.045; Mon, 7 Apr 2025 10:57:44 +0000 From: Pankaj Gupta Date: Mon, 07 Apr 2025 21:50:22 +0530 Subject: [PATCH v15 6/7] firmware: imx: device context dedicated to priv Message-Id: <20250407-imx-se-if-v15-6-e3382cecda01@nxp.com> References: <20250407-imx-se-if-v15-0-e3382cecda01@nxp.com> In-Reply-To: <20250407-imx-se-if-v15-0-e3382cecda01@nxp.com> To: Jonathan Corbet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Pankaj Gupta Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Frank Li X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744042844; l=10297; i=pankaj.gupta@nxp.com; s=20240523; h=from:subject:message-id; bh=pS//50BHa/Q8/uV/EPH6Ev7uq9bBTKuoXm4eJqLYR9w=; b=IaG8r3Gd47ZR+Xjj2g4xo4uolUr3dqPUvBz9ryXaZQoZ3rmuOUbdn5BFz2+EkgVoOlRSvYDL8 HcAm/Su6giyD1xdchTc7AbARGenicMZ8mPuZ1vzOuqL9SfreNbsyIgt X-Developer-Key: i=pankaj.gupta@nxp.com; a=ed25519; pk=OA0pBQoupy5lV0XfKzD8B0OOBVB6tpAoIf+0x1bYGRg= X-ClientProxiedBy: SI2PR01CA0036.apcprd01.prod.exchangelabs.com (2603:1096:4:192::22) To AM9PR04MB8604.eurprd04.prod.outlook.com (2603:10a6:20b:43b::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8604:EE_|DB9PR04MB8493:EE_ X-MS-Office365-Filtering-Correlation-Id: dcf06a97-3894-4a7b-ffb5-08dd75c30678 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|52116014|366016|7416014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?7FSPshSRU0uQYmCfsnRmMsulVkDw04r?= =?utf-8?q?UiNMNs6SrfvWW/hco0ygC9KeGTJ1jutWhgcgGb2kL05mSBfGfehjkI/dvdoygrFBK?= =?utf-8?q?XfWGRr3f40tYqzTjHlNxMiqfanb8cxjEtwq9MAnuzEe5AgYVuT+gFR0R4GS62ujGj?= =?utf-8?q?fbdcV4lnKH+hetaCAeL+/6TI0V0LQVlmW/3aH/fMyMQPVvWihSPa3uBHPDHQmMeKb?= =?utf-8?q?I3Rk039t0kmydxjYrWqfiUJyO1396HHeYOZ2CmdzQu08DEWY0dO1cbY3sPWL67aAY?= =?utf-8?q?GDKQQqxnktQN/QHvEpIK0OZJ4xoUMXWK59z4REUR9YuD7uUu82n+lQjy2XSZEzMZc?= =?utf-8?q?CiJT/tG35f4b9X1zDQsJfbK/xEzUMahzUHIeyAicRNqcG+cSOnC3SPQ818ZrT1p/w?= =?utf-8?q?lyAqZhDhcVxspldGueMryteFloJVxHeGO/DZRIbuIeMnjj+C4tTXmvr+F1wUPCLg6?= =?utf-8?q?IyTVjfg9GHwvrXcbMut/m6HL3LfoUTfDyqxeMxN/NNvTU7KxEjprC3a/oskGnUja1?= =?utf-8?q?zdqmBB4wGKkq1/eh6zHsXzyvvvx8XUKZUobTZ9pcFkwBUjd55qBpE6m0tFbVQk8vZ?= =?utf-8?q?zZo8IsAyeSCq6G09Agl1+22tfZAgzhSjJ32V6pW7/eoq1iKgXh4t9V2i5F8LMfe6c?= =?utf-8?q?o9FlIMQHBmzpn3CclOdphamDexUBjSSEA0fiZBtkVErSV7jFMUtLFdgPbZdSCM6zq?= =?utf-8?q?fj5e00J3m/M48jJqouzxBi7Jwxzsziye+U/SDTo7Dg8bBLF85F4+TFrg71WbdReyw?= =?utf-8?q?1SDzaxpBS6ufsNlO+komivaMG/+hxlA99j4kGjCbFZeqWqe7P05GeiQkpH0kFO5/U?= =?utf-8?q?6QSR8rwczLgxgMBie7gdakQooKUNmBuRAs9LidQUJ67V1wjVE5smBq592x5FF+btF?= =?utf-8?q?kEVz9LnR6cxJHorl4dVFyu0GOzJ17uAJrKORc8IQPr/Z3znDnllYdvDP1g1udmrKm?= =?utf-8?q?pI7TJgsvucl7VY2BZAdcUKbML+2i6RUedTZMx6f7px8lKGZh30oRIN3qyjAca+2Xz?= =?utf-8?q?mYAXkoP8VHe51eYT9gKfqGNRXdHyqbzidI0UKMq5+I9gFHuN7G74JkED8Z8jKCpr/?= =?utf-8?q?zbskMJHsImSbrhTLXJODfxQ+SWTli/+X9WLyMB/SN+mal+LfqvoWAlrPrbHMsfhGR?= =?utf-8?q?0czpK8y3gvY7b8GRJbf4K0H1RL+KgoEt0P2FACibYvylgjZey7Jvd2A80/hZwIAx4?= =?utf-8?q?J+dyF5Oci3eZqT9NAMGncKrle5l16BvCntAjHkLbRRBw7G3EuVWrQJYkS1FdjuiuF?= =?utf-8?q?RkOuVTPOc0bH7ufjLmWE1OLGwQoPy7x0jNxNzNj27unnhleEEL9kyxErzoVX8LuRG?= =?utf-8?q?tkELBvtxrMs7CNguVG6/p+33VYqeZ48bnXTo5MmIFnq8g9EhH1gDAB25ZM9+S+TQh?= =?utf-8?q?rLLN7MP+SDN35jRL7LElME7CbE6nJ6nBg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8604.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(366016)(7416014)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?wHf6KQx/i2EOyKQ4ioHwQpDAwrrx?= =?utf-8?q?YkoXMnPspVP95Z6DyypkxgDH+Dj7lIwGU6Q2MgxYlUGIaLx1PbroyMIW8ufHWkdJR?= =?utf-8?q?H2P4py3TiWd+sjcz0Gkov1HKuIt6TGCyh93/fw8/dRhtnBCM0GkvUAfBhjgZT0/2I?= =?utf-8?q?eTsL8u90VOMFI9LP1NaDrJuHeIfwAuSgS081QLnXgymkBMl6gn+6VDnrWBk+ELFK0?= =?utf-8?q?q4+1ORXEJlJBwkMW9CfP373hHFnVNR9Mj0VjK81W0ctKAqleJlJp6FUdlviHMJWqn?= =?utf-8?q?FopUwsh6d0V/op1VS5mLHGDFKAF7Eekic64OHWXo0fFHSbERTQwpMlGMJ17xTd0Sc?= =?utf-8?q?bjAdv7ROcYYfM7ni4KrnVaEK/6AvGeI4htSS7G2yu5HbKaq2P99Ezjw/k80fqd4mi?= =?utf-8?q?DMx1zx0QWIbD+88tskSzflBMkOZ4FFqdQK+SlI3S3RCshAdeAUgqs+LUvNKyyvG/5?= =?utf-8?q?RBhreGR4KWV2jKEjNRFXIEmPi8iOk3b/6QrV+WsLgiQn/qv5k0C180zmXWDIJPmV0?= =?utf-8?q?cxPakHk5VGQmyl2MgSjmsUA2OBZNpZCvTfuVAJ8XrYDkso68qzuP0PIwZ2Z2uO3TK?= =?utf-8?q?hYSJi4le+8uI/4fW3Jfehi7iovn2xfzPXeoYmSbEEqzkyanlb6oRpndnYgSLhtI5Q?= =?utf-8?q?njjiC+uHb9ufed1LiwpsbBr08KrP43VSLgVFYaBzQCoZB0A+xj2HiuccNijJHz20f?= =?utf-8?q?Mm8Af2GShrDUNxI29v4lTGbK7epb/B+uJnSEXxXXPMqPf7gTFgiSCpC9e3VPiNhGI?= =?utf-8?q?JsbOh2e1lcfMVmC0Zdod5xbpM+QAUk/R7Hg8+m/va5LGyz5RW7JFcIKJ10afphIic?= =?utf-8?q?n4v8kWAOWUg/sucBATdeYV+lsBvDmbh0g3ipABSZy0Zlss5eYQGOErfwIgc9RBmH8?= =?utf-8?q?Ts3B3pkUAyqdUoVH+2M8zCEdSs5jSQdEcV0IbKX2wnIwJxrf69kPpvD3GwvYEeWvp?= =?utf-8?q?b8+qPIbPghKGWBD4HLaeUQQ5+j/qa6cRMm3neY5h8Cyit0UqKJXJqOSv61qpm0OHd?= =?utf-8?q?pMnXwMDlcE/crE3bWUBLjKp7kIVM9/ErI++hVxM3Nk37JOXm5KMSzp2FbKiBla1rW?= =?utf-8?q?swJ+jacdqebRKfQvIpfzxQxx3RVwtavMN8XpS/+/u9p3KSJnUIlvQMWkBrN7dkwYt?= =?utf-8?q?61z1GkS/DR3eFcS3gIFFjEvhfTp0LE6JAxaKyuI2eSUnLWasvRHFmZWZgUUQV484v?= =?utf-8?q?6uGecPxUF4p1S9EG4gDO1ePdAPIHrynhRy2wId/wZ4uw110IRS4uX4KAL8YVQ2SMI?= =?utf-8?q?08I+ZNMKz205Iijh0Ie4EMEZEh33H5Rsb5LDI4pJ8KIb5RfnlQnhjx9GSzQr4Kx5y?= =?utf-8?q?HrQFCPK/bo1Zli9P33Bo3CKPP7taVHx3V3ISYTKlWJZpva3hR7lV+6DPL4v23b5qj?= =?utf-8?q?7tqchcSeGVViSkmc6WMrGvLIgSx7ZgYX+vtZPkQQF2u4/1q3fnRFiAPHC4ffPwuh+?= =?utf-8?q?fhD3yTY5Q/5E97ckcIGP0Zs0t9y+oXufosJttMxiYRiTye039ILFWeN+7o7yoMBCs?= =?utf-8?q?NfRsFX0B0Anv?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcf06a97-3894-4a7b-ffb5-08dd75c30678 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8604.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2025 10:57:44.6672 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: V+jsQj9dN5QsPArl7Ahqhm1P8iLjuKhAasKyxEVn7XN2Y0+6r3F7EyLliBD3W0FaAu9obZIoMq7HKtPZlU+GnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8493 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250407_035746_553719_112E463F X-CRM114-Status: GOOD ( 14.07 ) 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 priv_dev_ctx to prepare enabling misc-device context based send-receive path, to communicate with FW. No functionality change. Signed-off-by: Pankaj Gupta Reviewed-by: Frank Li --- Changes from v14 to v15: - removed the se_intance_id structure member variable. - Added dev_ctx to the structure se_clbk_handle, too. - Collected Frank's R-b tag. Note: copied the change logs for v13 to v14, to cover letter. --- drivers/firmware/imx/ele_base_msg.c | 10 ++++----- drivers/firmware/imx/ele_common.c | 43 +++++++++++++++++++++++-------------- drivers/firmware/imx/ele_common.h | 6 +++--- drivers/firmware/imx/se_ctrl.c | 29 +++++++++++++++++++++++++ drivers/firmware/imx/se_ctrl.h | 9 ++++++++ 5 files changed, 73 insertions(+), 24 deletions(-) diff --git a/drivers/firmware/imx/ele_base_msg.c b/drivers/firmware/imx/ele_base_msg.c index c843a5508a9e..9227d083abbb 100644 --- a/drivers/firmware/imx/ele_base_msg.c +++ b/drivers/firmware/imx/ele_base_msg.c @@ -62,7 +62,7 @@ int ele_get_info(struct se_if_priv *priv, struct ele_dev_info *s_info) tx_msg->data[0] = upper_32_bits(get_info_addr); tx_msg->data[1] = lower_32_bits(get_info_addr); tx_msg->data[2] = sizeof(*s_info); - ret = ele_msg_send_rcv(priv, + ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_GET_INFO_REQ_MSG_SZ, rx_msg, @@ -122,7 +122,7 @@ int ele_ping(struct se_if_priv *priv) return ret; } - ret = ele_msg_send_rcv(priv, + ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_PING_REQ_SZ, rx_msg, @@ -174,7 +174,7 @@ int ele_service_swap(struct se_if_priv *priv, if (!tx_msg->data[4]) return -EINVAL; - ret = ele_msg_send_rcv(priv, + ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_SERVICE_SWAP_REQ_MSG_SZ, rx_msg, @@ -227,7 +227,7 @@ int ele_fw_authenticate(struct se_if_priv *priv, phys_addr_t addr) tx_msg->data[0] = lower_32_bits(addr); tx_msg->data[2] = addr; - ret = ele_msg_send_rcv(priv, + ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_FW_AUTH_REQ_SZ, rx_msg, @@ -275,7 +275,7 @@ int ele_debug_dump(struct se_if_priv *priv) do { memset(rx_msg, 0x0, ELE_DEBUG_DUMP_RSP_SZ); - ret = ele_msg_send_rcv(priv, + ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_DEBUG_DUMP_REQ_SZ, rx_msg, diff --git a/drivers/firmware/imx/ele_common.c b/drivers/firmware/imx/ele_common.c index 7573603cdbec..baf83f03c1a0 100644 --- a/drivers/firmware/imx/ele_common.c +++ b/drivers/firmware/imx/ele_common.c @@ -42,7 +42,7 @@ u32 se_get_msg_chksum(u32 *msg, u32 msg_len) return chksum; } -int ele_msg_rcv(struct se_if_priv *priv, struct se_clbk_handle *se_clbk_hdl) +int ele_msg_rcv(struct se_if_device_ctx *dev_ctx, struct se_clbk_handle *se_clbk_hdl) { unsigned long timeout; int ret; @@ -52,8 +52,8 @@ int ele_msg_rcv(struct se_if_priv *priv, struct se_clbk_handle *se_clbk_hdl) ret = wait_for_completion_interruptible_timeout(&se_clbk_hdl->done, timeout); if (ret == -ERESTARTSYS) { - if (priv->waiting_rsp_clbk_hdl.rx_msg) { - priv->waiting_rsp_clbk_hdl.signal_rcvd = true; + if (dev_ctx->priv->waiting_rsp_clbk_hdl.dev_ctx) { + dev_ctx->priv->waiting_rsp_clbk_hdl.signal_rcvd = true; continue; } ret = -EINTR; @@ -66,7 +66,7 @@ int ele_msg_rcv(struct se_if_priv *priv, struct se_clbk_handle *se_clbk_hdl) return ret; } -int ele_msg_send(struct se_if_priv *priv, +int ele_msg_send(struct se_if_device_ctx *dev_ctx, void *tx_msg, int tx_msg_sz) { @@ -78,16 +78,19 @@ int ele_msg_send(struct se_if_priv *priv, * carried in the message. */ if (header->size << 2 != tx_msg_sz) { - dev_err(priv->dev, - "User buf hdr: 0x%x, sz mismatced with input-sz (%d != %d).", + dev_err(dev_ctx->priv->dev, + "%s: User buf hdr: 0x%x, sz mismatced with input-sz (%d != %d).", + dev_ctx->devname, *(u32 *)header, header->size << 2, tx_msg_sz); return -EINVAL; } - err = mbox_send_message(priv->tx_chan, tx_msg); + err = mbox_send_message(dev_ctx->priv->tx_chan, tx_msg); if (err < 0) { - dev_err(priv->dev, "Error: mbox_send_message failure.\n"); + dev_err(dev_ctx->priv->dev, + "%s: Error: mbox_send_message failure.", + dev_ctx->devname); return err; } @@ -95,31 +98,35 @@ int ele_msg_send(struct se_if_priv *priv, } /* API used for send/receive blocking call. */ -int ele_msg_send_rcv(struct se_if_priv *priv, +int ele_msg_send_rcv(struct se_if_device_ctx *dev_ctx, void *tx_msg, int tx_msg_sz, void *rx_msg, int exp_rx_msg_sz) { + struct se_if_priv *priv = dev_ctx->priv; int err; guard(mutex)(&priv->se_if_cmd_lock); + priv->waiting_rsp_clbk_hdl.dev_ctx = dev_ctx; priv->waiting_rsp_clbk_hdl.rx_msg_sz = exp_rx_msg_sz; priv->waiting_rsp_clbk_hdl.rx_msg = rx_msg; - err = ele_msg_send(priv, tx_msg, tx_msg_sz); + err = ele_msg_send(dev_ctx, tx_msg, tx_msg_sz); if (err < 0) return err; - err = ele_msg_rcv(priv, &priv->waiting_rsp_clbk_hdl); + err = ele_msg_rcv(dev_ctx, &priv->waiting_rsp_clbk_hdl); if (priv->waiting_rsp_clbk_hdl.signal_rcvd) { err = -EINTR; priv->waiting_rsp_clbk_hdl.signal_rcvd = false; dev_err(priv->dev, - "Err[0x%x]:Interrupted by signal.\n", err); + "%s: Err[0x%x]:Interrupted by signal.\n", + dev_ctx->devname, err); } + priv->waiting_rsp_clbk_hdl.dev_ctx = NULL; return err; } @@ -166,7 +173,8 @@ void se_if_rx_callback(struct mbox_client *mbox_cl, void *msg) if (header->tag == priv->if_defs->cmd_tag) { se_clbk_hdl = &priv->cmd_receiver_clbk_hdl; dev_dbg(dev, - "Selecting cmd receiver for mesg header:0x%x.", + "Selecting cmd receiver:%s for mesg header:0x%x.", + se_clbk_hdl->dev_ctx->devname, *(u32 *)header); /* @@ -176,7 +184,8 @@ void se_if_rx_callback(struct mbox_client *mbox_cl, void *msg) */ if (rx_msg_sz > MAX_NVM_MSG_LEN) { dev_err(dev, - "CMD-RCVER NVM: hdr(0x%x) with different sz(%d != %d).\n", + "%s: CMD-RCVER NVM: hdr(0x%x) with different sz(%d != %d).\n", + se_clbk_hdl->dev_ctx->devname, *(u32 *)header, rx_msg_sz, se_clbk_hdl->rx_msg_sz); @@ -187,13 +196,15 @@ void se_if_rx_callback(struct mbox_client *mbox_cl, void *msg) } else if (header->tag == priv->if_defs->rsp_tag) { se_clbk_hdl = &priv->waiting_rsp_clbk_hdl; dev_dbg(dev, - "Selecting resp waiter for mesg header:0x%x.", + "Selecting resp waiter:%s for mesg header:0x%x.", + se_clbk_hdl->dev_ctx->devname, *(u32 *)header); if (rx_msg_sz != se_clbk_hdl->rx_msg_sz && check_hdr_exception_for_sz(priv, header)) { dev_err(dev, - "Rsp to CMD: hdr(0x%x) with different sz(%d != %d).\n", + "%s: Rsp to CMD: hdr(0x%x) with different sz(%d != %d).\n", + se_clbk_hdl->dev_ctx->devname, *(u32 *)header, rx_msg_sz, se_clbk_hdl->rx_msg_sz); diff --git a/drivers/firmware/imx/ele_common.h b/drivers/firmware/imx/ele_common.h index cba2c7854455..62c75e149d95 100644 --- a/drivers/firmware/imx/ele_common.h +++ b/drivers/firmware/imx/ele_common.h @@ -13,12 +13,12 @@ #define IMX_ELE_FW_DIR "imx/ele/" u32 se_get_msg_chksum(u32 *msg, u32 msg_len); -int ele_msg_rcv(struct se_if_priv *priv, +int ele_msg_rcv(struct se_if_device_ctx *dev_ctx, struct se_clbk_handle *se_clbk_hdl); -int ele_msg_send(struct se_if_priv *priv, +int ele_msg_send(struct se_if_device_ctx *dev_ctx, void *tx_msg, int tx_msg_sz); -int ele_msg_send_rcv(struct se_if_priv *priv, +int ele_msg_send_rcv(struct se_if_device_ctx *dev_ctx, void *tx_msg, int tx_msg_sz, void *rx_msg, diff --git a/drivers/firmware/imx/se_ctrl.c b/drivers/firmware/imx/se_ctrl.c index 2d885c03a450..a326e07ae547 100644 --- a/drivers/firmware/imx/se_ctrl.c +++ b/drivers/firmware/imx/se_ctrl.c @@ -204,6 +204,29 @@ static int get_se_soc_info(struct se_if_priv *priv, const struct se_soc_info *se return 0; } +static int init_misc_device_context(struct se_if_priv *priv, int ch_id, + struct se_if_device_ctx **new_dev_ctx) +{ + struct se_if_device_ctx *dev_ctx; + int ret = 0; + + dev_ctx = devm_kzalloc(priv->dev, sizeof(*dev_ctx), GFP_KERNEL); + + if (!dev_ctx) + return -ENOMEM; + + dev_ctx->devname = devm_kasprintf(priv->dev, GFP_KERNEL, "%s0_ch%d", + get_se_if_name(priv->if_defs->se_if_type), + ch_id); + if (!dev_ctx->devname) + return -ENOMEM; + + dev_ctx->priv = priv; + *new_dev_ctx = dev_ctx; + + return ret; +} + /* interface for managed res to free a mailbox channel */ static void if_mbox_free_channel(void *mbox_chan) { @@ -333,6 +356,12 @@ static int se_if_probe(struct platform_device *pdev) "Failed to init reserved memory region."); } + ret = init_misc_device_context(priv, 0, &priv->priv_dev_ctx); + if (ret) + return dev_err_probe(dev, ret, + "Failed[0x%x] to create device contexts.", + ret); + if (if_node->if_defs.se_if_type == SE_TYPE_ID_HSM) { ret = get_se_soc_info(priv, se_info); if (ret) diff --git a/drivers/firmware/imx/se_ctrl.h b/drivers/firmware/imx/se_ctrl.h index b15c4022a46c..b5e7705e2f26 100644 --- a/drivers/firmware/imx/se_ctrl.h +++ b/drivers/firmware/imx/se_ctrl.h @@ -19,6 +19,7 @@ #define MESSAGING_VERSION_7 0x7 struct se_clbk_handle { + struct se_if_device_ctx *dev_ctx; struct completion done; bool signal_rcvd; u32 rx_msg_sz; @@ -36,6 +37,12 @@ struct se_imem_buf { u32 state; }; +/* Private struct for each char device instance. */ +struct se_if_device_ctx { + struct se_if_priv *priv; + const char *devname; +}; + /* Header of the messages exchange with the EdgeLock Enclave */ struct se_msg_hdr { u8 ver; @@ -80,6 +87,8 @@ struct se_if_priv { struct gen_pool *mem_pool; const struct se_if_defines *if_defs; + + struct se_if_device_ctx *priv_dev_ctx; }; char *get_se_if_name(u8 se_if_id);