From patchwork Thu Jan 23 11:11:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalyani Akula X-Patchwork-Id: 11347353 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 06ADB6C1 for ; Thu, 23 Jan 2020 11:12:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CE54F2467F for ; Thu, 23 Jan 2020 11:12:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="Vrb573eH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727893AbgAWLL7 (ORCPT ); Thu, 23 Jan 2020 06:11:59 -0500 Received: from mail-co1nam11on2071.outbound.protection.outlook.com ([40.107.220.71]:6137 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726194AbgAWLL7 (ORCPT ); Thu, 23 Jan 2020 06:11:59 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QWyNKpo9KSVAodFhKU7xFlLSAawlxSXYC3TDc6PFfGI2PxBod8nG2zcPlvCBZAasc/WuyFRx2vIxuOL4+K/j2ndmA1e1vGPm5xm7itmctyZUOWzw8lgZT10fG4ZSfNzzU+INy1Rae60RBDmkTNUkFBfS0CFvWAH3lXg+d1ANwuS8jb4vzVpmaYA6Kzd7qQ1c92g/x+h+1wLKqrmQ0rh67dXRgj8f24AjPO5UqTgSBhW3hZfT4ZkVMvY29O5PMKYk3BFIm+mdy+04kEVJfz40lXgN7z/2bYvVITTh3AQVkjw9yJ7hLxmqYdsqLp4C/2yLQl6ymvvCHMt3wxy0iTyBwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R3DHOPE3HyCVhLkx+wecK+YSJq5GU6t150aQ8dTemAE=; b=XVAndfZqZ7o8qDYJHuHj/jkLiX6umhxP2KiJzZkKWhfarSUCM5XBXcfKJMbwDu9N628R+TmteGOVFCf5b8aXjjRaUu1RzaZPdgXjmJrj8mQJ0jfpOEq6psv5LV+PGZ6HocM90GdpgJ2q3o0aMz1ZvDzekW50omKuWqeILoci9nSzQsYSTURJO8Ei/wZMpU24TgG8/0R9YXQ9eZATJRkKIqZ8MyiEMDlhLDclK44Wxk2IA4YUy3mQzY8JkfriAaCDCvIBovbgj15IRFew2q7D0+Alazk1xqyweUAm/J9XIjOc3p/4kvpqoQEx6GtYbNtjyIbDPQGIaQ4rPOQVr6YZ6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.60.83) smtp.rcpttodomain=davemloft.net smtp.mailfrom=xilinx.com; dmarc=bestguesspass action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R3DHOPE3HyCVhLkx+wecK+YSJq5GU6t150aQ8dTemAE=; b=Vrb573eH9f42Z7j+Bay2u51wxUMyMoE2X03GHmXZWtd8/gpv1IYNbbOFvJ2pPCyr6jxmotz5Mpnqpz0O50zxWcMqDjE7Rw5Fq2hXT+Jb06kzCw0RJPFdFR0xNiyJCDYcq1aACwz7VKQHMVaMeneXInEkiEQZ+pxEUejwYZ/LbaU= Received: from SN4PR0201CA0032.namprd02.prod.outlook.com (2603:10b6:803:2e::18) by DM5PR02MB3896.namprd02.prod.outlook.com (2603:10b6:4:b7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.20; Thu, 23 Jan 2020 11:11:54 +0000 Received: from BL2NAM02FT052.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::200) by SN4PR0201CA0032.outlook.office365.com (2603:10b6:803:2e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.19 via Frontend Transport; Thu, 23 Jan 2020 11:11:54 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2NAM02FT052.mail.protection.outlook.com (10.152.77.0) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2665.18 via Frontend Transport; Thu, 23 Jan 2020 11:11:53 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaOu-0007hQ-MD; Thu, 23 Jan 2020 03:11:52 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1iuaOp-0007Tt-IV; Thu, 23 Jan 2020 03:11:47 -0800 Received: from [172.23.155.80] (helo=xhdengvm155080.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaOh-0007SQ-Ug; Thu, 23 Jan 2020 03:11:40 -0800 Received: by xhdengvm155080.xilinx.com (Postfix, from userid 23151) id 0E6CA800B7; Thu, 23 Jan 2020 16:41:26 +0530 (IST) From: Kalyani Akula To: herbert@gondor.apana.org.au, davem@davemloft.net, monstr@seznam.cz, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Rob Herring , devicetree@vger.kernel.org, git-dev , Mohan Marutirao Dhanawade , Sarat Chand Savitala , Harsh Jain , Michal Simek , Kalyani Akula , Kalyani Akula Subject: [PATCH V5 1/4] firmware: xilinx: Add ZynqMP aes API for AES functionality Date: Thu, 23 Jan 2020 16:41:14 +0530 Message-Id: <1579777877-10553-2-git-send-email-kalyani.akula@xilinx.com> X-Mailer: git-send-email 1.9.5 In-Reply-To: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> References: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(396003)(136003)(376002)(39860400002)(346002)(199004)(189003)(6666004)(42186006)(186003)(356004)(336012)(8936002)(426003)(81166006)(316002)(81156014)(8676002)(6266002)(107886003)(2906002)(5660300002)(36756003)(478600001)(70586007)(44832011)(4326008)(26005)(70206006)(54906003)(2616005);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR02MB3896;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;LANG:en;PTR:unknown-60-83.xilinx.com;A:1;MX:1; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a16ad728-a283-4fb9-e19f-08d79ff50d8e X-MS-TrafficTypeDiagnostic: DM5PR02MB3896: X-Microsoft-Antispam-PRVS: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-Oob-TLC-OOBClassifiers: OLM:1148; X-Forefront-PRVS: 029174C036 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 10K07J7sSP11I/WUTYWbs6Bs9o6o3O9JodgxlsYKq2RITFsSjBPeObpsqTFqLDqVM0W/69j9Ztq2tUnSrBZ+BK66mxlgLQFK4L6CHoYFC1KGzE7XMb/KgkLufbkbywRsN26N6xqg7Zrr5H1kXSYCQL0EmQyFdGq4YhYhx0bhI6i08JW+V5St6pX0ZIBdlMefQdGs8zbTFIYBeKLr/yDjEAEECXYwp8f4KdeqWCFIwKjOyQ/qgZwYgxofc8PtLSgXGGswUoPFIMSpoY3nLe3bGOCoFZDzMdY+k+BJ6esjs9sfQGIUT7fn2JOHRXoTOW5KSMRatqVwBX3mftJWLe3rr9OQWfqPAWAvytKq8SKkju3c0PC7xhMZbQ8sizeAzizfZFCk+Xvi5fO/ZvNc77OFRcJQS73BAWIWdurUgHEvMb1pjiknMZvzjIzF+a+h+17X X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2020 11:11:53.7024 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a16ad728-a283-4fb9-e19f-08d79ff50d8e X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB3896 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Add ZynqMP firmware AES API to perform encryption/decryption of given data. Signed-off-by: Kalyani Akula Acked-by: Michal Simek --- V5 Changes: - Moved firmware: xilinx: Add ZynqMP aes API for AES patch from 3/4 to 1/4 - This patch (1/4) is based on below commit id because of possible merge conflict commit 461011b1e1ab ("drivers: firmware: xilinx: Add support for feature check") - Added newlines in between at the start and end of zynqmp_pm_aes_engine function drivers/firmware/xilinx/zynqmp.c | 25 +++++++++++++++++++++++++ include/linux/firmware/xlnx-zynqmp.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index 0137bf3..20c084f 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -705,6 +705,30 @@ static int zynqmp_pm_set_requirement(const u32 node, const u32 capabilities, qos, ack, NULL); } +/** + * zynqmp_pm_aes - Access AES hardware to encrypt/decrypt the data using + * AES-GCM core. + * @address: Address of the AesParams structure. + * @out: Returned output value + * + * Return: Returns status, either success or error code. + */ +static int zynqmp_pm_aes_engine(const u64 address, u32 *out) +{ + u32 ret_payload[PAYLOAD_ARG_CNT]; + int ret; + + if (!out) + return -EINVAL; + + ret = zynqmp_pm_invoke_fn(PM_SECURE_AES, upper_32_bits(address), + lower_32_bits(address), + 0, 0, ret_payload); + *out = ret_payload[1]; + + return ret; +} + static const struct zynqmp_eemi_ops eemi_ops = { .get_api_version = zynqmp_pm_get_api_version, .get_chipid = zynqmp_pm_get_chipid, @@ -728,6 +752,7 @@ static int zynqmp_pm_set_requirement(const u32 node, const u32 capabilities, .set_requirement = zynqmp_pm_set_requirement, .fpga_load = zynqmp_pm_fpga_load, .fpga_get_status = zynqmp_pm_fpga_get_status, + .aes = zynqmp_pm_aes_engine, }; /** diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index e72eccf..5455830 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -82,6 +82,7 @@ enum pm_api_id { PM_CLOCK_GETRATE, PM_CLOCK_SETPARENT, PM_CLOCK_GETPARENT, + PM_SECURE_AES = 47, PM_FEATURE_CHECK = 63, PM_API_MAX, }; @@ -313,6 +314,7 @@ struct zynqmp_eemi_ops { const u32 capabilities, const u32 qos, const enum zynqmp_pm_request_ack ack); + int (*aes)(const u64 address, u32 *out); }; int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, From patchwork Thu Jan 23 11:11:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalyani Akula X-Patchwork-Id: 11347355 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 22C356C1 for ; Thu, 23 Jan 2020 11:12:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EB7D024684 for ; Thu, 23 Jan 2020 11:12:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="RBrLD8IC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726771AbgAWLMK (ORCPT ); Thu, 23 Jan 2020 06:12:10 -0500 Received: from mail-eopbgr700060.outbound.protection.outlook.com ([40.107.70.60]:61728 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726194AbgAWLMK (ORCPT ); Thu, 23 Jan 2020 06:12:10 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k2nC5socG/fSHRNN3GTjhIfFTq673a9rAXERIYd8ReTMXal4EdkTfVW7BtM7M+L2PLyOpX5/bMWli3doF7Ie3qX3iMB1ZNcH8FT/8ez5VZBLfqloTCnPvzxZxhLLMjWPa/x0VSEvVgUR5qHmR+H/hnxW6+OFdI23NXKyKgLcPihR52c7t48ZosQh4tX1Lgq72QlS3paYTyVIKa5u+h/PADYhcXUGhlEV6G6w0km43BKouWEhyAxMTU0napfekzKw0WwJlCva2So11yQ9S6mVEn/A38jBXIF9uREyUL7eu6DumYieoNwDLeX9MKDFkKbuwSLxHxxMRo/zc3ssoN9hVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qRcJGTJ7ccwuUpDdOhHh+Wa43S12x7wZsjJlbNeUdDs=; b=ZbVk1IvUghaAcyXz+ZD2yILDg/pdR+85rOZCJumXb2PoH+CvKKXFe8/csABMR/Raa/Ql7jQUuq8wpfGqSURXyDvyUtKyd2Ct6hREGaxn7jIaOIC/O4E6UDag/d7K4eogerRTcz0qeo6lwl7WJD2XyeLbqZ4Y2jxAbuNEDqhhWNafrtxEILH5KdNoXgXK692fX54bNZTCII0EALmrQXnVWg8eYcOtXSMvNqc4zHeaO447JBTH/wTQDghRnVFXuSgC4fU49nNWNT5AfP2T7RSRLVXqtCVRtXzFpXG5xsqbSd9epQBGGKPvreNcFG3FJiZnUEFJZDRd+eQihlaR+v3Bpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.60.83) smtp.rcpttodomain=davemloft.net smtp.mailfrom=xilinx.com; dmarc=bestguesspass action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qRcJGTJ7ccwuUpDdOhHh+Wa43S12x7wZsjJlbNeUdDs=; b=RBrLD8ICAY4G+Qf8zDirvueJucfkCrCZpeWBuUmixVkaAGucL0AqN6LbiG3/OiJtk3gQAKBkMj5iiM0awh7tvU4S4IfzPvPOR4Jr6D9FQJ5d52xtxqCnv5lkpxcS0axsLBtPNyNVe99hI1ZeOgxsyTUXNi7kY5wfyB3ezmUzSO8= Received: from BN7PR02CA0004.namprd02.prod.outlook.com (2603:10b6:408:20::17) by BN6PR02MB2418.namprd02.prod.outlook.com (2603:10b6:404:54::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.23; Thu, 23 Jan 2020 11:12:06 +0000 Received: from BL2NAM02FT029.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::209) by BN7PR02CA0004.outlook.office365.com (2603:10b6:408:20::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.21 via Frontend Transport; Thu, 23 Jan 2020 11:12:05 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2NAM02FT029.mail.protection.outlook.com (10.152.77.100) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2665.18 via Frontend Transport; Thu, 23 Jan 2020 11:12:03 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaP4-0007hX-R8; Thu, 23 Jan 2020 03:12:02 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1iuaOz-0007VJ-NY; Thu, 23 Jan 2020 03:11:57 -0800 Received: from [172.23.155.80] (helo=xhdengvm155080.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaOv-0007Ua-3L; Thu, 23 Jan 2020 03:11:53 -0800 Received: by xhdengvm155080.xilinx.com (Postfix, from userid 23151) id 1381C800C0; Thu, 23 Jan 2020 16:41:26 +0530 (IST) From: Kalyani Akula To: herbert@gondor.apana.org.au, davem@davemloft.net, monstr@seznam.cz, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Rob Herring , devicetree@vger.kernel.org, git-dev , Mohan Marutirao Dhanawade , Sarat Chand Savitala , Harsh Jain , Michal Simek , Kalyani Akula , Kalyani Akula Subject: [PATCH V5 2/4] dt-bindings: crypto: Add bindings for ZynqMP AES-GCM driver Date: Thu, 23 Jan 2020 16:41:15 +0530 Message-Id: <1579777877-10553-3-git-send-email-kalyani.akula@xilinx.com> X-Mailer: git-send-email 1.9.5 In-Reply-To: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> References: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(39860400002)(136003)(396003)(199004)(189003)(107886003)(6666004)(6266002)(44832011)(186003)(356004)(8936002)(81156014)(81166006)(336012)(26005)(36756003)(426003)(2906002)(4326008)(8676002)(2616005)(54906003)(70206006)(42186006)(5660300002)(70586007)(478600001)(316002)(966005);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR02MB2418;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;LANG:en;PTR:unknown-60-83.xilinx.com;A:1;MX:1; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 22fc142f-4c69-4a51-c64c-08d79ff51389 X-MS-TrafficTypeDiagnostic: BN6PR02MB2418: X-Microsoft-Antispam-PRVS: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-Forefront-PRVS: 029174C036 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0n9q+SBgnD8ETf5IAGijQUTx82NE2FGufVmULGimUI5FHlV9qslzNx5iea3oqMEF+0Gn/bLnfwX9wAfR8LqXvajMfWZA14DrMSciWx1afXJixBl3xObge6Yzmbs8EhXiD3U3tSuO1c3hPowp7TIDejulk6EjDei6wDv+m0MjEWXoEj7JbUFq+QLLbgo/mqy0tuViEno2bifZoYG45dfzQDpKxA9zKEs0v7zxfQNBKA+pjMzMgpl4Y9T1KImaeUE2mH6YOi58oZsqh5O+ZWPDopN198CXFjjqLXN/vhYCArPT0NNA/di8Fjbx1SMFxUJfdIM+kLEMmd8BZk8+Bbnmns6+n3XDKcReyD36AJ4TC2UF7+aDqZdQaWUS14+OqsenNY/XCU2pKalA+0ccZivV32B5Zu4yGJw+fuywjeHZxDxVZn6b4se0G5pVepAUKDE1gAWCoLAFdmBRMG5/VPQiLwcAoxkdPr3UitQHAygLaoI= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2020 11:12:03.8025 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 22fc142f-4c69-4a51-c64c-08d79ff51389 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2418 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Add documentation to describe Xilinx ZynqMP AES-GCM driver bindings. Signed-off-by: Kalyani Akula Acked-by: Michal Simek Reviewed-by: Rob Herring --- V5 Changes: - Moved dt-bindings patch from 1/4 to 2/4 - Converted dt-bindings from .txt to .yaml format. .../bindings/crypto/xlnx,zynqmp-aes.yaml | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/crypto/xlnx,zynqmp-aes.yaml diff --git a/Documentation/devicetree/bindings/crypto/xlnx,zynqmp-aes.yaml b/Documentation/devicetree/bindings/crypto/xlnx,zynqmp-aes.yaml new file mode 100644 index 0000000..b2bca4b --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/xlnx,zynqmp-aes.yaml @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/crypto/xlnx,zynqmp-aes.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Xilinx ZynqMP AES-GCM Hardware Accelerator Device Tree Bindings + +maintainers: + - Kalyani Akula + - Michal Simek + +description: | + The ZynqMP AES-GCM hardened cryptographic accelerator is used to + encrypt or decrypt the data with provided key and initialization vector. + +properties: + compatible: + const: xlnx,zynqmp-aes + +required: + - compatible + +additionalProperties: false + +examples: + - | + firmware { + zynqmp_firmware: zynqmp-firmware { + compatible = "xlnx,zynqmp-firmware"; + method = "smc"; + xlnx_aes: zynqmp-aes { + compatible = "xlnx,zynqmp-aes"; + }; + }; + }; +... From patchwork Thu Jan 23 11:11:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalyani Akula X-Patchwork-Id: 11347357 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 022096C1 for ; Thu, 23 Jan 2020 11:12:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C0DE024684 for ; Thu, 23 Jan 2020 11:12:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="oUB43KQf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726194AbgAWLMV (ORCPT ); Thu, 23 Jan 2020 06:12:21 -0500 Received: from mail-bn7nam10on2074.outbound.protection.outlook.com ([40.107.92.74]:26342 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726026AbgAWLMV (ORCPT ); Thu, 23 Jan 2020 06:12:21 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HK6fYo23h1KPhhqkGv7B7JewkHxVR0NxjyQDpE06jLM9bSP6+GcYnPJ3cy0aoDVhFl833+f7Pp+pc4gGHWaZsUCVRtdTtyyzNVummltm03U86h0YLu1mDcHxmc6SfbZ5uBXSyDElEMXE3WTBGP9k+Ilkkw2Xw9460228swxeK4PRJjk+0KSrAcs/pRGur5z5bujv4QD+Okfj4obiryYA9HDa/fZ7zcB3twPcvWUT4oO5Vg0zw1MCZF7QTMrzqHE2MQeKiw1hWxdcfTdJQmMxNyuB6YUaeyNAevdxn8XsX6GgJaClMHdkX2NAK56PxaYMqICWAllB6Qd4d/s1QwwtHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9ueyletyDUvX1fgn5iwSNDIdOYyQ0ydBiCaei+0fRcs=; b=DlEui61DfCW4IjcgLktfa5MF3bFeHktHN+7Bu2SENWQomdni1K9hVXeHtiZIh/iTh+VcftNUbiLLMU9d656iOjlFWQEEKr/WzcAW0FSYjPthCr1FLMqFA1M21q+qeZ43P8R2x91hbw7tff/1xfaVs1LNnU8XyJzt4M9k41ESlcSqeiHIBGmQAPcvTBTPFJ9NNtiikJmCg7VmHk90zOzoVNiiEHGpI841IfNIU8mkn637YG0Wv7uyVEJWfkAK5Z51ykcbiYZvYvWV9b74EMNKb99lxZIp9fZEJHq2eZz6uAuuL0ylBEovWW3EAZCtxwElsu0y4hmyGjHNexTcHDu+xA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.60.83) smtp.rcpttodomain=davemloft.net smtp.mailfrom=xilinx.com; dmarc=bestguesspass action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9ueyletyDUvX1fgn5iwSNDIdOYyQ0ydBiCaei+0fRcs=; b=oUB43KQfuIoPAIY1k8lsEQdIXa3ro/gIWHvQSdP28aGvvqQINaCxmJikw5Ns10HtZsCSDgYH93lr05MeGX4JSYSnGZkTfGrbil9sXfNaCuRWS3tN3Odq6cyEP3JXQIE90oYmSFD7osPLM5Qc0qXfBghuMmEMPlOOOvtKAbkl7W8= Received: from SN4PR0201CA0036.namprd02.prod.outlook.com (2603:10b6:803:2e::22) by CY4PR02MB2710.namprd02.prod.outlook.com (2603:10b6:903:11c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.23; Thu, 23 Jan 2020 11:12:14 +0000 Received: from CY1NAM02FT059.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::202) by SN4PR0201CA0036.outlook.office365.com (2603:10b6:803:2e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.20 via Frontend Transport; Thu, 23 Jan 2020 11:12:14 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by CY1NAM02FT059.mail.protection.outlook.com (10.152.74.211) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2665.18 via Frontend Transport; Thu, 23 Jan 2020 11:12:13 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaPF-0007hd-06; Thu, 23 Jan 2020 03:12:13 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1iuaP9-0007cp-Sg; Thu, 23 Jan 2020 03:12:07 -0800 Received: from [172.23.155.80] (helo=xhdengvm155080.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaP8-0007cR-79; Thu, 23 Jan 2020 03:12:06 -0800 Received: by xhdengvm155080.xilinx.com (Postfix, from userid 23151) id 198FE800C1; Thu, 23 Jan 2020 16:41:26 +0530 (IST) From: Kalyani Akula To: herbert@gondor.apana.org.au, davem@davemloft.net, monstr@seznam.cz, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Rob Herring , devicetree@vger.kernel.org, git-dev , Mohan Marutirao Dhanawade , Sarat Chand Savitala , Harsh Jain , Michal Simek , Kalyani Akula , Kalyani Akula , Mohan Marutirao Dhanawade Subject: [PATCH V5 3/4] crypto: Add Xilinx AES driver Date: Thu, 23 Jan 2020 16:41:16 +0530 Message-Id: <1579777877-10553-4-git-send-email-kalyani.akula@xilinx.com> X-Mailer: git-send-email 1.9.5 In-Reply-To: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> References: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(376002)(39860400002)(396003)(136003)(346002)(199004)(189003)(478600001)(81166006)(44832011)(36756003)(316002)(42186006)(2616005)(8936002)(81156014)(5660300002)(4326008)(54906003)(2906002)(107886003)(6266002)(336012)(30864003)(426003)(70586007)(70206006)(26005)(186003)(6666004)(356004)(8676002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR02MB2710;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;LANG:en;PTR:unknown-60-83.xilinx.com;A:1;MX:1; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 15f3311d-d3b3-45d3-60c6-08d79ff51987 X-MS-TrafficTypeDiagnostic: CY4PR02MB2710: X-Microsoft-Antispam-PRVS: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-Oob-TLC-OOBClassifiers: OLM:765; X-Forefront-PRVS: 029174C036 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UqJ4pB40uw5rxifJmFLUz0dqE6+AWQ0SONQLlSehU10MUmg29N8wT7zFxRDqHHv3pNt0OQ/oKYgA++gNwJrMEOttaw9id54taCxA5e2lqYwtAwd0Ri52t1JUWdN48jIm2MHI/QX3o4Ek9FXYIWSWbxCDdfD1Ir0vEEysJZsc81MYn386tRZPOsa9WVHdAHKkg4/2NCJo512Aa6wg2RxNvImqaxsQXbFoSwQpzHYrg9IiNj7sn2gT3FGqMYFoUCWABCN14pEVxzihQpHaQ7SEvabN+pvp868ezQd9KWVVZ2x0tDhefXtfEg8c+Jt5dhhe32CLWHwJE+yHPcATgIZpEX1krx80Ooclwr/Ns6gFdSt9oxtbj/2kB01oQU3rOpnMfS7KpuS0f/1zaswr+7+diks9J83xNfe35arWLty9IXrTz/SpfJKSOqBDiG/tcYn5 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2020 11:12:13.7743 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15f3311d-d3b3-45d3-60c6-08d79ff51987 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR02MB2710 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds AES driver support for the Xilinx ZynqMP SoC. Signed-off-by: Mohan Marutirao Dhanawade Signed-off-by: Kalyani Akula Acked-by: Michal Simek --- V5 Changes: - Replaced ARCH_ZYNQMP with ZYNQMP_FIRMWARE in Kconfig - Removed extra new lines. - Moved crypto: Add Xilinx AES driver patch from 4/4 to 3/4. - Updated Signed-off-by sequence. V4 Changes : - Addressed review comments. V3 Changes : - Added software fallback in cases where Hardware doesn't have the capability to handle the request. - Removed use of global variable for storing the driver data. V2 Changes : - Converted RFC PATCH to PATCH - Removed ALG_SET_KEY_TYPE that was added to support keytype attribute. Taken using setkey interface. - Removed deprecated BLKCIPHER in Kconfig - Erased Key/IV from the buffer. - Renamed zynqmp-aes driver to zynqmp-aes-gcm. - Addressed few other review comments drivers/crypto/Kconfig | 12 + drivers/crypto/Makefile | 1 + drivers/crypto/xilinx/Makefile | 2 + drivers/crypto/xilinx/zynqmp-aes-gcm.c | 466 +++++++++++++++++++++++++++++++++ 4 files changed, 481 insertions(+) create mode 100644 drivers/crypto/xilinx/Makefile create mode 100644 drivers/crypto/xilinx/zynqmp-aes-gcm.c diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 91eb768..f41e4eb 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -676,6 +676,18 @@ config CRYPTO_DEV_ROCKCHIP This driver interfaces with the hardware crypto accelerator. Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode. +config CRYPTO_DEV_ZYNQMP_AES + tristate "Support for Xilinx ZynqMP AES hw accelerator" + depends on ZYNQMP_FIRMWARE || COMPILE_TEST + select CRYPTO_AES + select CRYPTO_ENGINE + select CRYPTO_AEAD + help + Xilinx ZynqMP has AES-GCM engine used for symmetric key + encryption and decryption. This driver interfaces with AES hw + accelerator. Select this if you want to use the ZynqMP module + for AES algorithms. + config CRYPTO_DEV_MEDIATEK tristate "MediaTek's EIP97 Cryptographic Engine driver" depends on (ARM && ARCH_MEDIATEK) || COMPILE_TEST diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile index 40229d4..d505d16 100644 --- a/drivers/crypto/Makefile +++ b/drivers/crypto/Makefile @@ -47,5 +47,6 @@ obj-$(CONFIG_CRYPTO_DEV_VMX) += vmx/ obj-$(CONFIG_CRYPTO_DEV_BCM_SPU) += bcm/ obj-$(CONFIG_CRYPTO_DEV_SAFEXCEL) += inside-secure/ obj-$(CONFIG_CRYPTO_DEV_ARTPEC6) += axis/ +obj-$(CONFIG_CRYPTO_DEV_ZYNQMP_AES) += xilinx/ obj-y += hisilicon/ obj-$(CONFIG_CRYPTO_DEV_AMLOGIC_GXL) += amlogic/ diff --git a/drivers/crypto/xilinx/Makefile b/drivers/crypto/xilinx/Makefile new file mode 100644 index 0000000..534e32d --- /dev/null +++ b/drivers/crypto/xilinx/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_CRYPTO_DEV_ZYNQMP_AES) += zynqmp-aes-gcm.o diff --git a/drivers/crypto/xilinx/zynqmp-aes-gcm.c b/drivers/crypto/xilinx/zynqmp-aes-gcm.c new file mode 100644 index 0000000..ca82da5 --- /dev/null +++ b/drivers/crypto/xilinx/zynqmp-aes-gcm.c @@ -0,0 +1,466 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Xilinx ZynqMP AES Driver. + * Copyright (c) 2020 Xilinx Inc. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#define ZYNQMP_DMA_BIT_MASK 32U + +#define ZYNQMP_AES_KEY_SIZE AES_KEYSIZE_256 +#define ZYNQMP_AES_AUTH_SIZE 16U +#define ZYNQMP_KEY_SRC_SEL_KEY_LEN 1U +#define ZYNQMP_AES_BLK_SIZE 1U +#define ZYNQMP_AES_MIN_INPUT_BLK_SIZE 4U +#define ZYNQMP_AES_WORD_LEN 4U + +#define ZYNQMP_AES_GCM_TAG_MISMATCH_ERR 0x01 +#define ZYNQMP_AES_WRONG_KEY_SRC_ERR 0x13 +#define ZYNQMP_AES_PUF_NOT_PROGRAMMED 0xE300 + +enum zynqmp_aead_op { + ZYNQMP_AES_DECRYPT = 0, + ZYNQMP_AES_ENCRYPT +}; + +enum zynqmp_aead_keysrc { + ZYNQMP_AES_KUP_KEY = 0, + ZYNQMP_AES_DEV_KEY, + ZYNQMP_AES_PUF_KEY +}; + +struct zynqmp_aead_drv_ctx { + union { + struct aead_alg aead; + } alg; + struct device *dev; + struct crypto_engine *engine; + const struct zynqmp_eemi_ops *eemi_ops; +}; + +struct zynqmp_aead_hw_req { + u64 src; + u64 iv; + u64 key; + u64 dst; + u64 size; + u64 op; + u64 keysrc; +}; + +struct zynqmp_aead_tfm_ctx { + struct crypto_engine_ctx engine_ctx; + struct device *dev; + u8 key[ZYNQMP_AES_KEY_SIZE]; + u8 *iv; + u32 keylen; + u32 authsize; + enum zynqmp_aead_keysrc keysrc; + struct crypto_aead *fbk_cipher; +}; + +struct zynqmp_aead_req_ctx { + enum zynqmp_aead_op op; +}; + +static int zynqmp_aes_aead_cipher(struct aead_request *req) +{ + struct crypto_aead *aead = crypto_aead_reqtfm(req); + struct zynqmp_aead_tfm_ctx *tfm_ctx = crypto_aead_ctx(aead); + struct zynqmp_aead_req_ctx *rq_ctx = aead_request_ctx(req); + struct device *dev = tfm_ctx->dev; + struct aead_alg *alg = crypto_aead_alg(aead); + struct zynqmp_aead_drv_ctx *drv_ctx; + struct zynqmp_aead_hw_req *hwreq; + dma_addr_t dma_addr_data, dma_addr_hw_req; + unsigned int data_size; + unsigned int status; + size_t dma_size; + char *kbuf; + int err; + + drv_ctx = container_of(alg, struct zynqmp_aead_drv_ctx, alg.aead); + + if (!drv_ctx->eemi_ops->aes) + return -ENOTSUPP; + + if (tfm_ctx->keysrc == ZYNQMP_AES_KUP_KEY) + dma_size = req->cryptlen + ZYNQMP_AES_KEY_SIZE + + GCM_AES_IV_SIZE; + else + dma_size = req->cryptlen + GCM_AES_IV_SIZE; + + kbuf = dma_alloc_coherent(dev, dma_size, &dma_addr_data, GFP_KERNEL); + if (!kbuf) + return -ENOMEM; + + hwreq = dma_alloc_coherent(dev, sizeof(struct zynqmp_aead_hw_req), + &dma_addr_hw_req, GFP_KERNEL); + if (!hwreq) { + dma_free_coherent(dev, dma_size, kbuf, dma_addr_data); + return -ENOMEM; + } + + data_size = req->cryptlen; + scatterwalk_map_and_copy(kbuf, req->src, 0, req->cryptlen, 0); + memcpy(kbuf + data_size, req->iv, GCM_AES_IV_SIZE); + + hwreq->src = dma_addr_data; + hwreq->dst = dma_addr_data; + hwreq->iv = hwreq->src + data_size; + hwreq->keysrc = tfm_ctx->keysrc; + hwreq->op = rq_ctx->op; + + if (hwreq->op == ZYNQMP_AES_ENCRYPT) + hwreq->size = data_size; + else + hwreq->size = data_size - ZYNQMP_AES_AUTH_SIZE; + + if (hwreq->keysrc == ZYNQMP_AES_KUP_KEY) { + memcpy(kbuf + data_size + GCM_AES_IV_SIZE, + tfm_ctx->key, ZYNQMP_AES_KEY_SIZE); + + hwreq->key = hwreq->src + data_size + GCM_AES_IV_SIZE; + } else { + hwreq->key = 0; + } + + drv_ctx->eemi_ops->aes(dma_addr_hw_req, &status); + + if (status) { + switch (status) { + case ZYNQMP_AES_GCM_TAG_MISMATCH_ERR: + dev_err(dev, "ERROR: Gcm Tag mismatch\n"); + break; + case ZYNQMP_AES_WRONG_KEY_SRC_ERR: + dev_err(dev, "ERROR: Wrong KeySrc, enable secure mode\n"); + break; + case ZYNQMP_AES_PUF_NOT_PROGRAMMED: + dev_err(dev, "ERROR: PUF is not registered\n"); + break; + default: + dev_err(dev, "ERROR: Unknown error\n"); + break; + } + err = -status; + } else { + if (hwreq->op == ZYNQMP_AES_ENCRYPT) + data_size = data_size + ZYNQMP_AES_AUTH_SIZE; + else + data_size = data_size - ZYNQMP_AES_AUTH_SIZE; + + sg_copy_from_buffer(req->dst, sg_nents(req->dst), + kbuf, data_size); + err = 0; + } + + if (kbuf) { + memzero_explicit(kbuf, dma_size); + dma_free_coherent(dev, dma_size, kbuf, dma_addr_data); + } + if (hwreq) { + memzero_explicit(hwreq, sizeof(struct zynqmp_aead_hw_req)); + dma_free_coherent(dev, sizeof(struct zynqmp_aead_hw_req), + hwreq, dma_addr_hw_req); + } + return err; +} + +static int zynqmp_fallback_check(struct zynqmp_aead_tfm_ctx *tfm_ctx, + struct aead_request *req) +{ + int need_fallback = 0; + struct zynqmp_aead_req_ctx *rq_ctx = aead_request_ctx(req); + + if (tfm_ctx->authsize != ZYNQMP_AES_AUTH_SIZE) + need_fallback = 1; + + if (tfm_ctx->keysrc == ZYNQMP_AES_KUP_KEY && + tfm_ctx->keylen != ZYNQMP_AES_KEY_SIZE) { + need_fallback = 1; + } + if (req->assoclen != 0 || + req->cryptlen < ZYNQMP_AES_MIN_INPUT_BLK_SIZE) { + need_fallback = 1; + } + if ((req->cryptlen % ZYNQMP_AES_WORD_LEN) != 0) + need_fallback = 1; + + if (rq_ctx->op == ZYNQMP_AES_DECRYPT && + req->cryptlen <= ZYNQMP_AES_AUTH_SIZE) { + need_fallback = 1; + } + return need_fallback; +} + +static int zynqmp_handle_aes_req(struct crypto_engine *engine, + void *req) +{ + struct aead_request *areq = + container_of(req, struct aead_request, base); + struct crypto_aead *aead = crypto_aead_reqtfm(req); + struct zynqmp_aead_tfm_ctx *tfm_ctx = crypto_aead_ctx(aead); + struct zynqmp_aead_req_ctx *rq_ctx = aead_request_ctx(areq); + struct aead_request *subreq = aead_request_ctx(req); + int need_fallback; + int err; + + need_fallback = zynqmp_fallback_check(tfm_ctx, areq); + + if (need_fallback) { + aead_request_set_tfm(subreq, tfm_ctx->fbk_cipher); + + aead_request_set_callback(subreq, areq->base.flags, + NULL, NULL); + aead_request_set_crypt(subreq, areq->src, areq->dst, + areq->cryptlen, areq->iv); + aead_request_set_ad(subreq, areq->assoclen); + if (rq_ctx->op == ZYNQMP_AES_ENCRYPT) + err = crypto_aead_encrypt(subreq); + else + err = crypto_aead_decrypt(subreq); + } else { + err = zynqmp_aes_aead_cipher(areq); + } + + crypto_finalize_aead_request(engine, areq, err); + return 0; +} + +static int zynqmp_aes_aead_setkey(struct crypto_aead *aead, const u8 *key, + unsigned int keylen) +{ + struct crypto_tfm *tfm = crypto_aead_tfm(aead); + struct zynqmp_aead_tfm_ctx *tfm_ctx = + (struct zynqmp_aead_tfm_ctx *)crypto_tfm_ctx(tfm); + unsigned char keysrc; + int err; + + if (keylen == ZYNQMP_KEY_SRC_SEL_KEY_LEN) { + keysrc = *key; + if (keysrc == ZYNQMP_AES_KUP_KEY || + keysrc == ZYNQMP_AES_DEV_KEY || + keysrc == ZYNQMP_AES_PUF_KEY) { + tfm_ctx->keysrc = (enum zynqmp_aead_keysrc)keysrc; + } else { + tfm_ctx->keylen = keylen; + } + } else { + tfm_ctx->keylen = keylen; + if (keylen == ZYNQMP_AES_KEY_SIZE) { + tfm_ctx->keysrc = ZYNQMP_AES_KUP_KEY; + memcpy(tfm_ctx->key, key, keylen); + } + } + + tfm_ctx->fbk_cipher->base.crt_flags &= ~CRYPTO_TFM_REQ_MASK; + tfm_ctx->fbk_cipher->base.crt_flags |= (aead->base.crt_flags & + CRYPTO_TFM_REQ_MASK); + + err = crypto_aead_setkey(tfm_ctx->fbk_cipher, key, keylen); + if (err) { + aead->base.crt_flags &= ~CRYPTO_TFM_RES_MASK; + aead->base.crt_flags |= + (tfm_ctx->fbk_cipher->base.crt_flags & + CRYPTO_TFM_RES_MASK); + } + + return err; +} + +static int zynqmp_aes_aead_setauthsize(struct crypto_aead *aead, + unsigned int authsize) +{ + struct crypto_tfm *tfm = crypto_aead_tfm(aead); + struct zynqmp_aead_tfm_ctx *tfm_ctx = + (struct zynqmp_aead_tfm_ctx *)crypto_tfm_ctx(tfm); + + tfm_ctx->authsize = authsize; + return crypto_aead_setauthsize(tfm_ctx->fbk_cipher, authsize); +} + +static int zynqmp_aes_aead_encrypt(struct aead_request *req) +{ + struct zynqmp_aead_drv_ctx *drv_ctx; + struct crypto_aead *aead = crypto_aead_reqtfm(req); + struct aead_alg *alg = crypto_aead_alg(aead); + struct zynqmp_aead_req_ctx *rq_ctx = aead_request_ctx(req); + + rq_ctx->op = ZYNQMP_AES_ENCRYPT; + drv_ctx = container_of(alg, struct zynqmp_aead_drv_ctx, alg.aead); + + return crypto_transfer_aead_request_to_engine(drv_ctx->engine, req); +} + +static int zynqmp_aes_aead_decrypt(struct aead_request *req) +{ + struct zynqmp_aead_drv_ctx *drv_ctx; + struct crypto_aead *aead = crypto_aead_reqtfm(req); + struct aead_alg *alg = crypto_aead_alg(aead); + struct zynqmp_aead_req_ctx *rq_ctx = aead_request_ctx(req); + + rq_ctx->op = ZYNQMP_AES_DECRYPT; + drv_ctx = container_of(alg, struct zynqmp_aead_drv_ctx, alg.aead); + + return crypto_transfer_aead_request_to_engine(drv_ctx->engine, req); +} + +static int zynqmp_aes_aead_init(struct crypto_aead *aead) +{ + struct crypto_tfm *tfm = crypto_aead_tfm(aead); + struct zynqmp_aead_tfm_ctx *tfm_ctx = + (struct zynqmp_aead_tfm_ctx *)crypto_tfm_ctx(tfm); + struct zynqmp_aead_drv_ctx *drv_ctx; + struct aead_alg *alg = crypto_aead_alg(aead); + + drv_ctx = container_of(alg, struct zynqmp_aead_drv_ctx, alg.aead); + tfm_ctx->dev = drv_ctx->dev; + + tfm_ctx->engine_ctx.op.do_one_request = zynqmp_handle_aes_req; + tfm_ctx->engine_ctx.op.prepare_request = NULL; + tfm_ctx->engine_ctx.op.unprepare_request = NULL; + + tfm_ctx->fbk_cipher = crypto_alloc_aead(drv_ctx->alg.aead.base.cra_name, + 0, + CRYPTO_ALG_NEED_FALLBACK); + + if (IS_ERR(tfm_ctx->fbk_cipher)) { + pr_err("%s() Error: failed to allocate fallback for %s\n", + __func__, drv_ctx->alg.aead.base.cra_name); + return PTR_ERR(tfm_ctx->fbk_cipher); + } + + crypto_aead_set_reqsize(aead, + max(sizeof(struct zynqmp_aead_req_ctx), + sizeof(struct aead_request) + + crypto_aead_reqsize(tfm_ctx->fbk_cipher))); + return 0; +} + +static void zynqmp_aes_aead_exit(struct crypto_aead *aead) +{ + struct crypto_tfm *tfm = crypto_aead_tfm(aead); + struct zynqmp_aead_tfm_ctx *tfm_ctx = + (struct zynqmp_aead_tfm_ctx *)crypto_tfm_ctx(tfm); + + if (tfm_ctx->fbk_cipher) { + crypto_free_aead(tfm_ctx->fbk_cipher); + tfm_ctx->fbk_cipher = NULL; + } + memzero_explicit(tfm_ctx, sizeof(struct zynqmp_aead_tfm_ctx)); +} + +static struct zynqmp_aead_drv_ctx aes_drv_ctx = { + .alg.aead = { + .setkey = zynqmp_aes_aead_setkey, + .setauthsize = zynqmp_aes_aead_setauthsize, + .encrypt = zynqmp_aes_aead_encrypt, + .decrypt = zynqmp_aes_aead_decrypt, + .init = zynqmp_aes_aead_init, + .exit = zynqmp_aes_aead_exit, + .ivsize = GCM_AES_IV_SIZE, + .maxauthsize = ZYNQMP_AES_AUTH_SIZE, + .base = { + .cra_name = "gcm(aes)", + .cra_driver_name = "xilinx-zynqmp-aes-gcm", + .cra_priority = 200, + .cra_flags = CRYPTO_ALG_TYPE_AEAD | + CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, + .cra_blocksize = ZYNQMP_AES_BLK_SIZE, + .cra_ctxsize = sizeof(struct zynqmp_aead_tfm_ctx), + .cra_module = THIS_MODULE, + } + } +}; + +static int zynqmp_aes_aead_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + int err; + + /* ZynqMP AES driver supports only one instance */ + if (!aes_drv_ctx.dev) + aes_drv_ctx.dev = dev; + else + return -ENODEV; + + aes_drv_ctx.eemi_ops = zynqmp_pm_get_eemi_ops(); + if (IS_ERR(aes_drv_ctx.eemi_ops)) { + dev_err(dev, "Failed to get ZynqMP EEMI interface\n"); + return PTR_ERR(aes_drv_ctx.eemi_ops); + } + + err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(ZYNQMP_DMA_BIT_MASK)); + if (err < 0) { + dev_err(dev, "No usable DMA configuration\n"); + return err; + } + + aes_drv_ctx.engine = crypto_engine_alloc_init(dev, 1); + if (!aes_drv_ctx.engine) { + dev_err(dev, "Cannot alloc AES engine\n"); + err = -ENOMEM; + goto err_engine; + } + + err = crypto_engine_start(aes_drv_ctx.engine); + if (err) { + dev_err(dev, "Cannot start AES engine\n"); + goto err_engine; + } + + err = crypto_register_aead(&aes_drv_ctx.alg.aead); + if (err < 0) { + dev_err(dev, "Failed to register AEAD alg.\n"); + goto err_aead; + } + return 0; + +err_aead: + crypto_unregister_aead(&aes_drv_ctx.alg.aead); + +err_engine: + if (aes_drv_ctx.engine) + crypto_engine_exit(aes_drv_ctx.engine); + + return err; +} + +static int zynqmp_aes_aead_remove(struct platform_device *pdev) +{ + crypto_engine_exit(aes_drv_ctx.engine); + crypto_unregister_aead(&aes_drv_ctx.alg.aead); + + return 0; +} + +static const struct of_device_id zynqmp_aes_dt_ids[] = { + { .compatible = "xlnx,zynqmp-aes" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, zynqmp_aes_dt_ids); + +static struct platform_driver zynqmp_aes_driver = { + .probe = zynqmp_aes_aead_probe, + .remove = zynqmp_aes_aead_remove, + .driver = { + .name = "zynqmp-aes", + .of_match_table = zynqmp_aes_dt_ids, + }, +}; + +module_platform_driver(zynqmp_aes_driver); +MODULE_LICENSE("GPL"); From patchwork Thu Jan 23 11:11:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalyani Akula X-Patchwork-Id: 11347359 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 58C691580 for ; Thu, 23 Jan 2020 11:12:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2BDA324683 for ; Thu, 23 Jan 2020 11:12:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="i6KS5hEH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729014AbgAWLMh (ORCPT ); Thu, 23 Jan 2020 06:12:37 -0500 Received: from mail-mw2nam12on2046.outbound.protection.outlook.com ([40.107.244.46]:6232 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729012AbgAWLMh (ORCPT ); Thu, 23 Jan 2020 06:12:37 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h5Ea8IqwlapU6uwT3Rd3zHZbOEiGLzQy7uOXuuM8OfdKDULD0MdJ9gERut/kTJGih59f66YG89l9w092Yl3n6qOqiYE9M78Hy3QwUKPjjEjr4RC5sgTLcy0WLovj0JjwWz5jARNQ23aRWEkFAIA+qpAVmdlVdvadvP2yWeC89S8AJiagOy6Ab4d/Gkvi1dVqYiWdpwhnXNxPo4QtEcG/GaVfsyQxIGwPCBipFek5ZJhfHqV2Qcra/HbIzPjGsG2wQauL64d9XUugBca1olEOkgEoYAqWUv8Az+Z7R3MUorseU1cudqvDU0OdmitwPprID7V8BCOCDT7ECocRwR6YJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L1bM0EYu5TyW0Xfnl54FBQ/xod4oyrMnC4TJCUFLFYU=; b=UbXvJKN0gV++pI6+TluV0tkzPqOmaLOQVM8vokCsxVhqk9ylCowZhYsax0+gKus9a3P5q8fPr9ITkTojLHqUoLukIR5KfrbfsHkzx35xUtkp4Ec+++50M+iBc86WSZDp7bBruQwtVjGygnlCEYesS99OIkfhO0GhnMT0buJxAp32sth6LLGIzK027qZA4qRftwZK5HR6Rc37vLPtU9xodWf9U4IlwdMkrgrjKJEXvXmT6xQKrWzmF88RneYyCR1QFehCy6uip4lopU7tdb7xvJP7bDOl7chKdsXJIcx9wPBNveKaDp1y+jJ9pzHzidzXykLdU+ZUa6uEjZpKJ592rw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.60.83) smtp.rcpttodomain=davemloft.net smtp.mailfrom=xilinx.com; dmarc=bestguesspass action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L1bM0EYu5TyW0Xfnl54FBQ/xod4oyrMnC4TJCUFLFYU=; b=i6KS5hEHORt82pUPC90nA7XabszvW80IbkfH41VqKahJzfrBOu7h023nqP+VG6FinYCWQUuv5rBBfebhMS5x17/U+fcVqTKAJI1CAtcXhqoqqlIHCBy9TLxjCnYmGaQ7/l2GgbQ1MuG/xjeoI/s1/0AIaFv2QbRDUz142enKPVo= Received: from MN2PR02CA0008.namprd02.prod.outlook.com (2603:10b6:208:fc::21) by BN7PR02MB5348.namprd02.prod.outlook.com (2603:10b6:408:2c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.19; Thu, 23 Jan 2020 11:12:34 +0000 Received: from BL2NAM02FT022.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::204) by MN2PR02CA0008.outlook.office365.com (2603:10b6:208:fc::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.19 via Frontend Transport; Thu, 23 Jan 2020 11:12:34 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2NAM02FT022.mail.protection.outlook.com (10.152.77.153) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2665.18 via Frontend Transport; Thu, 23 Jan 2020 11:12:33 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaPZ-0007hk-40; Thu, 23 Jan 2020 03:12:33 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1iuaPU-0007gf-0O; Thu, 23 Jan 2020 03:12:28 -0800 Received: from [172.23.155.80] (helo=xhdengvm155080.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1iuaPL-0007fL-Ih; Thu, 23 Jan 2020 03:12:19 -0800 Received: by xhdengvm155080.xilinx.com (Postfix, from userid 23151) id 1E47C800C7; Thu, 23 Jan 2020 16:41:26 +0530 (IST) From: Kalyani Akula To: herbert@gondor.apana.org.au, davem@davemloft.net, monstr@seznam.cz, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Rob Herring , devicetree@vger.kernel.org, git-dev , Mohan Marutirao Dhanawade , Sarat Chand Savitala , Harsh Jain , Michal Simek , Kalyani Akula , Kalyani Akula Subject: [PATCH V5 4/4] arm64: zynqmp: Add Xilinx AES node. Date: Thu, 23 Jan 2020 16:41:17 +0530 Message-Id: <1579777877-10553-5-git-send-email-kalyani.akula@xilinx.com> X-Mailer: git-send-email 1.9.5 In-Reply-To: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> References: <1579777877-10553-1-git-send-email-kalyani.akula@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(136003)(39860400002)(396003)(376002)(346002)(199004)(189003)(81156014)(26005)(81166006)(36756003)(8676002)(4744005)(107886003)(2906002)(316002)(5660300002)(336012)(70586007)(70206006)(356004)(6266002)(6666004)(54906003)(2616005)(478600001)(44832011)(426003)(186003)(4326008)(42186006)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN7PR02MB5348;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;LANG:en;PTR:unknown-60-83.xilinx.com;A:1;MX:1; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0dbda26b-bcfc-4a39-0d32-08d79ff52564 X-MS-TrafficTypeDiagnostic: BN7PR02MB5348: X-Microsoft-Antispam-PRVS: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-Forefront-PRVS: 029174C036 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DioHXt3j88T2TcrzNCoSZ220A6hNcQdnio/Do8GIPrB0Qh1DTNxJJQeAp5c0g8Li7QSKY0aNVAR7BON6P0Syv0LCL73wKsKtSk727j0rbwJQ6sgGV2MN/Ph0D2WBoIlCTkU/LFjJr4SjRsbBJlCoIHv91mIVZt0LG5ZKb3NJpcIlhY40A3v0Y8xya4VEWD7YNsRhAqvstEPVLcEYhqVsJomLxQTiu+J9qfPloFpcmLFSwm2jQyJgWPi1Ns3GtBb6tbgEcW5HHyyWT38QT6VgnXu6RReKKoAwNuK3TZ9wMEPomWTIa4/Q29N2jkH+3IqJ+Juz+RJxF+ypxeV/DfgWyGUVXUYl7SVaStvNSk0B7ccrkiuR/4jIKWiv3L5F9yh5sh+uPVhVa7MVF/wTUBlBqeYn5UaD12yS1JlzoWljdSkoSrY8DEMF7OXU27g6GitK X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2020 11:12:33.7552 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0dbda26b-bcfc-4a39-0d32-08d79ff52564 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR02MB5348 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds a AES DT node for Xilinx ZynqMP SoC. Signed-off-by: Kalyani Akula Acked-by: Michal Simek --- V5 Changes: - Moved arm64: zynqmp: Add Xilinx AES node patch from 2/4 to 4/4 - Corrected typo in the subject. - Updated zynqmp-aes node to correct location. arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi index 3c731e7..e9fbbe1 100644 --- a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi +++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi @@ -133,6 +133,10 @@ zynqmp_pcap: pcap { compatible = "xlnx,zynqmp-pcap-fpga"; }; + + xlnx_aes: zynqmp-aes { + compatible = "xlnx,zynqmp-aes"; + }; }; };