From nobody Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 030E32C3265; Tue, 24 Jun 2025 13:53:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773187; cv=none; b=tyDY63Ev1d4qPoZxf1VZ5j0ybwcQRX7TUUXoq2zyE168wtkFUWtYMb9bZQtlNosoacDeBqbu3Otz7S3NaKIVb1LBQ/PTvFpM6DrbZNh9BqPEtAKq42Owc1/eA7Sr/75rWzQJ3xqSjsv5A804wv9za+tkT7A4RvwvB6DRRwh5ueA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773187; c=relaxed/simple; bh=jGJI0bD+O7z6RA7QZQsykkUaoVK4LN1YZQvzQv+NE9U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IjNSFmMIw/r267MSqzO3WwLXGuqXKjKEmuGVSUDoza/oBUwwjL6HuC8HxZbbxRUkdiUeohgRk4WcU8TebNbngvVNBC5DWp2FUI81lTc0696qNju35OFgCGyRmcTACfU3qoWcJhtFHcx7yEvSpkWs6vTX1QeoiUglT9NkehB7ii4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=awaUhgay; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="awaUhgay" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-553bcf41440so463560e87.3; Tue, 24 Jun 2025 06:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773184; x=1751377984; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+SOYtw5N8V1W/8HjyEXXVA2dBh8//SmboKULJ8eZ2dw=; b=awaUhgayVooKi5Cqyh5alKPB8VBNfeZqYeiGN9M7m9gdaamgs3yPJR1ver9TTSmD2r o1SWsq7+mwyfCI5mO3ldktMRtNf5/opd6XjvCbsTUyeckadCb0HG0jMxpFzInQjvk2Qa SKz4n7lN7+vyf+IZxXwHv5qW/L4EgHIf0X2cC5ceqhDVeX6g5v+f0/DhPEN9akIieuJ3 c8cr8pSMIPWFfWgEBJT/DqzdrsNWhkmfhkJ1ziqCoqBL51pREtvrCs1Y9GureN2EW2Fx FZvspOnCNWN0xgtzw0mwoW5/8ELowYrmesvc0Y4v/96TaLfLrZdNKuT4NeR56gU00Zs7 tgsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773184; x=1751377984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+SOYtw5N8V1W/8HjyEXXVA2dBh8//SmboKULJ8eZ2dw=; b=AMv62BTJp29YF59bdmpKiwv/hKQ4XAWhVnK4aO0R/dlfugyPeG4PHkOfUTyWKPvYnZ HiDh+kEj1idwpTSe4DsHuixCJpq8mORk5ZDWdAXA0+GBYGCyWiQ6aL8d6GUg2lsKbmUR 7TVvHIrhazHs3cIBiWYD2li9uQxxHPNUXg4x9uCRSseWWkKiUhestjWbFZg1yeDNmVZ1 fyp6FC92Ex4fHwq01k0/7mjuhhGKptaaU1sBcfmOhYhbOLI1DNR9uMhF2GhDPHxx5LPn 5udPpRVroVrOhdih2lC1+L9H3CGop7P9Er9AdV82CwcppTuZWEwzdrA8B7NS5GTCV1GR AYmg== X-Forwarded-Encrypted: i=1; AJvYcCX284CsNACu0jYCxaUrecFuL0VXw/twCElIgAKSanPqp0pJ2cym/1/XTGUeVMDf3TaiXeA7rlUrEe4W@vger.kernel.org, AJvYcCXw6TpL1tFZ9vPpouEDOxNqsBhUJ18FveWJ/LlQVCLb9FRxHTgovnR/ke7tv1ZRDGEjLXA9UAFGiFLhGzeJ@vger.kernel.org X-Gm-Message-State: AOJu0YwphqxaKDzTlSN9sYPkTB+W91MTlzBs5jOuGmOVIej/wZPE/7Lk sm5LZMaG18xkOHmCHA3kUnaHCmgX/zFiPfMJHqrfGLy2udZ9SzGyYT9i X-Gm-Gg: ASbGncvcRgHPZ8hBf/2AIDPEpl98PMAp+yUKW83JZmfOnRQEUr7F8q20GMZNQ66W9w7 PXZEvy6bfgJ293ntM2N9GdAvmmhYkrzUPSUmF/SX7CE/PsAQWvFhpLaKiKK/VTdNcHGaIgabMKO LLImKSXCD1f5icRAK/gb+GUgZU3PiwBPk3Fv1GEAPX+20oQoZFt5Tw+4/uq/v5NTraxLMZFkJvH C+UAaGiIBQkMwKjdTx5UyqsLDgk/jy0KJcv1oHh7lHSuF9tmn8Z3TYCMS1veRmVFSPUn7LdyUMT TSvix//9qe+75dPIpthBiZ3zKHjJq9UsdF4OIalFx8Tgm99xDQB+1Km6Ldpl68XvU+rLVP2mekL HgXdc8AQjVXNx1xGuBR9O5133RcJfYuA3DYFxZGVbwHp+Lxfi4q3KqWgX/flY4Jp9Giaxya5g X-Google-Smtp-Source: AGHT+IE12D8YIPSuzd8ZFmyOV+t4aSAtt702FpdsVE+qQZhOojJTiEYmpgrPUspu2EzIEcL1+cnh3w== X-Received: by 2002:ac2:5f61:0:b0:554:f74b:78c1 with SMTP id 2adb3069b0e04-554f74b7c00mr680882e87.43.1750773183947; Tue, 24 Jun 2025 06:53:03 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.52.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:03 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 01/22] crypto: amlogic - Don't hardcode IRQ count Date: Tue, 24 Jun 2025 16:51:53 +0300 Message-Id: <20250624135214.1355051-2-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 1c18a5b8470e..dc35d7304eb0 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) @@ -250,19 +268,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"); @@ -292,7 +297,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; } @@ -307,7 +312,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 d68094ffb70a..9f1ef87333ae 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 Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D5402C3268; Tue, 24 Jun 2025 13:53:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773189; cv=none; b=RBTKfTQEmT8OvGp8gruzTBbLoeInZM+ffn81UuyEfF18MIefoBY9lPVp+rVKE/LoLhXl5/87V2HHVPlz5Rc+DbVsK/0LWXc8E33n4VYnS1krMzfND6J8kVTQkcqrk9pPh+AYqRhUnHdKtjucLD3gq7EIsBEe9Fg9UvmaeaJRVZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773189; c=relaxed/simple; bh=u4MgYo4pR/T6KjzWlS699XIQygygNOdTo6AXfPXd/oA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=q1f74TXd9RuPsBsChi4TYowDlslScTjmvyBnczkll9MEqEv6NRG9xNaRL3hrIViCaz/SD6fsnN5w0ke0xlYSc7nUs7678hLmmRAg9ncVwskya+1GRNdMC/rTfGnOLp7CHMMsZLmuzLIKt75NXYem9y7JmsPUwPtkLQ4cXCC7BPk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=i08JcJ01; arc=none smtp.client-ip=209.85.167.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="i08JcJ01" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-553dceb342fso414031e87.0; Tue, 24 Jun 2025 06:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773186; x=1751377986; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UzoQtJ2+Gby/Cw80qh1dP5yN37TDjaDpOb4iIQblBnY=; b=i08JcJ01ZVMmsyA0OMov3iRKgCg3aDK/urXJSXhsUjihJdbjL/+uo6b3KieaL8B4hk rcgBLFKf/5KjxEo45IC+CStQqQRdC/lnz8GfBazDdcCTGkUMmdSEOX25tN+kc6fnCShZ V7+MXAHI37aIcmnndzhw48qbwZR2Prld1Jlf3NwpMIz9y+Hm7uplL3dBvlPlDXEiIQuR C+HF6srh85iJzcZg5fIGZ312vd79BQsghjMnBlsdKBPp18YhB9Rj8UA3WNWoDi7W5Qra Gk/F3T7P2dkH7D3+qDAPM76x2rws2LARD2Juzrh5kux9i/lg7zRwQzDa4nlK8t+cRN91 55YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773186; x=1751377986; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UzoQtJ2+Gby/Cw80qh1dP5yN37TDjaDpOb4iIQblBnY=; b=Q494SN3vj3DEuLHqlN7u4RkAKaIAlE5znx/xiwTYQXQ1LpY7S8D9x/HDl9DxSkof5v Jr0z4OvIuQ/Tc34pUcZ0P/vQrNzFvzPuqHP3rWOgF5Hqb7GkZbniYhtBCAjVHrkUnAXU mMJtYOqvQlfcCh/RWPu4uF4SM8Yojkz9dF+KkAV6+71+iDZsFuW6Q9+LZhwrbltjMFE4 axRAtvrGM2biQYCxomoOBGOYb4CpPjZ7tgw3P6oxjgl7DGno8FehfKJnC3/5S696aeC9 2qHSxYDnTLZ0BbeiZKYv6QZANLoQQoTt4UMG5uj1vxMYFDSjVFx5tGdfsnZfsL/VftBE TBDg== X-Forwarded-Encrypted: i=1; AJvYcCUJy/0Wg5hPZ63uRTiccrxnX76135G0V/3RXvX0ufw/nPxJU7wXeUUC5pPf2L2+nbuaI/rAf8E/inz/@vger.kernel.org, AJvYcCUMIiVzFNeLB2x42A0quCQbqyqeBfKrlXoG9fHvhfvv7Rch81zfT6+1bHXdPGZJgcBbQ9qVnhrbGVseaxPz@vger.kernel.org X-Gm-Message-State: AOJu0Yxl7JDNDuRJWyYxhX0rm2cKAZY+xIEHIvUDcAq0xYqOKWS7g3fg CLsn/yMd09eqV5bOgWh7gKia4sdU7qcdwuEbOPeJtvvKfJ2ciYj+ie4n X-Gm-Gg: ASbGncs6rbgGU6qC03D8fi32H6x1zgj6QAT1N1/8mZlYIpmDglc63vjb/8z9N/PQeic bA6XkIj8y7w3cIdX0ENgDtTMpv+CJPDD7x/ZB42iWRVmFFkXdKUNnrky1BsYB7ThoEs/NDBjxc2 fPd2JYrm0UiH9ocqgv9v0hVHLi4X4Un9IhvE7Kpb2c3v5SJB8j6xTkVWE8+BWsQSSkpRF7xJ4xw cmXpNty12UkKeWc1uZsg+9IkUYkL+NnjTyuCK0hgfYPcGaYMpBMF0gx4Ilq4885UfVipr6ac5iG KccEPkbxxeWyNmB2+ZSMFWxGymEbWl5+vBv0Rc6wO9fy5XT778mmwttDKpmVJ/jEQBaS1Zggvjq hx/THjOBB2jZLji/fgxt+lipdc/g8V74fAOA5PkbOZ3IhBja2nIGM8v57QRpKNA== X-Google-Smtp-Source: AGHT+IFMNI8Veoel+fiiWLgZH3VVejMWZ1Zn0rb/ht0ioBubOtSiNdwqsWxi4IL2PzRtmQkU0o+yIQ== X-Received: by 2002:a05:6512:ac4:b0:553:ae47:6856 with SMTP id 2adb3069b0e04-553e3b9a603mr5057869e87.10.1750773186027; Tue, 24 Jun 2025 06:53:06 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:05 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 02/22] crypto: amlogic - Add platform data Date: Tue, 24 Jun 2025 16:51:54 +0300 Message-Id: <20250624135214.1355051-3-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 22 +++++++++++++++++---- drivers/crypto/amlogic/amlogic-gxl.h | 11 +++++++++++ 3 files changed, 30 insertions(+), 5 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 dc35d7304eb0..d7e455f73c04 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; @@ -254,6 +256,10 @@ static int meson_crypto_probe(struct platform_device *= pdev) if (!mc) return -ENOMEM; =20 + mc->pdata =3D of_device_get_match_data(&pdev->dev); + if (!mc->pdata) + return -EINVAL; + mc->dev =3D &pdev->dev; platform_set_drvdata(pdev, mc); =20 @@ -317,9 +323,17 @@ static void meson_crypto_remove(struct platform_device= *pdev) clk_disable_unprepare(mc->busclk); } =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", }, - {} + { + .compatible =3D "amlogic,gxl-crypto", + .data =3D &meson_gxl_pdata, + }, + {}, }; MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); =20 diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 9f1ef87333ae..e0bc5c39bf2c 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 Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A45632D1319; Tue, 24 Jun 2025 13:53:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773191; cv=none; b=kOBlzePLu3xVenDrvhKMJNpN7C2bWUVshKLrQ/KyhW/U5tvteK8qnc3+N+XBYP1ylfHSH8XtP/emohaSBzwxktUudSlWt5s27efTUj6rc3xhmWkHYx3hNbVXxzPQPG/bCchx6VxHLLT0XQHg7MKpvRO7ysGCKi0LpV4P+hdZf3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773191; c=relaxed/simple; bh=uNX7wkKnDVwTfeF+Q3nPk1uUrBA9eGeCjEZk/snRgyQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ABIvXaTegLxcWu7SKlQKrp5Ahzynls0ZixRD2fSlMaxFv1j+7WXsJu3V+6vOEWJ3MREd+GaelNXvKNUZr7soBMNo48NIE9p6GFu5WqRIsIhtoWCgqawf/IftqAat80j17gh+lHuh1Y7AezbF4KRf3i8RHq07chFiBjqdFHCrgZ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cSatnkW6; arc=none smtp.client-ip=209.85.167.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cSatnkW6" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-553dceb342fso414057e87.0; Tue, 24 Jun 2025 06:53:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773188; x=1751377988; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wN4giaX3vmqVUZtbZtIjALAYwpEYzbdeOb30EYe4QKU=; b=cSatnkW6js1s0Arc1MbkqwChOY4e0P7abJUAyNT1wlRYUvx9k2/2VFHjp/wQ52RgW0 wimDno+8uizWss7c+tRhuRhWo107KqkRS5dORQWEF97Z0kgnEvcsYeCIGqFibs6BEiS7 p7pjKo0JZxak6PfIHFf88k4MHeaXewKWz0nEHYm5rTD8+Ww8d3EO158ODb/N7xtrOVIC PUyg3ofEuVL3eiF/eXybgnMDTdaS0xezh4aeCoteM02KKoIr+AzvoyMrw+ixBNbYGD1a Q9dMLJzZW2D+oJgu0ro+ka0aPASuIgDVV+oZW9gIIgXXg+yvuryg/vp84Baq2UKu4yQK xR+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773188; x=1751377988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wN4giaX3vmqVUZtbZtIjALAYwpEYzbdeOb30EYe4QKU=; b=A0IBh8hAzv7uUEkAkJbbE4pRqd29Zo1yv8Av8axdnldkvOqNi0tQIqqtKcTUGwFVlL q4oJgmO9iP5ULjxgc/atYJiudKp+splAFKg9zq+9gJi1RI1+fhA4NNOPsyHxKAWIw0dz EfKj853ubDYzSVspz3BusAo9sx1yf0a4LOrKlP/JVIvFj13tQIu3qsAqDOYX796Q0Ubj 5FFRfzfnov04KEVNb30RHsJrPGcgxEYf8G79M6ftuQozQxtCIVmDqNpda7wzNnW+FDf8 zQmXgP2boTHyTsFw/ldha1HZzl56f4VErfvVyM4O3buCb/aIwic3yyBxLxvi1VMC0G8+ 4CVQ== X-Forwarded-Encrypted: i=1; AJvYcCUdf4Qvuo5eKgAhPHWWBWM3VNPjEhXaHA3Z3z+bkuMzZ76AaQfOn+qjL1ISsVB6YZkymSTtkmTxqP8U@vger.kernel.org, AJvYcCXpfGq+/PZLSjpWsgsWvIzGZ+tSdK4trB/AeV1cUWTBzwpyV+7HaSgVM5LniUsCKk3GH/iG1tQ71p1iVkRX@vger.kernel.org X-Gm-Message-State: AOJu0YxEjFwFvg9uQeFcGpNaAfcIbLv13jEOkYAKG267eSxn+CO6b+rU /NM2EfSOTxzFGbk7jphA6lUSqdjPnDigAv2q0buoj9ePwsH+LZILtOOo X-Gm-Gg: ASbGnctW4Pwe4U+/aJYbdV9w5w0UGeBPw+IryRRJKQ5ztwr8cdksNofZop7J8s8/nhI g4gUdLXd+FXbVmEXzVJA0r6XpekDlxd9RGUSZELrzJBjbMs/jccFbSh/HIxjnZwPQjIuOpZV8kF gurDUVkKR/T5M+oocEASrWJxqK8YnG1kzXCmkXW+4zt8d774EW3KWuu6bdMo6oD7ERnxLbqQw7m L0PnmWSwK70FNbeel5NUdKB7ErmcYgQJmp4WNima+Lk42USwYMBKfJpIaO3yxIAxqzEatqhl9io HMgb1qn5Fxi6Gl5AQOpwtwVcfVWg8qPSjeyZBQy+HYEI8J2SPIjIK1V0pJXeY7pAxjQMKGxVvkG IzEJAfNSplNhbgKBLnTCjeJ0fFzuPWh5CT7QaGgfYmxik1TSieuYlxBIh8srtPg== X-Google-Smtp-Source: AGHT+IGvmJuGS3IZ/uyOBYmFaf2eCOHsx/MrEv4aHYhplNKbOds3Lba3ShwHOK3DV9og2hdief5A/w== X-Received: by 2002:a05:6512:a89:b0:553:35ad:2f45 with SMTP id 2adb3069b0e04-553e3cfec05mr5091992e87.50.1750773187422; Tue, 24 Jun 2025 06:53:07 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:06 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 03/22] crypto: amlogic - Remove clock input Date: Tue, 24 Jun 2025 16:51:55 +0300 Message-Id: <20250624135214.1355051-4-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" Amlogic crypto IP, which uses DMA crypto engine, doesn't take a clock input. Fixes: 48fe583fe541 ("crypto: amlogic - Add crypto accelerator for amlogic = GXL") Signed-off-by: Alexey Romanov Tested-by: Anand Moon --- drivers/crypto/amlogic/amlogic-gxl-core.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index d7e455f73c04..90b539401b71 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -9,7 +9,6 @@ =20 #include #include -#include #include #include #include @@ -267,19 +266,6 @@ static int meson_crypto_probe(struct platform_device *= pdev) if (IS_ERR(mc->base)) return PTR_ERR(mc->base); =20 - 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; - } - - err =3D clk_prepare_enable(mc->busclk); - if (err !=3D 0) { - dev_err(&pdev->dev, "Cannot prepare_enable busclk\n"); - return err; - } - err =3D meson_allocate_chanlist(mc); if (err) goto error_flow; @@ -304,7 +290,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 @@ -319,8 +304,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 const struct meson_pdata meson_gxl_pdata =3D { --=20 2.34.1 From nobody Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2719B2D2382; Tue, 24 Jun 2025 13:53:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773193; cv=none; b=X6jSfcLcXwCE9u7Q2Sgl2GyDpWMVLoY3FYfCYfu1NVFFwglHiw/aBgYCG9gD4yDOADHMeHTgW8am18DQwuY98XyA5hIZmMyDfYZgR60Tr1kPbftQnkojJm2qADzb4T4k8UpeY9Nf9erH3OcyQERGEFokvQKOP6XNcCuXEJt3d/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773193; c=relaxed/simple; bh=z9EPqHJSBCA6RvprrExQuE9AaXikN2VLQlv6VHq0eOY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hkgRyQvdd/oK56KdpxkexLu+nncg2RF8puVePViUCWsJAGpa7KuwBZXxRm2bUmjtxHqTcjvE9/9Z0Neibfci3VZd/IoC54P2/0/7OWQ0DJPX1pWTkGYQHSEYZerKVKcyIcqHKPC4Uz6jDvFANB/PjC8+X0OzkJxG/TvUysNH5Ks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GNeWmTPs; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GNeWmTPs" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-553d771435fso410451e87.3; Tue, 24 Jun 2025 06:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773189; x=1751377989; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LOH1XofXvP/3fMrR28Yvu3oSZ/7CVBEt7HLdvRWECt0=; b=GNeWmTPs7QNwOM6gYNE/oNO62jGrb7TVK892PAxnPhF/Kwk0pQut6qFo1LYOD4LLNB YPa6zVi8H28EPtAtHA568k5wl7nsW3JjbF9f5A2/ZobM1zpJJB+BrspzQDWTzarpcyJJ MEZmOMybJ0E0tv2D/0nEhZVm+qbowYd5UBQUkfjs6XZxbohgWWvwQBu5Wa0m2y25uCds L7N+DdAkrAWJAB5GzXsYKfTIeX92vYog1E6J6SOdPo1ZmjET7T/l2lrIOYFuXsatL41o By13u6PDdmYZONf6kPEBHnLRTzfjG0HiiCV3eYvJ0hJvHaMx3mVJANdg3d53bnVC9neq +YrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773189; x=1751377989; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LOH1XofXvP/3fMrR28Yvu3oSZ/7CVBEt7HLdvRWECt0=; b=nln0v2ODNJBuKIGNuUjElAEsnKvjCd+8i+z/0BZtpQ23AzkcphE9sg1ejJsmvlfbxV 8JJ2xqcsNodRiyik7U2ATdEVwbHpw9NBkxlhs0q6Hq/p6eZaGVyGiEbggfhVIq6ACoPm YT4W10MhTtUqhj5uvrpddi5g/r9BTmkcP5gA1hcL4aMqa2GhxXdnnV5fHQNgLx+eaStX +wnuPQOLnD5UUXA8uJcRp3Dy7xh47YBfBL0AQdv4E/oBKy3Q941W6YpAw4o83P/a4brb 40NgwyYhGHCI7TVtB3RxwtcdyIuUZyhc3YiBlZn5R5iOFs9RrrZOXUkrPgOf3u9eRtPq ZngA== X-Forwarded-Encrypted: i=1; AJvYcCU2b4onf2DkLFcc+TW8iJmQQwQLm9aWyhhEICDX7tMlP+rKWyuWSXf68zoAhJ5nLA/EgH4b95nPXCiO@vger.kernel.org, AJvYcCWYk3FpWHMJIUhumVwoAQXoz9mG1xaSaTUrtoBkG6E1ZkwJvHU/cunRt7IDnWK3vtN24dd6ydfdtJfujrqZ@vger.kernel.org X-Gm-Message-State: AOJu0Yxy3JKiAJkX4kgRh0fHnjrA/Qyqng/FWAwN31Q0B0RDxZWZ0ADz wjm7ohCqf1FwW/uYuRIa8C3UV0e4nlhp++3exVnjGVV7Y0f2vqKM279b X-Gm-Gg: ASbGncsXUG6Z6jYm+NeXjZ8qgB8KN+V2srBoc0ThPhpeDjLK5dSBsDEz5OokX5D+N/1 1+QuceLoOjb8Fr3PIIrNgLqi+O40uQ0IkZFpBWeG4dfzkjjxb6+uceX7tPJtcoVa/3+5FPXn+An EKLFQka70pLa2hLYrtJd0FicsvCbc51fg8I27n2VUBIa2amxy/AfRnkjQX5h/vomk1LvBqNZOHY wg6Oppx3CHEPBnMRwsN/MZfDP82+hRFa1UMCCd0H5xSEF1OVLncR31cIbnNye7o0JDfAu1HoZpx +nYNxzAdaNKa2pPMj16OOZ65X44anio7ojPexOCJACq1/x76lBev7GLPVEeZYIXDsttmM7kclra Ef2efYcJ1PBKcT7VDvCuII2GJU9AwW9+2k0q61AhebTRZ1dDbTZ4XHwoxOk2JnA== X-Google-Smtp-Source: AGHT+IHTyCe/FN5IR8181aO2FrwcATp3fU0/WyX0ea0RPA+5nhuEUmv38QxaI8BQxCM5Yp3mS3ZujQ== X-Received: by 2002:a05:6512:1104:b0:553:aa32:4106 with SMTP id 2adb3069b0e04-553e3bdb2f0mr4751311e87.23.1750773189026; Tue, 24 Jun 2025 06:53:09 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:08 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 04/22] crypto: amlogic - Add MMIO helpers Date: Tue, 24 Jun 2025 16:51:56 +0300 Message-Id: <20250624135214.1355051-5-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 90b539401b71..e617dddf5e2b 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -22,18 +22,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 e0bc5c39bf2c..0ccf6542995f 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -161,6 +161,8 @@ struct meson_alg_template { #endif }; =20 +void meson_dma_start(struct meson_dev *mc, int flow); + int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, unsigned int keylen); int meson_cipher_init(struct crypto_tfm *tfm); --=20 2.34.1 From nobody Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47BFC2D29AC; Tue, 24 Jun 2025 13:53:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773194; cv=none; b=DKPVD9CvWgb4GaP4szxKNwnoGIUiVigQRyfrm3oWZsrYccyIlvg1R4pDVrs027PoPAegq7CqA0klyY6b/wyyKbixnxrAAp7ICoNh2ezPf2aCtotMlaj63EbHbQOOQVjkZRNvV6OI26iasPxtrFnGIlNqm4IgbyDkGPMxSS4sMuI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773194; c=relaxed/simple; bh=wAiu7Ep5WNnOFsxOMhXPGOgkSRT6mcbYnmGWGIM6TOY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Sdue2Nor2V9J9NiK0SV791cInikss9pG8hIEyS0AgV4QafpzB3kM4JzEhzRmIvv3+olA7va+nbXtrrygcifPjyPH3vOmHJp+jEhGEtRg86MpNVLKLWSnWjwdcX7/i9EjHtF0orgWupP1r9XZTNuvotno0OafGoxsVF5pgEvgyl8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GmhVqbog; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GmhVqbog" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-54b09cb06b0so5697446e87.1; Tue, 24 Jun 2025 06:53:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773190; x=1751377990; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vdsAREnVdCt9SeWtKGm+rHn88INXvbkZnfp0wLc869s=; b=GmhVqbogbIcNkvNqIS0m9SsclqQXoRvoZS+apvAU4PYsBIGzBNzi56YwuMV7JOME2B SRTYDqgqhjmG5RHW0CCOtbWagAHyude68lsIodLZH/gbVRCGkIidaXxNv2pEaAjmksG9 XHTSt71nvjtz00ZExnIj52ofNp/T5aQKX4XjE8foj27P2GEHF+bd6VcXamgoUhTxXAOP BbErx5+fjZXXOeK9lqrvVbQ8jRDt+Lz0FJ4xxiWdeerNEfml4gUr2KxKd85ieyIA7tx0 Cp/VNQxJcX/eiOiDhSEcGSKDxIooJIkl88Mt+XofUsZUekFJO5ItZ9v6KqcgneHanJRL Chcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773190; x=1751377990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vdsAREnVdCt9SeWtKGm+rHn88INXvbkZnfp0wLc869s=; b=R01omKLvGm5Ueo4SyW9WfE1OZ6txRmzYVMPBD7ixT+WEpcu8v1XUe9SNYprMkhA/w2 hJwuteaLtT5L9kGUvMd2BhP6uJZ7Ds6yDeMNL6aHDlo90ri8H8FZNZBWUiwlLqKf/00g dU35Ps0PV98Veoo7BNP+PVjJR2bLlAI/q3RJvdFXSoLkaBOwFiegRfKOhXXhV2/MAv5a kXjJYFak4f4n4FJui639AMM0n6inL4J8w2KAy1d3ULdo3a+8fyA9Qn1SNvIV9PQNsqNW bIas1wBvYTzagA9h/D90roUWw3+qyBbz4H3XjXtrBp8P6/6EmG0AO24NMVIaMfLp59B/ sm7A== X-Forwarded-Encrypted: i=1; AJvYcCVkJIYFFPGa6ZtsLSHX4Z6Ugx/ax6X3xfYDIatVluoncRnceF7jlFzjxO14HEKnAj0/7IZp2E0GZgxcZ0Au@vger.kernel.org, AJvYcCWFGxJTOBh0nPJNHZgsA7dO8PNOFnvzMAU6FVpEWfkzfe/a55KjLSLjaII6naJ2OpF6WeXdDMNM4QxW@vger.kernel.org X-Gm-Message-State: AOJu0YxefsMSrlE6K4pMx7mXdxFrM9t4OKizh56nFKhv/Ewft3Xe+NAD 3RuCvKPGHPAHx9NPo3Q0sKnl7TkJH/3X0eQkRgLkqANjgnCvCiw4irZC X-Gm-Gg: ASbGncu9mwxK62CJwxkpUmjtQTxGYOtGkgoMrZbwZk/ZIoLWTvy897LeITRIx29B3h/ vtGRLqa7ci3zyRa/2O6kxh0fEBnK7oD+HauY2iRA8jxYxeLiLr9c2M6saUZdqt4Wd9A8xQb9Iyi BadHFpbTv3XQZJk71bUrjklHVc3FEjxxLTYb5c3U0H/co7BHo7QQ5uJtXtA5izJP+cw+HJ8pL4M VGGKj9xM67/oweyy+/fm5Em9TwhEeU0C2VRsmtzn+WAz11fEiATfo6OdorMul7hy73nqq1x2FCs yGsAyNyfMUz5cpwHYbTNGiHifEqC9P3keG3mchTrJTYD3BTltBjbYDKzkqQzWLVSsfjqgKsT0p9 4wnMSlaRLhut4NERLhg3G/u3m6JNUnDq5PFPUeGY02GVL4rQA3+0y2zJmxadbwKGQ+xzOxqbU X-Google-Smtp-Source: AGHT+IHRQ+es1ViPpy1TP/xCK8UXRNsKN+lvj7mDfW+b0g8VSAHmPjV3EZwtYNIFBaB5ZTamT7yIuw== X-Received: by 2002:a05:6512:3055:b0:553:6526:82cd with SMTP id 2adb3069b0e04-553e3ba82ccmr4130662e87.13.1750773190332; Tue, 24 Jun 2025 06:53:10 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:09 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 05/22] crypto: amlogic - Move get_engine_number() Date: Tue, 24 Jun 2025 16:51:57 +0300 Message-Id: <20250624135214.1355051-6-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 e617dddf5e2b..44e71e917e5e 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -22,6 +22,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 0ccf6542995f..cb70277c3a31 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -161,6 +161,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_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, --=20 2.34.1 From nobody Wed Oct 8 20:42:05 2025 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 234502D4B47; Tue, 24 Jun 2025 13:53:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773196; cv=none; b=gO0Qbi2NOmToMY+C4IJGEJwR621OzF3iuzWcK+oYvJwUFIkKbElRL/e53ylvtH0hO3A9KQKznF5IwKJXfn2rsZZ1QmyzASj3b1AQ7lDXM4UBeefEM6uHUCFV7cx/emfSmQusvQrypz5LvyLADZNHDVMynKe5CNEx3eGmVZ/HX6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773196; c=relaxed/simple; bh=xusTcC8LPaIRB6OKmJ0o5yoOL3gFmuABAHVhkhe0RfY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZOMpOWHPSDKv316+ztv9s1X80fAF91s/vQJ00H2qGlrP6J4/+RnJntIlQ3HVkniTdZopnwLyS9DrmW6kM3G12dDllEnBSTvHoBQizMEd1WVR5Tf0n3NhbX2EFQpUzRvVTxJgi00N7hMGevPMG7KUAzOTQj16F5GmydmzsxGwUyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DoLsG6eV; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DoLsG6eV" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-32ade3723adso64105661fa.0; Tue, 24 Jun 2025 06:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773192; x=1751377992; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o6VQVxWPrKSBA2sbYaQf9GploMxfJIkFBHTbYFWvLtg=; b=DoLsG6eV9eSR06jEZBQiqoK5nW9wSP84HKbRN9ZU6UiQ9UaYVpdowxpCZ7ZubSU7AF FCe0CMkaHnCGGQNRfqWyIE4JuGpqaqgMwE1sWgVK8KUYCUdDAe5xUMaoqZT7vYxti/m/ p/cIPTZIZvcwrMbvcYlaTpJkGvsqZStz3yGqWJMroabgYhBdQWh4xNnDfFAWC/wLuoO6 BcekLHvsZ4z8h+YtQFgZUIwi/eXSiWbZ+lEPIk7oI8Lp5c5lIbxsbcgFK63Bn4fNGuYz mAHlMq/EZAZOXPgzsBJwGeLBvmyDcR4Ev9dZAQ1jRu4XlAqugJPZCAI9B5tr5P3kJjwV v7ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773192; x=1751377992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o6VQVxWPrKSBA2sbYaQf9GploMxfJIkFBHTbYFWvLtg=; b=oPuOZKmPgWx2XvX39EWJw7cqJ4hjxdcVHT3dPic7DklFmoA35O4LLbpXoHSs+3y/E2 tIQU4iEepYpZ6cSBgYmNUyZ7i/qBJoL5rXrILjkSNCjhfKjbPCJninF04tdeZyLmJ9Qc FNMoSEEbgh7rjVcb4Pgj/bvuwg/A6fYOytDkDhxKkMQzFtiszAWJXtfb0LekZmzieLry WaAff+Y97VZ2mE21DaTvwxA7f0PH0eOVVWP8cxnZbjxiPxpY9WEFmy1WD9c6z+TzY3bx Nh6Pta8qEKKwTTVZULbnvap6W191Mi2AZxLWkPiNOTWo4HYVYif7R9wTGlmsHOJ9HkNC 5h1g== X-Forwarded-Encrypted: i=1; AJvYcCU3DlJ3ptGxnbzF+wOYVIKWowZseI0EJEEfyc3TUiVqdUjnqPhY2/8iTx/O8gqvtdaf3QQg5dyZJmyqGbqW@vger.kernel.org, AJvYcCVJCCEfuU7rTl4PrIcU2q6O9ZudulKOw1hizq+XDEfe3D5gq0n4KmhA3vj+Z47vXJCyZwepsC1kEVWK@vger.kernel.org X-Gm-Message-State: AOJu0Yy/+oQo3ymKDkW8ch4stARyRjroD0TEAF976q0nrHB9dV8989Tj M9+jehs52433sU/Wbynn113nZ3AimE0mCE0/xciVJb0E8MmA3pP+W2q6 X-Gm-Gg: ASbGncvmp/NL5iFk8E44mU9pOTRlhJWB8EnOSZ7Hj7WPGlcdmYNibMdtHusKK0sOJAI bGyksriz+RU/4aO3jP7PFJf2rE/FnlSRzV4Pl2lZMvNvoGzhD2NZLUtVECP2bvOp/FcxlwwIok5 LRNww2lfhzoMa2VifDRomPqtXyT2hWtv10CFBQCLGPussSsI7CiCygwzxYOZN74ZIjsOvlaQ7IC 5Xxa10v3EUEW+xLjTM7TClaGXT+GjwYryAfBAJLrDQsaGYa5McWAi7MKZ+GV2nKK8ykel9mdZAB uAHr2LpE4SThH6D6L7yiZlWBYckgIyFKRnMT6WeJXT73wVhXz/DcxBn/U+16kRSdAHU++cbk4Zi 7Nz+eQ+g5ogRX0F/FH2RSR0dxdbRLuFXLSDyNAWIpDhu5a4IlgkobQDlLqlt56E3HqGpgooX4 X-Google-Smtp-Source: AGHT+IFDQOmpu2KqgvgKBvVUGcsKCyKXlJo6cbGYkD0fUpbKYOofU/NED/QQobHL/74ty7DfuDhAhA== X-Received: by 2002:a05:651c:4102:b0:32b:3879:ce7f with SMTP id 38308e7fff4ca-32b98c930f3mr28231231fa.0.1750773191996; Tue, 24 Jun 2025 06:53:11 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:11 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 06/22] crypto: amlogic - Drop status field from meson_flow Date: Tue, 24 Jun 2025 16:51:58 +0300 Message-Id: <20250624135214.1355051-7-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 44e71e917e5e..9259ad0417d1 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -53,7 +53,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 cb70277c3a31..0dde7662ae37 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 Wed Oct 8 20:42:05 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BDFF32D4B59; Tue, 24 Jun 2025 13:53:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773197; cv=none; b=rD1Pm00KJSKuF/4mxq74K0kV6fvOnmfKAyHQSsD+d322dBdrvPEXJOBwKMBCRFO2D5tADifnUkc5gJDPDOffV6vMiFcLJTTT0KcFuIR9LDfPsfZnXTL94RRiw/llx9UwyBkMKXYC0X0TSV/TxB2GUx8oyjPbjp1CrZ6GS8l5D1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773197; c=relaxed/simple; bh=ckRpwDMjsuQ16JCO462+YPT83WjsgnuQ+s0s5BisuXM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RAas29buitOhK6q5UhAGorXfDJ50KfR2FhWApFzdCPMJ7apE07isjwr5KCNoDkRbm2tdkD9lkB6fxj59pDFrmN1F3eFsF9W7dw/FdUGPpnIdK5+Yft1JQl5GAoHdZWJzmojzUsnMl7+DnG2SzAM9l96mZlY20vqo32YzAIS0e5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=L8JryqOU; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L8JryqOU" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-553dceb345eso5969354e87.1; Tue, 24 Jun 2025 06:53:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773194; x=1751377994; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pkOwiBZHh5F6vKmK4j0gXkJ41uKyJ1upYAHO+AvK97k=; b=L8JryqOUw18U0Iq+QqnduG0trl1FIqjZtrdqhRWE268kZitaG1KwIgngogJ6XR4gvH fb2QcCVgA+t1riI/irvEhRYAa9JnRuawzjEUjcLVFLMZpwsQmTH5J5M7Oe2alX8dmWLe rAPaopOo4nhZaft3wPg9G/LX11lSQ3rvWzHTyoO9tetGElrAtg8v47pp3IicyDmRjeKq 1Cfic5DB18h4BSaTUwBJk7Hg8TEpdvRKKkQZUu1OP5RlpUVjmfsZJk9khBNdmaaXWoxm LtQJnFvk9BsstKl3HIqzyk1db1djSfJA7NFgVqE0/lljq0fuYeHMyDHL3PexLWLLlbv/ g06A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773194; x=1751377994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pkOwiBZHh5F6vKmK4j0gXkJ41uKyJ1upYAHO+AvK97k=; b=CrmLr8x5APOQu9E/JyA1CxMUBEYPzqj0RYC3YG9b2pSM/GTNG3RnPohEfolEeBpS+k Ly5fCzvO2CXIAKHnvhjp1UvnXL/00QQB5n8FFZDRKkjt+SDiespESylTUCUK7GFM9zSG kwjmAUOSsqy0xJoK76aIB43UaCZL2MJocOJdqStRmj1DEsa/+/CjKHvuRXcJkd0Tp/hZ hhxizz2MrZV8sRZXxLVPANEQS0YRyVViapnD25+UmX5+NGdnl31rHOOCZCaYerk9OzbF 2FJhh98ISL/pGKh54CDtodm/m+6pEZc5nHZxQXuNtsE3zW3l8d+6B6mevmsY6Yq8xZct Z4rg== X-Forwarded-Encrypted: i=1; AJvYcCXMfcuevAcbKtC1K3de3gMWdcbL5Wjwe+rzefE/3bilhB3e4sZ2NNXp6QtDwFS5X+fQ+geICHsFixojc4WM@vger.kernel.org, AJvYcCXrMdSGPQirmIh8B06NzNsgnQsxsKmGBao9qqO7S5FS6Yo5XJon7X0MrQC68NzSzPtTTs+Hngh3gVIL@vger.kernel.org X-Gm-Message-State: AOJu0YxUqaFJPaJ3NFBqhi0yqX36VRGirIJ0NeDdlcjhjsnj8pgjSqkV XXlk7UYvIwBV07YfQnIey8P1Nda7LX8GJy51cPyjpYtUtS0zY8A/9BQr X-Gm-Gg: ASbGncvjKiUiSR5t2GfkohWM4bv1Lb7pETTCQQDks0mD6hWONoW49HKVl+QEkpChxQF HGi7mtRsgX24yGQkmkACvLUxFQuQLl0Ykc+Oc6KN3QsZ2UA+osBxFjFAVqNxkBisIWTUBptfDrM IdOvFlquhMZXvvCTcKLK97LeGOGd1hhQXMqvi9pcrk+VPWk0BtQoc3XVlIbkhd1ylZw+MNPmopb Mq6aXa8EjxFcKyWKUqXGb1q+odrTz/+zPPtzndhc2PoevROVGNFtiAxY4btw6KG9GzA1k35y+GI 4ZMBysU4xnl/f+/KSbMfgNfjwugZ120PRWNssvBmlXCGJMApnzos55j8TZ05vPkolMVfhLm6oCW nhiW4NhT9lt+89RdwSC+/RLhupNiyZkeuHqMrBYlXvkZKErOWOgDQm76FZZp5qA== X-Google-Smtp-Source: AGHT+IHBJG67r/kDZ4Upx5Y0quX8DN3YKPXUSwlfg4vbbOomteWtJCOnlUp8dm4jLX5PITc0w0h/7w== X-Received: by 2002:a05:6512:110f:b0:553:26f6:bbfd with SMTP id 2adb3069b0e04-553e3b992dcmr4753531e87.8.1750773193648; Tue, 24 Jun 2025 06:53:13 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:13 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 07/22] crypto: amlogic - Move algs definition and cipher API to cipher.c Date: Tue, 24 Jun 2025 16:51:59 +0300 Message-Id: <20250624135214.1355051-8-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 9259ad0417d1..106d4ee2e5e9 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -64,66 +64,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; @@ -137,20 +77,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); @@ -227,19 +155,20 @@ 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++) { + algs[i].mc =3D mc; + 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; @@ -249,16 +178,17 @@ static int meson_register_algs(struct meson_dev *mc) 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; } } @@ -288,9 +218,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; @@ -304,8 +234,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; @@ -319,7 +247,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 0dde7662ae37..f0ccd28545aa 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -163,10 +163,12 @@ int meson_get_engine_number(struct meson_dev *mc); =20 void meson_dma_start(struct meson_dev *mc, int flow); =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 Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1980B2D5404; Tue, 24 Jun 2025 13:53:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773198; cv=none; b=mMxTaNTO5aOi1vSjVsAs+FKuBDrU/WPfBvFEY4edP+lmgt76hKRmrgfs8ES+VysTGxuZUm4qRkZKTxHnJDeZDCUZP6yY8hu9RXbhEfCQOuPRbPppz3B2f1Vo/bLtQDN+0Nk4CyZpfFNBrBGw6xx48mw2s22b3hbcXFA3DMMLzYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773198; c=relaxed/simple; bh=lkSC4Aoe2RYHdhHJgZ3RU4f+5rFQm8ra1dHdbYgsUWE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nqJvIorFZ7FMwoNn8pUQF6aePH+V0KxXj6kRI3DmIagXpkoaIgfFNfB2P7xmEOpYxHAMNhLlWOcJuTWhZNZuRHSZqPdp/Dqbr71s+qUvlTdQEFOWh0j8Xl18HKDwByFZi3ABeWA2VBs7QndU2ZcuFWNZzgPJ2zaBSdez3vFTag0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dQAPRTDj; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dQAPRTDj" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-553dceb342fso414208e87.0; Tue, 24 Jun 2025 06:53:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773195; x=1751377995; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RO69daI5W04OIOGnZa1tJIfwSEk4z8uvJzpownmww5k=; b=dQAPRTDjMauDdblwLMjycps5/7PrA6JGXT0zH7lx8ru1ZkIdNJ7XA5JkeMDOIHnWJn p8BwcKf6D0NKPNFd+eiHGVRTo/9C0j7gV9pwTiv8yGSP9PGowlSBJPGnnaeGc5ztSfrg UkcojRko85No4LS6z6Bnuw2TFjOFo2zZ3rxSIAkIYlEc1gikRo7Bp3bxx4noT2b2lFj8 13OblRnvDBHnTQypUNxTmWbnzjhUCWgmufSyiCOGJUA0MQjeTe/bHpq9Bkffvz5AESaB vHR56xNYulpQetOxlMnK3ecGWnR6L1fd1QxK9xcApSCjPNVxPmIKZHDCCsy40oD1lPoI DHwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773195; x=1751377995; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RO69daI5W04OIOGnZa1tJIfwSEk4z8uvJzpownmww5k=; b=vUUoe3Xc6irNwjD5tuEPiaa6oznz0MTJG/Bv4IwuEJDofZVjddT02gC7HtimkBksyT gxP79lc4D5k4il2G+qAhMHOgeVLw4i/cIxjrBltUMdC2Wnx/cFehuzeDZYG1zveptm60 OSKIbxy6qzGhbfq1j703qKDMSHE2X8tW3+HVa5jJBDEQZRryoIhTEfesx6wrXICt+1X2 Kp3AwTD8mVOW7xSScjjVJIPqS8kHbrvdUt6YYV/HRmFyD1M1+tME1mJm3kEIhjYe6VVj lS+KDuxTkC0bBtvJc33hXBy4L7ol5+B/5XFCZFAg3H4y0GO0/Hqq0Ay1YsdWHB9vjd+F klHQ== X-Forwarded-Encrypted: i=1; AJvYcCUx9Cai9DbSqGvEKulWzLHsmoGlbXYUs+2n5itzy/TLsF+TohzAefwpUq+HXOW1nC9jPNrbVPw+/yJ/XgdU@vger.kernel.org, AJvYcCW2j1KoB710dlhVgajYa3QzWEUpZd2DZEMuU0vGvMKqOf24kfoqgTkuLC+9MbEK77+ubHFzYmNEFZMh@vger.kernel.org X-Gm-Message-State: AOJu0YzeAA1WBDEFNA/k6gKE77c2ZQMUHCLJ7NWepcdgy+yW9vMmot45 TB9qRbxwJgorLfLKHXMUtA0XdsxxWOTsN9MNKpm/SV1sJAtvV+QHS283 X-Gm-Gg: ASbGncuPwYMKPojoHqQvb2dsWlydPQY8vOvvE7AMa8H0niRgtiPyZDSx2AyR2q75HUC S60PhhyCqVFZ6WK5L74B2K9NA+pNSLOXI5piOiFSyHyTQQOGd8iZYiZ4iTtSqpiCiR5AziO3U+Y dZsXRCj4pZz9Yp1As1BDeo6CTPF+jbqRU4Mqs0/ApH5bbHaFgcOEJpdP8vCCO9Mv+nmNAh1Sert CwqghKA4aP+0P0IC+QwRE1lQjJefhIwuydcpS3pIR+dfLC62luLbYThPPyAQZreYmkwcnijGI5E 9qGzuMScoNhx49dY6mqtDYov/qCCSpXw1Fp3c4oRlWhaiEPvGdVzCZd/u977mvCJ8izjgPiwRPa 1b0eSHjgcPH+5Zr0MGnYOrLMlljETbIGw5ePMODHlv5t0cjb63Sll8V7d9lSBmg== X-Google-Smtp-Source: AGHT+IHqC0I7lY85uruxM8FbkichBl5lVOZaUMavYs1QcspMaDSIZ5c23RtGIRSTLmBN3qMhhWwupw== X-Received: by 2002:a05:6512:3e0f:b0:553:2869:3a5 with SMTP id 2adb3069b0e04-553e3c07c9amr4738378e87.48.1750773195001; Tue, 24 Jun 2025 06:53:15 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:14 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 08/22] crypto: amlogic - Cleanup defines Date: Tue, 24 Jun 2025 16:52:00 +0300 Message-Id: <20250624135214.1355051-9-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 f0ccd28545aa..8f20903842ec 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 GENMASK(16, 0) + #define DESC_LAST BIT(18) #define DESC_ENCRYPTION BIT(28) #define DESC_OWN BIT(31) --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79DAF2C3770; Tue, 24 Jun 2025 13:53:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773201; cv=none; b=Kcvp4BsZ2z8sWGMfEA9AowLoEQQLYEr/1U208aMWr74E/NPkW/LSD1F9U3M30pLah7WwY5lx04Kst4blCuCBbgrWpp3AhpEWX6BqafjTlRZlj9aJlfdK5qvFUImWACqJO5h+bgAiRSz/FHp65wUzLNJl+tpioG8oE78Z0zE3LPA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773201; c=relaxed/simple; bh=w2p2Oo8zn6VlvHcH+ZwJxjSONvbNy5BdYiUQ3V4zO/o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ggt8PnR6vUZfL6YKy34dbU/gOnO28cXK23S/94gKu2CKY2TT1LvLuv9dKWCGjs1u8iAcSSZvwHe8u2cYbGsAXN9+P1NAENuFADbAm/2VNntCklonWguiFdI9XeslVtPe3g68YhpXMnKjjMcmEGn0BIrKNoBH9+aI8z6PlXMDcTY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hYlSVDk3; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hYlSVDk3" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-553bcba4ff8so5497044e87.2; Tue, 24 Jun 2025 06:53:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773197; x=1751377997; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1q6dvm5utzT/BIdU58Hze2KaTH8caLxn4Q1+kTx8pRU=; b=hYlSVDk3molRVS/Fkgp0U8/YaDFf2eNsCAnXnw2v7q7KyUXU3vYERqtOGxhH/42pZu d/EO8eJ1wN3zq/QyG83kWQQnxBPnrwxcunzm5OWo+VasKV9hFzI/A5m7KOws/1GQkvoo aSICrnAJt00ojOad3LdU0JTBuLY4YfuFziFlWAIa49abAnYJPZV5lpr8VeTUP577Gaar 69aONtv3LDVFshej26tl4TYrdEoIP2QdYv3m3WhhI1gFd27PHeBAVrfY3lIehSE7XnCZ 5vaXcbqVGvZF6AmQ6CU1gt9nvuVRgG8SUWoXCvrhmaMlIeaHyVh68Y5PHwvJmSemouoY oiJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773197; x=1751377997; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1q6dvm5utzT/BIdU58Hze2KaTH8caLxn4Q1+kTx8pRU=; b=GJkgBPTOtpoJRsZ/1y6O8lDxzuyYNi+DXukkSev0FQMIJDkgggSRtoRZI75rcCiyI5 9Ph8O++RaPIMWsHXDRvb0ctkiuu8M4nf4Q6c7VYDBDHMdDZpNBBt73MM1xhFwMuYnQ4e kliyR5YF/jAXvNuluJM0UE7kqIguKJC2voMX7U3BIi/vRYnGWZcWZAZ66RCsJUKuVde5 +HartTcbb/QvPtR59WBs6K/Hm+1L87YZ/tt3pS+hRC7OINlwjuF6MaOWmRWnNuI5ys7b /XvO8YeehdV03pk8IT6vr1q+XleAWkxpqIUzjU5X0Omgu27nSDVJhR3O0le8eCklYOm8 UN7g== X-Forwarded-Encrypted: i=1; AJvYcCVx0WshTMxLGFFW3ZSeQbwk8AvbJ64QgbDGFx3+3FVCIyDFTqAVFCaGul+ltBv5SqP+KxeDZBoNH23HYUPa@vger.kernel.org, AJvYcCWppfk01GWUO52Huak4ecvAm9iZQMfMMW7na8SdAvTN5LYQNIdtldYpd4QYipPbOaXXjBqxDJScTPnH@vger.kernel.org X-Gm-Message-State: AOJu0YzB+YlFNnxkj6Zv6I3daK09wGL4mskvnLmygq1RFhC0jlTqwBE9 ccc3jab0RWbhRkeHN5bmHPs8DTxQ1uw5iGDt5+sxsBYMlzaDlRXioytD X-Gm-Gg: ASbGncuWVLLTkHeQRH5xpmRv58eFUSaOM42s9bPBru6QXIpa63ORCCuFYoP0SlJmzod Js36bNCkGIVTtS4iKEEhlonWem3/fPJ19ehC8VcAmFwzbxElWc02YrebgYLNXfDXxg8d4/YmbL7 xUXQ6BEfXxIJ9GLJMJZo13h9oISL1Om+Go3tTaErYkoJfsYJCoEZXiiFSoNpZj8KVj9Y3/g1W0z R4uknDA0KcrMTUAEGLbZ45f31R17ENRtjMCBWdfFap/IKK3qANWNbXXQqN9Ipl2ohPAbJz0Yvob 21ilC8bJxOhPCcmJ8WAGviqGIGtEmgTcyXWj1mxRWpX2zZaYYiMteb6AocBV+1v81Zv68WJNaUt 4HWMe15BQgHeewkivQ9pX7vXN/0xqB9QYsciM2vUmvmRnb8ZGqZDxUsWKA9XdEQ== X-Google-Smtp-Source: AGHT+IEqFhakuD3ZYMHZBOH86e4TvT9soFc1YgG+tZahzZ5co2OIBfm5iXtzaGjl9wPuqYM0tB78eQ== X-Received: by 2002:a05:6512:3e0d:b0:553:50c6:b86c with SMTP id 2adb3069b0e04-553e3d15539mr4868111e87.57.1750773196375; Tue, 24 Jun 2025 06:53:16 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:15 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 09/22] crypto: amlogic - Process more than MAXDESCS descriptors Date: Tue, 24 Jun 2025 16:52:01 +0300 Message-Id: <20250624135214.1355051-10-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 446 ++++++++++++-------- drivers/crypto/amlogic/amlogic-gxl-core.c | 1 + drivers/crypto/amlogic/amlogic-gxl.h | 2 + 3 files changed, 284 insertions(+), 165 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index c662c4b86e97..cb6b959bb1f9 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,184 +82,294 @@ static int meson_cipher_do_fallback(struct skcipher_r= equest *areq) return err; } =20 -static int meson_cipher(struct skcipher_request *areq) +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) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); - struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx(tfm); - struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(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); - - dev_dbg(mc->dev, "%s %s %u %x IV(%u) key=3D%u flow=3D%d\n", __func__, - crypto_tfm_alg_name(areq->base.tfm), - areq->cryptlen, - rctx->op_dir, crypto_skcipher_ivsize(tfm), - op->keylen, flow); - -#ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG - algt->stat_req++; - mc->chanlist[flow].stat_req++; -#endif - - /* - * 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) - return -ENOMEM; - - memcpy(bkeyiv, op->key, op->keylen); - keyivlen =3D op->keylen; - - 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, - DMA_TO_DEVICE); - err =3D dma_mapping_error(mc->dev, phykeyiv); - if (err) { - dev_err(mc->dev, "Cannot DMA MAP KEY IV\n"); - goto theend; - } - - 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++; - } =20 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; + return -EINVAL; } - 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) { + if (!nr_sgs) { dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); - err =3D -EINVAL; - goto theend; + return -EINVAL; } + nr_sgd =3D dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst), DMA_FROM_DEVICE); - if (!nr_sgd || nr_sgd > MAXDESC - 3) { + if (!nr_sgd) { + dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE); dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd); - err =3D -EINVAL; - goto theend; + return -EINVAL; } } =20 - 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); + 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); } +} =20 - reinit_completion(&mc->chanlist[flow].complete); - meson_dma_start(mc, flow); +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); + 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++; + } +} =20 - err =3D wait_for_completion_interruptible_timeout(&mc->chanlist[flow].com= plete, +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; + struct scatterlist *sg_head; + void *new_iv; + int err; + + if (blockmode =3D=3D DESC_OPMODE_CBC) { + struct scatterlist *sg_current; + unsigned int offset; + + if (rctx->op_dir =3D=3D MESON_ENCRYPT) { + sg_current =3D ctx->dst_sg; + sg_head =3D ctx->areq->dst; + offset =3D ctx->dst_offset; + new_iv_dir =3D DMA_FROM_DEVICE; + } else { + sg_current =3D ctx->src_sg; + sg_head =3D ctx->areq->src; + 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_current) + offset; + } + + if (blockmode =3D=3D DESC_OPMODE_CBC && + rctx->op_dir =3D=3D MESON_DECRYPT) { + dma_sync_sg_for_cpu(mc->dev, sg_head, + sg_nents(sg_head), 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->flo= w].complete, msecs_to_jiffies(500)); if (err =3D=3D 0) { - dev_err(mc->dev, "DMA timeout for flow %d\n", flow); - err =3D -EINVAL; + 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); - } else { - /* No error */ - err =3D 0; + return err; } =20 - dma_unmap_single(mc->dev, phykeyiv, keyivlen, DMA_TO_DEVICE); + if (blockmode =3D=3D DESC_OPMODE_CBC && + rctx->op_dir =3D=3D MESON_ENCRYPT) { + dma_sync_sg_for_cpu(mc->dev, sg_head, + sg_nents(sg_head), new_iv_dir); + memcpy(ctx->areq->iv, new_iv, ivsize); + } =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); + ctx->tloffset =3D 0; + + return 0; +} + +static int meson_cipher(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_cipher_req_ctx *rctx =3D skcipher_request_ctx(areq); + struct meson_dev *mc =3D op->mc; + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct meson_alg_template *algt; + 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; + + 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, rctx->flow); + + algt =3D container_of(alg, struct meson_alg_template, alg.skcipher.base); + +#ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG + algt->stat_req++; + mc->chanlist[rctx->flow].stat_req++; +#endif + + 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; + + ctx.keyiv.addr =3D dma_map_single(mc->dev, ctx.bkeyiv, ctx.keyiv.len, + DMA_TO_DEVICE); + err =3D dma_mapping_error(mc->dev, ctx.keyiv.addr); + if (err) { + dev_err(mc->dev, "Cannot DMA MAP KEY IV\n"); + goto free_keyiv; } =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); + err =3D meson_map_scatterlist(areq, mc); + if (err) + goto unmap_keyiv; + + ctx.tloffset =3D 0; + + while (ctx.cryptlen) { + meson_setup_keyiv_descs(&ctx); + + if (meson_setup_data_descs(&ctx)) { + err =3D meson_kick_hardware(&ctx); + if (err) + break; + } + + 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); + } + + 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); } } -theend: - kfree_sensitive(bkeyiv); - kfree_sensitive(backup_iv); + + meson_unmap_scatterlist(areq, mc); + +unmap_keyiv: + dma_unmap_single(mc->dev, ctx.keyiv.addr, ctx.keyiv.len, DMA_TO_DEVICE); + +free_keyiv: + 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 106d4ee2e5e9..c1c445239549 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -255,6 +255,7 @@ static void meson_crypto_remove(struct platform_device = *pdev) static const struct meson_pdata meson_gxl_pdata =3D { .descs_reg =3D 0x0, .status_reg =3D 0x4, + .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 8f20903842ec..9fbe5ab44877 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 + * @setup_desc_cnt: number of setup descriptor to configure. */ struct meson_pdata { u32 descs_reg; u32 status_reg; + u32 setup_desc_cnt; }; =20 /* --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00BF42D5C92; Tue, 24 Jun 2025 13:53:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773202; cv=none; b=nuPiAFrXkH1t1ibUC5xT91qx2cCSYOtt+XS1iPNzlNjrkf2XFm9j9aWbYRqMDfNsGovFKJ9vNFDMgoLHR5nomjdoidELkK0BSdeJ4W4LHVTG4G08BRzRIZLiwtZwmhcG8IAroirHXVKDoflDbARdJiugfG2Qzb8Dsb47D2M7me4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773202; c=relaxed/simple; bh=HZKvYGj4SL1ze+xy/PHKlKZ/bMND7CvlqAnEP+c+2no=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IyQFMWsle+l1ZPWSaq5+6zpVwtiLtxmH78tn7amShtcpY+Nl6AJ9F7A47lQnp726DryORo8fvXc/g674ldZEJPWMyivIMAQOU939Sxmdh6gWxs2i9Z3LJimKX0ak0x1v9AAf9H0zhUYwwoOwy7A/Y/Za+/lzG4pC9kQV7/jDrNk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HdN+w2p3; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HdN+w2p3" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54b10594812so5399305e87.1; Tue, 24 Jun 2025 06:53:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773198; x=1751377998; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Gzx2FnJvCLQCRWiNmE+Uv6Jp3FCWgHLfqQZq4I1F9QI=; b=HdN+w2p3sXRCPQ/QMbYGmjnZn349mTzxHUe7wLScvAb0wyPJlOtMkeHID+cZq+0WZW y3wkn1nNfNPBp/4flpgNck5G+KrmAkU31aACEzVRPIzKse4LJPXgqwTriGPWvIk+KBow HPA2vV5QyaZ3ZomgCNvOGF2Z4bLJFqB/UGOTLu66su6zfQESpeYYK6sRZumflarkICXS zZU7sqBoQsoYdIy3LadqfRPffaQBXshm9m3qgtG3MjlBzdSvbjVjS1asrItUCEe8pxat XiKQzQulDXDE5/jUSAYBtpCRylQVAWieJwcHa+F+8ELmzDStyLDYm7fGIqL70yzEsIWW 5Fcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773198; x=1751377998; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Gzx2FnJvCLQCRWiNmE+Uv6Jp3FCWgHLfqQZq4I1F9QI=; b=msgv1Y6QaE6u1PzWRqjtShaOBQj/Mu5RVoOf2pT7dSVIak/FjjtDXq/DiYDg2slRFO 4/eJvaJMuxVDtPs1eA2LdvNXFQHOWkBU4kYSpERmYSPKmWxuYXsrseWsro+7Ou/wGp0u 0QjENGlatG2OxFysFksqs3X79ivzk21VB78bAphSEWFhCmpuZoDYan9+DmVymhrzq8nX Hm5x1hCqLkli6zxY43SFNxDIrZO8+vFXyRift6a6ApPX7rPmfXBio18vLVr0b8hc3KGq Se/jLCcOXVj8llTWo6pRSdLLJ75xMksBZjZWCgVz67L2kYH6OD5xyDL4l8iW54QmOgPm 7Nug== X-Forwarded-Encrypted: i=1; AJvYcCVqDemK1BRUYnUOyunEsV3peSCFcl1lMI7PTLN0SpT/sHEuAc/Jq8FlMlJzhbm9o9+5wSyv6KglGUDZ@vger.kernel.org, AJvYcCWavE356XH480OWOsFrp7HdOHITvhZvkZkqVM5tCJ4xTgTu5rDPEueSI2ydDVkt9GTRPscdLpvHGMxlS9tj@vger.kernel.org X-Gm-Message-State: AOJu0YzOZE02Br4qfMUtrnyTsPR8Cidb8ektRH6iQnRUF+to1lBmZQ66 zxdXoJy/o8Z9qPuWMh+QROi+EwzUkhyDlMfEhujLzMN8eYgn0nx6LqMD X-Gm-Gg: ASbGncu8NLeBqXN2s+gJtIyR0zfSL3Ae1QsTRH63TANzQAH4C0aG2J9MG3rUtptMCqe Tt+3STsbAFd4GQ8a+2GKGMvTwmF0ydbU2oWt56q4b8Iyov3SSW4Dz3IETlrvWVzlxJjzGpLKh2H arhBxyjxI1485wlel06A9C1ycWcKGdvNq3bLnFtqW/WojV2Tr7Ancedp4TPzqeTsP4I6Xf5Zhjh IvZggeU4nSm7ENPMR3EYh4m6EfBy8tQTxFX16vZvXQKcu/lsqiQk0hV92ZZUwFXFJoyuOuDlfaI ZiV2LqRvgTE47jpRWtVfeqtu7RiwBWPE0ti4NIbCLC6PYdaITk1a8KmALMTDuctGaOro8TO9eVI fzmY+rsQ/UAe05WSMmOtmXzBiXkcfjxYrLJrRf4BAur0xK3cClkrXHE5Dk0sd4A== X-Google-Smtp-Source: AGHT+IGRAF7JOmaB4TmDA0/sBoS6sRlUfeVqalpwf98wia4CMQPMG8IyE/HJ029GdMp/Sj4uw89lCA== X-Received: by 2002:a05:6512:3b0f:b0:553:2fa8:8405 with SMTP id 2adb3069b0e04-553e3d236f9mr4778359e87.56.1750773197912; Tue, 24 Jun 2025 06:53:17 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:17 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 10/22] crypto: amlogic - Avoid kzalloc in engine thread Date: Tue, 24 Jun 2025 16:52:02 +0300 Message-Id: <20250624135214.1355051-11-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 60 ++++++++++----------- drivers/crypto/amlogic/amlogic-gxl.h | 4 +- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index cb6b959bb1f9..df42940f1112 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -59,7 +59,7 @@ static bool meson_cipher_need_fallback(struct skcipher_re= quest *areq) static int meson_cipher_do_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_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(areq); int err; #ifdef CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG @@ -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; @@ -147,7 +146,7 @@ static void meson_setup_keyiv_descs(struct cipher_ctx *= ctx) 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_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_dev *mc =3D op->mc; unsigned int ivsize =3D crypto_skcipher_ivsize(tfm); unsigned int blockmode =3D algt->blockmode; @@ -157,7 +156,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); + 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); } @@ -179,7 +178,7 @@ static bool meson_setup_data_descs(struct cipher_ctx *c= tx) { 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 meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct meson_alg_template *algt =3D container_of(alg, struct meson_alg_template, @@ -222,7 +221,7 @@ 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 meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct meson_alg_template *algt =3D container_of(alg, struct meson_alg_template, @@ -292,7 +291,7 @@ static int meson_kick_hardware(struct cipher_ctx *ctx) static int meson_cipher(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_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(areq); struct meson_dev *mc =3D op->mc; struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); @@ -305,6 +304,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__, @@ -320,21 +320,21 @@ 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) { dev_err(mc->dev, "Cannot DMA MAP KEY IV\n"); - goto free_keyiv; + return err; } =20 err =3D meson_map_scatterlist(areq, mc); @@ -368,9 +368,6 @@ static int meson_cipher(struct skcipher_request *areq) unmap_keyiv: dma_unmap_single(mc->dev, ctx.keyiv.addr, ctx.keyiv.len, DMA_TO_DEVICE); =20 -free_keyiv: - kfree_sensitive(ctx.bkeyiv); - return err; } =20 @@ -390,7 +387,7 @@ int meson_handle_cipher_request(struct crypto_engine *e= ngine, void *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); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(areq); struct crypto_engine *engine; int e; @@ -408,7 +405,7 @@ static int meson_skdecrypt(struct skcipher_request *are= q) 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); + struct meson_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_cipher_req_ctx *rctx =3D skcipher_request_ctx(areq); struct crypto_engine *engine; int e; @@ -425,7 +422,7 @@ static int meson_skencrypt(struct skcipher_request *are= q) =20 static int meson_cipher_init(struct crypto_tfm *tfm) { - struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx(tfm); + struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx_dma(tfm); struct meson_alg_template *algt; const char *name =3D crypto_tfm_alg_name(tfm); struct crypto_skcipher *sktfm =3D __crypto_skcipher_cast(tfm); @@ -443,7 +440,7 @@ static int meson_cipher_init(struct crypto_tfm *tfm) return PTR_ERR(op->fallback_tfm); } =20 - crypto_skcipher_set_reqsize(sktfm, sizeof(struct meson_cipher_req_ctx) + + crypto_skcipher_set_reqsize_dma(sktfm, sizeof(struct meson_cipher_req_ctx= ) + crypto_skcipher_reqsize(op->fallback_tfm)); =20 return 0; @@ -451,16 +448,15 @@ static int meson_cipher_init(struct crypto_tfm *tfm) =20 static void meson_cipher_exit(struct crypto_tfm *tfm) { - struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx(tfm); + struct meson_cipher_tfm_ctx *op =3D crypto_tfm_ctx_dma(tfm); =20 - kfree_sensitive(op->key); crypto_free_skcipher(op->fallback_tfm); } =20 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_cipher_tfm_ctx *op =3D crypto_skcipher_ctx_dma(tfm); struct meson_dev *mc =3D op->mc; =20 switch (keylen) { @@ -477,11 +473,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); } @@ -499,7 +493,6 @@ static struct meson_alg_template algs[] =3D { .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, @@ -528,7 +521,6 @@ static struct meson_alg_template algs[] =3D { .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, @@ -548,6 +540,14 @@ static struct meson_alg_template algs[] =3D { =20 int meson_cipher_register(struct meson_dev *mc) { + int i; + + for (i =3D 0; i < ARRAY_SIZE(algs); i++) { + struct skcipher_alg *alg =3D &algs[i].alg.skcipher.base; + + alg->base.cra_ctxsize =3D sizeof(struct meson_cipher_tfm_ctx) + crypto_d= ma_padding(); + } + return meson_register_algs(mc, algs, ARRAY_SIZE(algs)); } =20 diff --git a/drivers/crypto/amlogic/amlogic-gxl.h b/drivers/crypto/amlogic/= amlogic-gxl.h index 9fbe5ab44877..aca0bbb9badc 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -127,14 +127,14 @@ 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; + u8 keyiv[AES_MAX_KEY_SIZE + AES_BLOCK_SIZE]; u32 keylen; u32 keymode; struct meson_dev *mc; --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBF8B2D663F; Tue, 24 Jun 2025 13:53:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773206; cv=none; b=rCNTHmRliBpA00HVVT0btbQ8FKYqdscZiIS8BjTxpRlwBsj2uiWuQDKwfV11VNAj1GRCJ0LR87nsGedkaOvNEEBJ0PscFysrdkfjeOiqYHdxT0FfhDQFskKCe3tF2BdHEs+kjpTzc8qkmbjhiupk2YJEK0OZq4RsuZYl0+qEC48= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773206; c=relaxed/simple; bh=pbK2y3MCSst0CSvUsfD8hzNkdRB23JVyO5xKXPR/lVI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Q5l/zXBdrQWbjo1WyYkdfFhyEPQd4be/koqIDKB58K2QLAnlVBijNo1AweoGlLlJENDpMst5bttu7QeBzzCB7RnZJAI7KBRw3iQIPtKfjG2PFEpoG+HmPKtL5OFIvVtGUgne87HAKL0q91/6WBje3smBEsvsD6fD3nHHNaVytp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NaD5+h2G; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NaD5+h2G" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-553b5165cf5so595573e87.0; Tue, 24 Jun 2025 06:53:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773200; x=1751378000; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y3IK9Md4yHqkkrs0Tk17orGssm32wZsRKZTqelMZLBA=; b=NaD5+h2G2ZuKmrwgzIuqMjwf0o6QmXPbb41IUmbN80BGJdB9pqWvGkb+LXlWMRsW0p vnEc+jbsvNLQEMwoPCxVYewgeSWFgwOsOva3eHGas2JHpDcdkscqqOmpkCol4B5DPjzf EQ0RaH0X9+4t+c5ffour8OX7j2b1m124fgw0mrlcv6+XO8T60/dkaEweku0ge4Ns/fzp gRZ85ur/I0GOHf4G99UJmknR2LR6J0srD2+tt6Z82R2FqqkJX/GSgYTX5C9BRTjS2lC0 i5+RI/5g+FefyNgsIBokCXPBz7gmhM2e6f2N5HvI6xPOGDeuPZCbZG3ZN9eK9R008KqL HKLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773200; x=1751378000; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y3IK9Md4yHqkkrs0Tk17orGssm32wZsRKZTqelMZLBA=; b=nbJrlTML/ZEo/UMH0XaKwaDSJi5+YVwIWQDV9z9ZxR98zRslkyJn2xeg6BTh15J9Lm Ny4mgEcBngwjIIWam8H8OPAXwG/RtY+laoi5ezVeu53TiOtEXw063Ny6LMsqwFufcSXd 5D15J5k2MgdwbvrFVban1a6H51nI2OOx86Q6TUCxGzhymLYT94zr/I3QvrmUw/18wEOg X3tXbNA+EH9GKzev/6jRgPk4loWJDe8CMyGM7d0fBYMwjz0WcfbhpLI/I8yRcVHxHEUk V2+l8395voYuHkvbpxPpNYXEOsMmxsiS2g0kZ6fUl1Xq+FwlnDVwa/dSqCo54jRFsvup rZQQ== X-Forwarded-Encrypted: i=1; AJvYcCUrb9Q5GPWpm6mC5TrFxSDy4APisqkn7xr2ngF++11OW3JQsBxsvG5VIb8AWPCFjjqDHjx0I2V3B1buiXR4@vger.kernel.org, AJvYcCUscTQYvZIIs8h+ePxlM9+epO1bXRqmSFhxny+z3SQpf/R9FeI/HDS2L7R7lPpr/WDjaHAOQ8Mx4bZG@vger.kernel.org X-Gm-Message-State: AOJu0YzetLoQr3/zLqoyTKZCo62EkymmSvQzXsavW2JAusqWZQrMGvJh 9Gc9svWcJdflUvJmz7xwoeRAEN+0DVFAxw9904mIUpUIHc80NbUi3ecaYr/VjWtlZUU= X-Gm-Gg: ASbGncs9jNPBnqbN1jG2uJD9PMn9AfFolXN2Ijn8eOjJHx4wbE+3MyDuDeCYIavzxFn S0FENk2TMwKmbVX/tthF/vFJYhCVibLMNo90/5+QU3WUvNosLvxTDDCcM8wON4+6o6nXX7JALv/ kcpPCUmWzZ133ooNqIpcOqCrVHLbT7bGboFa7sIv/oqRRDvSOtJ6kU9bS86Y2EEqEhTMrOfax/C N1ad+F5C4FNzEXK9F+GeyMtw1bPxcy5hXdqhs5SC0ZsDcdJFdymSAHo8o/HYnjhrIp7pPSH64QJ GoKcksUhql9GQmq3jYXj0nvHMO/KWLfUYAg8FhEkpbExtg4KIEl4ScoGt+VHScJfXwK3/7meIv+ CscnHWwDjB/1fD4QN1bfXPBrqrbzU/FYma3tBLUu1e6IXkW//ezZ7gtQQptydvQ== X-Google-Smtp-Source: AGHT+IE+EAgkZL6Mw47nQ4R31xegTOWJIViyCWfJJq3iRvoV/c1kCKj26m2mBsJgPc6ES9syjAT9Kg== X-Received: by 2002:a05:6512:220b:b0:54b:117b:b54e with SMTP id 2adb3069b0e04-553e3d26967mr4282373e87.57.1750773199669; Tue, 24 Jun 2025 06:53:19 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:19 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 11/22] crypto: amlogic - Introduce hasher Date: Tue, 24 Jun 2025 16:52:03 +0300 Message-Id: <20250624135214.1355051-12-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- drivers/crypto/amlogic/Makefile | 2 +- drivers/crypto/amlogic/amlogic-gxl-core.c | 25 +- drivers/crypto/amlogic/amlogic-gxl-hasher.c | 485 ++++++++++++++++++++ drivers/crypto/amlogic/amlogic-gxl.h | 48 ++ 4 files changed, 558 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 c1c445239549..706db22b9f65 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -19,6 +19,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; } } =20 @@ -190,6 +202,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; } } } @@ -227,13 +242,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; @@ -256,6 +278,7 @@ static const struct meson_pdata meson_gxl_pdata =3D { .descs_reg =3D 0x0, .status_reg =3D 0x4, .setup_desc_cnt =3D 3, + .hasher_supported =3D false, }; =20 static const struct of_device_id meson_crypto_of_match_table[] =3D { 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..c83739ec3456 --- /dev/null +++ b/drivers/crypto/amlogic/amlogic-gxl-hasher.c @@ -0,0 +1,485 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Hardware asynchronous hasher for Amlogic SoC's. + * + * 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_dma(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_dma(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_dma(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_dma(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_dma(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_dma(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_dma(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_dma(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_dma(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_dma(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 rctx->final_req ? 0 : 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_export(struct ahash_request *req, void *out) +{ + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + + memcpy(out, rctx, sizeof(*rctx)); + return 0; +} + +static int meson_hasher_import(struct ahash_request *req, const void *in) +{ + struct meson_hasher_req_ctx *rctx =3D ahash_request_ctx(req); + + memcpy(rctx, in, sizeof(*rctx)); + return 0; +} + +static int meson_hasher_init(struct crypto_tfm *tfm) +{ + struct meson_hasher_tfm_ctx *tctx =3D crypto_tfm_ctx_dma(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_dma(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_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, + .export =3D meson_hasher_export, + .import =3D meson_hasher_import, + }, + .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_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, + .export =3D meson_hasher_export, + .import =3D meson_hasher_import, + }, + .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_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, + .export =3D meson_hasher_export, + .import =3D meson_hasher_import, + }, + .alg.ahash.op =3D { + .do_one_request =3D meson_hasher_do_one_request, + }, +}, +}; + +int meson_hasher_register(struct meson_dev *mc) +{ + int i; + + if (!mc->pdata->hasher_supported) { + pr_info("amlogic-gxl-hasher: hasher not supported at current platform"); + return 0; + } + + for (i =3D 0; i < ARRAY_SIZE(mc_algs); i++) { + struct hash_alg_common *alg =3D &mc_algs[i].alg.ahash.base.halg; + + alg->base.cra_ctxsize =3D sizeof(struct meson_hasher_tfm_ctx) + crypto_d= ma_padding(); + } + + return meson_register_algs(mc, mc_algs, ARRAY_SIZE(mc_algs)); +} + +void meson_hasher_unregister(struct meson_dev *mc) +{ + if (!mc->pdata->hasher_supported) + return; + + 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 aca0bbb9badc..c4f65b541f83 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,22 @@ =20 #define DESC_OPMODE_ECB (0 << 26) #define DESC_OPMODE_CBC (1 << 26) +#define DESC_OPMODE_SHA (0 << 26) =20 #define DESC_MAXLEN GENMASK(16, 0) =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) + /* * struct meson_desc - Descriptor for DMA operations * Note that without datasheet, some are unknown @@ -83,11 +93,13 @@ struct meson_flow { * @reg_descs: offset to descriptors register * @reg_status: offset to status register * @setup_desc_cnt: number of setup descriptor to configure. + * @hasher_supported: indecates whether hasher is supported. */ struct meson_pdata { u32 descs_reg; u32 status_reg; u32 setup_desc_cnt; + bool hasher_supported; }; =20 /* @@ -141,6 +153,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 @@ -155,6 +199,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 @@ -176,3 +221,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 Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A7312D4B59; Tue, 24 Jun 2025 13:53:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773204; cv=none; b=sTgDbXXVYTaZOJuQzw71YTHslLLbB0aQ5rMe65VltB4tvmW3dZnHoL39scweFBskIfTo0Nxl2iOyQL5ODuBm5iIathUETiawy9JwoahCE96WWFVa+UZTE8QXo8FhEc75oiXSmBC30YCKnuIZRNI2kudiL4GUUrlzqBZdUGp6nMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773204; c=relaxed/simple; bh=enK0PIxbFqpjFBzDv39VclcyFKGwzSsKko/Tb3D2PFs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=diC2A+j0NWj4GrZ7yhNrP4Ymm/p7W1tiuojDVoY/NYcZ95OtwK2LKRWYOD8+7lP4RjzxrN/KF5MR/g5qN4qx7VXRIew5pSnXKhu5+r2zZOy87diBTCuBZnbAZw/q8DA0+80RLFT2GA79gWZ/Tkilagr4Ex5xYkkQ/4fJX5QmogQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PX6OWzQ9; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PX6OWzQ9" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-551efd86048so466263e87.3; Tue, 24 Jun 2025 06:53:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773201; x=1751378001; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TwUHxKJnp5cLgpgYva+rlNxvXdISl3ekGoJdTDdzRBo=; b=PX6OWzQ94YYMz0SGvh87EZ4xNIyhYJlhasQCOU76yKL1j4TMna9Mzm96zIxeCMlOL4 FKOkzZjyaE9UwXqLT2r3vTHwoy5ceuCql60XexDW3fDCSVec6jPUt7O70DWQoB5l/i99 dh38m0lJRAGd1RONaqJvgG+8E1wjE/t3UnQ7zFS2Teu/XtIur/2CyrXvwxLSKggtuQYe of2fdDS7kf25/isMKg6AsPSnIn0yE78vAJKvYgRqA9uRzL32IaIm7+nwDV3/ZEvSmy+y 8BkGE37rHySsEE8ToDh+V1HLqZROsa1Xq5v8FXf6EKltqCTvlpxg4wJch1tbTtlrOJpq L4Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773201; x=1751378001; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TwUHxKJnp5cLgpgYva+rlNxvXdISl3ekGoJdTDdzRBo=; b=B/uh0c0oZSNlG8+byk/UuVHKo1CVht/QlbjTJxWHRP3Dhlgay0aGlbswuHe9NiFzbA IdNTI2XbNccjbhysreq0hq9dtfuvhAQTnezsb1wxZt/nIog1BGxPKlUC2/wOMu/+ilT4 wlpx27P5bSEXQRNVGVWH4pj6dKbnhJTgh0FDqzHkb6Xw4dOnJ9r3mVM0OajUciFgNJiT 56x1AgPOv/Gm0B9NoabMJBGH5w8U6CANSpgBOhkgoTXq/rgkjvRrBru5l1ZffUNdX0u3 Wv/U0s8XTdbidNUYXx99iElGKrvnCYJktH+CvNl1l1kP+3IYLhJf9o4YCPVHB0jMXalh icPQ== X-Forwarded-Encrypted: i=1; AJvYcCUTt7LWypJvOY0oduRdNDhPARdYswx3VRPGqgMMd8pfK9o4nV9Fpb0I6jFOrb1UIORWBXq2rccVDvjWRyi2@vger.kernel.org, AJvYcCVKh0DWx98eGDkN5kMF2aQ/AjnJNkWxiSzAdaZOIVLhyMcfF9srFXj6TKIZPzgG3aR+H2WXnMKl+kYG@vger.kernel.org X-Gm-Message-State: AOJu0Yzw8TD1Pk3FvR6/ppiRDwMrdtLdOfbc+3YFPYJnNbDF9xtXYmCJ vIrnHwGG9QcYDWkp6h8YYMDpC4LzFWc95uVKUG79reHfkfFIcN1cZg2S X-Gm-Gg: ASbGnctaUCJ9GdSTDch+4wA0Fm3zJmnbD39YJbdECNYZ5oyLum7DFITA4pUbrOiX9DD BIgYxME4XeolDq6+7xNV5HgkxK11MpDibRXKT9ayOf7TvnTlnYB1kGyU04C070lj1ENo4YOwn2V wbK3AYmmBCjvbFyStKZng5wXzSPRH8+VDMS1L1RPc8Q2gFK2hvtppZ0dT1aL8pHQtRygRvKcy8q CwGpz1oOBkS/OcVpryevflJqph7VTPeFo7czgDj8mJxfHe8SG5gZWhtZmzTTljrVm8MO40OhyR+ f4X9bYDQUPxXkehi9X4Lbut77L0OJc9riL/zmwLGO9S//7U2KVSMSw+HeQ3cCDncR9Ld4YVbAsI 41khJl0ymlVLtPAE765ad6pE1+uAeY5y5sUe3IdZo1EcaSCVzQqEGqA46DNPwCg== X-Google-Smtp-Source: AGHT+IFegUQyNWlfR73jyIeNSbKb+PL10eoaOMjltkUPqUsmae8e48puBzwbK+rUaYB2E2lscqlytg== X-Received: by 2002:a05:6512:3d04:b0:553:28a6:4390 with SMTP id 2adb3069b0e04-553e3d0ce96mr4929973e87.47.1750773201274; Tue, 24 Jun 2025 06:53:21 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:20 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 12/22] crypto: amlogic - Use fallback for 192-bit keys Date: Tue, 24 Jun 2025 16:52:04 +0300 Message-Id: <20250624135214.1355051-13-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- 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 df42940f1112..6070ee6b488e 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_dma(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 706db22b9f65..0f4b3db85031 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -279,6 +279,7 @@ static const struct meson_pdata meson_gxl_pdata =3D { .status_reg =3D 0x4, .setup_desc_cnt =3D 3, .hasher_supported =3D false, + .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 c4f65b541f83..1a15e6c0bf50 100644 --- a/drivers/crypto/amlogic/amlogic-gxl.h +++ b/drivers/crypto/amlogic/amlogic-gxl.h @@ -94,12 +94,14 @@ struct meson_flow { * @reg_status: offset to status register * @setup_desc_cnt: number of setup descriptor to configure. * @hasher_supported: indecates whether hasher is supported. + * @support_192bit_key: indicates whether platform support AES 192-bit key */ struct meson_pdata { u32 descs_reg; u32 status_reg; u32 setup_desc_cnt; bool hasher_supported; + bool support_192bit_key; }; =20 /* --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C97B92C3277; Tue, 24 Jun 2025 13:53:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773206; cv=none; b=tRRYFE5tRIpOnR/OI/OmIMAVUjieGMEFQR20J42XULJuuwGqlAlYhNrEaKrR29FpEAnS5mZXJv7UAGGc+pZ78Tq5PDZjnDrbTYgO28kNxaWhF8arrryK2O0kwsSr4wqSYqmAs79vt2ZE5qqBrO9GBtjyMtvhPaakoU+PYcVXebA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773206; c=relaxed/simple; bh=0oyw5pqYxd62fT5Atb6DVLtHT4tQtNtHm9yrqGoR9H0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WLZP5/ijzCQoAV9If3ruECBiEGXSQQeiOMSsdWWEK5XQO5Q4dECpuGcZ+iTt9HppH6tuRVSG53x8LJDppctqlGTaglJDAkyYOCvAm0MDVTyir/QgA1WTgJtpKgN6kLPqEI8YKsTBFiC6BvIv31pryaacHSjuG+lTt3GG0L38T+I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QHRgHmqd; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QHRgHmqd" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-553d52cb80dso5671335e87.1; Tue, 24 Jun 2025 06:53:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773203; x=1751378003; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s+MqIOFNRJ3iFcWe2+ZNr4wPLX6LJuQAzvpwDCjIk/I=; b=QHRgHmqdY/H/W3lmW3o9skrkJjvI0hyFGVrE6wVxag8sJtiT1J9YuIT0g1eAx1QgAt J0qHC/F+MmsBiXf2g/rynYKezLkhvJE/Hz5nhW8ie0xyD+ISBZpss0O4ldrXLXDiLuzC gacTgx/F4UlT1FwYYWza+5zDaULH5l5WOLqESdRs3KpB8nSylH9eBIFL8rLoSvWtmQB2 i1OqVp3N2MQdVvHsQdW+5/HKpsSd+4HVbzxaC3vslqsaxR04QCEZbzyREUuQPZSDqig0 R01Vlirj7Am/NIBlG4Nr4L040G/ciXtNvrO0Fw6XamUpeh+f577IZvKjUMvHZVMptRJN Rhow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773203; x=1751378003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s+MqIOFNRJ3iFcWe2+ZNr4wPLX6LJuQAzvpwDCjIk/I=; b=JL07IjULOB3k/6K7rSbh9L4UFSXZjcugEtySpKzDlBYnDG6BN+heY+YajiDFS6WP5f TsuHpxYZhl3mlWWVUq8zPZYm8PSaO8sld1pUgn+UMXB6kQB5X7+TuDalNTvm+/RoeBHN nIrp3TGMqBIGIjCwRn4EcDwelaql3aR4m6PHCg0KHbkjDt9CpBaSY3Zqd5bS05cqufDs LR8z92G3oZ88g+AhVtRQJtg1OUeHy4rK2qz8ikuB/qSw3lmelp+KZps54aEF3ovHYhmP qVEJ3t1sZtz8Y/F+ntJZq81I/ZdC4rA8w3wVWUD/9ty7GySTRSCqglQoV+qjh2inhgss GSFw== X-Forwarded-Encrypted: i=1; AJvYcCU3bv5eBjCcu7yrTnYYC9RdvTzj4Jzh4zpfrEit0fPjErMuXHTQRyxiHjsf7hI/rzwoJI/yIW/DvgxAdJGO@vger.kernel.org, AJvYcCUiPPp+xdojJVp5I26yfTamZmPqHs1DvlavcH9uN+gK4zeF4Ze2LLVOer/DhJ65wj18Iae2l0cXkuUs@vger.kernel.org X-Gm-Message-State: AOJu0YxJXIPtt5jMM9L3l3mqmLkVtUciyly7FJpBWdCpeRvLLLal2jtu ejHu84Z8ANRH58eYEjHgEDI5HVA/L/p528bS/gDUj68u0FsqVCQ3mmmx X-Gm-Gg: ASbGnctH6elRiOj3ixsjBOKE0Fj4q6YtdEG7GsdcT8ugdPLfG3vhMgybbdk0/In/aNM gZPf4li4MWBoUh63tjWVTwggZwdQZgOb2XJrWrKWzNbRrOkhv/jeGACBr+r/7/0qP0Z4f96DoCV KKAfoijO6DU/C6o23dwo3BfCcbjaoKqP04F5wUloW8PjXcvz6p0gCjgcIIoarf9dusDbXbFlZqR wUfnkXUzrSe2yercYX4hxVcUtjecPxjSG/Lk4MEzKoRN1lyQnHEfdSmqglLIY0iJo2wGMcjS9Pk 8hLj32KGNwqiIWjBplS0IesNhc/o5hl3VD3sBAIIqmwX4OtmGl67wes44PH3VmoNggouIkumZ04 aoO+RSzC1HfQwa0bRdZlhGxgyYqzXmSK3OZkgzIHB9u6MayBnJ43wODLayhdWow== X-Google-Smtp-Source: AGHT+IEG3Nmxe5EPT7OWfXxcoBanx3ekkm42DOccYSN8J0OD87zwEToOOU3f+GyCigT3lhowCdOmDg== X-Received: by 2002:a05:6512:2395:b0:553:2308:1ac5 with SMTP id 2adb3069b0e04-554f5c817e2mr1016483e87.4.1750773202777; Tue, 24 Jun 2025 06:53:22 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:22 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 13/22] crypto: amlogic - Add support for G12-series Date: Tue, 24 Jun 2025 16:52:05 +0300 Message-Id: <20250624135214.1355051-14-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" Tested via tcrypt module and with custom tests. Signed-off-by: Alexey Romanov Tested-by: Anand Moon --- 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 0f4b3db85031..6529ae24b75f 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -282,11 +282,23 @@ 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, + .setup_desc_cnt =3D 1, + .hasher_supported =3D true, + .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, + }, {}, }; MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B03EC2D8DA2; Tue, 24 Jun 2025 13:53:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773208; cv=none; b=tRLXvOwnQe5XNDyUuP35nOrpaPjZpOMGjpzoE8oSytv+G/XWsnQgK6SnruRwP5k5Z4kMLVA3rQ4hVZeYRLdEnFaheq4s5QZvBfHxz7us0R1KdbmqdhkS5I6NO0sT8NW9tXRGZ00pP/jsMpnjQpd3j/W5TsItiD43FnBUB2UkJeQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773208; c=relaxed/simple; bh=O97Ln5N0GE+w8ramqsXYdDKHxux0qmPTKKCEYIPlU34=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BOXrPM5mrcD/UcTE99NQZprz3yHKzwGoWtSEWBY4SaKdTctsdPEQA+/ASrJv3O7CXG2lCEPqx9WfnQXJqAxmIUOlNhQrroX+/FJPVcx614n5W0bYYs/SoUncuzmBE8bnVrWLSnrOKtCYW+w/mAE1PqA6k91gA6y5ksbJELwcC8Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DlpiO4Ml; arc=none smtp.client-ip=209.85.167.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DlpiO4Ml" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-553e5df44f8so3905893e87.3; Tue, 24 Jun 2025 06:53:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773205; x=1751378005; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XWyKqDRaj51cI2d9ZzQFXmmLXwANXVcxLCbwmNM9YJ8=; b=DlpiO4MljML6tdxyoTo8g8BI7W/UOGoCVZvvOVTaT2/KW0wYzVE7LRLRB/HCrK0AT3 ZQu33pcp4vo6oXEbo5/G3O0SKvKQ5alREXyKWjxGwz3xhiKCsEBL72FKsWhVdb3phdaJ 5M6jX1F68VwL0SKnfl0L8mDpm6adh5+oCYlUz3c0S/MtSGqQCxTX5q6Zm+t9/KE24lvO sRsGaNxT9mb3eDvoNG7dPwIm0tbcDOLXRqhIFHPo8n8/u2/19dJ5r3utnUYVgpx8cq0H +zrafwJTqb0uwSk75C1fhj+bZZ14pIZOJYL7PbsKr+h5ZR8YDtpog3vUQkaTn5+gXi8g 6RPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773205; x=1751378005; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XWyKqDRaj51cI2d9ZzQFXmmLXwANXVcxLCbwmNM9YJ8=; b=j28X7XlkoG8BoT1EwLg4ePUsN2oM2f9RqVJfmePCjek7gdJH1ok8sxlP7pkqJeFf9f IdKaNHkyMkJ6hLecBNlKCJfliBtfds9hVTTxYdCi5+UnVtrV9rDg/R+8h8IsGUVQqxTM LK+lFMh+dhg55q1l/QosB0zJrKnpf3B8k1BD+5u3h0MU8YOaDWa7JEdTyttDoaFl1sCV 7SkF5q2obm/vpxNlBgAoYjVkVc7/9qYoryn0dx2T9nNHaB7iw1GSZ3LikPevh3Y4Y3ur 46eXWDBoXXTXKk9mIiFS9Wyvp43zTYcf8/HnI69coXTJxLNWlezRPzjGsDNB2yApdx1k fdOQ== X-Forwarded-Encrypted: i=1; AJvYcCUABgsUb/679QlUayrKaF34g+mNu+H9YQxh2UZogCyRPc87ZXxoCTSqzZ47AY+sulH6L53NIeTkhagx@vger.kernel.org, AJvYcCUL+Qgb4taLKpFEZdu/a9THD3VhF+fdYiNXPRyiRYtk+EHdMubQKY52oRMeOkTMHkDm6nOHJNM1VPrR1G+o@vger.kernel.org X-Gm-Message-State: AOJu0Yxlk+21SX4sJEqNSOz0JwiY3dkK3VNuJNGtmA3pPAtx+6oGOTIk BVDclOB4kmNzA6Phlhho9HHaKV4t5HWNQ+LMJzRoL7aKLoc89DMkTtmS X-Gm-Gg: ASbGncsjNhd7I8hLpMOTOyv5qqayauf+aZSdTI4o0VHr7q0al6BERwvXEUXmINbymST WxlQBK86YdXLbmQHShq2Evf+VtzdL1GHWS9y8ZfCyZczN6ZcvsZAaNG2eJGBVAJKJgChb4NoCFz IkcN0DsUhLqxWDQv6xh8ZNLEZFwEpxAe2pEeStammCbD7PHs3Cj9j3NADuGDawnhtu4sReB7AFn nwEX0edj4hYWyAxuFm6wJLCF0ZvVOY7jt7P+fOuzsmR8MGM/QCj0kCbfhaeAvyauhd60YWbbKRW 3m9HCWmapIR8Sa291u04Y3TUODDCIfj3xHNejoPZANcb5R6FWLxg8pldSx9+8kyrMvgTqirsP3n HHFweYAtkcPGvhFm+Pcinb2WnvzYMALubZnJNF6behihMTsRctBAGVrZ33iY5uQ== X-Google-Smtp-Source: AGHT+IEJvcOuq37NSz1A0GUoBspEw+mXdhxdzcKnz3FUYzZ9sVh+6FGPluYMU10kI6uMB14c3FylCQ== X-Received: by 2002:a05:6512:3b24:b0:553:2a6a:884b with SMTP id 2adb3069b0e04-553e3bb5176mr4787344e87.23.1750773204755; Tue, 24 Jun 2025 06:53:24 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:24 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 14/22] crypto: amlogic - Add support for AXG-series Date: Tue, 24 Jun 2025 16:52:06 +0300 Message-Id: <20250624135214.1355051-15-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" Tested via tcrypt module and with custom tests. Signed-off-by: Alexey Romanov Tested-by: Anand Moon --- 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 6529ae24b75f..9452f05d2f10 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -290,6 +290,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, + .setup_desc_cnt =3D 3, + .hasher_supported =3D true, + .support_192bit_key =3D true, +}; + static const struct of_device_id meson_crypto_of_match_table[] =3D { { .compatible =3D "amlogic,gxl-crypto", @@ -299,6 +307,10 @@ static const struct of_device_id meson_crypto_of_match= _table[] =3D { .compatible =3D "amlogic,g12a-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 Wed Oct 8 20:42:06 2025 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7BC62D9EC4; Tue, 24 Jun 2025 13:53:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773209; cv=none; b=Rf2es8FgNjKpJhg7d9zEhRNXxlivkcqKyoJzdJkMT9SUsv+6kwjol4AxALCYQ1cKz6OCCZquYAPxLfox0f1iD42dqLA4WRp2QzckNURqpocIZeI5SvOpdZkH98A/aey+x60M5S/TNEA8ndSn3EL61HOWjToZssuCtepYmnfIAT8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773209; c=relaxed/simple; bh=fSeZdx7/xTUHYwFlQuI2HrbMiEC0GcM6M74lWmTnauU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lyJhPOABhN8YIVpqC2XT/vriDk/lFEMYRlSqkIfI7RhreuVGdiLYIi4MYMu4GYXsnwTO1/JYODbw+NL3bE+NUh/0/ANFyig0A8PDKOFuLbokjlUrsydP9GEf8q3MhaHZyVRK+32lV+aW5Ac0lv1SYkAxIX5BysYZhgOaqW7+b7Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DOvU708c; arc=none smtp.client-ip=209.85.208.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DOvU708c" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-32b78b5aa39so56401611fa.1; Tue, 24 Jun 2025 06:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773206; x=1751378006; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2wX4W0I+7Z0KtrMiti+/n9dziiQ8RSkVplIT9xlgIJQ=; b=DOvU708cadQzHMmA/2FERTjXsziTEnKYhD7iqkBqiajvBmgLH8mNY/7mc6LM2e/GTb goBDBXD02mVmX+StH0PrikktzoJXlvHnyQ5R7rHKgpY5EJOZJIlky+s3SddgwoDBjibB guZu/bzH2/ptctMMGH/8ILTP+H5H+YHJiLnDKxUW4iqa/mp4RLEzC0tzEvHbw6OOPYt0 vOpu8H17NSVzmuqOZlOFQInFUidantI+XK1/S93jSVMJSkWPSUfnnjtV0Q3r6mJYmYop NVJjAnLD0rmzABpqLfRG7DfDqaM2T5IY9aViTXXCvxUhqcC2XLl6nSPaEC8xYuzxt2Gb eDJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773206; x=1751378006; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2wX4W0I+7Z0KtrMiti+/n9dziiQ8RSkVplIT9xlgIJQ=; b=j+o9vScIYkyphIoSYTYGwnieNsUTPqVmkJlyUq5ELK6KotFzoU7qodnCK0xkqvgjDR TMCyCw55JGPW9nIrNH69wgBAPFK1JexgGOYZbqXnAZee6vCCc4n8NNnJ/GMrhuFhVfYI D4LhJ8Wh9/7SCpc8a7wBU9OeeHlRYiXuaZL2tqQcBAVh1cL4ikp2YyV6I5yJI+DGZrwQ goE2UVf2kO+JQoEOTNQV56/Pid0d6o+u8O4a+GBLX+AcagwDikbf8C42n8pW6+ao/qiX iML3VRj+sAgCWpoP+rIiozHUG9QGVjCTtHoqmxTI/ogKMBTz/LfL5/nFdpRkTCKHmJ8t QWCg== X-Forwarded-Encrypted: i=1; AJvYcCXjTwVioZ6jz80s4PKa3dWYAOt1+Car1XU4dEoyl48mo1NhWZQs7PLGp2dDGNgkGYQLcb6Cn3HdTkgm5U+a@vger.kernel.org, AJvYcCXmt5A8VmD2HDgqTezBRo1C1OM6eRT+fUZ/gr9qPMoaYQoMtqhBO4T9+EFhYfpdSVVnAeX7B5HScPa3@vger.kernel.org X-Gm-Message-State: AOJu0YwvalkqVvygCQIJpv5cYPLtn2amI1yq3zGKMeUUGVvJcyQIhui7 9l1hFcLPV52rftRJbbw8ZYSmSpiYpYuc+R16LmHHLgt40MopnRZbaboQ X-Gm-Gg: ASbGncvBZgjTd8v0oSKPQ6gLy8YLUdV9THSkByrArlo1nLBHhyeVRd2PA2Yd0ayemDS SU22lTVk/J9bCG2i/jEK0olV1eXEezpbfAbUYapM+lXtgeD1M5LOPSuUjDT6JZeYfpGsfAhL4Xp z72tDHmFt6aVPAomhvQGVWT1kCBBqX4JJKzCHC2PyHYf7QUVNlF+zzSaACnRcsG5GG7XHQBj0F7 4ZyHEaI4mWqJaN4ynzGjTnG+AAyF3vQFaohlALTxTb2ROh04PX/j22dyG1gBFEa7SUy7gMYb9YP GtSaoMWIThCruu6hqNdGjyPmRaEJSJhDbsq85QFFuFNHjIHk/ooJ+OlN1ICxWCSPG6c6GLnxOt3 2XnJD+wDjlwUwhIwNTmYCAlbdk5h/jEgqIcuxEHS+WwxpXjxfoqvGrDN/hUie0Q== X-Google-Smtp-Source: AGHT+IEQJZnJ9VZ+SzWrpy1cDVFBdhya8UkwmDkT4ryLdnwY06/Wc9BOqbcHUd4bE5urYlG3ueC5CA== X-Received: by 2002:a05:6512:3f27:b0:553:1f90:cca4 with SMTP id 2adb3069b0e04-553e3bb2933mr4766415e87.13.1750773205840; Tue, 24 Jun 2025 06:53:25 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:25 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 15/22] crypto: amlogic - Add support for A1-series Date: Tue, 24 Jun 2025 16:52:07 +0300 Message-Id: <20250624135214.1355051-16-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" This platform data also can be used for S4 as fallback. Tested via tcrypt module and with custom tests. Signed-off-by: Alexey Romanov Tested-by: Anand Moon --- drivers/crypto/amlogic/amlogic-gxl-core.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/aml= ogic/amlogic-gxl-core.c index 9452f05d2f10..55a35697c0d7 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-core.c +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c @@ -298,6 +298,14 @@ static const struct meson_pdata meson_axg_pdata =3D { .support_192bit_key =3D true, }; =20 +static const struct meson_pdata meson_a1_pdata =3D { + .descs_reg =3D 0x0, + .status_reg =3D 0x8, + .setup_desc_cnt =3D 1, + .hasher_supported =3D true, + .support_192bit_key =3D false, +}; + static const struct of_device_id meson_crypto_of_match_table[] =3D { { .compatible =3D "amlogic,gxl-crypto", @@ -311,6 +319,14 @@ static const struct of_device_id meson_crypto_of_match= _table[] =3D { .compatible =3D "amlogic,axg-crypto", .data =3D &meson_axg_pdata, }, + { + .compatible =3D "amlogic,a1-crypto", + .data =3D &meson_a1_pdata, + }, + { + .compatible =3D "amlogic,s4-crypto", + .data =3D &meson_a1_pdata, + }, {}, }; MODULE_DEVICE_TABLE(of, meson_crypto_of_match_table); --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7782B2DA746; Tue, 24 Jun 2025 13:53:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773211; cv=none; b=Ze9yy79z7ZI9WsI2d2tGeYjCF5/GvNn5jWvBVApF06tok2zYXjmS8HypuZbt+QrCOjuyT5QUdPDh8LHpq43wBxsxYQ2fKFBIMmL/CQvz5VIWsgvd1R3nJ77gjUusklOqpY2KpnGtdo8rk6/MRAPq1mNM6b9xGUlEQo8mmGCxgqU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773211; c=relaxed/simple; bh=FB3vxSlu4hIcjqB99Vn0G/Ex3nRoTtJXDYzEZ35BwcI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Pwk7ditGFDQMfTK3uvxc3dsuhXKfcHncU/2+/YP4SelfECIWnNddU2/9+oLLwgx5y+ZM+YVnanOy1SptFRKxDnCe+gRl7riZ2QihsjHpHBGQSsjDRi7cGVUXiyAUyL1RGt/zFV/scrMCLPOPwuuQ/owD995IctMhgfVTZ5SL3F0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TGDp6VOd; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TGDp6VOd" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-551fc6d4a76so422719e87.0; Tue, 24 Jun 2025 06:53:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773208; x=1751378008; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XrOdE+R8rQ7wb6yuGln1m7tHcIz53gAsWt13GY/qj+U=; b=TGDp6VOd9J2e8KqagJhMQRctDs9xZtPU0VAarRPjQmeKapwm7tO4yuZaRR41C46h5p v30GkyYuD5vOq100O4N9/gzP8XFtsk5DDB0uhi15Gr9Hybn9NrVp1fnYuxNHbP5HFd06 llFeFZY01o3ieprlDHhtf5gzIDtKlEsBMAPJX4mNlh29IzKIUMhG4RvqSmH0VJgcs/eG fogC6Jn3t1YvizFvX/+7WJhtvE9N2JxK39CgLujQ+tMFxUZGqFARMU6iBx0TyNGdSpGJ k4gBo1th6CH2AF9YGOZ6BRheCIZSOn75sE7qvF0yfDoN1J0vXVrXzwUHet1WkMixL02X 8pCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773208; x=1751378008; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XrOdE+R8rQ7wb6yuGln1m7tHcIz53gAsWt13GY/qj+U=; b=Se0H48YtZTIs0aVBRK2wVBZq+1Gf0RQOXMQ8JQ4LH2XZvnBet73Bo+KxG2qWyxtQPK Im4g3R2hs7tstPfpUS9jK+XP7i1tOQJkgV/1uBX85T2BKlhNjLFbVrdsxsa09D0PqygT 3CRz5URi8T7t+scbwUwgFfim5OIFXYqjCGjhd/BodhJJwzg1zWERU/xwJUDXHS7Qhj17 oXHZK3sfKrA4Pzh3boQg9aP0cI3KrWOStdpXVuoZnpkw1HtZxp4y4dVyTnYskKpDKLG6 rXTCdtEidSVKvz3miNwL+Jb3iZ/BLbqjwP84GW4Xk4DWAKbQ6v0GlYssACm4YWM7avv9 60KQ== X-Forwarded-Encrypted: i=1; AJvYcCUMWd+FohRFNPuTRjsWsW+t5W7XBRR0dYI7lf6TIcbjWnsNEUgqr1DN1EOmwawOmtIlrfDf50t/UTwT@vger.kernel.org, AJvYcCUehXpcpi36gfCJELa40FEgwWog2/8ViV3v0TekaX3Ps9pncul79WhPOGJHQzNtnWsLBpKdMVJF3EB/NFcB@vger.kernel.org X-Gm-Message-State: AOJu0YyizSQQtb6EF0+/A4OxRu3eVN1eLdzauIljqsCKfy0LmP35QV4c gdFF/USIdqRSLw5J9/NxIVlifr1pmqtoQHHqfXsBuqGagvhDys8EA6sS X-Gm-Gg: ASbGncuPXdgZUljrMThfkcQJ/3sltzC/vbJq0rMy76zMGnPYITo66WZ+hNpzBNGgVzx /DaS0fo/pn0xvbDjLZVnvxrcEDDYfigdUuDCbsNR21FrZjdjyMYDmhizac3aaUb0Aw0uxA+XXLU svBLnC6lbNfWxS4gfVdnjD/ZMIxQZOG5wB+tEAbGuQN0NT3jhZw+qhRIl5sqTiM2vGHEF5HnBO2 4I14Yy/CEQJyOa8bzpjg38FRUBTLAUSdyXBzptf6jJAdGAtw+d3A3YG/4rxAFSvzudtE5xD20oL QSFgLuf/Afwv06Dq0gYABgdcZrZ0hmxn0UWtUO0ZD+q4YrXKoa9yDpHzTPJ/JySApW/CJFsevFy whPYXuiS3RfipgE1up5IE11T/23LrBBqaf/nhggfvInNI547qVLSNwDA9ntucyQ== X-Google-Smtp-Source: AGHT+IHafsnl4ECTZ03u9TitK28MH2CBXpSvgAgKY7MlFSCMzj5F1inb04eM/bVapqiFOJ6IXEiRzA== X-Received: by 2002:a05:6512:3a95:b0:553:aaf1:f63d with SMTP id 2adb3069b0e04-553e3cfd76fmr4317885e87.29.1750773207460; Tue, 24 Jun 2025 06:53:27 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:27 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 16/22] dt-bindings: crypto: amlogic,gxl-crypto: correct clk and interrupt lines Date: Tue, 24 Jun 2025 16:52:08 +0300 Message-Id: <20250624135214.1355051-17-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" GXL and newer SoC's uses the DMA engine (not blkmv) for crypto HW. Crypto HW doesn't actually use the blkmv clk. At RTL level, crypto engine is hard-wired to a clk81 (CLKID_CLK81). Drop clock-names field from schema: name "blkmv" is invalid and "clk81" is confusing and sounds like something global. Also, GXL crypto IP isn't connected to the second interrupt line. This binding is useless, there are no users of this line. We must remove it from dt-bindings. Fixes: 7f7d115dfb51 ("dt-bindings: crypto: Add DT bindings documentation fo= r amlogic-crypto") Signed-off-by: Alexey Romanov Reviewed-by: Rob Herring (Arm) Tested-by: Anand Moon --- .../devicetree/bindings/crypto/amlogic,gxl-crypto.yaml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.ya= ml b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml index 948e11ebe4ee..fdc39797a2a9 100644 --- a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml +++ b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml @@ -20,20 +20,15 @@ properties: interrupts: items: - description: Interrupt for flow 0 - - description: Interrupt for flow 1 =20 clocks: maxItems: 1 =20 - clock-names: - const: blkmv - required: - compatible - reg - interrupts - clocks - - clock-names =20 additionalProperties: false =20 @@ -46,7 +41,6 @@ examples: crypto: crypto-engine@c883e000 { compatible =3D "amlogic,gxl-crypto"; reg =3D <0xc883e000 0x36>; - interrupts =3D , ; - clocks =3D <&clkc CLKID_BLKMV>; - clock-names =3D "blkmv"; + interrupts =3D ; + clocks =3D <&clkc CLKID_CLK81>; }; --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 190812DCC1F; Tue, 24 Jun 2025 13:53:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773219; cv=none; b=nJrqIHiILXmsJ547fbbniVfC/PWVQ0yB/uLKjGNlHuDxNEBc3PIXu0gMEYVvLSlny40Y9Ub4jC4pwKpzh61YYpl2QJr5HoMVuvrEZIwS0p4t9tmaJVHQAscAuVpjY0AV9Q2nr3u1cVV90tAW5nVoiSe2cQURYx/T3ZnkvnZiJwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773219; c=relaxed/simple; bh=UtgYoR2X57K5tJsVteFObkUGXRzhdTxd5+e9rq/oEL0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hAeIpvXGQc2npkhGbPRhjHgxC5CQBoaQ0o7wNb3ilHdxNKZJZ94wvuSb97KgO5FaFmF9enlXs1x9bVfrl9XFkUyBWI7xlIJWvvhbr5Znw37ND3AhtdFsTYVgD6wytvEm8zKgsNLgKq0GeoNe17Tsihwo2E7ZX7Q6dNColn4akVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ddg4Nzs1; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ddg4Nzs1" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-553bcba4ff8so5497507e87.2; Tue, 24 Jun 2025 06:53:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773215; x=1751378015; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1pNAOsr7oBRaoQ01PVf9vESlXHVYj7tbDwKZX+rkhTE=; b=ddg4Nzs143r8s31P7djlYLYjGBUdNQ78ym5NKD8bKGujkKPeNzBJFvVN3Zz9Z0dreW GtvXe5Ia49DYH30tNutqnLZnP5q4Gqui3JMm31OKrItwMsoZt9SLfXuKPd4k9QNk95F9 hm2yKmo9iiNbPOAbuGgYGQADpiZ0iZFPJ0seEaaflZeCHbkE0GOy1wIygGGeC7gIN9QF 3cLATIqulkyzEhQB1cYJ5qf37IxYMCUEI4tjjYSGTCOyINrknhbwO3AHTElpQoUV4KkD oo9tlcJ8X82k4V5I10AIz8DxIV2uFRpirCa/XYn0sF2WEs7KIJw+aOOkNM3ofiJjhfGN wSig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773215; x=1751378015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1pNAOsr7oBRaoQ01PVf9vESlXHVYj7tbDwKZX+rkhTE=; b=wGULi2E+HiH6fmB1VSpw/gVhggV8bsM9r+0FLyD8edKjX4MbgfJUobulP5qetqYvG/ B67zDeas7O2/Rxqw0MDx9xER+1QVUd4yHZV1pM9SNwPb4yM+AEsN8D+nvmaO8kkZtK2Z p8rt01DcSxszsnYIUGgo0Id9A5AeC5UqOzEmGvl1YE3MwUuIeWOYiYjFDunyMF/l9VjX ZTPl+vmGdHsXa1q+/CAR+8T0IT5CDMPk5ceKScour5YkCXfBviqVRK9ALmG1q0g4XCeZ GMgGxycxBEsfq8J7+4uvrReZ+u5rhyhV2Qhrw+cURkg2bEG7w2vBAS4SFm/wC/eiMoJS oWGg== X-Forwarded-Encrypted: i=1; AJvYcCV0BbdnoAmk34YfSU5EXvOn8UUJqIZDaEjLOCGDg4lysiMjLEnrzsohCYg/+O1rnN5/zBKGkf2Af+O5@vger.kernel.org, AJvYcCVN4lEdODMWXw9SMI0jRv8wW3UWtRUNzskZA2CnWYWQ7WRd+VYjg4rjOZgNc2ZOftoyFpGU4LzIxoA/xomv@vger.kernel.org X-Gm-Message-State: AOJu0YzF6LSoVF/pTg3EnwWQ1tqM8WvbQgqoTcioYM06JbqcYQ7vWUEx rRVFw0MCbAqzdhVcCn8UqHl4FoP560a5azVP4gS0nnlvnpkbByVEEZ75 X-Gm-Gg: ASbGncv8m95ggJ8yAYYlhQ0QKSFMJcxbZlVC+KBPZT/j+paOAe0DT1XPYHJse0vZlY4 0dFj8qUPq1n1mU9Y9CqCWj+dHRqECEuY87OvdDhq/ht5Gh9NpKB4kT5yw5/UiL9HBEEE0x8Hs40 vaCaJY7kRFwu4/WbbXSdwkWcb7b+F2oyQTi6okXhAif76tLqqAkebBHmFs4G8N1jbebwyJoeaIw A2DW5kt4mlkN1mAEtAkiE0/cTmrt0oT6zoz6eaxDcC3o4bK5POqVnJAK/zAxM2S4Niys0mncvc3 5SkmekTeOKnqzmwUJcZ4jFsjEv77oprxak3M+BHo4L+iY7QNsjaeNWAiXKcEu1P8YSzGqxiwfKc gbOpWImT4/yofe6tVuHybbX1A6Yph4Gd7k4Eh86Hg3UbDsb9VHL8dw+8b/sEYxjayuXsk+i35 X-Google-Smtp-Source: AGHT+IFHoqsn5l+6wnf/gfhqMIvTUVLCfhefWnXG0QHSCeZSMNDwhCUiamUKfO/EUExW2EQxIREwaw== X-Received: by 2002:a05:6512:3e0d:b0:553:50c6:b86c with SMTP id 2adb3069b0e04-553e3d15539mr4868398e87.57.1750773214903; Tue, 24 Jun 2025 06:53:34 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:34 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 17/22] dt-bindings: crypto: amlogic,gxl-crypto: support new SoC's Date: Tue, 24 Jun 2025 16:52:09 +0300 Message-Id: <20250624135214.1355051-18-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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,axg-crypto - amlogic,a1-crypto - amlogic,s4-crypto (uses a1-crypto as fallback) Difference between this compatibles: * Different registers offset and the number of setup descriptors. * GXL doesn't support hashing like the others. * G12A/B and A1/S4 crypto HW don't support 192 AES key. * GXL, G12A/B and AXG require a reverse IV key before processing. 2. Add power-domains in schema, which is required only for A1. This is specific vendor design: in old SoC's power domain for crypto HW was not configurable, but in A1-series it is configurable. Signed-off-by: Alexey Romanov Reviewed-by: Rob Herring (Arm) Tested-by: Anand Moon --- .../bindings/crypto/amlogic,gxl-crypto.yaml | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.ya= ml b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml index fdc39797a2a9..106a9d1fed69 100644 --- a/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml +++ b/Documentation/devicetree/bindings/crypto/amlogic,gxl-crypto.yaml @@ -11,8 +11,16 @@ maintainers: =20 properties: compatible: - items: - - const: amlogic,gxl-crypto + oneOf: + - items: + - enum: + - amlogic,s4-crypto + - const: amlogic,a1-crypto + - enum: + - amlogic,gxl-crypto + - amlogic,axg-crypto + - amlogic,g12a-crypto + - amlogic,a1-crypto =20 reg: maxItems: 1 @@ -24,12 +32,24 @@ properties: clocks: maxItems: 1 =20 + power-domains: + maxItems: 1 + required: - compatible - reg - interrupts - clocks =20 +allOf: + - if: + properties: + compatible: + const: amlogic,a1-crypto + then: + required: + - power-domains + additionalProperties: false =20 examples: --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E06162DECC1; Tue, 24 Jun 2025 13:53:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773224; cv=none; b=mVOnQFRxHwSOCrYv8dS36R4GiAuucAU5ZKLpBMswRzoRIwPgFGfDh+qukxL7RvC7ZcwGcucBHmEVlQ7BA2a+UWN4J0XayGdpfnRL3jwUrwMgI5Dhl0tfywlEUrLoJu1C23Mhqm7amKbBSRLLLv+VdM4xv1GySPos8eBAJtvjDq8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773224; c=relaxed/simple; bh=+tyvBQrQDjqUZZ3igayxlQkzfN/crQ6BQzmaYmCVgV4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aWix+yJLYQ1B+Nor1lqIKL8VMwMlMdx1ZcFAUS1Dr/ZWV+oWu0NJ303vBU8JytrPLicKw9e4IZ4alUbYUqrq7HNOueC5kw5bMbkLaqsa19so6YD/L0QtoB8Iw31QZm/wnw6zi0MmpN8ZItA2wpIU6cUc9cj9U8Eb0GKf+lfk3uo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WL9ppkrQ; arc=none smtp.client-ip=209.85.167.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WL9ppkrQ" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-553bcf41440so464519e87.3; Tue, 24 Jun 2025 06:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773221; x=1751378021; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M/kNUTOdbC7EKSH5yBbwmpZAVzw6PRlNtho+61DZvd0=; b=WL9ppkrQXvpw8OLEdAPq0xN8Q08PjSjCZnvHgrzXIgCvRhuC3lSEde5fLQ9fFgNE9+ fTS9RL98HU2hhg4ne+5VmlWfgzZrShxYsXZH+O7b2GVSwPa7hoiaUkqX2sMYOxedoW9R hzOiKO9LqyeuQ2pgwNCPtY0CMFfNPjV4U+KfwXD7kiJUkhRkKtVX4PtLYvImhEs/wHvB an0xVUeSU8S+B65VX3ZKzBBb9o0ewcyyK9lbBWobQoJMC6I01btSAZlcCiAkF4UmCEv3 dz3Q6uP8TMQ54CZ3ZLdAp4t0BfJruchfU+NTLmOrDp3a7kktnlVmIov5wtiBQGV+gvlY +uNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773221; x=1751378021; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M/kNUTOdbC7EKSH5yBbwmpZAVzw6PRlNtho+61DZvd0=; b=ti7/Mc7fTkgh6spwgck8SnSUGZafHH/LLTJ+SkQ0BwV+csXB77P02UJUlCqeY/Odnm SlaKBnRVVBnTGj5ZWGKiypyZdzlqdzmrJ/RRbKJMOWNHlTBafTFS4jTB6oSt40Id/JCJ 2Fb9S8U8CQstgH1W2jrrjJ+5PNGw9VdM3gQpV5AL0UCqIs2rq7+FajrjrIM8C2rm94SV WvsCbk8jw0d3i3RGZ9SIalFZD3ellVUhFgumKRM/gFQEgKbVyKHKjwWp0eAFebnFx0gI VlaGP25T7roK56OhG9TKjJ/E3lMpwDRoHVlYdm0UxSZ0jyRuaBj2jFz9evCdnE6wzFRo NQMQ== X-Forwarded-Encrypted: i=1; AJvYcCVSgLL075DUgqJCt8oCuwNDO5Ah0aqanKWmRI6M7D5kO7ZQ4u0xuFeIXJB2Tm/B/C4K5sM0wgiT3CUQ@vger.kernel.org, AJvYcCXfF4YcWkffC66XdMmy2ajxl2xxY6kcu5DYxVatFKY0qu3wcLYJEmf2rE0zYhudE5N4n2gLtHdAoaFADtPj@vger.kernel.org X-Gm-Message-State: AOJu0YyYIguQE0aIxXOh0jFZE0id33rrRCHLfYUvg8Y6ikrPj7jNlnuB bMDLfr3FjCuTwTiMNY64Ipt5x46V3NxNvdoP4EDYck0/FG/3G60zWIya X-Gm-Gg: ASbGncshtt/aSIVK4C57PtxQQqID0bI8LvwtH0mlfbjKtT9pqFEoEbySUBlmjMjtNmG xyRqwArAwi7q3d3kM7X7cZrN9zPygICioXkrq3+5ILKKLihXzRYs9hApVz7KfjE58qxXrQ3Pp3x zZn5pBnIgtr/HRzvC1c/Opi9uvf52WLf+NEmroxnqxvEBihph+AZQimyBii817nnFA3NgUpiRqr QX3PH68GhDawbn1A/ZeRiFkvEgYpLwAyqQeAwj8Xlw9lhimLz/K+VxbjM0zue6ZDuChFGh4CZnQ jORLN2YkychygGI2yA4tPL9kAm9+6cbb7qTk0veuvRwTKPiDVmz81q7sQ2Il9O+g23bzgAqSvRY vJXwos9nFs73fcdCDOH18mDTYE1gCbz3Lz+mgSJkLMjhXLD65t2MeGFKNyuYlaQ== X-Google-Smtp-Source: AGHT+IEu8py0reQYVPpn8LASHx/iO2R4OjsoWGj/5WkGy9D0unPBfn75Kkp+T1/d+Wm91hqFvsrYWA== X-Received: by 2002:a05:6512:114f:b0:553:adff:87da with SMTP id 2adb3069b0e04-553e3beb932mr4323147e87.29.1750773220869; Tue, 24 Jun 2025 06:53:40 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:40 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 18/22] arm64: dts: amlogic: gxl: correct crypto node definition Date: Tue, 24 Jun 2025 16:52:10 +0300 Message-Id: <20250624135214.1355051-19-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 Content-Type: text/plain; charset="utf-8" GXL and newer SoC's uses the DMA engine (not blkmv) for crypto HW. Crypto HW doesn't actually use the blkmv clk. At RTL level, crypto engine is hard weired to clk81 (CLKID_CLK81). And remove clock-names field: according to the new dt-binding, it is no longer required. Also, GXL crypto IP isn't to seconnd interrput line. So we must remove it from dt-bindings. Fixes: c4a0457eb858 ("ARM64: dts: amlogic: adds crypto hardware node") Signed-off-by: Alexey Romanov Tested-by: Anand Moon --- arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/d= ts/amlogic/meson-gxl.dtsi index ba535010a3c9..aa37358382aa 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi @@ -68,10 +68,8 @@ acodec: audio-controller@c8832000 { crypto: crypto@c883e000 { compatible =3D "amlogic,gxl-crypto"; reg =3D <0x0 0xc883e000 0x0 0x36>; - interrupts =3D , - ; - clocks =3D <&clkc CLKID_BLKMV>; - clock-names =3D "blkmv"; + interrupts =3D ; + clocks =3D <&clkc CLKID_CLK81>; status =3D "okay"; }; }; --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C08592D131D; Tue, 24 Jun 2025 13:53:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773230; cv=none; b=baAdtdz1JVvJOTOKvXMZ/rob1fncsp2Yc0Jv682qYJ0GoiUGY48UtSzZ8+ZpxZwujETAfXAnEn1HiMKhBorcvQMkl6D/UHMRgUruGE4ZC5WxWenXbEYaYl8hYjI33iPPRkDYXNx6rT5E8XQHc/8D3L+JhOQKA5QD77DSUvhCguk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773230; c=relaxed/simple; bh=VwbAEzyL9pZbHb7fvpzTgy6XPbSmaknMngB6sM0R8GA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e28+6gSSHL6+dLHD/Qn5XAE4x4mJqK4uf2XDvCIPNh/CJocbRP0EmpsPbAfPmKb+DCGDPvnjkxEx/jxDFwhpnGYnBJ9BZ/lRQUSFiCYKo8yFOOm541HdxYfZSM93ws+a+LrVdI8GdBB0zRbNskXA41wm57ondNnDgErVrXwZ/8c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=D1bZ3bZQ; arc=none smtp.client-ip=209.85.208.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D1bZ3bZQ" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-32b910593edso4149301fa.1; Tue, 24 Jun 2025 06:53:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773225; x=1751378025; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZPoRk4bv9TKG/GPtay/klnJZ+Cs5fblRZBWiTndC3ps=; b=D1bZ3bZQZpFhM94lVsw10XV4H+bVmVWQZ0BKEH29tPQt0pjUOTDon9yNeKtx0Kcx4F +5A87PJYwhz1g0RIp1B1g66aWbRDITDL3N1f1t1Mt6x0/ejpJbnkGW08JJnz12JxO4ir JNeWxRFFReFxg6EDFS8qd9CyBUxeI4AYRZVShbLgsCWrZYko0Woc/AzKQ6zvb2anauP8 vSsHktM7Huz425MGm95xJriH+bfzfP+cf6VW0LCxbxr5u3N8ka4NxCt3jjvtnGfVHaEo sAtdzciJWd8S1uq5jhxvZiiYDrCWf0a9mCSCFgCXPDzz7fewbMoFEWgcfMQaQRqzRZ29 zXOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773225; x=1751378025; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZPoRk4bv9TKG/GPtay/klnJZ+Cs5fblRZBWiTndC3ps=; b=JdMMusJWqGIUCKjHGPF3JIgi6Cvsl+a3fH5XFxAXb/778AEOkrkrKXq4QLotmYbKn+ 7tlrnIWZ8HuBvu8uajlnYjHsDxR5xcd2fVALYH6MVZ+R7leITmHDi5M9gQsrejvE9tRp TcVakImkO4xzd+rZXbxETBMkGush/A7EHDkimdqSQdFO1t7Q9XiPoXCrtdymVOm/jLcn lLP2Z+le1aI1QYDHPwYp7U/ozGBSE1YE0LdHhGKiDceGiRX4JwyTpRQETttOig9ZCMau UlXZDU2Nv1kwVKQM/GldfVAGyb1p9eMHAipkuoOfjzjriYUBoqZuzz7IR3YDukY+6sQb hEUw== X-Forwarded-Encrypted: i=1; AJvYcCVyCfb9X9GXJgeHnv10izGVdpZboQFABci7xj1fEsrX9zc1Wy77o6XYTietrBhWE9wyRto5xHRFKgSQ@vger.kernel.org, AJvYcCWNkCIemDA04T4ZXkkSYleE2Tbu9byVf6vbg3YeoSQ14lYuy17hicMs4x+GAFIPLDmBaA6ZcyvqXgPJ02kS@vger.kernel.org X-Gm-Message-State: AOJu0YyqsK2HzdEWDarQ+ubRTZMX4s/605o2fru7pH4GUS9qn2fG7xGC yKXG/pS5Iy6eb87lKico5tXIPZXKs4/eFp5D90bO/vruoTGrMForfHWR X-Gm-Gg: ASbGncvW/z8wm6LexP3DEE3Nx59Wu0hM0QD0gxaTefHGojgV9cZ4BgumZB33157qH6Q oJ7tl3zts45jSNFZ98nc0DXhLaz8JPh7tCcEdN8kTZzkuP9lf0ZWDAl5mA6DE7kiVnd6Zuw96U3 K+Pm9cKQtVIW4b6ucjOuJRaWf8EXidttJMYTRAWv9kL9Y3zvzaQ4To3eC/gqaobC733/Sx4sZfN mTc2escBspp53+rq/gbO7iGHlefIfYy/hqgvId1qbVaWtq9v4gesXJJYL7zVy/b782j6csXLZpR +QzI1ZR4NiW4R3S0pwDxHwYpyaONWJMbybeXOQ3IPN16MyrSlW+lm4cISygxqQ0PYA+e/YkqWKz mYYWdH9dvU17SzNdtONwa1f/ku3JGIb/mV+8p4ANcifU5xYZzlTyhDL7u4ecT3w== X-Google-Smtp-Source: AGHT+IHWrITTZvm4aBKFUE/hCxGWyHHpvUd1BpQ3eCCcJAyK5yg5EVhrHzcqwCBgUXfsrRLShgxK5g== X-Received: by 2002:a05:6512:108d:b0:553:2e37:6952 with SMTP id 2adb3069b0e04-553e3d0e223mr5416531e87.55.1750773224715; Tue, 24 Jun 2025 06:53:44 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:44 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 19/22] arm64: dts: amlogic: a1: add crypto node Date: Tue, 24 Jun 2025 16:52:11 +0300 Message-Id: <20250624135214.1355051-20-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dt= s/amlogic/meson-a1.dtsi index f7f25a10f409..a2f2f377bf99 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi @@ -665,6 +665,14 @@ sd_emmc: mmc@10000 { power-domains =3D <&pwrc PWRC_SD_EMMC_ID>; status =3D "disabled"; }; + + crypto: crypto@6000 { + compatible =3D "amlogic,a1-crypto"; + reg =3D <0x0 0x6000 0x0 0x48>; + interrupts =3D ; + clocks =3D <&clk81>; + power-domains =3D <&pwrc PWRC_DMA_ID>; + }; }; =20 usb: usb@fe004400 { @@ -746,4 +754,10 @@ xtal: xtal-clk { clock-output-names =3D "xtal"; #clock-cells =3D <0>; }; + + clk81: clk81 { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <64000000>; + }; }; --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAA3D2C3265; Tue, 24 Jun 2025 13:53:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773229; cv=none; b=uvWLszJoLl7Sa/0fmL80fcUV0Pj2Cn7N2FQN9OYhtr+e+yvhD3Sgt22Y1ZYIxqiRtO+7J8zJZdV7k5OMfUXrY2dMaKrC6IUvzyn4f3boZJQCWul2Omf/eEMejkg6/6ucV8/pIQm8P+FiEN0bzSuNEVfSH2UMWYwPe1Sd9L9aHCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773229; c=relaxed/simple; bh=lEpmw1OvKdosAkcwZQTIaVjsiOJJxS27WNgGVVTE8J0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lAzLLUD2afIK00mO9qiSj6MjaV2KQ1rsVXDNMgj+SqnD4O5Wia4L2Fm9f6k29tLAgjiyq30SSlwIQTugygTp6BO1k+uTTTUh/vO/YQjP6suiKedLa1RwnN1GrX7Ck6iQlhUpxpQG7775UcW7UP3BJNsgnnnqNwVflL7cIlwKcqk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QU2xMQzB; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QU2xMQzB" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-553b544e7b4so5592873e87.3; Tue, 24 Jun 2025 06:53:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773226; x=1751378026; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ojIxQ7ZXn4BuWD/72s/OuzCO15xAe0zqbzQsADO8BmY=; b=QU2xMQzBiwFkEymlaVJ/jkSSYOODw8cqsNTRun9D4h27/JeFo2UMQtd61sRTkyerG3 iF4+RZfcHgkOGeKtAniRsHiURKpMoZjzuKCrxiMU3iT3v0MUIOThSr8pro4R2M+VaGu8 GBDeFHEDP30ZNFTbdusWQVJZjWTzzb9TyZkJi46PUHuGMd4hYNQ2sg/6+YTLXS6IAZr6 s0GxgG3qOolRB3hkRlYuJx8Nw+KPQpsmina8rcfIHtaOobpbvc0CACo3scfycAZXn06m mbEhBAhPxyqu8PkeIIb5qxmerjyjb/5+kNCDNgfCoSCRNwhIhZkhLjNoxuU+IN1hBGDM NrnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773226; x=1751378026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ojIxQ7ZXn4BuWD/72s/OuzCO15xAe0zqbzQsADO8BmY=; b=NU1Yl0b6oseF5o4ZDaWnhI3ukta7LkgRqzQ5b9vKnDKnw7mGF4QgaOJKtCfefABYlu mgl4dOSSSJqUoCasfD/qS2SKQjsrvtfyRkYAZ7blktS2G9w8d/jDT13Ia8Xmk78bRWsa IiGkcVEq9fol7csOzVT1d1aKxDpInLTtH3O8KpDKP3jUihx91+oxAx+Y6vc0zta6Zo2b zAuC1e1XLLqDnrifeo1IsYXQjl9Rdqik5KJ6eJO6hz6fZzBFeL8vlKrOK72/Kj+vQPQ5 l7/F8iuQNEeSiLE9kNnDrTNcVOAhDbRdlCfE7HLxpSwEbbciBW46yY8eWvOETRPqe6IP yArw== X-Forwarded-Encrypted: i=1; AJvYcCVAaj9NUJdUVdQErHRxc9KA0JLHC9fN80dFcMc4SHr9sG7b5ELX5E7HPtqKxnnuT66+EcOCPabz6/51Ujqg@vger.kernel.org, AJvYcCWKmWlVu2Id/EKOseFs17e1HogiuOmJPHQXwIpNsIFryiIfCLLqfjCbjoG7BQdDCb2/PURv+yVJnfRd@vger.kernel.org X-Gm-Message-State: AOJu0Ywca1ZkJxW+c2iMDk9rVGznj3382kqrLMAClBRdtg13MM6Ft+4G pTUNIK8Ym281tDiqCrcNHpfH3ud/FhCXNJpmxxJ0ogdvqdmWzt/LYmcS X-Gm-Gg: ASbGncvOSsDb6DiMR/rnY2l8tdUCHn1+QQAC1J2Jv43O7p/rFLyemdhoIhxKE9Zuk9Q M5Q1cK5VrcGxjNjoEeQ1L80JlZ+x20MHZTNLpaumgVz3BazfjlRTdAZTzQdVsICmyMr1SjwXq3Q Fw9R8mIvh9ZHiFUAEkYBdDWhZLUpIfkkVWnGZJgURPFbzwmc6dDOvqYewTunuA8YW23H78qNgVI JuQEJKjTV+h9wg+YTg1u/jGUCUIiIrNYtgKWI8uhR9W33ugIeU9h6d3qUNPha1zz9NZf3ubEW/t k4OKOUVQgTo4oiCJZ9sP8u9z3jCxDqenySB3EQ5aZxEFykDumSCiw2mMTedQyHvVZCpmhwaJlPZ zyBTR2kU3bdF8tf7FA96yluA+ageCCyVvl5mnscUtXAE1quDKi4S6MvatkiC1NQ== X-Google-Smtp-Source: AGHT+IEttd797kBbdZQwU83qr+T1pUIvczg11xawPSLQGuHM+rw95Tm4IhToVETAc1tjXhgqp5guBQ== X-Received: by 2002:a05:6512:3684:b0:554:e7f2:d76b with SMTP id 2adb3069b0e04-554e7f2d9c8mr2322834e87.56.1750773225873; Tue, 24 Jun 2025 06:53:45 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:45 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 20/22] arm64: dts: amlogic: s4: add crypto node Date: Tue, 24 Jun 2025 16:52:12 +0300 Message-Id: <20250624135214.1355051-21-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/dt= s/amlogic/meson-s4.dtsi index 9d99ed2994df..4c897073a33f 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi @@ -66,6 +66,12 @@ xtal: xtal-clk { #clock-cells =3D <0>; }; =20 + clk81: clk81 { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <166000000>; + }; + firmware { sm: secure-monitor { compatible =3D "amlogic,meson-gxbb-sm"; @@ -586,6 +592,13 @@ mux { =20 }; =20 + crypto: crypto@440400 { + compatible =3D "amlogic,s4-crypto", "amlogic,a1-crypto"; + reg =3D <0x0 0x440400 0x0 0x48>; + interrupts =3D ; + clocks =3D <&clk81>; + }; + gpio_intc: interrupt-controller@4080 { compatible =3D "amlogic,meson-s4-gpio-intc", "amlogic,meson-gpio-intc"; --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B1CA2D29B7; Tue, 24 Jun 2025 13:53:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773230; cv=none; b=r2tcQahI1sL1izDRJa7FyNI4t0ZHuuJ9gLHzwKgOwdakszdcmCgqD/8NcHXPHJvUVti7BsZC/WZzeXVSRy73bEJDu9xbRag8RWCS+S5Hg1Fn5ixr3t7l0nc/yJRFhX/rOexP6jtujvX3LL72yjHf6R9VS9lGu6zSazZBGtR6S6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773230; c=relaxed/simple; bh=vQx3ZdR+2/ODSuIo7HtfBXaQBQnGh2LvgbJSaSQsZ48=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rhoQ3YUeK7ReCmWtX7MDwBstX/lvAsaSpFCb+Uwf3Z2Q5kMqVeYDxZOk04mqITmwRwQvfBf3AoKp904Fa+eayul7akoG2PIv1gHnvOW3LoHq+WFR8fR3ZYw9PNcfK4LqOPBhdEMA1w5w/8pjcSC0k9ms9/rUVonEc7jPlzLBbsc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XEaCYPCa; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XEaCYPCa" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-553b6a349ccso5316137e87.0; Tue, 24 Jun 2025 06:53:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773227; x=1751378027; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1jQJntvtFNmhsJjBeprIa6dD80s/DsqB4EFJk8MMruo=; b=XEaCYPCaOBB5ScguHTgWG6KzemhBLSzLBJasPGk0UgdMkge7vVHQDqJQVG7AfMFplf 6xMOgRePfjAXVZMlHyxZCsDKGv4fxsJ+wzDdpNWQBccR2B9kOxmtB8H8BepwWY893ll1 53j8OCriCdBcsR7k2Zel+312ijKt55Nn0g7raZkzygmbXOr/J7fwjeJmC/7zFNJja8ic WuK0VK89yJW4FoiAyBXmlBdgM1eaQ84WpXAucvzZupQS2eckZLKfmnCScRmVEJUwm1Se p3J3IAob6wkyQANgX3GEofEM4y1lD5YcFhsHw/PoaZZQ0uwmQFbZlziX6PUkO6mINWCn JFXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773227; x=1751378027; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1jQJntvtFNmhsJjBeprIa6dD80s/DsqB4EFJk8MMruo=; b=pY0+Huly/Jt6qPv0CfFD+YqRRZR/7VZBICVoZSEOJqKf5Opj7bqIuhZX0svJReqevD 8wA0PU4iEh1/Vg/ZJWb8F5YTOkGa7r2cVhwSL4wxOshsU/MnaqxMlMFPmC05W3+W19lT v9UKOjBRW03haRvkB/3griFXA4BlrbKrQ3nhmxbqOkZgf+8s+/o+8FuZI58RStjwjsOf qxFylmJu5yYdKrR4pP1SJ8g08XNXL5uJ5g6D5axIJeepZIRd/PMZZaVpKxaVFGavgocG 4KNl6HlpCq00KLRiNRrz+T7PcxVgdoT4GH+5bSBbAfckJ8Ki5sv+IiIVNkW6NjqDOj5I ydTw== X-Forwarded-Encrypted: i=1; AJvYcCUt2g8K5qN9AjFs+OI9YRHPlMJl5GM6uqMdLWKCQwAdY2xN+0rFWJ1u+s6pZAVJIR7zcdYJCljZvar3@vger.kernel.org, AJvYcCWd7zIRCDpVfxr4CvoujDC30VN9twM/qOqwHKqiYaDuV6xTuOuE5F7I/J2nl1Sncvwa0JgCfjNHz1dkNBx/@vger.kernel.org X-Gm-Message-State: AOJu0YzjyP+41T2NbwyioT1VipGcbBL2TfMQlBjilGMMzkD2y4zdRIJI T7n2U6FStAbVe4HsRspGy4Yt8rMVp4XjrqvQeu/Uf8hr6EbmLet3smc9 X-Gm-Gg: ASbGncvx2BAmX0D+k6Y8zEUQE3MIm2Y0cikmFKHXyaHcRgBxf6MdeMdwLkolugBVQam 5ghfdwTvu/Vr6ZcCLDj44TdU1pcxrZPLMw8dglkyDSZ1EB13ibPdSbgyAVqcKZ4hwoaXla6+7Th 53OrNPmT6FKz+uyStgaMIJC3l+en//Lk+dL0uvrnumyW6FnaVpHs0z3Z0h43aZ8m0c6fofB/O3f 9W9B9ead1WidlnKq/QG2OTAJOeA24fCzTUpwtSv9P8iUOL01GP4mGpyml+FyM9gCBCTSFtxa+c9 IIyzLpIQCVerhh3SAQ5ksHrCsaKJ+86P5GDcTEXl9AChpXQowpS4RMU6S3YUISFl3+wWXY2bdhF K1eUqlmqHGNikc/c1ZXi7h+NNQpoMSulXDoLo7715ZmiAk+viUOEgGMnXJ5ilGw== X-Google-Smtp-Source: AGHT+IFf2/S2YwjUMKEFcRmp45CHy3/r/DAg440cRi8qGGyTc2TTxQABrRcN2lyeM/hW/FQn99VBog== X-Received: by 2002:ac2:5692:0:b0:553:d573:cd6d with SMTP id 2adb3069b0e04-553e3b990f6mr5756759e87.6.1750773227044; Tue, 24 Jun 2025 06:53:47 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:46 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 21/22] arm64: dts: amlogic: g12: add crypto node Date: Tue, 24 Jun 2025 16:52:13 +0300 Message-Id: <20250624135214.1355051-22-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64= /boot/dts/amlogic/meson-g12-common.dtsi index dcc927a9da80..d9aaca9f9598 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -1733,6 +1733,13 @@ internal_ephy: ethernet-phy@8 { }; }; }; + + crypto: crypto@3e000 { + compatible =3D "amlogic,g12a-crypto"; + reg =3D <0x0 0x3e000 0x0 0x48>; + interrupts =3D ; + clocks =3D <&clkc CLKID_CLK81>; + }; }; =20 aobus: bus@ff800000 { --=20 2.34.1 From nobody Wed Oct 8 20:42:06 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26D1D2DF3D1; Tue, 24 Jun 2025 13:53:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773231; cv=none; b=WVocyq+0+uwlrmjUA/KPiGGCj4boEiVtqDiRy2XusTskinrfJI59MaXXLM7zMJBrqqlfB8XSlVdsnvOVbTy4rYk7+0P2RKYHoocWzBMb4PhaIMDdTz07y8jLmwoXmL+XqSOvCOldOsRjxm+76+UbNFyjuLgNf+nt/jggfUBnaWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750773231; c=relaxed/simple; bh=oiGDOTQlQJJvb4XNy0QogZP8XaCDTe3pugDhckuwwgU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kVKklP7IO0/UrYiLRLzDRa+Be1DtdVwXq7tTkM7A+eb48ABd2yaNgNlsv4Ub8VuxWZPsuzwfEMOPkPl0kXTtyiIXxgM1zsf5GrQ0uD/y6iaS7I7JvpR9Nvq/hoHl4UJ2b7qIQQloCL9ijAfHm1D47k/8fyMAojpKlLBnWTFIml0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YYOJxEzY; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YYOJxEzY" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-553b51f5218so452233e87.0; Tue, 24 Jun 2025 06:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750773228; x=1751378028; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=at4AGtoJzuUSMRoGQaflHxu5wCpuyRhNqdSwxFevlHw=; b=YYOJxEzY60+mh/G8twOwmhGNRX5erhpyKSAsgProFQdZ3mzxFjxelw0GTnOhplEp0E 0Ab1CS+pbbQLs5rhFCBzh2Pj5DX0wD3P1EjLOwFIyiYdXT0FY6nVkKlU3wmsA+fBsvpB 5ovqXG/bCloqruYS23+oGbZdrmuCb6SGHF4Y2mC/yGEwjaMgnJkIwtiZ3B+t1T9zHo+x ZF7DqxQ7K3M8SXxPeSXl0BqMNRuYD6SSK3XlJVQwu6TkhaVkkPIvRumXlCj5NgKB7UwL oaXqriViFl7Go2gWYTMESKsO7Qsv20gQ59kx3o0p+9Xtaf8tN2YbWQDuodc9cat947W/ Eghw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750773228; x=1751378028; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=at4AGtoJzuUSMRoGQaflHxu5wCpuyRhNqdSwxFevlHw=; b=XNrhd8okYxS5mZgzV1QZJvCOHt5UTx4S8K2EdygFxa7n3i2FCj7HtllKLS6xYUDXCx 5diRNh7XudsPf1RxggJU8inxeUleTvm2VgyTlRfYlzy+FRVzbt5ja+6uiar0lvOmNt0H xU5Qwor0pyokULtcX3CsU1cg9MZO1gy2r17EW0qjjTScIERrTWTFkRUM4oRGILLHVJg9 2BzhOOl6Gs6dUYGrggeK2jGS1Gij5xatxswg43AMmdnb8zoXwizPqb8oOlr7fMs5B+tG EmfXwxQ/6My6zhIBxSkk8Lw2fCKGOlv4zFY23W+yhLIJNS0LGpkiJFaeWiGzA9sZf+yk NQ/g== X-Forwarded-Encrypted: i=1; AJvYcCUNPMRh+LmVGrj3j8rydET7snaqkTmKjXkzuIDtxKm0jUU8VFJQM295eyvi8fYU8KVIS5T+xFtlP12tghBv@vger.kernel.org, AJvYcCXBxM6O3AQoC8m5pz2GlonE28vdPxQmxvQ4LQv+wmHl4KhHKfFfg1S9n9l/x4/ziHAHr71O6KYRxVtN@vger.kernel.org X-Gm-Message-State: AOJu0YyU/aLS2ql6ksKFNJm1g1CeJglFYTjrnXCL6bxtpu/8D/8IhODZ thn9ZrpXcHi2V0rvvo3Lq8votiGYONGFzBuZPaUSuD8fWipPf2Ch9MR6RpQu+BAYUPI= X-Gm-Gg: ASbGncvw3pSrdzw4+bsiPVIqCLfOlSpJUEXwsEgLrrduPKqYLY7rIQUnSvccca9fTF7 2ib052M8K/l4W9aQgDJXW4wHjjPWmfSrBJdqtW7cq8uhqJF50HOIBX+jmRb7UpbOa/+T7MYCKs7 45qcPaVcOahkbuKHX/+WRNUXU1mQHqlgqJyUnGnyycFipTvx6w1jqnNqaA+ycTmfWZeeFt0E8rr 9Dnn3oolyQXl2yKtrGnGQ9ZnwATWwuUudT3gmkODdtrvFvzNyU/31yKkOKu+gtijrDu6lVPWVQ3 z9azADgwARpjA33fsX8xnhsdHBxNgwEr+6tyUTe6uqITeg9IWIyQXggSQnUvghzo5VIgr1R4cSt BLtoVFSYtKWVdKJJPyUq2+qOUJm+uhdHT+IWdXKG+H7OOmf4McF8Lp/m4lV5Amw== X-Google-Smtp-Source: AGHT+IFbDE+lWZiMZmwadCBMjxfgjChAjL5/r/S/Zb6cyZMzeD+uljn9vGxJOP6BB4iHquZJI37Mkw== X-Received: by 2002:a05:6512:3f19:b0:553:2c93:6140 with SMTP id 2adb3069b0e04-553e3b98f31mr5355681e87.9.1750773228139; Tue, 24 Jun 2025 06:53:48 -0700 (PDT) Received: from user-A520M-DS3H.sberdevices.ru (broadband-188-32-30-96.ip.moscow.rt.ru. [188.32.30.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-554e6dc186esm1282905e87.114.2025.06.24.06.53.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 06:53:47 -0700 (PDT) From: Alexey Romanov To: neil.armstrong@linaro.org, clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, khilman@baylibre.com, jbrunet@baylibre.com, martin.blumenstingl@googlemail.com Cc: linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Romanov Subject: [PATCH v12 22/22] arm64: dts: amlogic: axg: add crypto node Date: Tue, 24 Jun 2025 16:52:14 +0300 Message-Id: <20250624135214.1355051-23-romanov.alexey2000@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624135214.1355051-1-romanov.alexey2000@gmail.com> References: <20250624135214.1355051-1-romanov.alexey2000@gmail.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 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 Tested-by: Anand Moon --- arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/d= ts/amlogic/meson-axg.dtsi index 2df143aa77ce..f126097ab013 100644 --- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi @@ -294,6 +294,13 @@ ethmac: ethernet@ff3f0000 { status =3D "disabled"; }; =20 + crypto: crypto@ff63e000 { + compatible =3D "amlogic,axg-crypto"; + reg =3D <0x0 0xff63e000 0x0 0x48>; + interrupts =3D ; + clocks =3D <&clkc CLKID_CLK81>; + }; + pcie_phy: phy@ff644000 { compatible =3D "amlogic,axg-pcie-phy"; reg =3D <0x0 0xff644000 0x0 0x1c>; --=20 2.34.1