From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21F813B29D; Mon, 12 Feb 2024 13:51:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745898; cv=none; b=EyFfmvQ5cGfSsUGLhFP3gHWvw6ZRfm/3JLjoR4rbVwT4L0mRQ3B5CS+iUK3FOiwtadxUCGd7lt+GA0ZOJLvFsbFT71V35H+anEt+yVEQn/rPSY8fYdKRCc0f6c0ud6hRMqrN9601yc1eXOH8t4eU1O29xlvfep83Jxk7CeDxXLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745898; c=relaxed/simple; bh=K7UieHG9RsHgDBpcjxeQWQsIDLszF4my3Mke2V00m8I=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ehG+A2vESK3jwPtuIyIO7U7Wo1R2o3muHfhBdivG/z3YvaPlr5txaetVuRzKgBXa8+zTWzIHc0qLFAGYXkwNs2U8aS1uVxjP7heX8jVnohnxJt3Q8tnAmcD4sCJAUMWRBRCPcrhXd9azHn/T1ggfddoQzwLKZqz8Jx8b+cR1NTM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=Cm2y3vvZ; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="Cm2y3vvZ" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id C2C08120006; Mon, 12 Feb 2024 16:51:27 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru C2C08120006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745887; bh=T4w8YmD8VWdxpwAM+qh0428tx6ubcLSqso0bV80y5tA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=Cm2y3vvZUxudPUBBR6C2Z6HuVw+TaGyK7KlQswJpvBSf72osvXEs/ZfpasyUZi576 kNfsgGL/i+b5637MufqbKuPqt4jMFMbDcbedN2YwSY0oGgN7UBBCg4UeByUsSH4a2O 2eH36CnBieVhKH5re+5UjiaHthrH5DYGsH9ojYcjbwYKD74sxQ3p6uuwSIqNOKvGFM GQP3lhJcuYdzV1B+fxMIOCI6XA8DEpx5qjoRIMP2y2gZHT3+nBykWfV3U6YkDnsbfu lzBFpPAS4plhdTtzEO8NZ4VsYUcoFepnm45NUGsNWkWkIdwYIqf+5EzCJoclnsplff f4Z+EH5V9YjCg== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:27 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:25 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 01/20] drivers: crypto: meson: don't hardcode IRQ count Date: Mon, 12 Feb 2024 16:50:49 +0300 Message-ID: <20240212135108.549755-2-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" IRQ count is no longer hardcoded, and make it part of struct meson_flow. We need this for extend driver support for other Amlogic SoC's. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 47 ++++++++++++--------- drivers/crypto/amlogic/amlogic-gxl.h | 8 ++-- 3 files changed, 31 insertions(+), 26 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 29048da6f50a..b19032f92415 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -19,7 +19,7 @@ =20 static int get_engine_number(struct meson_dev *mc) { - return atomic_inc_return(&mc->flow) % MAXFLOW; + return atomic_inc_return(&mc->flow) % mc->flow_cnt; } =20 static bool meson_cipher_need_fallback(struct skcipher_request *areq) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index f54ab0d0b1e8..35ec64df5b3a 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -28,8 +28,8 @@ static irqreturn_t meson_irq_handler(int irq, void *data) int flow; u32 p; =20 - for (flow =3D 0; flow < MAXFLOW; flow++) { - if (mc->irqs[flow] =3D=3D irq) { + for (flow =3D 0; flow < mc->flow_cnt; flow++) { + if (mc->chanlist[flow].irq =3D=3D irq) { p =3D readl(mc->base + ((0x04 + flow) << 2)); if (p) { writel_relaxed(0xF, mc->base + ((0x4 + flow) << 2)); @@ -110,7 +110,7 @@ static int meson_debugfs_show(struct seq_file *seq, voi= d *v) struct meson_dev *mc __maybe_unused =3D seq->private; int i; =20 - for (i =3D 0; i < MAXFLOW; i++) + for (i =3D 0; i < mc->flow_cnt; i++) seq_printf(seq, "Channel %d: nreq %lu\n", i, #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG mc->chanlist[i].stat_req); @@ -153,14 +153,32 @@ static void meson_free_chanlist(struct meson_dev *mc,= int i) */ static int meson_allocate_chanlist(struct meson_dev *mc) { + struct platform_device *pdev =3D to_platform_device(mc->dev); int i, err; =20 - mc->chanlist =3D devm_kcalloc(mc->dev, MAXFLOW, + mc->flow_cnt =3D platform_irq_count(pdev); + if (mc->flow_cnt <=3D 0) { + dev_err(mc->dev, "No IRQs defined\n"); + return -ENODEV; + } + + mc->chanlist =3D devm_kcalloc(mc->dev, mc->flow_cnt, sizeof(struct meson_flow), GFP_KERNEL); if (!mc->chanlist) return -ENOMEM; =20 - for (i =3D 0; i < MAXFLOW; i++) { + for (i =3D 0; i < mc->flow_cnt; i++) { + mc->chanlist[i].irq =3D platform_get_irq(pdev, i); + if (mc->chanlist[i].irq < 0) + return mc->chanlist[i].irq; + + err =3D devm_request_irq(mc->dev, mc->chanlist[i].irq, + meson_irq_handler, 0, "aml-crypto", mc); + if (err < 0) { + dev_err(mc->dev, "Cannot request IRQ for flow %d\n", i); + return err; + } + init_completion(&mc->chanlist[i].complete); =20 mc->chanlist[i].engine =3D crypto_engine_alloc_init(mc->dev, true); @@ -230,7 +248,7 @@ static void meson_unregister_algs(struct meson_dev *mc) static int meson_crypto_probe(struct platform_device *pdev) { struct meson_dev *mc; - int err, i; + int err; =20 mc =3D devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); if (!mc) @@ -252,19 +270,6 @@ static int meson_crypto_probe(struct platform_device *= pdev) return err; } =20 - for (i =3D 0; i < MAXFLOW; i++) { - mc->irqs[i] =3D platform_get_irq(pdev, i); - if (mc->irqs[i] < 0) - return mc->irqs[i]; - - err =3D devm_request_irq(&pdev->dev, mc->irqs[i], meson_irq_handler, 0, - "gxl-crypto", mc); - if (err < 0) { - dev_err(mc->dev, "Cannot request IRQ for flow %d\n", i); - return err; - } - } - err =3D clk_prepare_enable(mc->busclk); if (err !=3D 0) { dev_err(&pdev->dev, "Cannot prepare_enable busclk\n"); @@ -294,7 +299,7 @@ static int meson_crypto_probe(struct platform_device *p= dev) error_alg: meson_unregister_algs(mc); error_flow: - meson_free_chanlist(mc, MAXFLOW - 1); + meson_free_chanlist(mc, mc->flow_cnt - 1); clk_disable_unprepare(mc->busclk); return err; } @@ -309,7 +314,7 @@ static void meson_crypto_remove(struct platform_device = *pdev) =20 meson_unregister_algs(mc); =20 - meson_free_chanlist(mc, MAXFLOW - 1); + meson_free_chanlist(mc, mc->flow_cnt - 1); =20 clk_disable_unprepare(mc->busclk); } diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 1013a666c932..79177cfa8b88 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -22,8 +22,6 @@ #define MESON_OPMODE_ECB 0 #define MESON_OPMODE_CBC 1 =20 -#define MAXFLOW 2 - #define MAXDESC 64 =20 #define DESC_LAST BIT(18) @@ -62,6 +60,7 @@ struct meson_desc { * @keylen: keylen for this flow operation * @complete: completion for the current task on this flow * @status: set to 1 by interrupt if task is done + * @irq: IRQ number for amlogic-crypto * @t_phy: Physical address of task * @tl: pointer to the current ce_task for this flow * @stat_req: number of request done by this flow @@ -70,6 +69,7 @@ struct meson_flow { struct crypto_engine *engine; struct completion complete; int status; + int irq; unsigned int keylen; dma_addr_t t_phy; struct meson_desc *tl; @@ -85,7 +85,7 @@ struct meson_flow { * @dev: the platform device * @chanlist: array of all flow * @flow: flow to use in next request - * @irqs: IRQ numbers for amlogic-crypto + * @flow_cnt: flow count for amlogic-crypto * @dbgfs_dir: Debugfs dentry for statistic directory * @dbgfs_stats: Debugfs dentry for statistic counters */ @@ -95,7 +95,7 @@ struct meson_dev { struct device *dev; struct meson_flow *chanlist; atomic_t flow; - int irqs[MAXFLOW]; + int flow_cnt; #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG struct dentry *dbgfs_dir; #endif --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AA613A8CA; Mon, 12 Feb 2024 13:51:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745895; cv=none; b=kKE8XJiXB2hOy9vOtyVXNlFdVhF2KzkoKmolkJxtMVf35WNu7wwbZeJw+gdot31tU2qUPm0fcRzGhASyUkUdMBlsfnZ10EXpX01Q90kbiZ2NPlqCdJu4telnPf7/Jec9M9YLabU3l+V9F8utv8h2vlWVbIPDqpjNIIVHZT1o3iU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745895; c=relaxed/simple; bh=bR8br+Tqjcysy5ILarsJGbafjXWsDhsUD6VrlwYJ5p0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Lr++QftSNL1V+gawQJig7C1+MeDkVyMEGw9qY14AA6fuRHCkanKX2FufsegTCwcWjeSSC3ZmYWNcWnNAi0v3+QIrbkT1aauk8IDGAE7nUwrSM3rMcOAkwNC91bE0BMVrvTfM4laE27Yoo6/Q2yfQMc2aZOrVZx3NaSRqvQYuahc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=oIVsPLKd; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="oIVsPLKd" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 2E933100015; Mon, 12 Feb 2024 16:51:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 2E933100015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745889; bh=Kggh0mx1qq/xwtSS+ahNNuEm9ZI5KGYt1FdkI7ZDCCI=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=oIVsPLKdKPnRBbobAAuq9ytwTycpqAewvPSLgyeQaXLOJ3Mk8uzR30tO5y+WnNjw7 p3BhtompWOlWvJFI7Uo9/12MK68zXZ5ZA5jn41vLKgJSl/IfLbJ5eyazvhr9wo7YYF iwSxl6KfgvmxSw6UN+ItSgYI4TrOsa6BeBLbYtXV/B8u+TNXqO/CAjnwilIZk8i3eW mC3y7f4Ch47lJIeQN3kYiBOMEL5xj6HEVs+Hc+thNIzuPtGMfIHGsb+Qo84bjfDZgw SfgafoQUmCfSKxc40SO5tNvjWIou0XFqACqQPt6Y1i9qpu1+ikmQq0o/L+vXNLWm0s g/sirP98ijHiw== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:29 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:28 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 02/20] drviers: crypto: meson: add platform data Date: Mon, 12 Feb 2024 16:50:50 +0300 Message-ID: <20240212135108.549755-3-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" To support other Amlogic SoC's we have to use platform data: descriptors and status registers offsets are individual for each SoC series. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 32 +++++++++++++++------ drivers/crypto/amlogic/amlogic-gxl.h | 11 +++++++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index b19032f92415..7eff3ae7356f 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -225,7 +225,7 @@ static int meson_cipher(struct skcipher_request *areq) =20 reinit_completion(&mc->chanlist[flow].complete); mc->chanlist[flow].status =3D 0; - writel(mc->chanlist[flow].t_phy | 2, mc->base + (flow << 2)); + writel(mc->chanlist[flow].t_phy | 2, mc->base + ((mc->pdata->descs_reg + = flow) << 2)); wait_for_completion_interruptible_timeout(&mc->chanlist[flow].complete, msecs_to_jiffies(500)); if (mc->chanlist[flow].status =3D=3D 0) { diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 35ec64df5b3a..4d1b1d5b7a54 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -18,6 +18,7 @@ #include #include #include +#include #include =20 #include "amlogic-gxl.h" @@ -30,9 +31,10 @@ static irqreturn_t meson_irq_handler(int irq, void *data) =20 for (flow =3D 0; flow < mc->flow_cnt; flow++) { if (mc->chanlist[flow].irq =3D=3D irq) { - p =3D readl(mc->base + ((0x04 + flow) << 2)); + p =3D readl(mc->base + ((mc->pdata->status_reg + flow) << 2)); if (p) { - writel_relaxed(0xF, mc->base + ((0x4 + flow) << 2)); + writel_relaxed(0xF, mc->base + + ((mc->pdata->status_reg + flow) << 2)); mc->chanlist[flow].status =3D 1; complete(&mc->chanlist[flow].complete); return IRQ_HANDLED; @@ -245,15 +247,35 @@ static void meson_unregister_algs(struct meson_dev *m= c) } } =20 +static const struct meson_pdata meson_gxl_pdata =3D { + .descs_reg =3D 0x0, + .status_reg =3D 0x4, +}; + +static const struct of_device_id meson_crypto_of_match_table[] =3D { + { + .compatible =3D "amlogic,gxl-crypto", + .data =3D &meson_gxl_pdata, + }, + {}, +}; +MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); + static int meson_crypto_probe(struct platform_device *pdev) { + const struct of_device_id *match; struct meson_dev *mc; int err; =20 + match =3D of_match_device(meson_crypto_of_match_table, &pdev->dev); + if (!match) + return -EINVAL; + mc =3D devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); if (!mc) return -ENOMEM; =20 + mc->pdata =3D match->data; mc->dev =3D &pdev->dev; platform_set_drvdata(pdev, mc); =20 @@ -319,12 +341,6 @@ static void meson_crypto_remove(struct platform_device= *pdev) clk_disable_unprepare(mc->busclk); } =20 -static const struct of_device_id meson_crypto_of_match_table[] =3D { - { .compatible =3D "amlogic,gxl-crypto", }, - {} -}; -MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); - static struct platform_driver meson_crypto_driver =3D { .probe =3D meson_crypto_probe, .remove_new =3D meson_crypto_remove, diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 79177cfa8b88..9ad75da214ff 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -78,6 +78,16 @@ struct meson_flow { #endif }; =20 +/* + * struct meson_pdata - SoC series dependent data. + * @reg_descs: offset to descriptors register + * @reg_status: offset to status register + */ +struct meson_pdata { + u32 descs_reg; + u32 status_reg; +}; + /* * struct meson_dev - main container for all this driver information * @base: base address of amlogic-crypto @@ -93,6 +103,7 @@ struct meson_dev { void __iomem *base; struct clk *busclk; struct device *dev; + const struct meson_pdata *pdata; struct meson_flow *chanlist; atomic_t flow; int flow_cnt; --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A35393C48A; Mon, 12 Feb 2024 13:51:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745900; cv=none; b=qfvrXpEPpp5Lvup6ycGreNQlAFSIqIO+bnPYnOgUa1g5f6U4nuEaIg554Bewvf4zjuyPtsyUxTYERmMQv9+k/4BVZJ4pggJ284CZvaa2BlUvcq27jxVyQaStikVlF/a3WAexmj36tHtAjEKMiyAzA1LG+SrhSXCmrPVXUFCvDP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745900; c=relaxed/simple; bh=msktiAcUNOI1Ofbu2VIxLIX3KXD7NKWavA/GIn4YGpI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Hs7lvIeBc+5a5rd7bt+9NshhBUV05cCk1t0WQRtl17GIBPx9i0mKJ+naCrrLK8erKwGZiLHeuyGOd8Cz/MYhZe0/UfVrvq8/ZD4qpvIenk5fsPQgRtkcVtqO3aeY0/nNnCAEwMUS3oe2NkYvF+1vo3pF9OJAGvtObZD3bMcyLE8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=WGexFQK4; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="WGexFQK4" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id ADBB2120019; Mon, 12 Feb 2024 16:51:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru ADBB2120019 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745890; bh=JRDgg7o64zkG8+972kncfw3X0h+nBkIPPG5PA2GVm7g=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=WGexFQK4+prUIX10KTDIVfOllNvonykQB+LQZsbAupywwRVwRnbzGRbncbyT0WuRa X1XUFekRB6fSC9vc7ksUXJ1Xq85LqreqSVdCl9hBZmQ9wHvZJgM1da1thv3XYlfImf 3Gpc5Fz6xI2qQmyNhkk0lfu3TAKEXTFKep15hUHY5sYVt2nJpneXpgNUXzEVktcl7y pV226vIm9vIv2dxU9HafTIMrclSTSQg3WknvjWPV2wdMe8LhnHzOJF/bScgigzPIbE sOEQvoU1o05m+XCqqpe7pA9753yPmmdE+NixvM2bvQdR2x2q/XdRwvrvzb+SJxnJZ0 aBQq0SxvMQSyg== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:30 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:29 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 03/20] drivers: crypto: meson: make CLK controller optional Date: Mon, 12 Feb 2024 16:50:51 +0300 Message-ID: <20240212135108.549755-4-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Amlogic crypto IP doesn't take a clock input on some SoCs: AXG / A1 / S4 / G12. So make it optional. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-core.c | 21 ++++++++------------- drivers/crypto/amlogic/amlogic-gxl.h | 2 ++ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 4d1b1d5b7a54..54113c524ec5 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -250,6 +250,7 @@ static void meson_unregister_algs(struct meson_dev *mc) static const struct meson_pdata meson_gxl_pdata =3D { .descs_reg =3D 0x0, .status_reg =3D 0x4, + .need_clk =3D true, }; =20 static const struct of_device_id meson_crypto_of_match_table[] =3D { @@ -285,17 +286,14 @@ static int meson_crypto_probe(struct platform_device = *pdev) dev_err(&pdev->dev, "Cannot request MMIO err=3D%d\n", err); return err; } - mc->busclk =3D devm_clk_get(&pdev->dev, "blkmv"); - if (IS_ERR(mc->busclk)) { - err =3D PTR_ERR(mc->busclk); - dev_err(&pdev->dev, "Cannot get core clock err=3D%d\n", err); - return err; - } =20 - err =3D clk_prepare_enable(mc->busclk); - if (err !=3D 0) { - dev_err(&pdev->dev, "Cannot prepare_enable busclk\n"); - return err; + if (mc->pdata->need_clk) { + mc->busclk =3D devm_clk_get_enabled(&pdev->dev, "blkmv"); + if (IS_ERR(mc->busclk)) { + err =3D PTR_ERR(mc->busclk); + dev_err(&pdev->dev, "Cannot get and enable core clock err=3D%d\n", err); + return err; + } } =20 err =3D meson_allocate_chanlist(mc); @@ -322,7 +320,6 @@ static int meson_crypto_probe(struct platform_device *p= dev) meson_unregister_algs(mc); error_flow: meson_free_chanlist(mc, mc->flow_cnt - 1); - clk_disable_unprepare(mc->busclk); return err; } =20 @@ -337,8 +334,6 @@ static void meson_crypto_remove(struct platform_device = *pdev) meson_unregister_algs(mc); =20 meson_free_chanlist(mc, mc->flow_cnt - 1); - - clk_disable_unprepare(mc->busclk); } =20 static struct platform_driver meson_crypto_driver =3D { diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 9ad75da214ff..a36b9bac63a0 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -82,10 +82,12 @@ struct meson_flow { * struct meson_pdata - SoC series dependent data. * @reg_descs: offset to descriptors register * @reg_status: offset to status register + * @need_clk: clock input is needed */ struct meson_pdata { u32 descs_reg; u32 status_reg; + bool need_clk; }; =20 /* --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3C6F3A8ED; Mon, 12 Feb 2024 13:51:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745896; cv=none; b=g7ZH9bSwNK4JzjV1kAvWzAyok8FfTkmXeQ51KRA/3fvhnbgD/TqPu9thENLKePOznKeO7aYb/KskIodj/qHicTo8BjVw9z3zTqb89qm57W6dZ/P/oWsMJFBlk1ApRlluAx3DTa4sb7PnfVEoGFPv4qk2I0CimUF/JoLkyW3xUbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745896; c=relaxed/simple; bh=5zI8UN7fhVfdhAEgudSO3uFgTiJ7UGsZc/1lO+6mb3k=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ItpUIkf6nAKIp8PusfI7kZYIqdokx/NfixMNKKuwrylb8mhYmk+dUtfp6BO8Ekb058zc/IkLN5Pw2fI6oCnOVSy+VN9YxB5JalYG1OhnTT6zAa3n0zu5e0HJZPvTvFK2ckpcAc3mGsgnBibAJNdJZ1Pnk/DNVPMG1mv9nRYDNiU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=SoDRbSlw; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="SoDRbSlw" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 1C7F7100018; Mon, 12 Feb 2024 16:51:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 1C7F7100018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745892; bh=HZKXOUHwXi/WEeBn0gsslzGQgCLVYv/KpYJnzTxg//0=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=SoDRbSlwQ9aGa04RSbhxp7e6cBbZPnDETdkz7gKoFypJicr6OXwnxFATveF7lcWL4 tF5DU2YksgZKvsc7zaDDqwxlI+nZLmLaDXFcdYq9209+MRbKPJkQYY7YMSrTunBgRk r7OFtmRl8o0tv3REC2bOUqxzwwyMe5W1plfssln3GdtV6cwLgHKfVidcH7oNuA8oYF mXKNmmm5Y/8jNDkDAYHlwU9q+18NKsdKIiIz08i9lXoOmRIKE9Ao8VUSElcm2CMw3y mzbIQnXkiWCNkaOPCsVt12s94Z389urssJUWRuRZSTc7jcCn41YDgMt+F4IuLrugke xKzsc9QE6KUjQ== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:31 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:31 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 04/20] drivers: crypto: meson: add MMIO helpers Date: Mon, 12 Feb 2024 16:50:52 +0300 Message-ID: <20240212135108.549755-5-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Add MMIO access helpers: meson_dma_start() and meson_dma_ready(). Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 24 ++++++++++++++++----- drivers/crypto/amlogic/amlogic-gxl.h | 2 ++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 7eff3ae7356f..1fe916b0a138 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -225,7 +225,7 @@ static int meson_cipher(struct skcipher_request *areq) =20 reinit_completion(&mc->chanlist[flow].complete); mc->chanlist[flow].status =3D 0; - writel(mc->chanlist[flow].t_phy | 2, mc->base + ((mc->pdata->descs_reg + = flow) << 2)); + meson_dma_start(mc, flow); wait_for_completion_interruptible_timeout(&mc->chanlist[flow].complete, msecs_to_jiffies(500)); if (mc->chanlist[flow].status =3D=3D 0) { diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 54113c524ec5..372c30f72072 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -23,18 +23,32 @@ =20 #include "amlogic-gxl.h" =20 +void meson_dma_start(struct meson_dev *mc, int flow) +{ + u32 offset =3D (mc->pdata->descs_reg + flow) << 2; + + writel(mc->chanlist[flow].t_phy | 2, mc->base + offset); +} + +static bool meson_dma_ready(struct meson_dev *mc, int flow) +{ + u32 offset =3D (mc->pdata->status_reg + flow) << 2; + u32 data =3D readl(mc->base + offset); + + if (data) + writel_relaxed(0xF, mc->base + offset); + + return data; +} + static irqreturn_t meson_irq_handler(int irq, void *data) { struct meson_dev *mc =3D (struct meson_dev *)data; int flow; - u32 p; =20 for (flow =3D 0; flow < mc->flow_cnt; flow++) { if (mc->chanlist[flow].irq =3D=3D irq) { - p =3D readl(mc->base + ((mc->pdata->status_reg + flow) << 2)); - if (p) { - writel_relaxed(0xF, mc->base + - ((mc->pdata->status_reg + flow) << 2)); + if (meson_dma_ready(mc, flow)) { mc->chanlist[flow].status =3D 1; complete(&mc->chanlist[flow].complete); return IRQ_HANDLED; diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index a36b9bac63a0..59fc6a67e0a9 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -163,6 +163,8 @@ struct meson_alg_template { #endif }; =20 +void meson_dma_start(struct meson_dev *mc, int flow); + int meson_enqueue(struct crypto_async_request *areq, u32 type); =20 int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC14A3B78D; Mon, 12 Feb 2024 13:51:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745898; cv=none; b=K/Dxiugm2FTgcOtLM+Bmu6BGNht26YfKSKZ6enMPJySvhZ/Q4WWoRZj6SlkljQkvT3/KBx6WeOPvYt3dnXpKLNLQ+jctBkZ67J6ex+zdliJeLpO+Fdnldoa/ZZAnPEinK+Q/ig/DsQZLDUQXy82ScH8vm8unEBF2BKdOXoVNP3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745898; c=relaxed/simple; bh=34/1EnEtwPTJIh5Po5Rh4VqKF3E810mxNKz7y/YhZP8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SKT6u+F+4fhEgv9dwHIAyD4o1nqkKnApQ/xubq1uLC+zAvhKBtzm+In2BDEppAI8W5N8/bSU6NQIDIoDtBk3bzHiGugsgwHkKNsx9hPvI8TKhJoBzBtYkh7X/9JuZQUohbImBr3sBP8vCHwsNy6okabtrvMcAObQQaNIxXxt8gE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=sbv2RSt7; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="sbv2RSt7" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 664D312001C; Mon, 12 Feb 2024 16:51:34 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 664D312001C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745894; bh=umper9f7RDbGThAitEaq4GqzPAB2wV1u7u5tYJIP74I=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=sbv2RSt70Qs+4eaX/Nv927x8ntSKU6IqNg8gxg7SzgzSOMPhVKRw5TjDXAfmvOHSO dIupCwmS+7xdfFKjK+jIF10TC4Ljh7PRX/kQnXEJZzSuXakr3fdZn5KOQYane4LNiA vn08BcDd1U3GdklJA7h47FrPImz48zt1WE7w0heG7d4ltbz1RYRsWwc2dWZZ1SRZC4 xD5NurshSGAeURq47or0kI9WfLQNvX/yTJOB/kBR7WBJNNaEnBIGRY1wQz/KBR+Ov5 ozaxvlSa+YYIcSjuzx7/rDofeWIZm9PySa0Mtke3+ih9rtqy58JuLu6xDvJy63is5F e1FrmKWL5EKvA== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:34 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:33 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 05/20] drivers: crypto: meson: move get_engine_number() Date: Mon, 12 Feb 2024 16:50:53 +0300 Message-ID: <20240212135108.549755-6-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Move get_engine_number() function from cipher.c to core.c Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 9 ++------- drivers/crypto/amlogic/amlogic-gxl-core.c | 5 +++++ drivers/crypto/amlogic/amlogic-gxl.h | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 1fe916b0a138..18e9e2d39b1f 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -17,11 +17,6 @@ #include #include "amlogic-gxl.h" =20 -static int get_engine_number(struct meson_dev *mc) -{ - return atomic_inc_return(&mc->flow) % mc->flow_cnt; -} - static bool meson_cipher_need_fallback(struct skcipher_request *areq) { struct scatterlist *src_sg =3D areq->src; @@ -282,7 +277,7 @@ int meson_skdecrypt(struct skcipher_request *areq) rctx->op_dir =3D MESON_DECRYPT; if (meson_cipher_need_fallback(areq)) return meson_cipher_do_fallback(areq); - e =3D get_engine_number(op->mc); + e =3D meson_get_engine_number(op->mc); engine =3D op->mc->chanlist[e].engine; rctx->flow =3D e; =20 @@ -300,7 +295,7 @@ int meson_skencrypt(struct skcipher_request *areq) rctx->op_dir =3D MESON_ENCRYPT; if (meson_cipher_need_fallback(areq)) return meson_cipher_do_fallback(areq); - e =3D get_engine_number(op->mc); + e =3D meson_get_engine_number(op->mc); engine =3D op->mc->chanlist[e].engine; rctx->flow =3D e; =20 diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 372c30f72072..51291fdcf8b6 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -23,6 +23,11 @@ =20 #include "amlogic-gxl.h" =20 +int meson_get_engine_number(struct meson_dev *mc) +{ + return atomic_inc_return(&mc->flow) % mc->flow_cnt; +} + void meson_dma_start(struct meson_dev *mc, int flow) { u32 offset =3D (mc->pdata->descs_reg + flow) << 2; diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 59fc6a67e0a9..5f5e3115fcdf 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -163,6 +163,8 @@ struct meson_alg_template { #endif }; =20 +int meson_get_engine_number(struct meson_dev *mc); + void meson_dma_start(struct meson_dev *mc, int flow); =20 int meson_enqueue(struct crypto_async_request *areq, u32 type); --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFA933C087; Mon, 12 Feb 2024 13:51:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745900; cv=none; b=bW+DBIJwaFh2IQ6aaRt+vcv7wHu4uxSHjmsJmAwmTbfYe+Cx6IYYyBfquvCKLuUttGrlj+ReZramn50JFTOpA2JjbK6dlAFxyt3+tfaRVDc9LvIR0ynReivm5+aiGEV9cRvLad1THij+abdQ0v2niuzAmXrhcwfRitT9uNhKsPo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745900; c=relaxed/simple; bh=fOkv1yax7nv9M5fepLHSH860ctdlWP265oxsjuiTvrU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=p+YMtZDvxsKd75sxxfP0uc7T2kJcmdPG53zhbwujn2fJhlwkGneSQoSkNZmOGsYFxYbjV6uQidyC5nYMriC7W/k74RjvYTg32kq8WUlj1Sn6MSIw/cJ9eSC+U+2J4ahU+pQQX0mR6NoCKmDT7cskGtQGT7aMk9HU7j1qgW2uFZQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=EsZo50zi; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="EsZo50zi" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 141B0100003; Mon, 12 Feb 2024 16:51:36 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 141B0100003 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745896; bh=pQXb0D457zz3fT7XYLATOYyWjEv+rk40Yl5VpyKJM/o=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=EsZo50ziscv5yROyAs318rbop/r126GUXHvP5t2wrno9jR3V9opu6e7cG596YvIae XFXrayXOoPhzRb9WxRPLrFoeY0lYHr2larF77g9Qo7xWazAvBpD5nTKkaiI1Rboajh envCu4IB6Y+gWfMiDO0q+dMOGbIghXtVgtCW0M29ZbtJ7toK/Gdqm4DcLwLnCd3zsb ijCKN6lqbYBxwDXyYeSXjfdl2v20Q5OtlmuU2bU41esgqhdFZX+aIuU0PhsUEqoWW2 wqvxiq5vW9evvLorw2ow0MV3A8JoIa+HoDToIEWWJdsA0DL6S7O81tLGpYkSsX0+St t+25B7NQKCtiA== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:35 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:34 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 06/20] drivers: crypto: meson: drop status field from meson_flow Date: Mon, 12 Feb 2024 16:50:54 +0300 Message-ID: <20240212135108.549755-7-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This field is used only to check for timeout. But there is more convenient way to achive the same goal. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 13 +++++++++---- drivers/crypto/amlogic/amlogic-gxl-core.c | 1 - drivers/crypto/amlogic/amlogic-gxl.h | 2 -- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 18e9e2d39b1f..dc0b100c5de2 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -219,13 +219,18 @@ static int meson_cipher(struct skcipher_request *areq) } =20 reinit_completion(&mc->chanlist[flow].complete); - mc->chanlist[flow].status =3D 0; meson_dma_start(mc, flow); - wait_for_completion_interruptible_timeout(&mc->chanlist[flow].complete, - msecs_to_jiffies(500)); - if (mc->chanlist[flow].status =3D=3D 0) { + + err =3D wait_for_completion_interruptible_timeout(&mc->chanlist[flow].com= plete, + msecs_to_jiffies(500)); + if (err =3D=3D 0) { dev_err(mc->dev, "DMA timeout for flow %d\n", flow); err =3D -EINVAL; + } else if (err < 0) { + dev_err(mc->dev, "Waiting for DMA completion is failed (%d)\n", err); + } else { + /* No error */ + err =3D 0; } =20 dma_unmap_single(mc->dev, phykeyiv, keyivlen, DMA_TO_DEVICE); diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 51291fdcf8b6..f7c60ebffbc3 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -54,7 +54,6 @@ static irqreturn_t meson_irq_handler(int irq, void *data) for (flow =3D 0; flow < mc->flow_cnt; flow++) { if (mc->chanlist[flow].irq =3D=3D irq) { if (meson_dma_ready(mc, flow)) { - mc->chanlist[flow].status =3D 1; complete(&mc->chanlist[flow].complete); return IRQ_HANDLED; } diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 5f5e3115fcdf..e27908992ae3 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -59,7 +59,6 @@ struct meson_desc { * @engine: ptr to the crypto_engine for this flow * @keylen: keylen for this flow operation * @complete: completion for the current task on this flow - * @status: set to 1 by interrupt if task is done * @irq: IRQ number for amlogic-crypto * @t_phy: Physical address of task * @tl: pointer to the current ce_task for this flow @@ -68,7 +67,6 @@ struct meson_desc { struct meson_flow { struct crypto_engine *engine; struct completion complete; - int status; int irq; unsigned int keylen; dma_addr_t t_phy; --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C12DA3CF4D; Mon, 12 Feb 2024 13:51:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745901; cv=none; b=APNATyBGYZDVC09C5fqLFi6wtvkuSo/z97qTxb4eWSTKrNuzz2N2lz5IGaNaqxY+MWwEMoOrjqmXJNFvA5cMnY6q3o/zN4ygdphlOpUfjsjn07D2OaamJNnm0YQz3TXER0+klyR0r2zrmuwZLBGtwBANRMZ26gdJLnzcvggYsqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745901; c=relaxed/simple; bh=oS3wT8bGUsv0xKqDczY8EiKphBJ8xjO4GOxqeNhR3/E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QjrvjVPdUf8TH/NOMuwP3AOu5nbg68UbqH7+TIbMLC4xAQ2LEExhxSiP6gilYiJcKjXTMs0I27fppqhlACTrKGoboyjZE32QpCjvmEV8KEy6fzjpbePcw/IcvNxgg8/WQB5qoWNxnw0Qx4AX1YIYaYb9AZK1Aj+JN5ZBFfYI/68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=PR+K58PI; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="PR+K58PI" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id DAA2A12001D; Mon, 12 Feb 2024 16:51:37 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru DAA2A12001D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745897; bh=GXRmLGLwHnjwhrgZZKLLS9FfraQ8qfu50uIgQMOfbyk=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=PR+K58PIZw2G15wJk93gGcl9WWvVShMOJTzqxaUVxPdtxtJGYkvzRY9NW07d+yFvc fzC3csnIjTzdTYTbrTYD/5HcvdmRqLKaTs5qQmL3qkn9gatX6UXuPxymb+jX03Y3yD WBP0is3Adh4KqK8dEoxwACvvkdpv1hsQNkjoP3PqZU2Tw1CP9pa6r83+D8atxfugCL Hp/6Gas1muJomXeUql/l4HHiV5wycwfAg/9NVQSTAktO3NL3Vv5dwLc9XvOsjwknlV j2kR/nLc2G0wz8UrrAwqJxAKoL2zKZrLDMnJWBBY6w56ErR9A0csjBjjlCgkyQt0ui 0EHLa5nR1VaIQ== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:37 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:36 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 07/20] drivers: crypto: meson: move algs definition and cipher API to cipher.c Date: Mon, 12 Feb 2024 16:50:55 +0300 Message-ID: <20240212135108.549755-8-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Because that is proper place for them. In particular, it takes less of exported symbol between compiling entities. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 98 +++++++++++++++-- drivers/crypto/amlogic/amlogic-gxl-core.c | 110 ++++---------------- drivers/crypto/amlogic/amlogic-gxl.h | 14 +-- 3 files changed, 119 insertions(+), 103 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index dc0b100c5de2..bc3092a8a2c2 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -271,7 +271,7 @@ int meson_handle_cipher_request(struct crypto_engine *e= ngine, void *areq) return 0; } =20 -int meson_skdecrypt(struct skcipher_request *areq) +static int meson_skdecrypt(struct skcipher_request *areq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); @@ -289,7 +289,7 @@ int meson_skdecrypt(struct skcipher_request *areq) return crypto_transfer_skcipher_request_to_engine(engine, areq); } =20 -int meson_skencrypt(struct skcipher_request *areq) +static int meson_skencrypt(struct skcipher_request *areq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); @@ -307,7 +307,7 @@ int meson_skencrypt(struct skcipher_request *areq) return crypto_transfer_skcipher_request_to_engine(engine, areq); } =20 -int meson_cipher_init(struct crypto_tfm *tfm) +static int meson_cipher_init(struct crypto_tfm *tfm) { struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx(tfm); struct meson_alg_template *algt; @@ -333,7 +333,7 @@ int meson_cipher_init(struct crypto_tfm *tfm) return 0; } =20 -void meson_cipher_exit(struct crypto_tfm *tfm) +static void meson_cipher_exit(struct crypto_tfm *tfm) { struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx(tfm); =20 @@ -341,8 +341,8 @@ void meson_cipher_exit(struct crypto_tfm *tfm) crypto_free_skcipher(op->fallback_tfm); } =20 -int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, - unsigned int keylen) +static int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, + unsigned int keylen) { struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); struct meson_dev *mc =3D op->mc; @@ -369,3 +369,89 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, cons= t u8 *key, =20 return crypto_skcipher_setkey(op->fallback_tfm, key, keylen); } + +static struct meson_alg_template algs[] =3D { +{ + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, + .blockmode =3D MESON_OPMODE_CBC, + .alg.skcipher.base =3D { + .base =3D { + .cra_name =3D "cbc(aes)", + .cra_driver_name =3D "cbc-aes-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D AES_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_TYPE_SKCIPHER | + CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY | + CRYPTO_ALG_NEED_FALLBACK, + .cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0xf, + .cra_init =3D meson_cipher_init, + .cra_exit =3D meson_cipher_exit, + }, + .min_keysize =3D AES_MIN_KEY_SIZE, + .max_keysize =3D AES_MAX_KEY_SIZE, + .ivsize =3D AES_BLOCK_SIZE, + .setkey =3D meson_aes_setkey, + .encrypt =3D meson_skencrypt, + .decrypt =3D meson_skdecrypt, + }, + .alg.skcipher.op =3D { + .do_one_request =3D meson_handle_cipher_request, + }, +}, +{ + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, + .blockmode =3D MESON_OPMODE_ECB, + .alg.skcipher.base =3D { + .base =3D { + .cra_name =3D "ecb(aes)", + .cra_driver_name =3D "ecb-aes-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D AES_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_TYPE_SKCIPHER | + CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY | + CRYPTO_ALG_NEED_FALLBACK, + .cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0xf, + .cra_init =3D meson_cipher_init, + .cra_exit =3D meson_cipher_exit, + }, + .min_keysize =3D AES_MIN_KEY_SIZE, + .max_keysize =3D AES_MAX_KEY_SIZE, + .setkey =3D meson_aes_setkey, + .encrypt =3D meson_skencrypt, + .decrypt =3D meson_skdecrypt, + }, + .alg.skcipher.op =3D { + .do_one_request =3D meson_handle_cipher_request, + }, +}, +}; + +int meson_cipher_register(struct meson_dev *mc) +{ + return meson_register_algs(mc, algs, ARRAY_SIZE(algs)); +} + +void meson_cipher_unregister(struct meson_dev *mc) +{ + meson_unregister_algs(mc, algs, ARRAY_SIZE(algs)); +} + +void meson_cipher_debugfs_show(struct seq_file *seq, void *v) +{ + int i; + + for (i =3D 0; i < ARRAY_SIZE(algs); i++) { + seq_printf(seq, "%s %s %lu %lu\n", + algs[i].alg.skcipher.base.base.cra_driver_name, + algs[i].alg.skcipher.base.base.cra_name, +#ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG + algs[i].stat_req, algs[i].stat_fb); +#else + 0ul, 0ul); +#endif + } +} diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index f7c60ebffbc3..22ff2768b5e5 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -65,66 +65,6 @@ static irqreturn_t meson_irq_handler(int irq, void *data) return IRQ_HANDLED; } =20 -static struct meson_alg_template mc_algs[] =3D { -{ - .type =3D CRYPTO_ALG_TYPE_SKCIPHER, - .blockmode =3D MESON_OPMODE_CBC, - .alg.skcipher.base =3D { - .base =3D { - .cra_name =3D "cbc(aes)", - .cra_driver_name =3D "cbc-aes-gxl", - .cra_priority =3D 400, - .cra_blocksize =3D AES_BLOCK_SIZE, - .cra_flags =3D CRYPTO_ALG_TYPE_SKCIPHER | - CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY | - CRYPTO_ALG_NEED_FALLBACK, - .cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx), - .cra_module =3D THIS_MODULE, - .cra_alignmask =3D 0xf, - .cra_init =3D meson_cipher_init, - .cra_exit =3D meson_cipher_exit, - }, - .min_keysize =3D AES_MIN_KEY_SIZE, - .max_keysize =3D AES_MAX_KEY_SIZE, - .ivsize =3D AES_BLOCK_SIZE, - .setkey =3D meson_aes_setkey, - .encrypt =3D meson_skencrypt, - .decrypt =3D meson_skdecrypt, - }, - .alg.skcipher.op =3D { - .do_one_request =3D meson_handle_cipher_request, - }, -}, -{ - .type =3D CRYPTO_ALG_TYPE_SKCIPHER, - .blockmode =3D MESON_OPMODE_ECB, - .alg.skcipher.base =3D { - .base =3D { - .cra_name =3D "ecb(aes)", - .cra_driver_name =3D "ecb-aes-gxl", - .cra_priority =3D 400, - .cra_blocksize =3D AES_BLOCK_SIZE, - .cra_flags =3D CRYPTO_ALG_TYPE_SKCIPHER | - CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY | - CRYPTO_ALG_NEED_FALLBACK, - .cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx), - .cra_module =3D THIS_MODULE, - .cra_alignmask =3D 0xf, - .cra_init =3D meson_cipher_init, - .cra_exit =3D meson_cipher_exit, - }, - .min_keysize =3D AES_MIN_KEY_SIZE, - .max_keysize =3D AES_MAX_KEY_SIZE, - .setkey =3D meson_aes_setkey, - .encrypt =3D meson_skencrypt, - .decrypt =3D meson_skdecrypt, - }, - .alg.skcipher.op =3D { - .do_one_request =3D meson_handle_cipher_request, - }, -}, -}; - static int meson_debugfs_show(struct seq_file *seq, void *v) { struct meson_dev *mc __maybe_unused =3D seq->private; @@ -138,20 +78,8 @@ static int meson_debugfs_show(struct seq_file *seq, voi= d *v) 0ul); #endif =20 - for (i =3D 0; i < ARRAY_SIZE(mc_algs); i++) { - switch (mc_algs[i].type) { - case CRYPTO_ALG_TYPE_SKCIPHER: - seq_printf(seq, "%s %s %lu %lu\n", - mc_algs[i].alg.skcipher.base.base.cra_driver_name, - mc_algs[i].alg.skcipher.base.base.cra_name, -#ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG - mc_algs[i].stat_req, mc_algs[i].stat_fb); -#else - 0ul, 0ul); -#endif - break; - } - } + meson_cipher_debugfs_show(seq, v); + return 0; } DEFINE_SHOW_ATTRIBUTE(meson_debugfs); @@ -228,38 +156,40 @@ static int meson_allocate_chanlist(struct meson_dev *= mc) return err; } =20 -static int meson_register_algs(struct meson_dev *mc) +int meson_register_algs(struct meson_dev *mc, struct meson_alg_template *a= lgs, + unsigned int count) { int err, i; =20 - for (i =3D 0; i < ARRAY_SIZE(mc_algs); i++) { - mc_algs[i].mc =3D mc; - switch (mc_algs[i].type) { + for (i =3D 0; i < count; i++) { + switch (algs[i].type) { case CRYPTO_ALG_TYPE_SKCIPHER: - err =3D crypto_engine_register_skcipher(&mc_algs[i].alg.skcipher); + err =3D crypto_engine_register_skcipher(&algs[i].alg.skcipher); if (err) { dev_err(mc->dev, "Fail to register %s\n", - mc_algs[i].alg.skcipher.base.base.cra_name); - mc_algs[i].mc =3D NULL; + algs[i].alg.skcipher.base.base.cra_name); + meson_unregister_algs(mc, algs, count); return err; } break; } + algs[i].mc =3D mc; } =20 return 0; } =20 -static void meson_unregister_algs(struct meson_dev *mc) +void meson_unregister_algs(struct meson_dev *mc, struct meson_alg_template= *algs, + unsigned int count) { int i; =20 - for (i =3D 0; i < ARRAY_SIZE(mc_algs); i++) { - if (!mc_algs[i].mc) + for (i =3D 0; i < count; i++) { + if (!algs[i].mc) continue; - switch (mc_algs[i].type) { + switch (algs[i].type) { case CRYPTO_ALG_TYPE_SKCIPHER: - crypto_engine_unregister_skcipher(&mc_algs[i].alg.skcipher); + crypto_engine_unregister_skcipher(&algs[i].alg.skcipher); break; } } @@ -318,9 +248,9 @@ static int meson_crypto_probe(struct platform_device *p= dev) if (err) goto error_flow; =20 - err =3D meson_register_algs(mc); + err =3D meson_cipher_register(mc); if (err) - goto error_alg; + goto error_flow; =20 if (IS_ENABLED(CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG)) { struct dentry *dbgfs_dir; @@ -334,8 +264,6 @@ static int meson_crypto_probe(struct platform_device *p= dev) } =20 return 0; -error_alg: - meson_unregister_algs(mc); error_flow: meson_free_chanlist(mc, mc->flow_cnt - 1); return err; @@ -349,7 +277,7 @@ static void meson_crypto_remove(struct platform_device = *pdev) debugfs_remove_recursive(mc->dbgfs_dir); #endif =20 - meson_unregister_algs(mc); + meson_cipher_unregister(mc); =20 meson_free_chanlist(mc, mc->flow_cnt - 1); } diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index e27908992ae3..0a03e8144977 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -167,10 +167,12 @@ void meson_dma_start(struct meson_dev *mc, int flow); =20 int meson_enqueue(struct crypto_async_request *areq, u32 type); =20 -int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, - unsigned int keylen); -int meson_cipher_init(struct crypto_tfm *tfm); -void meson_cipher_exit(struct crypto_tfm *tfm); -int meson_skdecrypt(struct skcipher_request *areq); -int meson_skencrypt(struct skcipher_request *areq); +int meson_register_algs(struct meson_dev *mc, struct meson_alg_template *a= lgs, + unsigned int count); +void meson_unregister_algs(struct meson_dev *mc, struct meson_alg_template= *algs, + unsigned int count); + +int meson_cipher_register(struct meson_dev *mc); +void meson_cipher_unregister(struct meson_dev *mc); +void meson_cipher_debugfs_show(struct seq_file *seq, void *v); int meson_handle_cipher_request(struct crypto_engine *engine, void *areq); --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B11E3D0CD; Mon, 12 Feb 2024 13:51:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745903; cv=none; b=kIpNbJWoT0VJzG9QyWLpqSS8SuP4ElqKwU4dkYB/n3iMjXFprCE8mX/daKcMiOoZkTwI6R6jy3e6DXKjm5AgINMbSrLduxlKWzcTgcwCTDzBGbPfC89738KzNB5KpDH/mkothXoc6WHgst2J2w9MPgfi3z4WR5tdAuuVvNcxn9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745903; c=relaxed/simple; bh=6Cs5cxsdJA6vcqALc08A6JS5Fr0Ea2mrWZk4tA9B2co=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JPMdktdFDm0GIgXoCC1VMqHSeTB6Hy8G0QhCkFGW6YEN7nkFFVuo9cfTIgWyX35rWRj5R8ioMsn15vrXbr949Xao04Yf8udwEDKJVYA3GXbJeQ8x7azyVML+sg7h1oq1+HE7mVglyyLFMycvKhCqyZDIltK+zSNmS5CqFgTBpZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=N5VF4HxT; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="N5VF4HxT" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id AA986100015; Mon, 12 Feb 2024 16:51:39 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru AA986100015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745899; bh=gQlN8W0GfQ+8sA9FLST9ffHJM/4UdzBvrrHlUEOuRvs=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=N5VF4HxT45QOxr9XFpmJ3IhhcV3SjeEZ8ZqqXFnpACl2e8FteSj8OzgqY/WTNF+FY aFHSGQgNqg7a0wzLkOPuu6imRVmlyK6M5F4UBaAf9TnkJiMKyyovZUFWLok2qFoiKN st68Mcw1h85Q57Mq4ef18o2FXRW7hmw8nTYfiglJ/ThfsafrGReH4gdiLQBf63C1Zk ZNci7Qp964aeU2D9lCqItTLnbw6k/WZHtPeRHjoG9crUfm8rm2uFgc4gyc00aft4yf fT9zDrGJ9VberMNOEfdeMfPLXIqeRBFD1xvFqSl1YzgAIaa4hfLfVnc8SQB5LB1IkV 9OWm+bR8dzSYA== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:39 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:38 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 08/20] drivers: crypto: meson: cleanup defines Date: Mon, 12 Feb 2024 16:50:56 +0300 Message-ID: <20240212135108.549755-9-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" It is bad to use hardcoded values directly in the code. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 24 ++++++++++----------- drivers/crypto/amlogic/amlogic-gxl.h | 16 ++++++++------ 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index bc3092a8a2c2..c662c4b86e97 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -141,8 +141,8 @@ static int meson_cipher(struct skcipher_request *areq) ivsize, 0); } } - if (keyivlen =3D=3D 24) - keyivlen =3D 32; + if (keyivlen =3D=3D AES_KEYSIZE_192) + keyivlen =3D AES_MAX_KEY_SIZE; =20 phykeyiv =3D dma_map_single(mc->dev, bkeyiv, keyivlen, DMA_TO_DEVICE); @@ -161,7 +161,7 @@ static int meson_cipher(struct skcipher_request *areq) todo =3D min(keyivlen - eat, 16u); desc->t_src =3D cpu_to_le32(phykeyiv + i * 16); desc->t_dst =3D cpu_to_le32(i * 16); - v =3D (MODE_KEY << 20) | DESC_OWN | 16; + v =3D DESC_MODE_KEY | DESC_OWN | 16; desc->t_status =3D cpu_to_le32(v); =20 eat +=3D todo; @@ -205,7 +205,7 @@ static int meson_cipher(struct skcipher_request *areq) desc->t_src =3D cpu_to_le32(sg_dma_address(src_sg)); desc->t_dst =3D cpu_to_le32(sg_dma_address(dst_sg)); todo =3D min(len, sg_dma_len(src_sg)); - v =3D (op->keymode << 20) | DESC_OWN | todo | (algt->blockmode << 26); + v =3D op->keymode | DESC_OWN | todo | algt->blockmode; if (rctx->op_dir) v |=3D DESC_ENCRYPTION; len -=3D todo; @@ -348,14 +348,14 @@ static int meson_aes_setkey(struct crypto_skcipher *t= fm, const u8 *key, struct meson_dev *mc =3D op->mc; =20 switch (keylen) { - case 128 / 8: - op->keymode =3D MODE_AES_128; + case AES_KEYSIZE_128: + op->keymode =3D DESC_MODE_AES_128; break; - case 192 / 8: - op->keymode =3D MODE_AES_192; + case AES_KEYSIZE_192: + op->keymode =3D DESC_MODE_AES_192; break; - case 256 / 8: - op->keymode =3D MODE_AES_256; + case AES_KEYSIZE_256: + op->keymode =3D DESC_MODE_AES_256; break; default: dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen); @@ -373,7 +373,7 @@ static int meson_aes_setkey(struct crypto_skcipher *tfm= , const u8 *key, static struct meson_alg_template algs[] =3D { { .type =3D CRYPTO_ALG_TYPE_SKCIPHER, - .blockmode =3D MESON_OPMODE_CBC, + .blockmode =3D DESC_OPMODE_CBC, .alg.skcipher.base =3D { .base =3D { .cra_name =3D "cbc(aes)", @@ -402,7 +402,7 @@ static struct meson_alg_template algs[] =3D { }, { .type =3D CRYPTO_ALG_TYPE_SKCIPHER, - .blockmode =3D MESON_OPMODE_ECB, + .blockmode =3D DESC_OPMODE_ECB, .alg.skcipher.base =3D { .base =3D { .cra_name =3D "ecb(aes)", diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 0a03e8144977..a0d83c82906d 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -11,19 +11,21 @@ #include #include =20 -#define MODE_KEY 1 -#define MODE_AES_128 0x8 -#define MODE_AES_192 0x9 -#define MODE_AES_256 0xa - #define MESON_DECRYPT 0 #define MESON_ENCRYPT 1 =20 -#define MESON_OPMODE_ECB 0 -#define MESON_OPMODE_CBC 1 +#define DESC_MODE_KEY (0x1 << 20) +#define DESC_MODE_AES_128 (0x8 << 20) +#define DESC_MODE_AES_192 (0x9 << 20) +#define DESC_MODE_AES_256 (0xa << 20) =20 #define MAXDESC 64 =20 +#define DESC_OPMODE_ECB (0 << 26) +#define DESC_OPMODE_CBC (1 << 26) + +#define DESC_MAXLEN ((1 << 17) - 1) + #define DESC_LAST BIT(18) #define DESC_ENCRYPTION BIT(28) #define DESC_OWN BIT(31) --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA34E3D3BE; Mon, 12 Feb 2024 13:51:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745905; cv=none; b=BCo7g2Ee19L6laQVZLBWbpeHBNQo7aanRF8vp7e6EMWC05GWs9kzGUfVUhMlaVTSN1BClColUsk8it1/MsC7riR6h9swxz0w3d7LbeJ5ZSt4KmYmP+lpHG/VGzAY21R0JU5H6H8royk/IQI7yV+O4apOtBzy2/R8+2HPVEstSzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745905; c=relaxed/simple; bh=EaoQ1Xr16Bg6fB81f81T8Ft5m6y0iS3O4OA1I8kmB3o=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XL676QxDqnpSyl8hnvqlF0zol7O0B/qF3hfFS7pQewfpOCsJknt5n8lNXSoJdUZNL/q7yfTWpeJWjzkz5cguwlTsogeMYKTOF18kNYb3/FA3cqKqakPkLACjkkLZxnE0uoB0QEiMgZJdFq56saXh8TNQCLjnFjcJPLC1OwsRY1g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=ifVFe7Vz; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="ifVFe7Vz" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 43517120006; Mon, 12 Feb 2024 16:51:41 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 43517120006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745901; bh=QyrQ2ojqCZyU4cd383O4kkB6xsERqzraDqJ0iQy/KOE=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=ifVFe7VzqnB+PvhG46fCPaa12kgt7ab3/FXMC5ocGUppmxFV79XqsFjUK+MYItZfq Qup30x29sifZSNxk3F48+9C97dXDT2OFHlW4VtYWTlxUUdtp0Ej+zorp5tzGEmHzfh W6bvBdqyjb0gy3hcqwUxxnS9zvZEmtWy3mYQEUr3MKgf+mdhg5Tmm08V/7GuziKIW0 xPR+jtK6wj7peSHrYHR9fX8VaYUBzBMvaDrsfu3GOrac9RoxdTEqBPogbctqvbMv+7 ptOdNfQLJlDuIVmIBXpA/2bYsD06SFQB18+318y8lhfZXYUD8u7mCa23SV2QbTt1hP 6S5TVUL78rJ+w== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:41 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:40 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 09/20] drivers: crypto: meson: process more than MAXDESCS descriptors Date: Mon, 12 Feb 2024 16:50:57 +0300 Message-ID: <20240212135108.549755-10-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" 1. The old alhorithm was not designed to process a large amount of memory, and therefore gave incorrect results. 2. Not all Amlogic SoC's use 3 KEY/IV descriptors. Add keyiv descriptors count parameter to platform data. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 443 ++++++++++++-------- drivers/crypto/amlogic/amlogic-gxl-core.c | 1 + drivers/crypto/amlogic/amlogic-gxl.h | 2 + 3 files changed, 281 insertions(+), 165 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index c662c4b86e97..c1b3569a614a 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -17,35 +17,41 @@ #include #include "amlogic-gxl.h" =20 -static bool meson_cipher_need_fallback(struct skcipher_request *areq) +static bool meson_cipher_need_fallback_sg(struct skcipher_request *areq, + struct scatterlist *sg) { - struct scatterlist *src_sg =3D areq->src; - struct scatterlist *dst_sg =3D areq->dst; + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); + unsigned int blocksize =3D crypto_skcipher_blocksize(tfm); + unsigned int cryptlen =3D areq->cryptlen; + + while (cryptlen) { + unsigned int len =3D min(cryptlen, sg->length); + + if (!IS_ALIGNED(sg->offset, sizeof(u32))) + return true; + if (len % blocksize !=3D 0) + return true; + + cryptlen -=3D len; + sg =3D sg_next(sg); + } + + return false; +} =20 +static bool meson_cipher_need_fallback(struct skcipher_request *areq) +{ if (areq->cryptlen =3D=3D 0) return true; =20 - if (sg_nents(src_sg) !=3D sg_nents(dst_sg)) + if (meson_cipher_need_fallback_sg(areq, areq->src)) return true; =20 - /* KEY/IV descriptors use 3 desc */ - if (sg_nents(src_sg) > MAXDESC - 3 || sg_nents(dst_sg) > MAXDESC - 3) - return true; + if (areq->dst =3D=3D areq->src) + return false; =20 - while (src_sg && dst_sg) { - if ((src_sg->length % 16) !=3D 0) - return true; - if ((dst_sg->length % 16) !=3D 0) - return true; - if (src_sg->length !=3D dst_sg->length) - return true; - if (!IS_ALIGNED(src_sg->offset, sizeof(u32))) - return true; - if (!IS_ALIGNED(dst_sg->offset, sizeof(u32))) - return true; - src_sg =3D sg_next(src_sg); - dst_sg =3D sg_next(dst_sg); - } + if (meson_cipher_need_fallback_sg(areq, areq->dst)) + return true; =20 return false; } @@ -76,6 +82,212 @@ static int meson_cipher_do_fallback(struct skcipher_req= uest *areq) return err; } =20 +struct cipher_ctx { + struct { + dma_addr_t addr; + unsigned int len; + } keyiv; + + struct skcipher_request *areq; + struct scatterlist *src_sg; + struct scatterlist *dst_sg; + void *bkeyiv; + + unsigned int src_offset; + unsigned int dst_offset; + unsigned int cryptlen; + unsigned int tloffset; +}; + +static int meson_map_scatterlist(struct skcipher_request *areq, struct mes= on_dev *mc) +{ + int nr_sgs, nr_sgd; + + if (areq->src =3D=3D areq->dst) { + nr_sgs =3D dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), + DMA_BIDIRECTIONAL); + if (!nr_sgs) { + dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); + return -EINVAL; + } + } else { + nr_sgs =3D dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), + DMA_TO_DEVICE); + if (!nr_sgs) { + dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); + return -EINVAL; + } + + nr_sgd =3D dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst), + DMA_FROM_DEVICE); + if (!nr_sgd) { + dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd); + return -EINVAL; + } + } + + return 0; +} + +static void meson_unmap_scatterlist(struct skcipher_request *areq, struct = meson_dev *mc) +{ + if (areq->src =3D=3D areq->dst) { + dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_BIDIRECTIONAL); + } else { + dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE); + dma_unmap_sg(mc->dev, areq->dst, sg_nents(areq->dst), DMA_FROM_DEVICE); + } +} + +static void meson_setup_keyiv_descs(struct cipher_ctx *ctx) +{ + struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(ctx->areq); + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(ctx->areq); + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct meson_alg_template *algt =3D container_of(alg, + struct meson_alg_template, alg.skcipher.base); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); + struct meson_dev *mc =3D op->mc; + unsigned int ivsize =3D crypto_skcipher_ivsize(tfm); + unsigned int blockmode =3D algt->blockmode; + int i; + + if (ctx->tloffset) + return; + + if (blockmode =3D=3D DESC_OPMODE_CBC) { + memcpy(ctx->bkeyiv + AES_MAX_KEY_SIZE, ctx->areq->iv, ivsize); + ctx->keyiv.len =3D AES_MAX_KEY_SIZE + ivsize; + dma_sync_single_for_device(mc->dev, ctx->keyiv.addr, + ctx->keyiv.len, DMA_TO_DEVICE); + } + + for (i =3D 0; i < mc->pdata->setup_desc_cnt; i++) { + struct meson_desc *desc =3D + &mc->chanlist[rctx->flow].tl[ctx->tloffset]; + int offset =3D i * 16; + + desc->t_src =3D cpu_to_le32(ctx->keyiv.addr + offset); + desc->t_dst =3D cpu_to_le32(offset); + desc->t_status =3D cpu_to_le32(DESC_OWN | DESC_MODE_KEY | ctx->keyiv.len= ); + + ctx->tloffset++; + } +} + +static bool meson_setup_data_descs(struct cipher_ctx *ctx) +{ + struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(ctx->areq); + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(ctx->areq); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct meson_alg_template *algt =3D container_of(alg, + struct meson_alg_template, + alg.skcipher.base); + struct meson_dev *mc =3D op->mc; + struct meson_desc *desc =3D &mc->chanlist[rctx->flow].tl[ctx->tloffset]; + unsigned int blocksize =3D crypto_skcipher_blocksize(tfm); + unsigned int blockmode =3D algt->blockmode; + unsigned int maxlen =3D rounddown(DESC_MAXLEN, blocksize); + unsigned int todo; + u32 v; + + ctx->tloffset++; + + todo =3D min(ctx->cryptlen, maxlen); + todo =3D min(todo, ctx->cryptlen); + todo =3D min(todo, sg_dma_len(ctx->src_sg) - ctx->src_offset); + todo =3D min(todo, sg_dma_len(ctx->dst_sg) - ctx->dst_offset); + + desc->t_src =3D cpu_to_le32(sg_dma_address(ctx->src_sg) + ctx->src_offset= ); + desc->t_dst =3D cpu_to_le32(sg_dma_address(ctx->dst_sg) + ctx->dst_offset= ); + + ctx->cryptlen -=3D todo; + ctx->src_offset +=3D todo; + ctx->dst_offset +=3D todo; + + v =3D DESC_OWN | blockmode | op->keymode | todo; + if (rctx->op_dir =3D=3D MESON_ENCRYPT) + v |=3D DESC_ENCRYPTION; + + if (!ctx->cryptlen || ctx->tloffset =3D=3D MAXDESC) + v |=3D DESC_LAST; + + desc->t_status =3D cpu_to_le32(v); + + return v & DESC_LAST; +} + +static int meson_kick_hardware(struct cipher_ctx *ctx) +{ + struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(ctx->areq); + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(ctx->areq); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct meson_alg_template *algt =3D container_of(alg, + struct meson_alg_template, + alg.skcipher.base); + struct meson_dev *mc =3D op->mc; + unsigned int ivsize =3D crypto_skcipher_ivsize(tfm); + unsigned int blockmode =3D algt->blockmode; + enum dma_data_direction new_iv_dir; + dma_addr_t new_iv_phys; + void *new_iv; + int err; + + if (blockmode =3D=3D DESC_OPMODE_CBC) { + struct scatterlist *sg; + unsigned int offset; + + if (rctx->op_dir =3D=3D MESON_ENCRYPT) { + sg =3D ctx->dst_sg; + offset =3D ctx->dst_offset; + new_iv_dir =3D DMA_FROM_DEVICE; + } else { + sg =3D ctx->src_sg; + offset =3D ctx->src_offset; + new_iv_dir =3D DMA_TO_DEVICE; + } + + if (ctx->areq->src =3D=3D ctx->areq->dst) + new_iv_dir =3D DMA_BIDIRECTIONAL; + + offset -=3D ivsize; + new_iv =3D sg_virt(sg) + offset; + new_iv_phys =3D sg_dma_address(sg) + offset; + } + + if (blockmode =3D=3D DESC_OPMODE_CBC && + rctx->op_dir =3D=3D MESON_DECRYPT) { + dma_sync_single_for_cpu(mc->dev, new_iv_phys, + ivsize, new_iv_dir); + memcpy(ctx->areq->iv, new_iv, ivsize); + } + + reinit_completion(&mc->chanlist[rctx->flow].complete); + meson_dma_start(mc, rctx->flow); + err =3D wait_for_completion_interruptible_timeout( + &mc->chanlist[rctx->flow].complete, msecs_to_jiffies(500)); + if (err =3D=3D 0) { + dev_err(mc->dev, "DMA timeout for flow %d\n", rctx->flow); + return -EINVAL; + } else if (err < 0) { + dev_err(mc->dev, "Waiting for DMA completion is failed (%d)\n", err); + return err; + } + + if (blockmode =3D=3D DESC_OPMODE_CBC && + rctx->op_dir =3D=3D MESON_ENCRYPT) { + dma_sync_single_for_cpu(mc->dev, new_iv_phys, + ivsize, new_iv_dir); + memcpy(ctx->areq->iv, new_iv, ivsize); + } + + ctx->tloffset =3D 0; + + return 0; +} + static int meson_cipher(struct skcipher_request *areq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); @@ -84,176 +296,77 @@ static int meson_cipher(struct skcipher_request *areq) struct meson_dev *mc =3D op->mc; struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct meson_alg_template *algt; - int flow =3D rctx->flow; - unsigned int todo, eat, len; - struct scatterlist *src_sg =3D areq->src; - struct scatterlist *dst_sg =3D areq->dst; - struct meson_desc *desc; - int nr_sgs, nr_sgd; - int i, err =3D 0; - unsigned int keyivlen, ivsize, offset, tloffset; - dma_addr_t phykeyiv; - void *backup_iv =3D NULL, *bkeyiv; - u32 v; - - algt =3D container_of(alg, struct meson_alg_template, alg.skcipher.base); + struct cipher_ctx ctx =3D { + .areq =3D areq, + .src_offset =3D 0, + .dst_offset =3D 0, + .src_sg =3D areq->src, + .dst_sg =3D areq->dst, + .cryptlen =3D areq->cryptlen, + }; + int err; =20 - dev_dbg(mc->dev, "%s %s %u %x IV(%u) key=3D%u flow=3D%d\n", __func__, + dev_dbg(mc->dev, "%s %s %u %x IV(%u) key=3D%u ctx.flow=3D%d\n", __func__, crypto_tfm_alg_name(areq->base.tfm), areq->cryptlen, rctx->op_dir, crypto_skcipher_ivsize(tfm), - op->keylen, flow); + op->keylen, rctx->flow); + + algt =3D container_of(alg, struct meson_alg_template, alg.skcipher.base); =20 #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG algt->stat_req++; - mc->chanlist[flow].stat_req++; + mc->chanlist[rctx->flow].stat_req++; #endif =20 - /* - * The hardware expect a list of meson_desc structures. - * The 2 first structures store key - * The third stores IV - */ - bkeyiv =3D kzalloc(48, GFP_KERNEL | GFP_DMA); - if (!bkeyiv) + ctx.bkeyiv =3D kzalloc(48, GFP_KERNEL | GFP_DMA); + if (!ctx.bkeyiv) return -ENOMEM; =20 - memcpy(bkeyiv, op->key, op->keylen); - keyivlen =3D op->keylen; + memcpy(ctx.bkeyiv, op->key, op->keylen); + ctx.keyiv.len =3D op->keylen; + if (ctx.keyiv.len =3D=3D AES_KEYSIZE_192) + ctx.keyiv.len =3D AES_MAX_KEY_SIZE; =20 - ivsize =3D crypto_skcipher_ivsize(tfm); - if (areq->iv && ivsize > 0) { - if (ivsize > areq->cryptlen) { - dev_err(mc->dev, "invalid ivsize=3D%d vs len=3D%d\n", ivsize, areq->cry= ptlen); - err =3D -EINVAL; - goto theend; - } - memcpy(bkeyiv + 32, areq->iv, ivsize); - keyivlen =3D 48; - if (rctx->op_dir =3D=3D MESON_DECRYPT) { - backup_iv =3D kzalloc(ivsize, GFP_KERNEL); - if (!backup_iv) { - err =3D -ENOMEM; - goto theend; - } - offset =3D areq->cryptlen - ivsize; - scatterwalk_map_and_copy(backup_iv, areq->src, offset, - ivsize, 0); - } - } - if (keyivlen =3D=3D AES_KEYSIZE_192) - keyivlen =3D AES_MAX_KEY_SIZE; - - phykeyiv =3D dma_map_single(mc->dev, bkeyiv, keyivlen, + ctx.keyiv.addr =3D dma_map_single(mc->dev, ctx.bkeyiv, ctx.keyiv.len, DMA_TO_DEVICE); - err =3D dma_mapping_error(mc->dev, phykeyiv); + err =3D dma_mapping_error(mc->dev, ctx.keyiv.addr); if (err) { dev_err(mc->dev, "Cannot DMA MAP KEY IV\n"); goto theend; } =20 - tloffset =3D 0; - eat =3D 0; - i =3D 0; - while (keyivlen > eat) { - desc =3D &mc->chanlist[flow].tl[tloffset]; - memset(desc, 0, sizeof(struct meson_desc)); - todo =3D min(keyivlen - eat, 16u); - desc->t_src =3D cpu_to_le32(phykeyiv + i * 16); - desc->t_dst =3D cpu_to_le32(i * 16); - v =3D DESC_MODE_KEY | DESC_OWN | 16; - desc->t_status =3D cpu_to_le32(v); - - eat +=3D todo; - i++; - tloffset++; - } - - if (areq->src =3D=3D areq->dst) { - nr_sgs =3D dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), - DMA_BIDIRECTIONAL); - if (!nr_sgs) { - dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); - err =3D -EINVAL; - goto theend; - } - nr_sgd =3D nr_sgs; - } else { - nr_sgs =3D dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), - DMA_TO_DEVICE); - if (!nr_sgs || nr_sgs > MAXDESC - 3) { - dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); - err =3D -EINVAL; - goto theend; - } - nr_sgd =3D dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst), - DMA_FROM_DEVICE); - if (!nr_sgd || nr_sgd > MAXDESC - 3) { - dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd); - err =3D -EINVAL; - goto theend; - } - } - - src_sg =3D areq->src; - dst_sg =3D areq->dst; - len =3D areq->cryptlen; - while (src_sg) { - desc =3D &mc->chanlist[flow].tl[tloffset]; - memset(desc, 0, sizeof(struct meson_desc)); - - desc->t_src =3D cpu_to_le32(sg_dma_address(src_sg)); - desc->t_dst =3D cpu_to_le32(sg_dma_address(dst_sg)); - todo =3D min(len, sg_dma_len(src_sg)); - v =3D op->keymode | DESC_OWN | todo | algt->blockmode; - if (rctx->op_dir) - v |=3D DESC_ENCRYPTION; - len -=3D todo; - - if (!sg_next(src_sg)) - v |=3D DESC_LAST; - desc->t_status =3D cpu_to_le32(v); - tloffset++; - src_sg =3D sg_next(src_sg); - dst_sg =3D sg_next(dst_sg); - } + err =3D meson_map_scatterlist(areq, mc); + if (err) + goto theend; =20 - reinit_completion(&mc->chanlist[flow].complete); - meson_dma_start(mc, flow); + ctx.tloffset =3D 0; =20 - err =3D wait_for_completion_interruptible_timeout(&mc->chanlist[flow].com= plete, - msecs_to_jiffies(500)); - if (err =3D=3D 0) { - dev_err(mc->dev, "DMA timeout for flow %d\n", flow); - err =3D -EINVAL; - } else if (err < 0) { - dev_err(mc->dev, "Waiting for DMA completion is failed (%d)\n", err); - } else { - /* No error */ - err =3D 0; - } + while (ctx.cryptlen) { + meson_setup_keyiv_descs(&ctx); =20 - dma_unmap_single(mc->dev, phykeyiv, keyivlen, DMA_TO_DEVICE); + if (meson_setup_data_descs(&ctx)) { + err =3D meson_kick_hardware(&ctx); + if (err) + break; + } =20 - if (areq->src =3D=3D areq->dst) { - dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_BIDIRECTIONAL); - } else { - dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE); - dma_unmap_sg(mc->dev, areq->dst, sg_nents(areq->dst), DMA_FROM_DEVICE); - } + if (ctx.src_offset =3D=3D sg_dma_len(ctx.src_sg)) { + ctx.src_offset =3D 0; + ctx.src_sg =3D sg_next(ctx.src_sg); + } =20 - if (areq->iv && ivsize > 0) { - if (rctx->op_dir =3D=3D MESON_DECRYPT) { - memcpy(areq->iv, backup_iv, ivsize); - } else { - scatterwalk_map_and_copy(areq->iv, areq->dst, - areq->cryptlen - ivsize, - ivsize, 0); + if (ctx.dst_offset =3D=3D sg_dma_len(ctx.dst_sg)) { + ctx.dst_offset =3D 0; + ctx.dst_sg =3D sg_next(ctx.dst_sg); } } + + dma_unmap_single(mc->dev, ctx.keyiv.addr, ctx.keyiv.len, DMA_TO_DEVICE); + meson_unmap_scatterlist(areq, mc); + theend: - kfree_sensitive(bkeyiv); - kfree_sensitive(backup_iv); + kfree_sensitive(ctx.bkeyiv); =20 return err; } diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 22ff2768b5e5..f93e14f5717d 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -199,6 +199,7 @@ static const struct meson_pdata meson_gxl_pdata =3D { .descs_reg =3D 0x0, .status_reg =3D 0x4, .need_clk =3D true, + .setup_desc_cnt =3D 3, }; =20 static const struct of_device_id meson_crypto_of_match_table[] =3D { diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index a0d83c82906d..eb2f8cd72b65 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -83,11 +83,13 @@ struct meson_flow { * @reg_descs: offset to descriptors register * @reg_status: offset to status register * @need_clk: clock input is needed + * @setup_desc_cnt: number of setup descriptor to configure. */ struct meson_pdata { u32 descs_reg; u32 status_reg; bool need_clk; + u32 setup_desc_cnt; }; =20 /* --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8526F3D96D; Mon, 12 Feb 2024 13:51:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745906; cv=none; b=O6wQK7/V3nC/1P1IylsqiXZkF/BLgQiMs3EbDENnZ9wJknVkl6VQWDprBfMukHMKxg6r+/k++u84Nv07x9OuHHiT6PBiZzfMh/4CHPBPcU4U3tXchdU2VaXHgvJ6uyRGwSQJGUuDmAzl1ebpL+fxHetRg5IPkyPJwzz7ZHDFrXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745906; c=relaxed/simple; bh=OTFpbOAIvg7gwN6JDm2IAiRijfW3diyUpqOMsDH6k9c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DLlBOC/lMXsXatH2ONxqFBqNyEO1071ZlZvGCvrNNz+jIQWSO7iHhntoJmud8l4UPGsRMtDkMLMyKiAD+aPRFQ4Dr9nXWoT+CxpKlVNgklN/l4pRwuwSFK8o0Ra67do9FWrS9LyAXHcyQKlaM0iUDutaGDu9EZSNU8mPJ6T2maA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=puw8DAyf; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="puw8DAyf" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id D6942100018; Mon, 12 Feb 2024 16:51:42 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru D6942100018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745902; bh=TafhfsIw52y/sr0v1bVjQFxSG2rnKtoQK6qR1sUHNA4=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=puw8DAyfiGtVSgMObAH09GMYbABgebtmi6EIT31PEbPPYHfCKt8Fb6LpufrMKu0Bu yKhNxZocdNrbHGyvAJkIKcO5GOfR9AyrysIQVWiij8tExWU+YOPo9JB+gRQcZrkpm6 QLTJzlMLzXMtFy8nvD+VUqG71ULECKpz5ek7PB1D5PQONKQzwtslS7dYdO3gAbFjb5 owOxlvHUL+1pQrMSjggyGV/ItAJfpvTp5hSrPZLvBpxtyVAeQW2+85gVXjh4euND8w oaRQFhyNrX2sBZ/0rZxbd/E6poeyFeYg52NX2zi2sIjEre71tsppr25k198J2b+Ak4 Yc/yE0yfKS1Sw== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:42 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:41 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 10/20] drivers: crypto: meson: avoid kzalloc in engine thread Date: Mon, 12 Feb 2024 16:50:58 +0300 Message-ID: <20240212135108.549755-11-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" It makes no sense to allocate memory via kzalloc, we can use static buffer, speedup data processing and don't think about kfree() calls. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 26 ++++++++------------- drivers/crypto/amlogic/amlogic-gxl.h | 6 ++--- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index c1b3569a614a..3f42b2cc568d 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -91,7 +91,6 @@ struct cipher_ctx { struct skcipher_request *areq; struct scatterlist *src_sg; struct scatterlist *dst_sg; - void *bkeyiv; =20 unsigned int src_offset; unsigned int dst_offset; @@ -156,8 +155,7 @@ static void meson_setup_keyiv_descs(struct cipher_ctx *= ctx) return; =20 if (blockmode =3D=3D DESC_OPMODE_CBC) { - memcpy(ctx->bkeyiv + AES_MAX_KEY_SIZE, ctx->areq->iv, ivsize); - ctx->keyiv.len =3D AES_MAX_KEY_SIZE + ivsize; + memcpy(op->keyiv + AES_MAX_KEY_SIZE, ctx->areq->iv, ivsize); dma_sync_single_for_device(mc->dev, ctx->keyiv.addr, ctx->keyiv.len, DMA_TO_DEVICE); } @@ -304,6 +302,7 @@ static int meson_cipher(struct skcipher_request *areq) .dst_sg =3D areq->dst, .cryptlen =3D areq->cryptlen, }; + unsigned int ivsize =3D crypto_skcipher_ivsize(tfm); int err; =20 dev_dbg(mc->dev, "%s %s %u %x IV(%u) key=3D%u ctx.flow=3D%d\n", __func__, @@ -319,16 +318,16 @@ static int meson_cipher(struct skcipher_request *areq) mc->chanlist[rctx->flow].stat_req++; #endif =20 - ctx.bkeyiv =3D kzalloc(48, GFP_KERNEL | GFP_DMA); - if (!ctx.bkeyiv) - return -ENOMEM; - - memcpy(ctx.bkeyiv, op->key, op->keylen); ctx.keyiv.len =3D op->keylen; if (ctx.keyiv.len =3D=3D AES_KEYSIZE_192) ctx.keyiv.len =3D AES_MAX_KEY_SIZE; =20 - ctx.keyiv.addr =3D dma_map_single(mc->dev, ctx.bkeyiv, ctx.keyiv.len, + if (algt->blockmode =3D=3D DESC_OPMODE_CBC) { + memcpy(op->keyiv + AES_MAX_KEY_SIZE, areq->iv, ivsize); + ctx.keyiv.len =3D AES_MAX_KEY_SIZE + ivsize; + } + + ctx.keyiv.addr =3D dma_map_single(mc->dev, op->keyiv, ctx.keyiv.len, DMA_TO_DEVICE); err =3D dma_mapping_error(mc->dev, ctx.keyiv.addr); if (err) { @@ -366,8 +365,6 @@ static int meson_cipher(struct skcipher_request *areq) meson_unmap_scatterlist(areq, mc); =20 theend: - kfree_sensitive(ctx.bkeyiv); - return err; } =20 @@ -450,7 +447,6 @@ static void meson_cipher_exit(struct crypto_tfm *tfm) { struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx(tfm); =20 - kfree_sensitive(op->key); crypto_free_skcipher(op->fallback_tfm); } =20 @@ -474,11 +470,9 @@ static int meson_aes_setkey(struct crypto_skcipher *tf= m, const u8 *key, dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen); return -EINVAL; } - kfree_sensitive(op->key); + + memcpy(op->keyiv, key, keylen); op->keylen =3D keylen; - op->key =3D kmemdup(key, keylen, GFP_KERNEL | GFP_DMA); - if (!op->key) - return -ENOMEM; =20 return crypto_skcipher_setkey(op->fallback_tfm, key, keylen); } diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index eb2f8cd72b65..e1453dd2e9f4 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -129,15 +129,15 @@ struct meson_cipher_req_ctx { =20 /* * struct meson_cipher_tfm_ctx - context for a skcipher TFM - * @key: pointer to key data + * @keyiv: key data * @keylen: len of the key * @keymode: The keymode(type and size of key) associated with this TFM * @mc: pointer to the private data of driver handling this TFM * @fallback_tfm: pointer to the fallback TFM */ struct meson_cipher_tfm_ctx { - u32 *key; - u32 keylen; + u8 keyiv[AES_MAX_KEY_SIZE + AES_BLOCK_SIZE] ____cacheline_aligned; + u32 keylen ____cacheline_aligned; u32 keymode; struct meson_dev *mc; struct crypto_skcipher *fallback_tfm; --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B3C53DB9A; Mon, 12 Feb 2024 13:51:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745910; cv=none; b=uQVDhhOjOrvlRYM83dg03RTdD/2uTVpcC3NvCL9vjtJo+P+ezgHCf7ySd3NoWyCLTKBASMc+vtrynykE0RGfuwfDqxk8kwpMgDvCef1IKTL3RVR8o/gr1oR3IkuRE/8GVJslmZZuuYo8Co28UYrmsgYDFdp6CIC6j+7vvfNxXPA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745910; c=relaxed/simple; bh=DX4WGkCexY4hpz2mQVPtpmT8K8bX745HCKag0T7XBdU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UZyWHYvCQhtskIUxcgeRNBVLKnkunC5afQG7G0PQkZaVN22u2pO5Jf/goa24f19BvIfGPaVL6oVNi1VrkytyJKHvpdKU1RYqYBl5Akny7l2iDzF/NUDYS3JFdEM/Zo6EAskxJ1ncNACVaDhYkfUQQhV80N0HG+O403Co96XBK9s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=m6t6lHYq; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="m6t6lHYq" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 2FEB5120019; Mon, 12 Feb 2024 16:51:44 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 2FEB5120019 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745904; bh=T+mudc1Uz7TMmRvnn2rT5XA3v+viDAfpHy5qjinI9p4=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=m6t6lHYq0I4L8pOUN1KM9E3tPR62qt8qHrJZ5HfB5JoGqJlwt2luxi2MaM9+Vvuwy TqXIv9is2veGp6GWCz+73hqIso3h47HDzYgjBAvRw31iFMdo7QAnXKfy4CUvFP8oCQ nkk82tcFFQqFCVuT/E2VQ+fEHBGZ+3DAwEBKb8LD9zyZNu2S3xMI4C1vwx6pYVwXt7 mCImVSVEFAOc/5GmkH7GGoYPlaczM55IBIgu4qFnp/S7Cq/FCsD4RMPpXPUu4d7dul uWCMQZlmMjf4jMrMCSsNqycMI253Wfa1A6LFPG4E1DqvwAy2/06CwPQ1yh1Fq3DH0X R2/wsca4C8iYw== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:43 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:43 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 11/20] drivers: crypto: meson: introduce hasher Date: Mon, 12 Feb 2024 16:50:59 +0300 Message-ID: <20240212135108.549755-12-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Introduce support for SHA1/SHA224/SHA256 hash algos. Tested via tcrypt and custom tests. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/Makefile | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 24 +- drivers/crypto/amlogic/amlogic-gxl-hasher.c | 452 ++++++++++++++++++++ drivers/crypto/amlogic/amlogic-gxl.h | 49 +++ 4 files changed, 525 insertions(+), 2 deletions(-) create mode 100644 drivers/crypto/amlogic/amlogic-gxl-hasher.c diff --git a/drivers/crypto/amlogic/Makefile b/drivers/crypto/amlogic/Makef= ile index 39057e62c13e..4b6b388b7880 100644 --- a/drivers/crypto/amlogic/Makefile +++ b/drivers/crypto/amlogic/Makefile @@ -1,2 +1,2 @@ obj-$(CONFIG_CRYPTO_DEV_AMLOGIC_GXL) +=3D amlogic-gxl-crypto.o -amlogic-gxl-crypto-y :=3D amlogic-gxl-core.o amlogic-gxl-cipher.o +amlogic-gxl-crypto-y :=3D amlogic-gxl-core.o amlogic-gxl-cipher.o amlogic-= gxl-hasher.o diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index f93e14f5717d..f3b5e004b3a5 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -20,6 +20,9 @@ #include #include #include +#include +#include +#include =20 #include "amlogic-gxl.h" =20 @@ -172,6 +175,15 @@ int meson_register_algs(struct meson_dev *mc, struct m= eson_alg_template *algs, return err; } break; + case CRYPTO_ALG_TYPE_AHASH: + err =3D crypto_engine_register_ahash(&algs[i].alg.ahash); + if (err) { + dev_err(mc->dev, "Fail to register %s\n", + algs[i].alg.ahash.base.halg.base.cra_name); + meson_unregister_algs(mc, algs, count); + return err; + } + break; } algs[i].mc =3D mc; } @@ -191,6 +203,9 @@ void meson_unregister_algs(struct meson_dev *mc, struct= meson_alg_template *algs case CRYPTO_ALG_TYPE_SKCIPHER: crypto_engine_unregister_skcipher(&algs[i].alg.skcipher); break; + case CRYPTO_ALG_TYPE_AHASH: + crypto_engine_unregister_ahash(&algs[i].alg.ahash); + break; } } } @@ -258,13 +273,20 @@ static int meson_crypto_probe(struct platform_device = *pdev) =20 dbgfs_dir =3D debugfs_create_dir("gxl-crypto", NULL); debugfs_create_file("stats", 0444, dbgfs_dir, mc, &meson_debugfs_fops); - #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG mc->dbgfs_dir =3D dbgfs_dir; #endif } =20 + err =3D meson_hasher_register(mc); + if (err) + goto error_hasher; + return 0; + +error_hasher: + meson_cipher_unregister(mc); + error_flow: meson_free_chanlist(mc, mc->flow_cnt - 1); return err; diff --git a/drivers/crypto/amlogic/amlogic-gxl-hasher.c b/drivers/crypto/a= mlogic/amlogic-gxl-hasher.c new file mode 100644 index 000000000000..04f85cd4d97f --- /dev/null +++ b/drivers/crypto/amlogic/amlogic-gxl-hasher.c @@ -0,0 +1,452 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Hardware asynchronous hasher for Amlogic SoC's. + * + * Copyright (c) 2023, SaluteDevices. All Rights Reserved. + * + * Author: Alexey Romanov + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "amlogic-gxl.h" + +static int meson_sha_init(struct ahash_request *req) +{ + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + + memset(rctx, 0, sizeof(struct meson_hasher_req_ctx)); + + rctx->flow =3D meson_get_engine_number(tctx->mc); + rctx->begin_req =3D true; + + return 0; +} + +static int meson_sha_update(struct ahash_request *req) +{ + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct crypto_engine *engine =3D tctx->mc->chanlist[rctx->flow].engine; + + return crypto_transfer_hash_request_to_engine(engine, req); +} + +static int meson_sha_final(struct ahash_request *req) +{ + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct crypto_engine *engine =3D tctx->mc->chanlist[rctx->flow].engine; + + rctx->final_req =3D true; + + return crypto_transfer_hash_request_to_engine(engine, req); +} + +static int meson_hasher_req_map(struct ahash_request *req) +{ + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_dev *mc =3D tctx->mc; + int ret; + + if (!req->nbytes) + return 0; + + ret =3D dma_map_sg(mc->dev, req->src, sg_nents(req->src), DMA_TO_DEVICE); + if (!ret) { + dev_err(mc->dev, "Cannot DMA MAP request data\n"); + return -ENOMEM; + } + + return 0; +} + +static void meson_hasher_req_unmap(struct ahash_request *req) +{ + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_dev *mc =3D tctx->mc; + + if (!req->nbytes) + return; + + dma_unmap_sg(mc->dev, req->src, sg_nents(req->src), DMA_TO_DEVICE); +} + +struct hasher_ctx { + struct crypto_async_request *areq; + + unsigned int tloffset; + unsigned int nbytes; + unsigned int todo; + + dma_addr_t state_addr; + dma_addr_t src_addr; + unsigned int src_offset; + struct scatterlist *src_sg; +}; + +static bool meson_final(struct hasher_ctx *ctx) +{ + struct ahash_request *req =3D ahash_request_cast(ctx->areq); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + + return !ctx->nbytes && rctx->final_req; +} + +static int meson_fill_partial_buffer(struct hasher_ctx *ctx, unsigned int = len) +{ + struct ahash_request *req =3D ahash_request_cast(ctx->areq); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct meson_dev *mc =3D tctx->mc; + unsigned int blocksize =3D crypto_ahash_blocksize(tfm); + unsigned int copy; + + if (len) { + copy =3D min(blocksize - rctx->partial_size, len); + memcpy(rctx->partial + rctx->partial_size, + sg_virt(ctx->src_sg) + ctx->src_offset, copy); + + rctx->partial_size +=3D copy; + ctx->nbytes -=3D copy; + ctx->src_offset +=3D copy; + } + + if (rctx->partial_size =3D=3D blocksize || meson_final(ctx)) { + rctx->partial_addr =3D dma_map_single(mc->dev, + rctx->partial, + rctx->partial_size, + DMA_TO_DEVICE); + if (dma_mapping_error(mc->dev, rctx->partial_addr)) { + dev_err(mc->dev, "Cannot DMA MAP SHA partial buffer\n"); + return -ENOMEM; + } + + rctx->partial_mapped =3D true; + ctx->todo =3D rctx->partial_size; + ctx->src_addr =3D rctx->partial_addr; + } + + return 0; +} + +static unsigned int meson_setup_data_descs(struct hasher_ctx *ctx) +{ + struct ahash_request *req =3D ahash_request_cast(ctx->areq); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_dev *mc =3D tctx->mc; + struct meson_flow *flow =3D &mc->chanlist[rctx->flow]; + struct hash_alg_common *alg =3D crypto_hash_alg_common(tfm); + struct meson_alg_template *algt =3D container_of(alg, + struct meson_alg_template, alg.ahash.base.halg); + struct meson_desc *desc =3D &flow->tl[ctx->tloffset]; + u32 v; + + ctx->tloffset++; + + v =3D DESC_OWN | DESC_ENCRYPTION | DESC_OPMODE_SHA | + ctx->todo | algt->blockmode; + if (rctx->begin_req) { + rctx->begin_req =3D false; + v |=3D DESC_BEGIN; + } + + if (!ctx->nbytes && rctx->final_req) { + rctx->final_req =3D false; + v |=3D DESC_END; + } + + if (!ctx->nbytes || ctx->tloffset =3D=3D MAXDESC || rctx->partial_mapped) + v |=3D DESC_LAST; + + desc->t_src =3D cpu_to_le32(ctx->src_addr); + desc->t_dst =3D cpu_to_le32(ctx->state_addr); + desc->t_status =3D cpu_to_le32(v); + + return v & DESC_LAST; +} + +static int meson_kick_hardware(struct hasher_ctx *ctx) +{ + struct ahash_request *req =3D ahash_request_cast(ctx->areq); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_dev *mc =3D tctx->mc; + struct meson_flow *flow =3D &mc->chanlist[rctx->flow]; + int ret; + + reinit_completion(&flow->complete); + meson_dma_start(mc, rctx->flow); + + ret =3D wait_for_completion_timeout(&flow->complete, + msecs_to_jiffies(500)); + if (ret =3D=3D 0) { + dev_err(mc->dev, "DMA timeout for flow %d\n", rctx->flow); + return -EINVAL; + } else if (ret < 0) { + dev_err(mc->dev, "Waiting for DMA completion is failed (%d)\n", ret); + return ret; + } + + if (rctx->partial_mapped) { + dma_unmap_single(mc->dev, rctx->partial_addr, + rctx->partial_size, + DMA_TO_DEVICE); + rctx->partial_size =3D 0; + rctx->partial_mapped =3D false; + } + + ctx->tloffset =3D 0; + + return 0; +} + +static void meson_setup_state_descs(struct hasher_ctx *ctx) +{ + struct ahash_request *req =3D ahash_request_cast(ctx->areq); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_dev *mc =3D tctx->mc; + struct meson_desc *desc; + int i; + + if (ctx->tloffset || rctx->begin_req) + return; + + for (i =3D 0; i < mc->pdata->setup_desc_cnt; i++) { + int offset =3D i * 16; + + desc =3D &mc->chanlist[rctx->flow].tl[ctx->tloffset]; + desc->t_src =3D cpu_to_le32(ctx->state_addr + offset); + desc->t_dst =3D cpu_to_le32(offset); + desc->t_status =3D cpu_to_le32(MESON_SHA_BUFFER_SIZE | + DESC_MODE_KEY | DESC_OWN); + + ctx->tloffset++; + } +} + +static int meson_hasher_do_one_request(struct crypto_engine *engine, void = *areq) +{ + struct ahash_request *req =3D ahash_request_cast(areq); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct meson_hasher_tfm_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + struct meson_dev *mc =3D tctx->mc; + struct hasher_ctx ctx =3D { + .tloffset =3D 0, + .src_offset =3D 0, + .nbytes =3D req->nbytes, + .src_sg =3D req->src, + .areq =3D areq, + }; + unsigned int blocksize =3D crypto_ahash_blocksize(tfm); + unsigned int digest_size =3D crypto_ahash_digestsize(tfm); + bool final_req =3D rctx->final_req; + int ret; + + ctx.state_addr =3D dma_map_single(mc->dev, rctx->state, + sizeof(rctx->state), DMA_BIDIRECTIONAL); + ret =3D dma_mapping_error(mc->dev, ctx.state_addr); + if (ret) { + dev_err(mc->dev, "Cannot DMA MAP SHA state buffer"); + goto fail_map_single; + } + + ret =3D meson_hasher_req_map(req); + if (ret) + goto fail_map_req; + + for (;;) { + unsigned int len =3D ctx.src_sg ? + min(sg_dma_len(ctx.src_sg) - ctx.src_offset, ctx.nbytes) : 0; + + ctx.src_addr =3D 0; + ctx.todo =3D 0; + + if (!rctx->final_req && !ctx.nbytes) + break; + + meson_setup_state_descs(&ctx); + + if (rctx->partial_size && rctx->partial_size < blocksize) { + ret =3D meson_fill_partial_buffer(&ctx, len); + if (ret) + goto fail; + } else if (len && len < blocksize) { + memcpy(rctx->partial, sg_virt(ctx.src_sg) + ctx.src_offset, len); + + rctx->partial_size =3D len; + ctx.nbytes -=3D len; + ctx.src_offset +=3D len; + } else if (len) { + ctx.src_addr =3D sg_dma_address(ctx.src_sg) + ctx.src_offset; + ctx.todo =3D min(rounddown(DESC_MAXLEN, blocksize), + rounddown(len, blocksize)); + ctx.nbytes -=3D ctx.todo; + ctx.src_offset +=3D ctx.todo; + } + + if (ctx.src_sg && ctx.src_offset =3D=3D sg_dma_len(ctx.src_sg)) { + ctx.src_offset =3D 0; + ctx.src_sg =3D sg_next(ctx.src_sg); + } + + if (!ctx.todo && ctx.nbytes) + continue; + + if (!ctx.todo && !rctx->final_req && !ctx.tloffset) + continue; + + if (meson_setup_data_descs(&ctx)) { + ret =3D meson_kick_hardware(&ctx); + if (ret) + goto fail; + } + } + +fail: + meson_hasher_req_unmap(req); + +fail_map_req: + dma_unmap_single(mc->dev, ctx.state_addr, sizeof(rctx->state), + DMA_BIDIRECTIONAL); + +fail_map_single: + if (final_req && ret =3D=3D 0) + memcpy(req->result, rctx->state, digest_size); + + local_bh_disable(); + crypto_finalize_hash_request(engine, req, ret); + local_bh_enable(); + + return ret; +} + +static int meson_hasher_init(struct crypto_tfm *tfm) +{ + struct meson_hasher_tfm_ctx *tctx =3D crypto_tfm_ctx(tfm); + struct crypto_ahash *atfm =3D __crypto_ahash_cast(tfm); + struct hash_alg_common *alg =3D crypto_hash_alg_common(atfm); + struct meson_alg_template *algt =3D container_of(alg, + struct meson_alg_template, alg.ahash.base.halg); + + crypto_ahash_set_reqsize(atfm, crypto_ahash_statesize(atfm)); + + memset(tctx, 0, sizeof(struct meson_hasher_tfm_ctx)); + + tctx->mc =3D algt->mc; + + return 0; +} + +static struct meson_alg_template mc_algs[] =3D { +{ + .type =3D CRYPTO_ALG_TYPE_AHASH, + .blockmode =3D DESC_MODE_SHA1, + .alg.ahash.base =3D { + .halg =3D { + .base =3D { + .cra_name =3D "sha1", + .cra_driver_name =3D "sha1-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D SHA1_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_ASYNC, + .cra_ctxsize =3D sizeof(struct meson_hasher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0, + .cra_init =3D meson_hasher_init, + }, + .digestsize =3D SHA1_DIGEST_SIZE, + .statesize =3D sizeof(struct meson_hasher_req_ctx), + }, + .init =3D meson_sha_init, + .update =3D meson_sha_update, + .final =3D meson_sha_final, + }, + .alg.ahash.op =3D { + .do_one_request =3D meson_hasher_do_one_request, + }, +}, +{ + .type =3D CRYPTO_ALG_TYPE_AHASH, + .blockmode =3D DESC_MODE_SHA224, + .alg.ahash.base =3D { + .halg =3D { + .base =3D { + .cra_name =3D "sha224", + .cra_driver_name =3D "sha224-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D SHA224_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_ASYNC, + .cra_ctxsize =3D sizeof(struct meson_hasher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0, + .cra_init =3D meson_hasher_init, + }, + .digestsize =3D SHA224_DIGEST_SIZE, + .statesize =3D sizeof(struct meson_hasher_req_ctx), + }, + .init =3D meson_sha_init, + .update =3D meson_sha_update, + .final =3D meson_sha_final, + }, + .alg.ahash.op =3D { + .do_one_request =3D meson_hasher_do_one_request, + }, +}, +{ + .type =3D CRYPTO_ALG_TYPE_AHASH, + .blockmode =3D DESC_MODE_SHA256, + .alg.ahash.base =3D { + .halg =3D { + .base =3D { + .cra_name =3D "sha256", + .cra_driver_name =3D "sha256-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D SHA256_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_ASYNC, + .cra_ctxsize =3D sizeof(struct meson_hasher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0, + .cra_init =3D meson_hasher_init, + }, + .digestsize =3D SHA256_DIGEST_SIZE, + .statesize =3D sizeof(struct meson_hasher_req_ctx), + }, + .init =3D meson_sha_init, + .update =3D meson_sha_update, + .final =3D meson_sha_final, + }, + .alg.ahash.op =3D { + .do_one_request =3D meson_hasher_do_one_request, + }, +}, +}; + +int meson_hasher_register(struct meson_dev *mc) +{ + return meson_register_algs(mc, mc_algs, ARRAY_SIZE(mc_algs)); +} + +void meson_hasher_unregister(struct meson_dev *mc) +{ + meson_unregister_algs(mc, mc_algs, ARRAY_SIZE(mc_algs)); +} diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index e1453dd2e9f4..a07b4f6b3bcc 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -5,6 +5,7 @@ * Copyright (C) 2018-2019 Corentin LABBE */ #include +#include #include #include #include @@ -23,13 +24,25 @@ =20 #define DESC_OPMODE_ECB (0 << 26) #define DESC_OPMODE_CBC (1 << 26) +#define DESC_OPMODE_SHA (0 << 26) =20 #define DESC_MAXLEN ((1 << 17) - 1) =20 +#define DESC_MODE_SHA1 (0x5 << 20) +#define DESC_MODE_SHA224 (0x7 << 20) +#define DESC_MODE_SHA256 (0x6 << 20) + #define DESC_LAST BIT(18) +#define DESC_BEGIN BIT(24) +#define DESC_END BIT(25) #define DESC_ENCRYPTION BIT(28) #define DESC_OWN BIT(31) =20 +#define MESON_SHA_BUFFER_SIZE (SHA256_DIGEST_SIZE + 16) + +#define MESON_SHA_BEGIN BIT(1) +#define MESON_SHA_FINAL BIT(2) + /* * struct meson_desc - Descriptor for DMA operations * Note that without datasheet, some are unknown @@ -143,6 +156,38 @@ struct meson_cipher_tfm_ctx { struct crypto_skcipher *fallback_tfm; }; =20 +/* + * struct meson_hasher_req_ctx - context for a hasher request + * @state: state data + * @partial: partial buffer data. Contains sent data which + * size < blocksize + * @partial_size: size of the partial buffer + * @partial_addr: physical address of partial buffer + * @partial_mapped: indicates is partial buffer currently mapped or not + * @flags: request flags (for example, is this final req or not) + * @flow: the flow to use for this request + */ +struct meson_hasher_req_ctx { + u8 state[SHA256_DIGEST_SIZE + 16] ____cacheline_aligned; + u8 partial[SHA256_BLOCK_SIZE] ____cacheline_aligned; + unsigned int partial_size ____cacheline_aligned; + dma_addr_t partial_addr; + bool partial_mapped; + + bool begin_req; + bool final_req; + int flow; +}; + +/* + * struct meson_hasher_tfm_ctx - context for a hasher TFM + * @enginectx: crypto_engine used by this TFM + * @mc: pointer to the private data of driver handling this TFM + */ +struct meson_hasher_tfm_ctx { + struct meson_dev *mc; +}; + /* * struct meson_alg_template - crypto_alg template * @type: the CRYPTO_ALG_TYPE for this template @@ -157,6 +202,7 @@ struct meson_alg_template { u32 blockmode; union { struct skcipher_engine_alg skcipher; + struct ahash_engine_alg ahash; } alg; struct meson_dev *mc; #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG @@ -180,3 +226,6 @@ int meson_cipher_register(struct meson_dev *mc); void meson_cipher_unregister(struct meson_dev *mc); void meson_cipher_debugfs_show(struct seq_file *seq, void *v); int meson_handle_cipher_request(struct crypto_engine *engine, void *areq); + +int meson_hasher_register(struct meson_dev *mc); +void meson_hasher_unregister(struct meson_dev *mc); --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC0433E485; Mon, 12 Feb 2024 13:51:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745908; cv=none; b=BwleWFANs4YbfZkwuGSFnSGHlF1NNQMPNGJAEsayU5FV7AMNQJu0dgD0abnwpSvKZqBPnMvlCIP+dDMA0EZ07Tlbe9Dm0taM4knF9us5uHOi9Hx+Y2cb332bCgsb0xSCm0uYUt0/HaB81i+3HXjgmHn+cbachjzDTHqVumFL/Bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745908; c=relaxed/simple; bh=ozEQikAp7SBFkLIa5T0j5RmfB/dVa97bJcoVUR3QyFA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MvW4Wl01cu9WMsUbG+raN9A7V8ZAUL/yl/h1MSIFApR71GymsWEuk9qO0qdb6Gs1MbBgJmaXzAIsA7i5P3YTlSLUlfXsy68cFvhKpNUnwOT33ZUtry/RL7BysHQ3uuNTO9MFlQ08pqhU0/NWmoiHiXhpQr9ojl+OedBqCO9Ey+k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=FFI12neM; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="FFI12neM" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 240D3100019; Mon, 12 Feb 2024 16:51:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 240D3100019 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745905; bh=Vd9GHGiOwQcDzJagyNBPGZ2N8rH785ofr1KRdm4qjKg=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=FFI12neMfJwaomy8bXA7UH0np88sChXspGSIRTI7ANBSqE4neU0KgPJWiN2lQvx4E A0ibT4CCCPxOMmZOfY2p9aG+zXdnlUMhngFAJ+7K1r+edt/LgZ1vKS4qGOb6x6itu8 DrymAOd3bno7bxUJ60FANWCrIOPFwU7tb3lb86/zooj0fPXPItaOoibJfueqYzb5LW +yz8nKuZSPfqjqUBfqd+tgWTriMhEiwB4m6jBj74K9LMvfhkk6PHPZPvpT3IE3DL6/ ZFBxFUjyuPp4y7n38g6SzSAl5vf24W5gfH2ol5CgUIBSEFc/2uOgYmb0WhsrT1sJ++ QUUc1cDnR2XWQ== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:44 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:44 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 12/20] drivers: crypto: meson: add support for AES-CTR Date: Mon, 12 Feb 2024 16:51:00 +0300 Message-ID: <20240212135108.549755-13-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This patch adds support for AES-CTR algorithm. Tested via tcrypt and custom tests. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 44 +++++++++++++++++++-- drivers/crypto/amlogic/amlogic-gxl.h | 1 + 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 3f42b2cc568d..828109f4a1c3 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -154,7 +154,7 @@ static void meson_setup_keyiv_descs(struct cipher_ctx *= ctx) if (ctx->tloffset) return; =20 - if (blockmode =3D=3D DESC_OPMODE_CBC) { + if (blockmode =3D=3D DESC_OPMODE_CBC || blockmode =3D=3D DESC_OPMODE_CTR)= { memcpy(op->keyiv + AES_MAX_KEY_SIZE, ctx->areq->iv, ivsize); dma_sync_single_for_device(mc->dev, ctx->keyiv.addr, ctx->keyiv.len, DMA_TO_DEVICE); @@ -186,6 +186,7 @@ static bool meson_setup_data_descs(struct cipher_ctx *c= tx) struct meson_desc *desc =3D &mc->chanlist[rctx->flow].tl[ctx->tloffset]; unsigned int blocksize =3D crypto_skcipher_blocksize(tfm); unsigned int blockmode =3D algt->blockmode; + unsigned int ivsize =3D crypto_skcipher_ivsize(tfm); unsigned int maxlen =3D rounddown(DESC_MAXLEN, blocksize); unsigned int todo; u32 v; @@ -204,8 +205,15 @@ static bool meson_setup_data_descs(struct cipher_ctx *= ctx) ctx->src_offset +=3D todo; ctx->dst_offset +=3D todo; =20 + if (blockmode =3D=3D DESC_OPMODE_CTR) { + unsigned int nblocks =3D todo / blocksize; + + while (nblocks--) + crypto_inc(ctx->areq->iv, ivsize); + } + v =3D DESC_OWN | blockmode | op->keymode | todo; - if (rctx->op_dir =3D=3D MESON_ENCRYPT) + if (rctx->op_dir =3D=3D MESON_ENCRYPT || blockmode =3D=3D DESC_OPMODE_CTR) v |=3D DESC_ENCRYPTION; =20 if (!ctx->cryptlen || ctx->tloffset =3D=3D MAXDESC) @@ -322,7 +330,8 @@ static int meson_cipher(struct skcipher_request *areq) if (ctx.keyiv.len =3D=3D AES_KEYSIZE_192) ctx.keyiv.len =3D AES_MAX_KEY_SIZE; =20 - if (algt->blockmode =3D=3D DESC_OPMODE_CBC) { + if (algt->blockmode =3D=3D DESC_OPMODE_CBC || + algt->blockmode =3D=3D DESC_OPMODE_CTR) { memcpy(op->keyiv + AES_MAX_KEY_SIZE, areq->iv, ivsize); ctx.keyiv.len =3D AES_MAX_KEY_SIZE + ivsize; } @@ -535,6 +544,35 @@ static struct meson_alg_template algs[] =3D { .do_one_request =3D meson_handle_cipher_request, }, }, +{ + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, + .blockmode =3D DESC_OPMODE_CTR, + .alg.skcipher.base =3D { + .base =3D { + .cra_name =3D "ctr(aes)", + .cra_driver_name =3D "ctr-aes-gxl", + .cra_priority =3D 400, + .cra_blocksize =3D AES_BLOCK_SIZE, + .cra_flags =3D CRYPTO_ALG_TYPE_SKCIPHER | + CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY | + CRYPTO_ALG_NEED_FALLBACK, + .cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx), + .cra_module =3D THIS_MODULE, + .cra_alignmask =3D 0xf, + .cra_init =3D meson_cipher_init, + .cra_exit =3D meson_cipher_exit, + }, + .min_keysize =3D AES_MIN_KEY_SIZE, + .max_keysize =3D AES_MAX_KEY_SIZE, + .ivsize =3D AES_BLOCK_SIZE, + .setkey =3D meson_aes_setkey, + .encrypt =3D meson_skencrypt, + .decrypt =3D meson_skdecrypt, + }, + .alg.skcipher.op =3D { + .do_one_request =3D meson_handle_cipher_request, + }, +}, }; =20 int meson_cipher_register(struct meson_dev *mc) diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index a07b4f6b3bcc..7f6d91e7b365 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -24,6 +24,7 @@ =20 #define DESC_OPMODE_ECB (0 << 26) #define DESC_OPMODE_CBC (1 << 26) +#define DESC_OPMODE_CTR (2 << 26) #define DESC_OPMODE_SHA (0 << 26) =20 #define DESC_MAXLEN ((1 << 17) - 1) --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A26D03EA6C; Mon, 12 Feb 2024 13:51:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745909; cv=none; b=Pm/t/ep62iabQIJ39B1gxqenc9M13XcIm5Qt/v+MJb3cNcCTArXam9W84wNLQvo6wCUlOlb1GACoBfaEDsYrJB94iK79T35vOC7ENTi4iBrnq/2sh0jjv/febSNckXVSabuWodg9RePgz5cF1GE7wZy5/b+6MqFoJLG6Ump2rtg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745909; c=relaxed/simple; bh=2fnMOMJDILFlwcaehQpUmfFbp+tRlWd7EHYHAr2Uks8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=n+lumtwT7EUNB/teveMJytjDOM0eXCxc5U4ICWVChdZuNZoMGMCgBN+l1bIn+HCv2jEi6rP5yfSAc1YE3dsrE3rWwdtIuhvcHjtWuoE9lxjzuHRA52WKRFjCLOlRUTZqO5tXBci3TODNzbe/cJU2eRGxc70pXYrgtBfFCfdzfDI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=NHMvl5X4; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="NHMvl5X4" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id AE1C012001C; Mon, 12 Feb 2024 16:51:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru AE1C012001C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745905; bh=zDAhb+Rc1l4GwazN7hwx3va0URSvsV0XxGiBlV0n2II=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=NHMvl5X4wmjAYAKtPdIDHCNKSK5c4BGsK4jXJEGn7Km/3vP0BGmmQoYIXZtdxrmKy +9h0gGsX8mbebhPCDVg0v381Xyug1xKLBBT68+cdhAtJg8LJxoBSWasanPS39cGKCZ 75OhjydhXFP3l6OvlJtDAN72GPj5yHm1Gr6lgTXRosI5WiiFymYxAT6XeaKUmQ4+Dw fwBHdfvdkpCA8IERdZ0BNOA9nBfJs10HCjNY26Zd2Q0Z8UMADQKkb0r9dgRoa2vbRM TDTnU1LFBa0JslrOm+6pYE85914Pw9Ab8HNf1pErqFvijw4XHCJPojlwMm3koe/hxP W8KgYYn3pko1Q== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:45 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:45 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 13/20] drivers: crypto: meson: use fallback for 192-bit keys Date: Mon, 12 Feb 2024 16:51:01 +0300 Message-ID: <20240212135108.549755-14-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Unforunately, not all Amlogic SoC's have a 192-bit key support for AES algo. In this case, use fallback. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 7 +++++++ drivers/crypto/amlogic/amlogic-gxl-core.c | 1 + drivers/crypto/amlogic/amlogic-gxl.h | 2 ++ 3 files changed, 10 insertions(+) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 828109f4a1c3..da593130553e 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -41,6 +41,13 @@ static bool meson_cipher_need_fallback_sg(struct skciphe= r_request *areq, =20 static bool meson_cipher_need_fallback(struct skcipher_request *areq) { + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); + struct meson_dev *mc =3D op->mc; + + if (op->keymode =3D=3D DESC_MODE_AES_192 && !mc->pdata->support_192bit_ke= y) + return true; + if (areq->cryptlen =3D=3D 0) return true; =20 diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index f3b5e004b3a5..429c3474028b 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -215,6 +215,7 @@ static const struct meson_pdata meson_gxl_pdata =3D { .status_reg =3D 0x4, .need_clk =3D true, .setup_desc_cnt =3D 3, + .support_192bit_key =3D true, }; =20 static const struct of_device_id meson_crypto_of_match_table[] =3D { diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 7f6d91e7b365..2d2777a25453 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -98,12 +98,14 @@ struct meson_flow { * @reg_status: offset to status register * @need_clk: clock input is needed * @setup_desc_cnt: number of setup descriptor to configure. + * @support_192bit_key: indicates whether platform support AES 192-bit key */ struct meson_pdata { u32 descs_reg; u32 status_reg; bool need_clk; u32 setup_desc_cnt; + bool support_192bit_key; }; =20 /* --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BDDDB3EA77; Mon, 12 Feb 2024 13:51:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745909; cv=none; b=MUoCeGcyL7xG0vaTfKta/pxYD9+2K94jpTH4uNVeMwFJF+PSXm48a1Znkry+4dtPRveK0YO2zSRaJN52RG6Sd8+sxIFmycBtuWGTcccBgALSnMp8YC+WSte+59yry8t6nnCJI0C8KVPTSYc+fZIJr7Hu+fXBH2dE3qxA95DSX6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745909; c=relaxed/simple; bh=nWCo93lRSEnlk/sJ3zk8d/Jx7/2crLsQXdsmVXn0U3k=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=i5ATsDzDn2L/C+5530B02hVrO+t7cxKqzX71yosJLGD1vGvx91A197Je3uW5oqf28wi9IFQfDg8lgIBlqLi9ooy5QUmN/YuoAmtBigf+ksu9V5/ZWY5bUcf3L/NQJWia5YP0cQk1W/0h19b+pIqXAwGBEj6ImBsdYYKgr13o3sI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=BhA9PNid; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="BhA9PNid" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 41FD3100015; Mon, 12 Feb 2024 16:51:46 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 41FD3100015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745906; bh=ofSffcac25TbBnJkdX3YhQtab6K2HY23UmWsNLH7FrE=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=BhA9PNiduLAMKVvzJyUE+1naP/RWyLnTf88loVsJNiWaWMdL5Nw9PtHvuNYSt2b5S hXvvyREzJ9Dn60fYFCe0HD7iiZO/xBzhprRt5K+cLckJ+tkOzpeg+f0LC9feC1RJyO 6GKUv2BaRy2/AHGmXGgpgJGMK5E4LSzo+nyBXKF3ZpgrXBrb0FkQ38Av8xKnCgHtDQ /wJxK4tjusLq7OdmMifKZeNaO/bKOTNCLxcm7CtDIltyqjpRwqANQJoKu9PHTGU7n3 6Ag4/ObLm58EPNhm8gBPFaA+YbNFZvad1DfWwmxEtiLV2uTuzXb5fPbmy9mkkHL9IP 4SXr6n3QZ+zGg== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:46 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:45 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 14/20] drivers: crypto: meson: add support for G12-series Date: Mon, 12 Feb 2024 16:51:02 +0300 Message-ID: <20240212135108.549755-15-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, salutedevices.com:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1;100.64.160.123:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This platform data also can be used for A1 and S4 as fallback. Tested via tcrypt module and with custom tests. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-core.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 429c3474028b..2ffe5994b353 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -218,11 +218,31 @@ static const struct meson_pdata meson_gxl_pdata =3D { .support_192bit_key =3D true, }; =20 +static const struct meson_pdata meson_g12a_pdata =3D { + .descs_reg =3D 0x0, + .status_reg =3D 0x8, + .need_clk =3D false, + .setup_desc_cnt =3D 1, + .support_192bit_key =3D false, +}; + static const struct of_device_id meson_crypto_of_match_table[] =3D { { .compatible =3D "amlogic,gxl-crypto", .data =3D &meson_gxl_pdata, }, + { + .compatible =3D "amlogic,g12a-crypto", + .data =3D &meson_g12a_pdata, + }, + { + .compatible =3D "amlogic,a1-crypto", + .data =3D &meson_g12a_pdata, + }, + { + .compatible =3D "amlogic,s4-crypto", + .data =3D &meson_g12a_pdata, + }, {}, }; MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5B913EA83; Mon, 12 Feb 2024 13:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745911; cv=none; b=JYOStIwjZhMWZsdsuQZNTVzu7FF0EUTIcGCZRazPNmBhEjJwsNmH9RF1PKTAVH6gBgJ6E6VreQMYzFapcVg8dhPAp/WIAw/UrPd5S/tK/4IxdhabtEoV74m3o4WLTCF49lxza2d7iMHQRUnqvZwHL/83+kxsuUR/HRpl07c58Wo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745911; c=relaxed/simple; bh=j/npYAldlvd9Qq3pg+DESbC3wWELF/8rKRlRxhrdEk4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Z2DgupL1utooBwrqB5lXHeCnH1O0g+HFncHl867lDOU15B3+Hd5cai3YevXZw3Rf5nfr8aXU/aT1C4jEYg2ZXprQonDUBlThQWmyB0PDztwAU+YBw5mfmV+ltrl8wO0cOSmDIRKE6k8EO9+bS3goPgu4ecs0w6NDf07HHWNOtb0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=ix33G0Sc; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="ix33G0Sc" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 1A6C9120006; Mon, 12 Feb 2024 16:51:47 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 1A6C9120006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745907; bh=nepK9/S3PvUYFkBSk3ayS3sP15UZveTig8m4Oij780o=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=ix33G0Sc4bUmf3cMpdxGONoUOdlCN5tI1S5MHukh+aTiMdTqvTDfu28XJEKwowrAJ hbpZay9ekNkMSBZxqIQjpCYJEBReJwVcja5TPm1nkSYSTZ5WJXl0xthteoZqJdpyTO k6xx38Qj8F+5DFMYhsqPTDX7aJj/kk4HL0Bye2lCglZzlUrGxMeel5nJR9CHU4Dhhy jzUYGpU+WhHzbUWIX1kLFYxO/TtQiAGLd961Uz0aN2rfds/nx/MjmuJKc3LCJuiIN1 kg/37gvIiMts4xETfSVTaOnCkkMsmMtfWb70kgX8vnJB2UrAE6NZG781mBQuvU8AGx XSF0Qk/l+UT/Q== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:46 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:46 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 15/20] drivers: crypto: meson: add support for AXG-series Date: Mon, 12 Feb 2024 16:51:03 +0300 Message-ID: <20240212135108.549755-16-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Tested via tcrypt module and with custom tests. Signed-off-by: Alexey Romanov --- drivers/crypto/amlogic/amlogic-gxl-core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 2ffe5994b353..536ad438f713 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -226,6 +226,14 @@ static const struct meson_pdata meson_g12a_pdata =3D { .support_192bit_key =3D false, }; =20 +static const struct meson_pdata meson_axg_pdata =3D { + .descs_reg =3D 0x0, + .status_reg =3D 0x8, + .need_clk =3D false, + .setup_desc_cnt =3D 3, + .support_192bit_key =3D true, +}; + static const struct of_device_id meson_crypto_of_match_table[] =3D { { .compatible =3D "amlogic,gxl-crypto", @@ -243,6 +251,10 @@ static const struct of_device_id meson_crypto_of_match= _table[] =3D { .compatible =3D "amlogic,s4-crypto", .data =3D &meson_g12a_pdata, }, + { + .compatible =3D "amlogic,axg-crypto", + .data =3D &meson_axg_pdata, + }, {}, }; MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7860F3E49B; Mon, 12 Feb 2024 13:51:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745911; cv=none; b=LwyOf4LvAOJKC+cUnIWvZnOJY558KHFQA5rFxJls7D8rQ16D4skzXJ5VD3cVZHrL2MalMnrRcdgy23xkD0Bg8KkjLVBJJN+0FmKP3kAENwtFi8C7YlT8TmH79HOi3QlMc45dGGQUfqc0AQ7A4Cs7KKGww1BXFjqlTq3mMKiCnaU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745911; c=relaxed/simple; bh=XlynaIkF9qwbqnzwuOq9i2gMS0VMEsCKfNgPPjrYsD0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AkO6EJYFPlCH7yS1ikLHUUJWHsHiw2uFcuQPNRNgtzBmBBLauCdZby3oHO3PXZbIpbMWgnZTbVy8YlOp8DnFiK0+FoXqq40K33S3lGMfK7TSFcEdbcU1OFICd0g49bHhk6kFMQEtI4nYIwPHb9/bfqjh4GD3zMkXo9FwGr2oReE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=dOOWvn0V; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="dOOWvn0V" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id B42A310001D; Mon, 12 Feb 2024 16:51:47 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru B42A310001D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745907; bh=IRwgLeIR6ybauKW+ejxf9w28ns0m/CaiGYPhKUCYNTk=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=dOOWvn0V4n+eHiKOTyBoulWgFXfNrzDewGNY9ZADOxNpkONMEV59gnVIfIDtGJToI iQ428GiWVWUcwSf5e2gP7yWSAAwKTSBPnIarY86xKeKhwcxlQFZSZHus0uf71MZsDt llLOo+oBE/1SopdfCWfQNbuoo+RXUi2WFYldGwPQdTqp7acu7BeQGCeHwVHZvzego2 6y4dV/QRqLQh/YDuXQTLKlflU0ebMY+yivozYycAxp9yhOgjYiE+w1nFAL9jsxCU1W 5S/x6nGsm5qfkXL2kaHqwn4wkNs0vOwK/nufeKDcHhvgQNgiXMNhdIeEYkzXMEJXNC tuG3m66ebvVPg== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:47 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:47 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 16/20] dt-bindings: crypto: meson: support new SoC's Date: Mon, 12 Feb 2024 16:51:04 +0300 Message-ID: <20240212135108.549755-17-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" Now crypto module available at G12A/G12B/S4/A1/SM1/AXG. 1. Add new compatibles: - amlogic,g12a-crypto - amlogic,s4-crypto (uses g12a-crypto as fallback) - amlogic,a1-crypto (uses g12a-crypto as fallback) - amlogic,axg-crypto 2. All SoC's, exclude GXL, doesn't take a clock input for Crypto IP. Make it required only for amlogic,gxl-crypto. 3. All SoC's, exclude GXL, uses only one interrupt flow for Crypto IP. 4. Add power-domains in schema. Signed-off-by: Alexey Romanov --- .../bindings/crypto/amlogic,gxl-crypto.yaml | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.ya= ml b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml index 948e11ebe4ee..41f0153d58c8 100644 --- a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml +++ b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml @@ -11,20 +11,30 @@ maintainers: =20 properties: compatible: - items: - - const: amlogic,gxl-crypto + oneOf: + - items: + - enum: + - amlogic,a1-crypto + - amlogic,s4-crypto + - const: amlogic,g12a-crypto + - enum: + - amlogic,gxl-crypto + - amlogic,axg-crypto + - amlogic,g12a-crypto =20 reg: maxItems: 1 =20 interrupts: - items: - - description: Interrupt for flow 0 - - description: Interrupt for flow 1 + minItems: 1 + maxItems: 2 =20 clocks: maxItems: 1 =20 + power-domains: + maxItems: 1 + clock-names: const: blkmv =20 @@ -32,8 +42,27 @@ required: - compatible - reg - interrupts - - clocks - - clock-names + +allOf: + - if: + properties: + compatible: + contains: + const: amlogic,gxl-crypto + then: + required: + - clocks + - clock-names + properties: + interrupts: + items: + - description: Interrupt for flow 0 + - description: Interrupt for flow 1 + else: + properties: + interrupts: + items: + - description: Interrupt for flow 0 =20 additionalProperties: false =20 --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A0C2F45014; Mon, 12 Feb 2024 13:51:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745912; cv=none; b=Ejoo2qChyPkap5DfxHJ/fGKxmpsKNb0ZU1smENlx3UVK/aMZ22Q4jBrPkiS79trCnLEvL1PTyqwSjKT6axHOsyKfp+lKljFcql8Z30wC4jwmSpY6xESxa5WEllJHsfszHM3iRhJxLlSyQAqwqPnj/V5uog18eXsFjGyKcTBUmBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745912; c=relaxed/simple; bh=k4tmwn/oyd3eicica+LGOYZbUmpCR5QOBhY7Xv5wMZs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jSaOUOrA2E77iVKNNg9yQ+baNN1tv7l+ZMt8L6xzcENljZE6Elo9Br5veo7kuaS3k6VsxQSATQwBjoKh1JdnKjrRlY/bQDcTsgzJeUExkK/O9iTaEDYBEq3ga/EwboL8RAX7sRSj0Hwy0AP5wCLIjFOWHNQaFhr2gYKNXzA6JEU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=U34sx7D1; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="U34sx7D1" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 6D75212001D; Mon, 12 Feb 2024 16:51:48 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 6D75212001D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745908; bh=gUhc8nz00jwdWrBlKkJkWm4NwzIELiwPYGL3SQmGpqg=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=U34sx7D1ctq6bVeZ8L48d8t1o5Nby99ZoEVX4GsOLVFgC9xWSALiVlX88Xi3paRHI qg8viDA1bkYDjbv69OIZN7rV2b5K1SaEji0xUS5IOujKtcvZEi4zQQFGPdEQDYWF1u GOYIsBvb9sFivK2nP3bI/t2MHX59NGPw6nVa3/83yhaqQKxKOKjMbOvmYSkcE4Opk8 JazPIJvQQGK8qUHumY9O/XKblBPuy2Q5wQipR/BA9sJSCUnNZAnzSFZNqDmlNwD2nd Pjmf23f28jqPYjhD5Oi++nUQSZEoz1/ZGNuf4Yje+xbAcLbMJJioTSr3xUPtUNwSbv txsctMJkx8HIw== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:48 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:47 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 17/20] arch: arm64: dts: meson: a1: add crypto node Date: Mon, 12 Feb 2024 16:51:05 +0300 Message-ID: <20240212135108.549755-18-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This patch adds a crypto node declaration. With the Amlogic crypto driver we can use HW implementation of SHA1/224/256 and AES algo. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dt= s/amlogic/meson-a1.dtsi index b9fd69112535..6d11e38ca3c0 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi @@ -653,6 +653,13 @@ sd_emmc: sd@10000 { power-domains =3D <&pwrc PWRC_SD_EMMC_ID>; status =3D "disabled"; }; + + crypto: crypto@6000 { + compatible =3D "amlogic,a1-crypto", "amlogic,g12a-crypto"; + reg =3D <0x0 0x6000 0x0 0x48>; + interrupts =3D ; + power-domains =3D <&pwrc PWRC_DMA_ID>; + }; }; =20 usb: usb@fe004400 { --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAADC446D6; Mon, 12 Feb 2024 13:51:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745912; cv=none; b=Bd0JI77uTsuRrtqW8Kv/ba9tBoUxd0Y0EQEMAtkyOW5+NrNJNIUbHFNDD1aju9skExnDkJ9jdFdp/RU/gYOREiMG5kp9PiczdU1AVRpGuqbFK1UbLxSKq0PJL3vK1iQQHoQWadZbbnvgPigw7qhte4JNNmSnEGh1A2yt4XOH8oU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745912; c=relaxed/simple; bh=0rpZvxOQ8WFLIh69MfxLBBIT0ej+97+TsV/UNm7SwXQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=N0UCjIBs81+JKtx9uoT98aXGeXNgLdBeQ0Dpcdvq2BrFbyihpG5ePJcgSvg5QLaQBm7lWKcL87WXc/A8e6NWnO5QboiQxoc/K2XVMbnsgw+BqXGCZA4xMYjg/Ul0RwDTj/8fgOEa440DZs1KxvN4oPsK8wCMy4aORLHY+zZY/NU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=mjFcvaqF; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="mjFcvaqF" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 15A6810001B; Mon, 12 Feb 2024 16:51:49 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 15A6810001B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745909; bh=MDoYO53o9hjbNBR6evxCByByDzZFqFEvMI2ryoM8Lpc=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=mjFcvaqFFZZP+K4ihX+fP0OpfVysdxhVAG3M/PR3jy03veVUME/mIF1n/TTDkYGj1 05u2z2A7jQ67cEPQ0c+Zz/cJbI5rLvv+4dxaQeDoYCq8GNsTXUtfz7qNsgeXPN721A UK6ZQeBMZ/sGdu/XyL9rEDM41PddSvMM3hwLB3mPk3d/AwbnH/3+28yIbgfcLQzvWE vu/Ui8hWNIKqjpZ+OZSfUepxFiMUm7m9HooQNYbWuiNeOdbrJNtpeS6sa/IfMAMwoy ADTATVL/s3J3oJ+peydl727g3j0khO5HLT0tvVQuj+MVTS6ndVKnDsxsXtDvVYYwyO pgsMJV98niq1g== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:48 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:48 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 18/20] arch: arm64: dts: meson: s4: add crypto node Date: Mon, 12 Feb 2024 16:51:06 +0300 Message-ID: <20240212135108.549755-19-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This patch adds a crypto node declaration for Amlogic S4-series. With the Amlogic crypto driver we can use HW implementation of SHA1/224/256 and AES algo. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/dt= s/amlogic/meson-s4.dtsi index ce90b35686a2..dc05e2c5da3b 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi @@ -339,6 +339,12 @@ mux { =20 }; =20 + crypto: crypto@440400 { + compatible =3D "amlogic,s4-crypto", "amlogic,g12a-crypto"; + reg =3D <0x0 0x440400 0x0 0x48>; + interrupts =3D ; + }; + gpio_intc: interrupt-controller@4080 { compatible =3D "amlogic,meson-s4-gpio-intc", "amlogic,meson-gpio-intc"; --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E32245BE8; Mon, 12 Feb 2024 13:51:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.89.224.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745913; cv=none; b=AZDM/UyGop+Hady+KX92Ese6dH5a7ZtYZmBGKagekDrl/ldP0nqmZ1TKbse/f6zsX9hC6CFaN5tBaUgsMX3wQGEBRRyy1pOdXioYJb1Ryd0ofGr4oVJgJ8wQIfWwyOXuw1HeCvGtBjK64aMO9oysIzIPkby2KAW3hmheJRAUXW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745913; c=relaxed/simple; bh=p75gyEKuZUMyzfXndu7/DaPEMCaTLTrP+tiFaL/zmyk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bzrwc7nETySD4I2jxVt5NiwJE9Uusj2xmZvpQT+aFj0Rd/yNIWf91AbNduvfIrIQ0PVCWBkAMFYkCuWOZ67WbjJQDhqwLtbVuXROqg4uJX+B/OPryuuYgg220vfGrbnR5r5XcxOVCjdSs6oN66z3+N6+7dO/7B1D9FMya0BToVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=sErfEYLh; arc=none smtp.client-ip=45.89.224.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="sErfEYLh" Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id AD20D12001E; Mon, 12 Feb 2024 16:51:49 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru AD20D12001E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745909; bh=L0Kr6PSaW/CeJjCIRN2fyh6XpKkpUR7UXWLxlaNtQ1s=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=sErfEYLh3HdTitnX1iMbdIahhfTOHeWCTB3csQCkgi2Y6O7Jnc7IqoSpu1UNcWHjP gymJYZXXY+tuNtgzJS/x2EljN1XcgMytkMaK6lnmELKj8QooU3PMPTtzJoUBxpsfsI AGOM/RfEle2wvnVhW8cKpBGX6G/AX11g0GaPv2NCkkAzLxbriUfVUn2DTJJuhnJ0hQ F1+zHKFdtXlIGCShHTCQxtLhWe6zMqkAHy5xliHcl67DJPoDRh86rn0li2M9gp7vfB TSOOMAp8LK2jLliK98bS0X0brizQ9Y3aVJ76ZPpyJbVOCiqbSFvZdCrlVrSQ1gC9iH jYkBsPNmFJ0TA== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:49 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:49 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 19/20] arch: arm64: dts: meson: g12: add crypto node Date: Mon, 12 Feb 2024 16:51:07 +0300 Message-ID: <20240212135108.549755-20-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;salutedevices.com:7.1.1;100.64.160.123:7.1.2;smtp.sberdevices.ru:5.0.1,7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This patch adds a crypto node declaration for Amlogic G12-series. With the Amlogic crypto driver we can use HW implementation of SHA1/224/256 and AES algo. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64= /boot/dts/amlogic/meson-g12-common.dtsi index ff68b911b729..f6d7047a579c 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -1709,6 +1709,12 @@ internal_ephy: ethernet-phy@8 { }; }; }; + + crypto: crypto@3e000 { + compatible =3D "amlogic,g12a-crypto"; + reg =3D <0x0 0x3e000 0x0 0x48>; + interrupts =3D ; + }; }; =20 aobus: bus@ff800000 { --=20 2.34.1 From nobody Sun Feb 8 17:36:16 2026 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 183E246441; Mon, 12 Feb 2024 13:51:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.18.73.165 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745914; cv=none; b=CVgGEJf5aQshAge2ytBD2JVN8jRF4e6PxDXth1jYFJBiq0W4wNrjX/2atwFuwblLigB0rzBlrM2aVkZtr2OhHBHknshhJ8lkjRX5C2Y78hG9CM4Zyi14SAFOpuyIU8ADFf84PUOL4PTmFwQ7sFFTCIh+GR77iL5S8h567IkYKm8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707745914; c=relaxed/simple; bh=Ru6hXvCeTAnfORs9yMxPiZ4zCFc1RDkZ/xsEFN+AkVw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=T5jd+YXp4sqV1eIUIBdG5++kDHSaD/S8fW6+HnPGraJ6BBeUeUhKrBk9X9K/AmMWqJMPWE+D5htmfS6BhYOpqDTnl8etEDHrxXICl+y4tIBvDxVSXE7aSA4PrKyDNgwsB3jGdNsxnLM+oCCRtp1NWC3as+H5BQ5SHX5AIV3WLpU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com; spf=pass smtp.mailfrom=salutedevices.com; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b=mCC5II/K; arc=none smtp.client-ip=37.18.73.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=salutedevices.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=salutedevices.com header.i=@salutedevices.com header.b="mCC5II/K" Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 9A9FE100018; Mon, 12 Feb 2024 16:51:50 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 9A9FE100018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1707745910; bh=5LWLWzPentNfWzTfJIcR7e8QMpJRbsTGDQOdz9TvN8g=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=mCC5II/Kl/epWsZaCOs8Uuvh9jJqDvxMuxUnZdc3SKquPNIfpNEVgxG9XSFNiVyd7 f4q4Vl8DO5TtX50e9rblX1fEEortNPy64zG7ZMyQj18NVL25lnpfEXq8LvFC9TwFfx jSWDatidixJmsOGXhJjZJbqyz/FMM7vwIbJLavjKeko3ANi/4wI0A6A7NIidFTn+oI eBL72MU2R55DcA2ujwSk0vjM3GVGfVuK/hDv6J55HzGOl43PANDkE9lx8jp65LVDyd kNAnJsNWgHNdkotCIh4KoEioXnT5WZOvW7kSSK4YCFD54IOW/ryHOvET3HVR5wU+Wr EW91U5TaqNJHQ== Received: from smtp.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Mon, 12 Feb 2024 16:51:50 +0300 (MSK) Received: from user-A520M-DS3H.sberdevices.ru (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 12 Feb 2024 16:51:50 +0300 From: Alexey Romanov To: , , , , , , , , , , CC: , , , , , , Alexey Romanov Subject: [PATCH v4 20/20] arch: arm64: dts: meson: axg: add crypto node Date: Mon, 12 Feb 2024 16:51:08 +0300 Message-ID: <20240212135108.549755-21-avromanov@salutedevices.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240212135108.549755-1-avromanov@salutedevices.com> References: <20240212135108.549755-1-avromanov@salutedevices.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 183368 [Feb 12 2024] X-KSMG-AntiSpam-Version: 6.1.0.3 X-KSMG-AntiSpam-Envelope-From: avromanov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;smtp.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/02/12 07:49:00 #23556813 X-KSMG-AntiVirus-Status: Clean, skipped Content-Type: text/plain; charset="utf-8" This patch adds a crypto node declaration. With the Amlogic crypto driver we can use HW implementation of SHA1/224/256 and AES algo. Signed-off-by: Alexey Romanov Reviewed-by: Neil Armstrong --- arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/d= ts/amlogic/meson-axg.dtsi index 6d12b760b90f..b19be72abdd6 100644 --- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi @@ -294,6 +294,12 @@ ethmac: ethernet@ff3f0000 { status =3D "disabled"; }; =20 + crypto: crypto@ff63e000 { + compatible =3D "amlogic,axg-crypto"; + reg =3D <0x0 0xff63e000 0x0 0x48>; + interrupts =3D ; + }; + pcie_phy: phy@ff644000 { compatible =3D "amlogic,axg-pcie-phy"; reg =3D <0x0 0xff644000 0x0 0x1c>; --=20 2.34.1