From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E40FC6FA86 for ; Tue, 27 Sep 2022 07:55:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231287AbiI0Hzl (ORCPT ); Tue, 27 Sep 2022 03:55:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230343AbiI0Hzh (ORCPT ); Tue, 27 Sep 2022 03:55:37 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCCCE73918 for ; Tue, 27 Sep 2022 00:55:35 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id l8so5987462wmi.2 for ; Tue, 27 Sep 2022 00:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=2nwWkT4441Zvq5igIAOKA8C0HAjPPXDmTRADPlAyhok=; b=FhCg6N8IdLUqYun9zFfNxEKEFxD/HuGTkniM7ShtX24traaLVPnNCQf6esKBn0W/kg 3yjeiHkQXXz4+27KjUI70493oisSzR9M+ECcruAfQ7DAoW3K2SxW0OPUFapVTtqi9hR5 DEjiIryUck3YbGPpR/3H1zoaJlaK8HOPpPjJz3u1MSKuAUg07OS5wukM9QalNg/F6WQ4 qdi5dxstPbe57InTXy89Cw1DxqZFA+D7aWz4xTTnXeUZFjvQ86dPVGGZ5n+KlcS8iQD4 zk1b82sC3K3UwhhbL3n/c+tgU+UlqcbVBkgl9oi4xF/S1hwsKSLiTcDZ9suJmNp+ZnUi bUyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=2nwWkT4441Zvq5igIAOKA8C0HAjPPXDmTRADPlAyhok=; b=yhyAAywQte03crbeWksW2/qpvpV8RCfmyaCiQor+SDZYg51dGbvClWc/7eoEkwcI/d 0N+4iLb7083zmlrlMjF+GFvPP23zXmPBLmEu6Li3oRGkxdz8RSOo8hqUYn6aZYTak+94 IqvtNdgDplIkEkJcqOju8sxZgTZaAFlrSuTc2yk1GEpj57p+yQzx1sp21IGiY4KWr79t g1+8Q9lkTfEh/nmH46l3Mu5yoGIFHIQBn/G+PcC9P1RngcCX+3xVE4xpzSKEtjQ89/Bo 0tC4yawE+bmGMjN+zqG05X8eKX96vhzEl06p57bVnbli0+6lZOf/I6QfLcoy7SxFEpK2 /YUA== X-Gm-Message-State: ACrzQf3pu8xDwPrsvyZ4tT5UBQ+5PNoayZbR2B7dCkp3D3wH08ajMrom 2bv7GljGQv2BATcORuf1qQV4Ww== X-Google-Smtp-Source: AMsMyM6h87WBvVreQkid4R2UnKxsEZtgzHIzUDroAKPttULMr+SwoIKne5+cNdtK+OWCySafkeOQVg== X-Received: by 2002:a05:600c:4f89:b0:3b4:a6fc:89e5 with SMTP id n9-20020a05600c4f8900b003b4a6fc89e5mr1531348wmq.149.1664265334129; Tue, 27 Sep 2022 00:55:34 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:33 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 01/33] crypto: rockchip: use dev_err for error message about interrupt Date: Tue, 27 Sep 2022 07:54:39 +0000 Message-Id: <20220927075511.3147847-2-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Interrupt is mandatory so the message should be printed as error. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 35d73061d156..45cc5f766788 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -371,8 +371,7 @@ static int rk_crypto_probe(struct platform_device *pdev) =20 crypto_info->irq =3D platform_get_irq(pdev, 0); if (crypto_info->irq < 0) { - dev_warn(crypto_info->dev, - "control Interrupt is not available.\n"); + dev_err(&pdev->dev, "control Interrupt is not available.\n"); err =3D crypto_info->irq; goto err_crypto; } --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7EF85C6FA86 for ; Tue, 27 Sep 2022 07:55:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231320AbiI0Hzq (ORCPT ); Tue, 27 Sep 2022 03:55:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231260AbiI0Hzi (ORCPT ); Tue, 27 Sep 2022 03:55:38 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BEA277FFA8 for ; Tue, 27 Sep 2022 00:55:36 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id r3-20020a05600c35c300b003b4b5f6c6bdso4962599wmq.2 for ; Tue, 27 Sep 2022 00:55:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=5oq+K0wpCSsh7jUwt6+vmm/hcvr/21v0i001Dyw+Eww=; b=lxkYHvxCAqLWDWDvxXrAB4By3mwYic56in2nci5DWHkW2XvI9y0c3OwcDndIaqeuVH 9BNiqKAvKp9G9309RaiEkJo3gtb0V6Z/qZCUDm+/CYZtepcNj/c9MPZSUiaIQxD/W8dO WdiR9gH83jEx58wTjJKQiD3jsfKZKh/qHTfk3bV7eqnHdwoSnnMK15BF9yD6XqQwZiNA 6amP1UrUXKNWHgsHsCbwmrmMkFXODvYbiXP+TBgU6EbwvEaQA69U6s+58UqJYfFmJybN e+BqrhRU7AxpaHcCk9hEyJBqRN035GZCdNOMn68M49Gi/GMyAcYfskETXbWO7F5j2i2o AmNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=5oq+K0wpCSsh7jUwt6+vmm/hcvr/21v0i001Dyw+Eww=; b=JUrHP//b+ECERL9QTI1vwvGKu0PQalCqOHqaVzF2fCiuAvWtJuJWbkmMTfrYLaTY15 uSf5oV/M/afL5yCKoMw27m0zApzfA1hOQEy8nwEZ++Cpbv6pgFElNLlx1Ias6omdpvVm qyYEcH6+ggnNPOrWFkaMSLJ91jmWEOQ+Dq1skLBonl0z4cqRd+Q4C5B7syjRNQittVZR 1XL9EA7QoZqlFmZGnfnJ1NSnX5Mc5ZxNJkuR5QQzhuE3n0t7+mOpBXwq3MxqZKcl6oRr CZ0AiTww92LEl3NDkeDWXvx0pkgjujHVsGc5PB81yO54vjnyPO86HRMmnyoCCfDL1FSM aAog== X-Gm-Message-State: ACrzQf35VUSMqn+yc61nhqks9GxM8/Bf3hZLIA+kMhP/I3KWA3NUqr0H /IlSUjguvhk+xGa0PbzKXKSujw== X-Google-Smtp-Source: AMsMyM6/Owm7TylvFkkxOOlFObTA52Tc0HgmezFZ3ZDKhH18ki2KYuexhCEF+bw3cOR6XQKPKBY3KQ== X-Received: by 2002:a05:600c:4a9a:b0:3b4:78ab:bae5 with SMTP id b26-20020a05600c4a9a00b003b478abbae5mr1653203wmp.114.1664265335209; Tue, 27 Sep 2022 00:55:35 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:34 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 02/33] crypto: rockchip: do not use uninitialized variable Date: Tue, 27 Sep 2022 07:54:40 +0000 Message-Id: <20220927075511.3147847-3-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" crypto_info->dev is not yet set, so use pdev->dev instead. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 45cc5f766788..21d3f1458584 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -381,7 +381,7 @@ static int rk_crypto_probe(struct platform_device *pdev) "rk-crypto", pdev); =20 if (err) { - dev_err(crypto_info->dev, "irq request failed.\n"); + dev_err(&pdev->dev, "irq request failed.\n"); goto err_crypto; } =20 --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D4254C6FA83 for ; Tue, 27 Sep 2022 07:55:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230309AbiI0Hzu (ORCPT ); Tue, 27 Sep 2022 03:55:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229938AbiI0Hzk (ORCPT ); Tue, 27 Sep 2022 03:55:40 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BEC787EFE9 for ; Tue, 27 Sep 2022 00:55:37 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id n40-20020a05600c3ba800b003b49aefc35fso4952362wms.5 for ; Tue, 27 Sep 2022 00:55:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=859E0YEubESiyrb+oeUTAg5/XBxqc58UKlJ7e69ztp0=; b=O57VZQFJfZM8y3bUEDa/1C95hKSs4mFF1ch5oxOyzCMQBamMAD2Axqz5G6D2G7Z/7W iiyJQV9n/pZBlaWQLp0ckZTiuz97QMl5oL6AvWP/u4V775DEECm11pFT8/xSnBWsdWAR 9AfUZB1EZHpMoZdavj0l3bn04yemR5yq3fyh70LEGxsdkwcpqYcoA2yy4BGJd0MwgsHJ z3xDhx3m62O+wAEnoegzUtmuRClj7/dWjrh8a501j3MFEvI1VP/PVKHWlK1vsAoz/+79 BbMreKgLad/LfdJ/FfLvpyFkr/vjJRnm8IzDrS4gWUi+EeWZpAygsAbAFAKe26e5jWvY 4MQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=859E0YEubESiyrb+oeUTAg5/XBxqc58UKlJ7e69ztp0=; b=jLauExtqqIBDoYrSeVtirxflT4vJinYVfYF5KUmpHEyAKDEkiG64A+/WKEcWxSQ0yI WD7qj6gA0vWCVVIHsaCNraoJyh1UI+jGUBdh+kd2vOQxCCH7/AFCZ2+GwJG4dUiU0VgA VRRw2o8WCmcBrjTUT11xXBa5j0mKe4zzR2spFxXDwHFB3jPT5Vo9s9dfFOSzKD59p2ka Ts6+nWl6uc1REdsLAkUhYdIhIXjaCLQZRPod7U9m/up5r+BHANbHP10wbt3Ywhktx6XB H9gADRBNxUJ2G07rMZxdXrx+H28NX9+bdFewHZe/PZdOQ7KbraiFz9zZAS9Qht2IjMpr qfbA== X-Gm-Message-State: ACrzQf1LlcNDQf7Li2qNCRICdMeUFVD3EUQV57VIEFIFIv+ud4iLlNQI 1Fsnll7b8lZmW2WIxKKvzVNNag== X-Google-Smtp-Source: AMsMyM59HBtG3JW7+pgOOZEpo1WSKsAXEgVjiMfqbedJcjPpizX/twxjorgrS95LF1Gu4JnUc5Bu/A== X-Received: by 2002:a05:600c:4e52:b0:3b4:91ec:b15d with SMTP id e18-20020a05600c4e5200b003b491ecb15dmr1590982wmq.119.1664265336300; Tue, 27 Sep 2022 00:55:36 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:35 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 03/33] crypto: rockchip: do not do custom power management Date: Tue, 27 Sep 2022 07:54:41 +0000 Message-Id: <20220927075511.3147847-4-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The clock enable/disable at tfm init/exit is fragile, if 2 tfm are init in the same time and one is removed just after, it will leave the hardware uncloked even if a user remains. Instead simply enable clocks at probe time. We will do PM later. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 4 ++-- drivers/crypto/rockchip/rk3288_crypto.h | 2 -- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 3 +-- drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 5 +++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 21d3f1458584..4cff49b82983 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -394,8 +394,7 @@ static int rk_crypto_probe(struct platform_device *pdev) rk_crypto_done_task_cb, (unsigned long)crypto_info); crypto_init_queue(&crypto_info->queue, 50); =20 - crypto_info->enable_clk =3D rk_crypto_enable_clk; - crypto_info->disable_clk =3D rk_crypto_disable_clk; + rk_crypto_enable_clk(crypto_info); crypto_info->load_data =3D rk_load_data; crypto_info->unload_data =3D rk_unload_data; crypto_info->enqueue =3D rk_crypto_enqueue; @@ -422,6 +421,7 @@ static int rk_crypto_remove(struct platform_device *pde= v) struct rk_crypto_info *crypto_tmp =3D platform_get_drvdata(pdev); =20 rk_crypto_unregister(); + rk_crypto_disable_clk(crypto_tmp); tasklet_kill(&crypto_tmp->done_task); tasklet_kill(&crypto_tmp->queue_task); return 0; diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 97278c2574ff..2fa7131e4060 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -220,8 +220,6 @@ struct rk_crypto_info { int (*start)(struct rk_crypto_info *dev); int (*update)(struct rk_crypto_info *dev); void (*complete)(struct crypto_async_request *base, int err); - int (*enable_clk)(struct rk_crypto_info *dev); - void (*disable_clk)(struct rk_crypto_info *dev); int (*load_data)(struct rk_crypto_info *dev, struct scatterlist *sg_src, struct scatterlist *sg_dst); diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index ed03058497bc..49017d1fb510 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -301,7 +301,7 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) sizeof(struct rk_ahash_rctx) + crypto_ahash_reqsize(tctx->fallback_tfm)); =20 - return tctx->dev->enable_clk(tctx->dev); + return 0; } =20 static void rk_cra_hash_exit(struct crypto_tfm *tfm) @@ -309,7 +309,6 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); =20 free_page((unsigned long)tctx->dev->addr_vir); - return tctx->dev->disable_clk(tctx->dev); } =20 struct rk_crypto_tmp rk_ahash_sha1 =3D { diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 5bbf0d2722e1..8c44a19eab75 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -388,8 +388,10 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tf= m) ctx->dev->update =3D rk_ablk_rx; ctx->dev->complete =3D rk_crypto_complete; ctx->dev->addr_vir =3D (char *)__get_free_page(GFP_KERNEL); + if (!ctx->dev->addr_vir) + return -ENOMEM; =20 - return ctx->dev->addr_vir ? ctx->dev->enable_clk(ctx->dev) : -ENOMEM; + return 0; } =20 static void rk_ablk_exit_tfm(struct crypto_skcipher *tfm) @@ -397,7 +399,6 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); =20 free_page((unsigned long)ctx->dev->addr_vir); - ctx->dev->disable_clk(ctx->dev); } =20 struct rk_crypto_tmp rk_ecb_aes_alg =3D { --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94CD2C07E9D for ; Tue, 27 Sep 2022 07:55:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231355AbiI0Hzy (ORCPT ); Tue, 27 Sep 2022 03:55:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231293AbiI0Hzn (ORCPT ); Tue, 27 Sep 2022 03:55:43 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4965F7FF9E for ; Tue, 27 Sep 2022 00:55:38 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id bk15so5926580wrb.13 for ; Tue, 27 Sep 2022 00:55:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=e93jdwU7lOD2x9pMhJTBQN+yJo5I1w/iWBnUD+AsvRI=; b=P95BMFMDCHcO/e4sMvbmMHIOXf3JyWC1JZaC8Mwvo8kE2gufm3WLSd6cGrmXuuXlwX U7DwYY4omAj6WdZCKCSGyChwxyh19b4NogvvtB9PucKATKIlova7ivlr6I8uP8KDJsYU 3lhY1Zo8/s961maBxbAyjey46UF/rv1BR4Kz8Lb1k7ht+7NE4Shw5RiSheKPr0MIR89l geDeZ3nV+XPKarqYxmhTRBCfOlelWva94NRZNlFq/meiEsxlFveBeR4OiZBa5FImhFuA /Act2YafmvPTSX0K+Fyq1iRCzhjcpbN/ZN1PSbmxlEzLN3g5A0WQ13IERLR1x5Usocjz Mp0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=e93jdwU7lOD2x9pMhJTBQN+yJo5I1w/iWBnUD+AsvRI=; b=r9T9P529cev1vdJVuwv4LVjNBsKqURnxMqMBRXNUnYxbN0mpXvd0LqhT9l56mC7D7B bJU/7m/dbBPheIEO5wE2pp+F6bvrewRkZr/Bl0t4vR+YnKJAQoI3UgwSCApWOzi1O7pc bCUeTQ3O+yMI/unJ37JX7PDnJBwFuv++V62qdgEamLkg1vUgAsnOGHHVYiGwfSSWYVy2 mE+EUiH4kufpnkhOkq5bLYPM7fOqXVW+RPjU2GaBqMlDoICQWQNOZGkbUEP9387UfLxD DtFrtOKQe00apLZfXAjI/AkpzrFOcTZp1g6ks0+dwpjJvgv/eMlJpoqYSGLCnnj5KBvK bVzw== X-Gm-Message-State: ACrzQf1ktBAW8GXW3lSjdMKHc/kHZbVCXrkK07FM818CYEeUD78gE1HC 7YhBY5QkSn32fM6PaQblF79hcw== X-Google-Smtp-Source: AMsMyM5wMBHZjEBDjBgQmGUPkspEyex1NfqvseieXleEWYVoezEZEP/zQqKwVAGX27Q/YbgBLAP4DA== X-Received: by 2002:a05:6000:154a:b0:22a:b8eb:ba53 with SMTP id 10-20020a056000154a00b0022ab8ebba53mr15726563wry.594.1664265337400; Tue, 27 Sep 2022 00:55:37 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:36 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 04/33] crypto: rockchip: fix privete/private typo Date: Tue, 27 Sep 2022 07:54:42 +0000 Message-Id: <20220927075511.3147847-5-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This fix a simple typo on private word. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 2fa7131e4060..656d6795d400 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -235,7 +235,7 @@ struct rk_ahash_ctx { struct crypto_ahash *fallback_tfm; }; =20 -/* the privete variable of hash for fallback */ +/* the private variable of hash for fallback */ struct rk_ahash_rctx { struct ahash_request fallback_req; u32 mode; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8AB50C6FA83 for ; Tue, 27 Sep 2022 07:56:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231376AbiI0H4B (ORCPT ); Tue, 27 Sep 2022 03:56:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231294AbiI0Hzo (ORCPT ); Tue, 27 Sep 2022 03:55:44 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4689B7FFAB for ; Tue, 27 Sep 2022 00:55:40 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id o5so5999830wms.1 for ; Tue, 27 Sep 2022 00:55:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=oouPZY4jXMX4kuosliYv2WbNP1uk5Gy/Lp8NUrzXszo=; b=nz101Jm8HgSfTn+lw/q/8wKBFIGUvuyPr75hrWd8KqNijmBQhu1Wuh++OrJyUnhvGJ FNjYJfKvbba/uc+sl2U7JOTqER9qyXlJL++4zUq1rshg0iyQNW/HNZxm4zyTQACuZhLH AnH2X0hX0LGSC+HPDYlFdIVvdRcz83Yevntc7K7ohrJTMTZ25zQUAG21UkW0quj10h4d lzsPVKiSt08iRdfhL95tEeAhNlu6QhM3EMAlm1qlrvyUSObdZIvs4kUUHiFJ8rbakhor cOjkmTPcsqlt2zXOfo0Hxn3y0gH4CIUvB4TgNjtl8zlE/MQFFS4VO2Z2I86vsGflRtPM 5k+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=oouPZY4jXMX4kuosliYv2WbNP1uk5Gy/Lp8NUrzXszo=; b=d0vB88ra7pI4MK52YW818R2wlxd+oNFd4NyE4eAZZgl2ZtQbDxgp/DVgiE5frbtK5W aqZnvaOp/PogCNpP4DAbHgzi5KKoPLGl/bZmr7fJU2PbSXw/alWBX3TcajDA0mdTpyS/ Xpa8AK5ylc2ZYMjae1yaXGONn19bL+8fTyGbMvfZtH+UVPVPhA8shx6oI/weoQ3yObUc dbF3toeazBDexI55lOx/vqx4mwskhM7Xa53xLbm+K3enyZhh0/WHPaTdSFssRuIbL5E5 /krhdqIbhZklF/JDTM/uobS2ldr9i67K5K2v+80WGs3wzOxqDeqy/VU6FYTX8syG0DVk 7PZA== X-Gm-Message-State: ACrzQf2U2VmtY/SVn+ASAHcjqX93mrMkFr0LQkfnuE7LhqwP5DO7GnOk lF0ypuuQVwIVgF71xrArLLm7DA== X-Google-Smtp-Source: AMsMyM5vAsIlAFukF5spTgRpM6JCZE5F4gYFI4c9aehbtXA+WDr5R7MCTRthZBXgV5tW9PjOMCO9iQ== X-Received: by 2002:a05:600c:211a:b0:3b4:75ee:c63e with SMTP id u26-20020a05600c211a00b003b475eec63emr1680592wml.44.1664265338558; Tue, 27 Sep 2022 00:55:38 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:38 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 05/33] crypto: rockchip: do not store mode globally Date: Tue, 27 Sep 2022 07:54:43 +0000 Message-Id: <20220927075511.3147847-6-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Storing the mode globally does not work if 2 requests are handled in the same time. We should store it in a request context. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.h | 5 +- .../crypto/rockchip/rk3288_crypto_skcipher.c | 58 ++++++++++++------- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 656d6795d400..c919d9a43a08 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -245,10 +245,13 @@ struct rk_ahash_rctx { struct rk_cipher_ctx { struct rk_crypto_info *dev; unsigned int keylen; - u32 mode; u8 iv[AES_BLOCK_SIZE]; }; =20 +struct rk_cipher_rctx { + u32 mode; +}; + enum alg_type { ALG_TYPE_HASH, ALG_TYPE_CIPHER, diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 8c44a19eab75..bbd0bf52bf07 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -76,9 +76,10 @@ static int rk_aes_ecb_encrypt(struct skcipher_request *r= eq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_AES_ECB_MODE; + rctx->mode =3D RK_CRYPTO_AES_ECB_MODE; return rk_handle_req(dev, req); } =20 @@ -86,9 +87,10 @@ static int rk_aes_ecb_decrypt(struct skcipher_request *r= eq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_AES_ECB_MODE | RK_CRYPTO_DEC; + rctx->mode =3D RK_CRYPTO_AES_ECB_MODE | RK_CRYPTO_DEC; return rk_handle_req(dev, req); } =20 @@ -96,9 +98,10 @@ static int rk_aes_cbc_encrypt(struct skcipher_request *r= eq) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_AES_CBC_MODE; + rctx->mode =3D RK_CRYPTO_AES_CBC_MODE; return rk_handle_req(dev, req); } =20 @@ -106,9 +109,10 @@ static int rk_aes_cbc_decrypt(struct skcipher_request = *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_AES_CBC_MODE | RK_CRYPTO_DEC; + rctx->mode =3D RK_CRYPTO_AES_CBC_MODE | RK_CRYPTO_DEC; return rk_handle_req(dev, req); } =20 @@ -116,9 +120,10 @@ static int rk_des_ecb_encrypt(struct skcipher_request = *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D 0; + rctx->mode =3D 0; return rk_handle_req(dev, req); } =20 @@ -126,9 +131,10 @@ static int rk_des_ecb_decrypt(struct skcipher_request = *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_DEC; + rctx->mode =3D RK_CRYPTO_DEC; return rk_handle_req(dev, req); } =20 @@ -136,9 +142,10 @@ static int rk_des_cbc_encrypt(struct skcipher_request = *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC; + rctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC; return rk_handle_req(dev, req); } =20 @@ -146,9 +153,10 @@ static int rk_des_cbc_decrypt(struct skcipher_request = *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC | RK_CRYPTO_DEC; + rctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC | RK_CRYPTO_DEC; return rk_handle_req(dev, req); } =20 @@ -156,9 +164,10 @@ static int rk_des3_ede_ecb_encrypt(struct skcipher_req= uest *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_SELECT; + rctx->mode =3D RK_CRYPTO_TDES_SELECT; return rk_handle_req(dev, req); } =20 @@ -166,9 +175,10 @@ static int rk_des3_ede_ecb_decrypt(struct skcipher_req= uest *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_DEC; + rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_DEC; return rk_handle_req(dev, req); } =20 @@ -176,9 +186,10 @@ static int rk_des3_ede_cbc_encrypt(struct skcipher_req= uest *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC; + rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC; return rk_handle_req(dev, req); } =20 @@ -186,9 +197,10 @@ static int rk_des3_ede_cbc_decrypt(struct skcipher_req= uest *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *dev =3D ctx->dev; =20 - ctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC | + rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC | RK_CRYPTO_DEC; return rk_handle_req(dev, req); } @@ -199,6 +211,7 @@ static void rk_ablk_hw_init(struct rk_crypto_info *dev) skcipher_request_cast(dev->async_req); struct crypto_skcipher *cipher =3D crypto_skcipher_reqtfm(req); struct crypto_tfm *tfm =3D crypto_skcipher_tfm(cipher); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(cipher); u32 ivsize, block, conf_reg =3D 0; =20 @@ -206,22 +219,22 @@ static void rk_ablk_hw_init(struct rk_crypto_info *de= v) ivsize =3D crypto_skcipher_ivsize(cipher); =20 if (block =3D=3D DES_BLOCK_SIZE) { - ctx->mode |=3D RK_CRYPTO_TDES_FIFO_MODE | + rctx->mode |=3D RK_CRYPTO_TDES_FIFO_MODE | RK_CRYPTO_TDES_BYTESWAP_KEY | RK_CRYPTO_TDES_BYTESWAP_IV; - CRYPTO_WRITE(dev, RK_CRYPTO_TDES_CTRL, ctx->mode); + CRYPTO_WRITE(dev, RK_CRYPTO_TDES_CTRL, rctx->mode); memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, req->iv, ivsize); conf_reg =3D RK_CRYPTO_DESSEL; } else { - ctx->mode |=3D RK_CRYPTO_AES_FIFO_MODE | + rctx->mode |=3D RK_CRYPTO_AES_FIFO_MODE | RK_CRYPTO_AES_KEY_CHANGE | RK_CRYPTO_AES_BYTESWAP_KEY | RK_CRYPTO_AES_BYTESWAP_IV; if (ctx->keylen =3D=3D AES_KEYSIZE_192) - ctx->mode |=3D RK_CRYPTO_AES_192BIT_key; + rctx->mode |=3D RK_CRYPTO_AES_192BIT_key; else if (ctx->keylen =3D=3D AES_KEYSIZE_256) - ctx->mode |=3D RK_CRYPTO_AES_256BIT_key; - CRYPTO_WRITE(dev, RK_CRYPTO_AES_CTRL, ctx->mode); + rctx->mode |=3D RK_CRYPTO_AES_256BIT_key; + CRYPTO_WRITE(dev, RK_CRYPTO_AES_CTRL, rctx->mode); memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, req->iv, ivsize); } conf_reg |=3D RK_CRYPTO_BYTESWAP_BTFIFO | @@ -246,6 +259,7 @@ static int rk_set_data_start(struct rk_crypto_info *dev) struct skcipher_request *req =3D skcipher_request_cast(dev->async_req); struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); u32 ivsize =3D crypto_skcipher_ivsize(tfm); u8 *src_last_blk =3D page_address(sg_page(dev->sg_src)) + @@ -254,7 +268,7 @@ static int rk_set_data_start(struct rk_crypto_info *dev) /* Store the iv that need to be updated in chain mode. * And update the IV buffer to contain the next IV for decryption mode. */ - if (ctx->mode & RK_CRYPTO_DEC) { + if (rctx->mode & RK_CRYPTO_DEC) { memcpy(ctx->iv, src_last_blk, ivsize); sg_pcopy_to_buffer(dev->first, dev->src_nents, req->iv, ivsize, dev->total - ivsize); @@ -294,11 +308,12 @@ static void rk_iv_copyback(struct rk_crypto_info *dev) struct skcipher_request *req =3D skcipher_request_cast(dev->async_req); struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); u32 ivsize =3D crypto_skcipher_ivsize(tfm); =20 /* Update the IV buffer to contain the next IV for encryption mode. */ - if (!(ctx->mode & RK_CRYPTO_DEC)) { + if (!(rctx->mode & RK_CRYPTO_DEC)) { if (dev->aligned) { memcpy(req->iv, sg_virt(dev->sg_dst) + dev->sg_dst->length - ivsize, ivsize); @@ -314,11 +329,12 @@ static void rk_update_iv(struct rk_crypto_info *dev) struct skcipher_request *req =3D skcipher_request_cast(dev->async_req); struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); u32 ivsize =3D crypto_skcipher_ivsize(tfm); u8 *new_iv =3D NULL; =20 - if (ctx->mode & RK_CRYPTO_DEC) { + if (rctx->mode & RK_CRYPTO_DEC) { new_iv =3D ctx->iv; } else { new_iv =3D page_address(sg_page(dev->sg_dst)) + --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3BAACC54EE9 for ; Tue, 27 Sep 2022 07:56:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231328AbiI0H4G (ORCPT ); Tue, 27 Sep 2022 03:56:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231330AbiI0Hzr (ORCPT ); Tue, 27 Sep 2022 03:55:47 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE5969E131 for ; Tue, 27 Sep 2022 00:55:41 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id i203-20020a1c3bd4000000b003b3df9a5ecbso8908320wma.1 for ; Tue, 27 Sep 2022 00:55:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=cfjYdg7UocNCW77zopcj/qMWAtUqq6409ARnGGfMOHE=; b=C1K0/UnkICXFGc+1D5jQWOdnmn49+zhYKb9/vi7OQFLTp90OLUz/v++txoGSllvu3O NibjPlzUCLDCbdonc+GOMtmyVvsIhsYNAl2X/cY4g8m/qzVllaZ80bTdum2C7MQwNPh0 Bc3f7nywcovrSTJizprftFk+WuBo1Wof5ihZeG20cD5twNgi3zP90e7sdoIb5ZkfGIwU ca1M3/NsDa0wEF/K2cniEXV9CjqGT98KVb07xJqDa3fHIBRpLcXRmPdi/HrxZJKFB1/z a3nR+Th2z+dV4cd1zQtwB1gCGI9Ob87W5Q2TwQljmlaIie7M/fcR4E5FwzoLLxfUfexf UFhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=cfjYdg7UocNCW77zopcj/qMWAtUqq6409ARnGGfMOHE=; b=YGrhgpTBG1wLaR9lY8yw88YJrInYmh7JjJXrOskkmDCDcqYG3QeGhZfYO6/2J2l3km bJjODS/cMQMvqyEm/VEaBi8SFVWz7kyEDC2lmVawAxmIVAUSj2Y3saJzU3sADu7Td9Hp wRS2yXzU6aaqNToUrisFwbIlGB5H3ahXOX9jNGNg9YcTtTQgIHM+IUR2rOmwFIgUDcew AUoBb6kl1c7DC3PFOXQ1uWyxaCu5uYzB5Q6f27qidAqGrXIrp+mIax7FxKC4F9QcUe1d ki4/rpO7JRWRlVZr9jFSWytdFExepCAHxhzNGEgJG1swYvgaRh8gKKWPnP+LOtQXYZvz GJ0g== X-Gm-Message-State: ACrzQf32UZUhQS/iHNBoUQ3lmUNoL1TPduWPYUwzgBY92jguhUaKrJ7d a1skiS+/FQAjB6urtPcmc4Fp5w== X-Google-Smtp-Source: AMsMyM6fn+XeK/3msKhyb+XgwpOUeolHnC65p8pRGfr+AkFvDaBxsf+jHQ1e3FinetsmbhYIjzJU8Q== X-Received: by 2002:a7b:ce99:0:b0:3b4:9031:fc02 with SMTP id q25-20020a7bce99000000b003b49031fc02mr1634975wmj.154.1664265339762; Tue, 27 Sep 2022 00:55:39 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:39 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 06/33] crypto: rockchip: add fallback for cipher Date: Tue, 27 Sep 2022 07:54:44 +0000 Message-Id: <20220927075511.3147847-7-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The hardware does not handle 0 size length request, let's add a fallback. Furthermore fallback will be used for all unaligned case the hardware cannot handle. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/Kconfig | 4 + drivers/crypto/rockchip/rk3288_crypto.h | 2 + .../crypto/rockchip/rk3288_crypto_skcipher.c | 97 ++++++++++++++++--- 3 files changed, 90 insertions(+), 13 deletions(-) diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 55e75fbb658e..113b35f69598 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -669,6 +669,10 @@ config CRYPTO_DEV_IMGTEC_HASH config CRYPTO_DEV_ROCKCHIP tristate "Rockchip's Cryptographic Engine driver" depends on OF && ARCH_ROCKCHIP + depends on PM + select CRYPTO_ECB + select CRYPTO_CBC + select CRYPTO_DES select CRYPTO_AES select CRYPTO_LIB_DES select CRYPTO_MD5 diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index c919d9a43a08..8b1e15d8ddc6 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -246,10 +246,12 @@ struct rk_cipher_ctx { struct rk_crypto_info *dev; unsigned int keylen; u8 iv[AES_BLOCK_SIZE]; + struct crypto_skcipher *fallback_tfm; }; =20 struct rk_cipher_rctx { u32 mode; + struct skcipher_request fallback_req; // keep at the end }; =20 enum alg_type { diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index bbd0bf52bf07..eac5bba66e25 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -13,6 +13,63 @@ =20 #define RK_CRYPTO_DEC BIT(0) =20 +static int rk_cipher_need_fallback(struct skcipher_request *req) +{ + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); + unsigned int bs =3D crypto_skcipher_blocksize(tfm); + struct scatterlist *sgs, *sgd; + unsigned int stodo, dtodo, len; + + if (!req->cryptlen) + return true; + + len =3D req->cryptlen; + sgs =3D req->src; + sgd =3D req->dst; + while (sgs && sgd) { + if (!IS_ALIGNED(sgs->offset, sizeof(u32))) { + return true; + } + if (!IS_ALIGNED(sgd->offset, sizeof(u32))) { + return true; + } + stodo =3D min(len, sgs->length); + if (stodo % bs) { + return true; + } + dtodo =3D min(len, sgd->length); + if (dtodo % bs) { + return true; + } + if (stodo !=3D dtodo) { + return true; + } + len -=3D stodo; + sgs =3D sg_next(sgs); + sgd =3D sg_next(sgd); + } + return false; +} + +static int rk_cipher_fallback(struct skcipher_request *areq) +{ + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); + struct rk_cipher_ctx *op =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(areq); + int err; + + skcipher_request_set_tfm(&rctx->fallback_req, op->fallback_tfm); + skcipher_request_set_callback(&rctx->fallback_req, areq->base.flags, + areq->base.complete, areq->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, areq->src, areq->dst, + areq->cryptlen, areq->iv); + if (rctx->mode & RK_CRYPTO_DEC) + err =3D crypto_skcipher_decrypt(&rctx->fallback_req); + else + err =3D crypto_skcipher_encrypt(&rctx->fallback_req); + return err; +} + static void rk_crypto_complete(struct crypto_async_request *base, int err) { if (base->complete) @@ -22,10 +79,10 @@ static void rk_crypto_complete(struct crypto_async_requ= est *base, int err) static int rk_handle_req(struct rk_crypto_info *dev, struct skcipher_request *req) { - if (!IS_ALIGNED(req->cryptlen, dev->align_size)) - return -EINVAL; - else - return dev->enqueue(dev, &req->base); + if (rk_cipher_need_fallback(req)) + return rk_cipher_fallback(req); + + return dev->enqueue(dev, &req->base); } =20 static int rk_aes_setkey(struct crypto_skcipher *cipher, @@ -39,7 +96,8 @@ static int rk_aes_setkey(struct crypto_skcipher *cipher, return -EINVAL; ctx->keylen =3D keylen; memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, key, keylen); - return 0; + + return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } =20 static int rk_des_setkey(struct crypto_skcipher *cipher, @@ -54,7 +112,8 @@ static int rk_des_setkey(struct crypto_skcipher *cipher, =20 ctx->keylen =3D keylen; memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, key, keylen); - return 0; + + return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } =20 static int rk_tdes_setkey(struct crypto_skcipher *cipher, @@ -69,7 +128,7 @@ static int rk_tdes_setkey(struct crypto_skcipher *cipher, =20 ctx->keylen =3D keylen; memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, key, keylen); - return 0; + return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } =20 static int rk_aes_ecb_encrypt(struct skcipher_request *req) @@ -394,6 +453,7 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) { struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + const char *name =3D crypto_tfm_alg_name(&tfm->base); struct rk_crypto_tmp *algt; =20 algt =3D container_of(alg, struct rk_crypto_tmp, alg.skcipher); @@ -407,6 +467,16 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tf= m) if (!ctx->dev->addr_vir) return -ENOMEM; =20 + ctx->fallback_tfm =3D crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALL= BACK); + if (IS_ERR(ctx->fallback_tfm)) { + dev_err(ctx->dev->dev, "ERROR: Cannot allocate fallback for %s %ld\n", + name, PTR_ERR(ctx->fallback_tfm)); + return PTR_ERR(ctx->fallback_tfm); + } + + tfm->reqsize =3D sizeof(struct rk_cipher_rctx) + + crypto_skcipher_reqsize(ctx->fallback_tfm); + return 0; } =20 @@ -415,6 +485,7 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); =20 free_page((unsigned long)ctx->dev->addr_vir); + crypto_free_skcipher(ctx->fallback_tfm); } =20 struct rk_crypto_tmp rk_ecb_aes_alg =3D { @@ -423,7 +494,7 @@ struct rk_crypto_tmp rk_ecb_aes_alg =3D { .base.cra_name =3D "ecb(aes)", .base.cra_driver_name =3D "ecb-aes-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D AES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x0f, @@ -445,7 +516,7 @@ struct rk_crypto_tmp rk_cbc_aes_alg =3D { .base.cra_name =3D "cbc(aes)", .base.cra_driver_name =3D "cbc-aes-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D AES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x0f, @@ -468,7 +539,7 @@ struct rk_crypto_tmp rk_ecb_des_alg =3D { .base.cra_name =3D "ecb(des)", .base.cra_driver_name =3D "ecb-des-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D DES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x07, @@ -490,7 +561,7 @@ struct rk_crypto_tmp rk_cbc_des_alg =3D { .base.cra_name =3D "cbc(des)", .base.cra_driver_name =3D "cbc-des-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D DES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x07, @@ -513,7 +584,7 @@ struct rk_crypto_tmp rk_ecb_des3_ede_alg =3D { .base.cra_name =3D "ecb(des3_ede)", .base.cra_driver_name =3D "ecb-des3-ede-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D DES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x07, @@ -535,7 +606,7 @@ struct rk_crypto_tmp rk_cbc_des3_ede_alg =3D { .base.cra_name =3D "cbc(des3_ede)", .base.cra_driver_name =3D "cbc-des3-ede-rk", .base.cra_priority =3D 300, - .base.cra_flags =3D CRYPTO_ALG_ASYNC, + .base.cra_flags =3D CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .base.cra_blocksize =3D DES_BLOCK_SIZE, .base.cra_ctxsize =3D sizeof(struct rk_cipher_ctx), .base.cra_alignmask =3D 0x07, --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A783EC54EE9 for ; Tue, 27 Sep 2022 07:56:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231360AbiI0H4Z (ORCPT ); Tue, 27 Sep 2022 03:56:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40220 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231293AbiI0Hz4 (ORCPT ); Tue, 27 Sep 2022 03:55:56 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AB1BAB428 for ; Tue, 27 Sep 2022 00:55:42 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id ay36so6005124wmb.0 for ; Tue, 27 Sep 2022 00:55:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=Lb5wXjXl71KLOn69lH3EgInZyalgQlnigOqDmtk2Tt0=; b=n7kRyUqNGoOgpPCI9RAaDptp44hDn8HLIUD/5MufJyUFwbUHFvsmN8TqneO3R4nDUI dgazNQY1irolv5+pnQeY+LJJjNg/69LsymFpZiPl/oT4vx8lNBoyj4HpflzUFkSBmnhy fBsUeoVzlq7+GME1AMbqMwbVJavpAJ70/894ANaAkc3+OKWumAK1+uskfJ3ox0N8muTg Y4IJ+W+VYAT/SvSywKLOlTu5niuz1IZrUkd5Cl/YNsKA+5yEiKuiZF1B6dH6CgQ3AU/f 6wumlOfxXHzIHF24CqhYUvvvgHOhi4keYT+jmkvXE3YXcqnKERLrmXhV/il5V3WXIuYi cEnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=Lb5wXjXl71KLOn69lH3EgInZyalgQlnigOqDmtk2Tt0=; b=FyEAc1X264M5S7ALl+K8IP1m6K10JCldI/t9P+qPDK5MPbztkpMJv1M/58Dalhiau5 yOrw3eyS7eoz0kxQFHs21W6cdZqqCg5sz12T0ixRTdQEvf+gJBr4uwBVoRW+tOtU11tJ FDT+u0yZi5y2MrgpnO+0Bk2QeBCtylm+PQkKFiIlJpBuKIs59IGIfJV19zU9gufFHnMg gLaGeZcuwC/UXjtFsG1jkBFQCj7E72Q6Eep0T9m97Xm1dpdQE4n16tdRdFPzo7lMxUL1 xIA6uwK+oRin9c/X7y3uFWOddAHmCvTebV1aCaa19SPxBcxL/oM8UiEwXCxiX0iOegWq 2CAA== X-Gm-Message-State: ACrzQf0ag372joxwBMDQQBME3Emf8hr8KXcXXtq17y5Ljdo+rO0M6gco YoD5y+9+kGPLinRfO9r3G2WWHu7CePXnJA== X-Google-Smtp-Source: AMsMyM5Ybn/y7bScy90bmV2wjgN7iG7dSSPxhXP+bQSRzfK8cYmmofblqtHnwg0Y25InbFDihy4MDQ== X-Received: by 2002:a05:600c:4186:b0:3b4:a660:1d29 with SMTP id p6-20020a05600c418600b003b4a6601d29mr1615632wmh.120.1664265340931; Tue, 27 Sep 2022 00:55:40 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:40 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 07/33] crypto: rockchip: add fallback for ahash Date: Tue, 27 Sep 2022 07:54:45 +0000 Message-Id: <20220927075511.3147847-8-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Adds a fallback for all case hardware cannot handle. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 49017d1fb510..16009bb0bf16 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -16,6 +16,40 @@ * so we put the fixed hash out when met zero message. */ =20 +static bool rk_ahash_need_fallback(struct ahash_request *req) +{ + struct scatterlist *sg; + + sg =3D req->src; + while (sg) { + if (!IS_ALIGNED(sg->offset, sizeof(u32))) { + return true; + } + if (sg->length % 4) { + return true; + } + sg =3D sg_next(sg); + } + return false; +} + +static int rk_ahash_digest_fb(struct ahash_request *areq) +{ + struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); + struct rk_ahash_ctx *tfmctx =3D crypto_ahash_ctx(tfm); + + ahash_request_set_tfm(&rctx->fallback_req, tfmctx->fallback_tfm); + rctx->fallback_req.base.flags =3D areq->base.flags & + CRYPTO_TFM_REQ_MAY_SLEEP; + + rctx->fallback_req.nbytes =3D areq->nbytes; + rctx->fallback_req.src =3D areq->src; + rctx->fallback_req.result =3D areq->result; + + return crypto_ahash_digest(&rctx->fallback_req); +} + static int zero_message_process(struct ahash_request *req) { struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); @@ -167,6 +201,9 @@ static int rk_ahash_digest(struct ahash_request *req) struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(req->base.tfm); struct rk_crypto_info *dev =3D tctx->dev; =20 + if (rk_ahash_need_fallback(req)) + return rk_ahash_digest_fb(req); + if (!req->nbytes) return zero_message_process(req); else @@ -309,6 +346,7 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); =20 free_page((unsigned long)tctx->dev->addr_vir); + crypto_free_ahash(tctx->fallback_tfm); } =20 struct rk_crypto_tmp rk_ahash_sha1 =3D { --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DEBADC6FA92 for ; Tue, 27 Sep 2022 07:56:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231469AbiI0H4a (ORCPT ); Tue, 27 Sep 2022 03:56:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231299AbiI0H4B (ORCPT ); Tue, 27 Sep 2022 03:56:01 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8493901AF for ; Tue, 27 Sep 2022 00:55:43 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id o5so5999926wms.1 for ; Tue, 27 Sep 2022 00:55:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=LTH5XZUoNfw5j5g91Ov715oBhaysSZASayzIPMZPNtU=; b=lDy9N5u3q0mT2cwLyphmqftoyVJuKq0rsENhPUgJwacRs225h0DKbzz8pao3e47XSU WTyoES77IkrhL3tcwXG7a4+LU3TBU7wvhAx/Ca+M8zYS2SdPJoGkEW+UzlbQQWqsI5RF jaap4fCW4O5EmpzV0Ycb4x/4ez5tGA+oIpSWpsQqP35K3OaBvaiq4VzkthCUxuGXxiz6 iNp742QOPH9/geZOxwN5QoADGNUOgIbZjJWOYk21B2UvymXznhnW4wWy7Tw1qqAbDZjp Wy2wen51FkD4h/QvbW/tjQQeMZottNX4te6fLlKXApMbznNgfvpDNRt5PyBTIBgzfDyx CLlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=LTH5XZUoNfw5j5g91Ov715oBhaysSZASayzIPMZPNtU=; b=BSOUg7nAtIwOTcWGs1KI2U7pmww2KxjktakEFDhAstd67Tmps1bK9V8XsD4tlYrm7J j4GZEJX/NGb8/VEt4fB7/wrO2EUIrLSQpkx7a7/vUTEGQtOo/3JYB9Fb4eTgDBgQDkjj GxRtwZPBGuip413B+tb+2DI3wq36ZJyeD+28Lc5ipaOww6ug3mx3RhBYKwdG3dCX7z9m IY75gdhsfL0HA58sA6FbxQakvU4j4Wz3SKqx9sCJlSjREPCfLApjka1+sM2lcdnSJBtt AUbekT/T2JBI/+q+V4YQFuI43Tp+gc7u91tukrRPuLvb/mFMXZ46tXKZwRhE4/zQ0v5S etvg== X-Gm-Message-State: ACrzQf3jE8KmQPulTxlrwe4azCHrWzR1lhaFPKYiA13ngKhZQTO/hgft Fvr1V614AyqDNN3zpmGANZ6vdA== X-Google-Smtp-Source: AMsMyM5QYaBobM6O/JnE5Y9aLHS69/vVzgjRnBvc8zF5O/v34pSApzWmO5D2mRQ1+ELj7sFMDXncVg== X-Received: by 2002:a05:600c:4256:b0:3b4:7cfc:a626 with SMTP id r22-20020a05600c425600b003b47cfca626mr1643360wmm.187.1664265341998; Tue, 27 Sep 2022 00:55:41 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:41 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 08/33] crypto: rockchip: better handle cipher key Date: Tue, 27 Sep 2022 07:54:46 +0000 Message-Id: <20220927075511.3147847-9-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The key should not be set in hardware too much in advance, this will fail it 2 TFM with different keys generate alternative requests. The key should be stored and used just before doing cipher operations. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.h | 1 + drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 8b1e15d8ddc6..540b81a14b9b 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -245,6 +245,7 @@ struct rk_ahash_rctx { struct rk_cipher_ctx { struct rk_crypto_info *dev; unsigned int keylen; + u8 key[AES_MAX_KEY_SIZE]; u8 iv[AES_BLOCK_SIZE]; struct crypto_skcipher *fallback_tfm; }; diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index eac5bba66e25..1ef94f8db2c5 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -95,7 +95,7 @@ static int rk_aes_setkey(struct crypto_skcipher *cipher, keylen !=3D AES_KEYSIZE_256) return -EINVAL; ctx->keylen =3D keylen; - memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, key, keylen); + memcpy(ctx->key, key, keylen); =20 return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } @@ -111,7 +111,7 @@ static int rk_des_setkey(struct crypto_skcipher *cipher, return err; =20 ctx->keylen =3D keylen; - memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, key, keylen); + memcpy(ctx->key, key, keylen); =20 return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } @@ -127,7 +127,8 @@ static int rk_tdes_setkey(struct crypto_skcipher *ciphe= r, return err; =20 ctx->keylen =3D keylen; - memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, key, keylen); + memcpy(ctx->key, key, keylen); + return crypto_skcipher_setkey(ctx->fallback_tfm, key, keylen); } =20 @@ -283,6 +284,7 @@ static void rk_ablk_hw_init(struct rk_crypto_info *dev) RK_CRYPTO_TDES_BYTESWAP_IV; CRYPTO_WRITE(dev, RK_CRYPTO_TDES_CTRL, rctx->mode); memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, req->iv, ivsize); + memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, ctx->key, ctx->keylen= ); conf_reg =3D RK_CRYPTO_DESSEL; } else { rctx->mode |=3D RK_CRYPTO_AES_FIFO_MODE | @@ -295,6 +297,7 @@ static void rk_ablk_hw_init(struct rk_crypto_info *dev) rctx->mode |=3D RK_CRYPTO_AES_256BIT_key; CRYPTO_WRITE(dev, RK_CRYPTO_AES_CTRL, rctx->mode); memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, req->iv, ivsize); + memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, ctx->key, ctx->keylen); } conf_reg |=3D RK_CRYPTO_BYTESWAP_BTFIFO | RK_CRYPTO_BYTESWAP_BRFIFO; @@ -484,6 +487,7 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) { struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); =20 + memzero_explicit(ctx->key, ctx->keylen); free_page((unsigned long)ctx->dev->addr_vir); crypto_free_skcipher(ctx->fallback_tfm); } --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C34AC6FA83 for ; Tue, 27 Sep 2022 07:56:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230258AbiI0H4f (ORCPT ); Tue, 27 Sep 2022 03:56:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231318AbiI0H4C (ORCPT ); Tue, 27 Sep 2022 03:56:02 -0400 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D07D8ABD6E for ; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id z6so13716700wrq.1 for ; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=WjVYDZUAlIRp4eDHOXKi9ug5c8rK8IrdaxVWhXjYQvc=; b=ai2k6FUrB2iYHsWg2rPsjDIlsQALTxvwIRb23OI30ttsdMJ737+YCtSE0OibhQIw9S vsAswggbBZXDjXnGhdSmBlOWTgyzp6n9Zox8Ncz/NIbxLPTXutw9nwnwDKZWmCOdasxC xiSZJxryT/fW45xea6bVi62EzHgIgvNTu20hy0bHfCeKJKm9wKl4T13h/KPUhF9m9PZU LyWjv26GEvR5zO/2z76wRsO59puLl8OoHe6ndkNRMSZmrkZVx1zmNOAoeNzWZBpwrNAv GE8gqbJOv+RBoNr59K+KkGpkJVa1jeZ92Sp5ebNxUCFDOi+SxGe+gatS8Xzf7d6pc34h CWxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=WjVYDZUAlIRp4eDHOXKi9ug5c8rK8IrdaxVWhXjYQvc=; b=5nMF8fpT3wtVS2CE1r1n7oU8w8bS4bCVp4Aol14QXzJf1FigKl46e1yQbG0iH5nwpM oZdoNfUQCj0zgPDfeaApfaIBQV38YyVtne01jNf/+Qgs5TycK2NfGQrM9/V7bcG3zP/A kSousAlYt1H1Krv1nmt91jWOsgRxOnrGzS3G75ahLyeK3PRF3fS992vE0H9zXMrozzXY Z7bOyXqeqT8a1BQxlbX7VkZaEeR+wNCmi4FuDnm3y2CvQjnNfW5i/l4dws92Eo7xhFwS /E3bpgEsf0edfAJhuIs6Nb+kqFkVtLwWvtRv5K9fav9x7OgQO+8KNMlP+8yZtboNY55i cl2Q== X-Gm-Message-State: ACrzQf1Zn3NSDJ7WgBYtUsJLVkcgfB/cJyuo6MEw29LcyhRRrELw8DSE VGic2rRSPsLfHTf53mf3yuE26g== X-Google-Smtp-Source: AMsMyM6895NtnCk2I6qxHlfPeQp8oiHMC+c63cq4Dhq8a/X6+9Lh1QqExVC/Dgd0eAaaT550kB/7zw== X-Received: by 2002:a5d:45c4:0:b0:228:9248:867d with SMTP id b4-20020a5d45c4000000b002289248867dmr15858073wrs.474.1664265343096; Tue, 27 Sep 2022 00:55:43 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:42 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 09/33] crypto: rockchip: remove non-aligned handling Date: Tue, 27 Sep 2022 07:54:47 +0000 Message-Id: <20220927075511.3147847-10-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Now driver have fallback for un-aligned cases, remove all code handling those cases. Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 69 +++++-------------- drivers/crypto/rockchip/rk3288_crypto.h | 4 -- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 22 ++---- .../crypto/rockchip/rk3288_crypto_skcipher.c | 39 +++-------- 4 files changed, 31 insertions(+), 103 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 4cff49b82983..b3db096e2ec2 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -88,63 +88,26 @@ static int rk_load_data(struct rk_crypto_info *dev, { unsigned int count; =20 - dev->aligned =3D dev->aligned ? - check_alignment(sg_src, sg_dst, dev->align_size) : - dev->aligned; - if (dev->aligned) { - count =3D min(dev->left_bytes, sg_src->length); - dev->left_bytes -=3D count; - - if (!dma_map_sg(dev->dev, sg_src, 1, DMA_TO_DEVICE)) { - dev_err(dev->dev, "[%s:%d] dma_map_sg(src) error\n", + count =3D min(dev->left_bytes, sg_src->length); + dev->left_bytes -=3D count; + + if (!dma_map_sg(dev->dev, sg_src, 1, DMA_TO_DEVICE)) { + dev_err(dev->dev, "[%s:%d] dma_map_sg(src) error\n", __func__, __LINE__); - return -EINVAL; - } - dev->addr_in =3D sg_dma_address(sg_src); + return -EINVAL; + } + dev->addr_in =3D sg_dma_address(sg_src); =20 - if (sg_dst) { - if (!dma_map_sg(dev->dev, sg_dst, 1, DMA_FROM_DEVICE)) { - dev_err(dev->dev, + if (sg_dst) { + if (!dma_map_sg(dev->dev, sg_dst, 1, DMA_FROM_DEVICE)) { + dev_err(dev->dev, "[%s:%d] dma_map_sg(dst) error\n", __func__, __LINE__); - dma_unmap_sg(dev->dev, sg_src, 1, - DMA_TO_DEVICE); - return -EINVAL; - } - dev->addr_out =3D sg_dma_address(sg_dst); - } - } else { - count =3D (dev->left_bytes > PAGE_SIZE) ? - PAGE_SIZE : dev->left_bytes; - - if (!sg_pcopy_to_buffer(dev->first, dev->src_nents, - dev->addr_vir, count, - dev->total - dev->left_bytes)) { - dev_err(dev->dev, "[%s:%d] pcopy err\n", - __func__, __LINE__); + dma_unmap_sg(dev->dev, sg_src, 1, + DMA_TO_DEVICE); return -EINVAL; } - dev->left_bytes -=3D count; - sg_init_one(&dev->sg_tmp, dev->addr_vir, count); - if (!dma_map_sg(dev->dev, &dev->sg_tmp, 1, DMA_TO_DEVICE)) { - dev_err(dev->dev, "[%s:%d] dma_map_sg(sg_tmp) error\n", - __func__, __LINE__); - return -ENOMEM; - } - dev->addr_in =3D sg_dma_address(&dev->sg_tmp); - - if (sg_dst) { - if (!dma_map_sg(dev->dev, &dev->sg_tmp, 1, - DMA_FROM_DEVICE)) { - dev_err(dev->dev, - "[%s:%d] dma_map_sg(sg_tmp) error\n", - __func__, __LINE__); - dma_unmap_sg(dev->dev, &dev->sg_tmp, 1, - DMA_TO_DEVICE); - return -ENOMEM; - } - dev->addr_out =3D sg_dma_address(&dev->sg_tmp); - } + dev->addr_out =3D sg_dma_address(sg_dst); } dev->count =3D count; return 0; @@ -154,11 +117,11 @@ static void rk_unload_data(struct rk_crypto_info *dev) { struct scatterlist *sg_in, *sg_out; =20 - sg_in =3D dev->aligned ? dev->sg_src : &dev->sg_tmp; + sg_in =3D dev->sg_src; dma_unmap_sg(dev->dev, sg_in, 1, DMA_TO_DEVICE); =20 if (dev->sg_dst) { - sg_out =3D dev->aligned ? dev->sg_dst : &dev->sg_tmp; + sg_out =3D dev->sg_dst; dma_unmap_sg(dev->dev, sg_out, 1, DMA_FROM_DEVICE); } } diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 540b81a14b9b..a7de5738f6dc 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -204,12 +204,8 @@ struct rk_crypto_info { /* the public variable */ struct scatterlist *sg_src; struct scatterlist *sg_dst; - struct scatterlist sg_tmp; struct scatterlist *first; unsigned int left_bytes; - void *addr_vir; - int aligned; - int align_size; size_t src_nents; size_t dst_nents; unsigned int total; diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 16009bb0bf16..c762e462eb57 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -236,8 +236,6 @@ static int rk_ahash_start(struct rk_crypto_info *dev) =20 dev->total =3D req->nbytes; dev->left_bytes =3D req->nbytes; - dev->aligned =3D 0; - dev->align_size =3D 4; dev->sg_dst =3D NULL; dev->sg_src =3D req->src; dev->first =3D req->src; @@ -272,15 +270,13 @@ static int rk_ahash_crypto_rx(struct rk_crypto_info *= dev) =20 dev->unload_data(dev); if (dev->left_bytes) { - if (dev->aligned) { - if (sg_is_last(dev->sg_src)) { - dev_warn(dev->dev, "[%s:%d], Lack of data\n", - __func__, __LINE__); - err =3D -ENOMEM; - goto out_rx; - } - dev->sg_src =3D sg_next(dev->sg_src); + if (sg_is_last(dev->sg_src)) { + dev_warn(dev->dev, "[%s:%d], Lack of data\n", + __func__, __LINE__); + err =3D -ENOMEM; + goto out_rx; } + dev->sg_src =3D sg_next(dev->sg_src); err =3D rk_ahash_set_data_start(dev); } else { /* @@ -318,11 +314,6 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) algt =3D container_of(alg, struct rk_crypto_tmp, alg.hash); =20 tctx->dev =3D algt->dev; - tctx->dev->addr_vir =3D (void *)__get_free_page(GFP_KERNEL); - if (!tctx->dev->addr_vir) { - dev_err(tctx->dev->dev, "failed to kmalloc for addr_vir\n"); - return -ENOMEM; - } tctx->dev->start =3D rk_ahash_start; tctx->dev->update =3D rk_ahash_crypto_rx; tctx->dev->complete =3D rk_ahash_crypto_complete; @@ -345,7 +336,6 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) { struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); =20 - free_page((unsigned long)tctx->dev->addr_vir); crypto_free_ahash(tctx->fallback_tfm); } =20 diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 1ef94f8db2c5..d067b7f09165 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -356,7 +356,6 @@ static int rk_ablk_start(struct rk_crypto_info *dev) dev->src_nents =3D sg_nents(req->src); dev->sg_dst =3D req->dst; dev->dst_nents =3D sg_nents(req->dst); - dev->aligned =3D 1; =20 spin_lock_irqsave(&dev->lock, flags); rk_ablk_hw_init(dev); @@ -376,13 +375,9 @@ static void rk_iv_copyback(struct rk_crypto_info *dev) =20 /* Update the IV buffer to contain the next IV for encryption mode. */ if (!(rctx->mode & RK_CRYPTO_DEC)) { - if (dev->aligned) { - memcpy(req->iv, sg_virt(dev->sg_dst) + - dev->sg_dst->length - ivsize, ivsize); - } else { - memcpy(req->iv, dev->addr_vir + - dev->count - ivsize, ivsize); - } + memcpy(req->iv, + sg_virt(dev->sg_dst) + dev->sg_dst->length - ivsize, + ivsize); } } =20 @@ -420,27 +415,16 @@ static int rk_ablk_rx(struct rk_crypto_info *dev) skcipher_request_cast(dev->async_req); =20 dev->unload_data(dev); - if (!dev->aligned) { - if (!sg_pcopy_from_buffer(req->dst, dev->dst_nents, - dev->addr_vir, dev->count, - dev->total - dev->left_bytes - - dev->count)) { - err =3D -EINVAL; - goto out_rx; - } - } if (dev->left_bytes) { rk_update_iv(dev); - if (dev->aligned) { - if (sg_is_last(dev->sg_src)) { - dev_err(dev->dev, "[%s:%d] Lack of data\n", + if (sg_is_last(dev->sg_src)) { + dev_err(dev->dev, "[%s:%d] Lack of data\n", __func__, __LINE__); - err =3D -ENOMEM; - goto out_rx; - } - dev->sg_src =3D sg_next(dev->sg_src); - dev->sg_dst =3D sg_next(dev->sg_dst); + err =3D -ENOMEM; + goto out_rx; } + dev->sg_src =3D sg_next(dev->sg_src); + dev->sg_dst =3D sg_next(dev->sg_dst); err =3D rk_set_data_start(dev); } else { rk_iv_copyback(dev); @@ -462,13 +446,9 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tf= m) algt =3D container_of(alg, struct rk_crypto_tmp, alg.skcipher); =20 ctx->dev =3D algt->dev; - ctx->dev->align_size =3D crypto_tfm_alg_alignmask(crypto_skcipher_tfm(tfm= )) + 1; ctx->dev->start =3D rk_ablk_start; ctx->dev->update =3D rk_ablk_rx; ctx->dev->complete =3D rk_crypto_complete; - ctx->dev->addr_vir =3D (char *)__get_free_page(GFP_KERNEL); - if (!ctx->dev->addr_vir) - return -ENOMEM; =20 ctx->fallback_tfm =3D crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALL= BACK); if (IS_ERR(ctx->fallback_tfm)) { @@ -488,7 +468,6 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); =20 memzero_explicit(ctx->key, ctx->keylen); - free_page((unsigned long)ctx->dev->addr_vir); crypto_free_skcipher(ctx->fallback_tfm); } =20 --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7BDFC07E9D for ; Tue, 27 Sep 2022 07:57:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231553AbiI0H5g (ORCPT ); Tue, 27 Sep 2022 03:57:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230248AbiI0H42 (ORCPT ); Tue, 27 Sep 2022 03:56:28 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52089804AF for ; Tue, 27 Sep 2022 00:55:46 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id n15so13688935wrq.5 for ; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=qyY6PIoueQAjdQkJpr95FFSpU/MQ1Lr//mbpQ6WJHPc=; b=XbcR6faAvE5Ap/vQrUabul4FwbwD2hCGolTqfQEuya42lK74CAWGpKLoNUNb5/8PYZ J7AoAFKG9p8FjrMuFyO1D0UYx45wevVWxBc9Oey/f6Ubi1oYwOPJ8tFcNImNHj+/bk94 fsO1sixwSSqutLD+Txpkbmnhtkg4bCFTCObU3F3r6BaXnWJLcWDGUElunnnA0lBl37MB hQkAPEZJySAuBLzlfC8k+g82mIv+68pHiyL2i8+MBNAshYHy+9Kg/y4d2BmhQInBANlK 72zI7fuBRC2747nqRv2QWjclBiOmvJNruTNE/e2JmxfrbRtBwDKhqNuTojr7EOmiXNO+ E7Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=qyY6PIoueQAjdQkJpr95FFSpU/MQ1Lr//mbpQ6WJHPc=; b=zJfxJyt1p/1hBEx+0eATo1gBAFxKmvIDIkXRkE7nik+puiEbxgpSum/wHdD4QFhiER CMyHnUdfbft8SSy7AfaLheQuPWm6ZWmBvDbjFMNMuzIdObV5ZXSYLzOO6DJqLVX6/+7K 7OSsdmi9Zj+TxyrDq9NRZGSEgK5FW2olewGCf1QxOGIqVg1LIs0nGzTp0ySVFkG7930l sjGqLkS1Qz4+bLht9LzUrnTTmAn4unNmhgKLuWZUc160QAEo8lIwr4aHrqkVU+Grx++a KnQQdKoEHqjNaaVsZJ8NOJPKMGMp13htYcOEy7kRcrg81IKBp1AkTOgtPztFMW8Z4Gvr himg== X-Gm-Message-State: ACrzQf1dqUZjr2MFjWGpG9ASDaXmxMPgc4VRYCBkD5PMPxlSp7Bv//HE MnLbHzl+UJLm5v5n4zrGueDnjA== X-Google-Smtp-Source: AMsMyM4Mx2T4MD77Y8aDFwhNuwoNNeZOoBxHzlXvx2KeU9f9qUQEL+Qnl6bb+oztVqiNJffB7HwB4Q== X-Received: by 2002:a5d:43cc:0:b0:22c:c2a3:4d74 with SMTP id v12-20020a5d43cc000000b0022cc2a34d74mr132885wrr.311.1664265344181; Tue, 27 Sep 2022 00:55:44 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:43 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 10/33] crypto: rockchip: rework by using crypto_engine Date: Tue, 27 Sep 2022 07:54:48 +0000 Message-Id: <20220927075511.3147847-11-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of doing manual queue management, let's use the crypto/engine for that. In the same time, rework the requests handling to be easier to understand (and fix all bugs related to them). Fixes: ce0183cb6464b ("crypto: rockchip - switch to skcipher API") Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/Kconfig | 1 + drivers/crypto/rockchip/rk3288_crypto.c | 152 +---------- drivers/crypto/rockchip/rk3288_crypto.h | 39 +-- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 144 +++++----- .../crypto/rockchip/rk3288_crypto_skcipher.c | 250 +++++++++--------- 5 files changed, 221 insertions(+), 365 deletions(-) diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 113b35f69598..c30b5a39c2ac 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -674,6 +674,7 @@ config CRYPTO_DEV_ROCKCHIP select CRYPTO_CBC select CRYPTO_DES select CRYPTO_AES + select CRYPTO_ENGINE select CRYPTO_LIB_DES select CRYPTO_MD5 select CRYPTO_SHA1 diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index b3db096e2ec2..1afb65eee6c9 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -65,149 +65,24 @@ static void rk_crypto_disable_clk(struct rk_crypto_inf= o *dev) clk_disable_unprepare(dev->sclk); } =20 -static int check_alignment(struct scatterlist *sg_src, - struct scatterlist *sg_dst, - int align_mask) -{ - int in, out, align; - - in =3D IS_ALIGNED((uint32_t)sg_src->offset, 4) && - IS_ALIGNED((uint32_t)sg_src->length, align_mask); - if (!sg_dst) - return in; - out =3D IS_ALIGNED((uint32_t)sg_dst->offset, 4) && - IS_ALIGNED((uint32_t)sg_dst->length, align_mask); - align =3D in && out; - - return (align && (sg_src->length =3D=3D sg_dst->length)); -} - -static int rk_load_data(struct rk_crypto_info *dev, - struct scatterlist *sg_src, - struct scatterlist *sg_dst) -{ - unsigned int count; - - count =3D min(dev->left_bytes, sg_src->length); - dev->left_bytes -=3D count; - - if (!dma_map_sg(dev->dev, sg_src, 1, DMA_TO_DEVICE)) { - dev_err(dev->dev, "[%s:%d] dma_map_sg(src) error\n", - __func__, __LINE__); - return -EINVAL; - } - dev->addr_in =3D sg_dma_address(sg_src); - - if (sg_dst) { - if (!dma_map_sg(dev->dev, sg_dst, 1, DMA_FROM_DEVICE)) { - dev_err(dev->dev, - "[%s:%d] dma_map_sg(dst) error\n", - __func__, __LINE__); - dma_unmap_sg(dev->dev, sg_src, 1, - DMA_TO_DEVICE); - return -EINVAL; - } - dev->addr_out =3D sg_dma_address(sg_dst); - } - dev->count =3D count; - return 0; -} - -static void rk_unload_data(struct rk_crypto_info *dev) -{ - struct scatterlist *sg_in, *sg_out; - - sg_in =3D dev->sg_src; - dma_unmap_sg(dev->dev, sg_in, 1, DMA_TO_DEVICE); - - if (dev->sg_dst) { - sg_out =3D dev->sg_dst; - dma_unmap_sg(dev->dev, sg_out, 1, DMA_FROM_DEVICE); - } -} - static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id) { struct rk_crypto_info *dev =3D platform_get_drvdata(dev_id); u32 interrupt_status; =20 - spin_lock(&dev->lock); interrupt_status =3D CRYPTO_READ(dev, RK_CRYPTO_INTSTS); CRYPTO_WRITE(dev, RK_CRYPTO_INTSTS, interrupt_status); =20 + dev->status =3D 1; if (interrupt_status & 0x0a) { dev_warn(dev->dev, "DMA Error\n"); - dev->err =3D -EFAULT; + dev->status =3D 0; } - tasklet_schedule(&dev->done_task); + complete(&dev->complete); =20 - spin_unlock(&dev->lock); return IRQ_HANDLED; } =20 -static int rk_crypto_enqueue(struct rk_crypto_info *dev, - struct crypto_async_request *async_req) -{ - unsigned long flags; - int ret; - - spin_lock_irqsave(&dev->lock, flags); - ret =3D crypto_enqueue_request(&dev->queue, async_req); - if (dev->busy) { - spin_unlock_irqrestore(&dev->lock, flags); - return ret; - } - dev->busy =3D true; - spin_unlock_irqrestore(&dev->lock, flags); - tasklet_schedule(&dev->queue_task); - - return ret; -} - -static void rk_crypto_queue_task_cb(unsigned long data) -{ - struct rk_crypto_info *dev =3D (struct rk_crypto_info *)data; - struct crypto_async_request *async_req, *backlog; - unsigned long flags; - int err =3D 0; - - dev->err =3D 0; - spin_lock_irqsave(&dev->lock, flags); - backlog =3D crypto_get_backlog(&dev->queue); - async_req =3D crypto_dequeue_request(&dev->queue); - - if (!async_req) { - dev->busy =3D false; - spin_unlock_irqrestore(&dev->lock, flags); - return; - } - spin_unlock_irqrestore(&dev->lock, flags); - - if (backlog) { - backlog->complete(backlog, -EINPROGRESS); - backlog =3D NULL; - } - - dev->async_req =3D async_req; - err =3D dev->start(dev); - if (err) - dev->complete(dev->async_req, err); -} - -static void rk_crypto_done_task_cb(unsigned long data) -{ - struct rk_crypto_info *dev =3D (struct rk_crypto_info *)data; - - if (dev->err) { - dev->complete(dev->async_req, dev->err); - return; - } - - dev->err =3D dev->update(dev); - if (dev->err) - dev->complete(dev->async_req, dev->err); -} - static struct rk_crypto_tmp *rk_cipher_algs[] =3D { &rk_ecb_aes_alg, &rk_cbc_aes_alg, @@ -300,8 +175,6 @@ static int rk_crypto_probe(struct platform_device *pdev) if (err) goto err_crypto; =20 - spin_lock_init(&crypto_info->lock); - crypto_info->reg =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(crypto_info->reg)) { err =3D PTR_ERR(crypto_info->reg); @@ -351,17 +224,11 @@ static int rk_crypto_probe(struct platform_device *pd= ev) crypto_info->dev =3D &pdev->dev; platform_set_drvdata(pdev, crypto_info); =20 - tasklet_init(&crypto_info->queue_task, - rk_crypto_queue_task_cb, (unsigned long)crypto_info); - tasklet_init(&crypto_info->done_task, - rk_crypto_done_task_cb, (unsigned long)crypto_info); - crypto_init_queue(&crypto_info->queue, 50); + crypto_info->engine =3D crypto_engine_alloc_init(&pdev->dev, true); + crypto_engine_start(crypto_info->engine); + init_completion(&crypto_info->complete); =20 rk_crypto_enable_clk(crypto_info); - crypto_info->load_data =3D rk_load_data; - crypto_info->unload_data =3D rk_unload_data; - crypto_info->enqueue =3D rk_crypto_enqueue; - crypto_info->busy =3D false; =20 err =3D rk_crypto_register(crypto_info); if (err) { @@ -373,9 +240,9 @@ static int rk_crypto_probe(struct platform_device *pdev) return 0; =20 err_register_alg: - tasklet_kill(&crypto_info->queue_task); - tasklet_kill(&crypto_info->done_task); + crypto_engine_exit(crypto_info->engine); err_crypto: + dev_err(dev, "Crypto Accelerator not successfully registered\n"); return err; } =20 @@ -385,8 +252,7 @@ static int rk_crypto_remove(struct platform_device *pde= v) =20 rk_crypto_unregister(); rk_crypto_disable_clk(crypto_tmp); - tasklet_kill(&crypto_tmp->done_task); - tasklet_kill(&crypto_tmp->queue_task); + crypto_engine_exit(crypto_tmp->engine); return 0; } =20 diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index a7de5738f6dc..65ed645e0168 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -5,9 +5,11 @@ #include #include #include +#include #include #include #include +#include #include #include =20 @@ -193,39 +195,15 @@ struct rk_crypto_info { struct reset_control *rst; void __iomem *reg; int irq; - struct crypto_queue queue; - struct tasklet_struct queue_task; - struct tasklet_struct done_task; - struct crypto_async_request *async_req; - int err; - /* device lock */ - spinlock_t lock; - - /* the public variable */ - struct scatterlist *sg_src; - struct scatterlist *sg_dst; - struct scatterlist *first; - unsigned int left_bytes; - size_t src_nents; - size_t dst_nents; - unsigned int total; - unsigned int count; - dma_addr_t addr_in; - dma_addr_t addr_out; - bool busy; - int (*start)(struct rk_crypto_info *dev); - int (*update)(struct rk_crypto_info *dev); - void (*complete)(struct crypto_async_request *base, int err); - int (*load_data)(struct rk_crypto_info *dev, - struct scatterlist *sg_src, - struct scatterlist *sg_dst); - void (*unload_data)(struct rk_crypto_info *dev); - int (*enqueue)(struct rk_crypto_info *dev, - struct crypto_async_request *async_req); + + struct crypto_engine *engine; + struct completion complete; + int status; }; =20 /* the private variable of hash */ struct rk_ahash_ctx { + struct crypto_engine_ctx enginectx; struct rk_crypto_info *dev; /* for fallback */ struct crypto_ahash *fallback_tfm; @@ -235,10 +213,12 @@ struct rk_ahash_ctx { struct rk_ahash_rctx { struct ahash_request fallback_req; u32 mode; + int nrsg; }; =20 /* the private variable of cipher */ struct rk_cipher_ctx { + struct crypto_engine_ctx enginectx; struct rk_crypto_info *dev; unsigned int keylen; u8 key[AES_MAX_KEY_SIZE]; @@ -247,6 +227,7 @@ struct rk_cipher_ctx { }; =20 struct rk_cipher_rctx { + u8 backup_iv[AES_BLOCK_SIZE]; u32 mode; struct skcipher_request fallback_req; // keep at the end }; diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index c762e462eb57..edd40e16a3f0 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -9,6 +9,7 @@ * Some ideas are from marvell/cesa.c and s5p-sss.c driver. */ #include +#include #include "rk3288_crypto.h" =20 /* @@ -72,16 +73,12 @@ static int zero_message_process(struct ahash_request *r= eq) return 0; } =20 -static void rk_ahash_crypto_complete(struct crypto_async_request *base, in= t err) +static void rk_ahash_reg_init(struct ahash_request *req) { - if (base->complete) - base->complete(base, err); -} - -static void rk_ahash_reg_init(struct rk_crypto_info *dev) -{ - struct ahash_request *req =3D ahash_request_cast(dev->async_req); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(req); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); + struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct rk_crypto_info *dev =3D tctx->dev; int reg_status; =20 reg_status =3D CRYPTO_READ(dev, RK_CRYPTO_CTRL) | @@ -108,7 +105,7 @@ static void rk_ahash_reg_init(struct rk_crypto_info *de= v) RK_CRYPTO_BYTESWAP_BRFIFO | RK_CRYPTO_BYTESWAP_BTFIFO); =20 - CRYPTO_WRITE(dev, RK_CRYPTO_HASH_MSG_LEN, dev->total); + CRYPTO_WRITE(dev, RK_CRYPTO_HASH_MSG_LEN, req->nbytes); } =20 static int rk_ahash_init(struct ahash_request *req) @@ -206,44 +203,59 @@ static int rk_ahash_digest(struct ahash_request *req) =20 if (!req->nbytes) return zero_message_process(req); - else - return dev->enqueue(dev, &req->base); + + return crypto_transfer_hash_request_to_engine(dev->engine, req); } =20 -static void crypto_ahash_dma_start(struct rk_crypto_info *dev) +static void crypto_ahash_dma_start(struct rk_crypto_info *dev, struct scat= terlist *sg) { - CRYPTO_WRITE(dev, RK_CRYPTO_HRDMAS, dev->addr_in); - CRYPTO_WRITE(dev, RK_CRYPTO_HRDMAL, (dev->count + 3) / 4); + CRYPTO_WRITE(dev, RK_CRYPTO_HRDMAS, sg_dma_address(sg)); + CRYPTO_WRITE(dev, RK_CRYPTO_HRDMAL, sg_dma_len(sg) / 4); CRYPTO_WRITE(dev, RK_CRYPTO_CTRL, RK_CRYPTO_HASH_START | (RK_CRYPTO_HASH_START << 16)); } =20 -static int rk_ahash_set_data_start(struct rk_crypto_info *dev) +static int rk_hash_prepare(struct crypto_engine *engine, void *breq) +{ + struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); + struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); + struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + int ret; + + ret =3D dma_map_sg(tctx->dev->dev, areq->src, sg_nents(areq->src), DMA_TO= _DEVICE); + if (ret <=3D 0) + return -EINVAL; + + rctx->nrsg =3D ret; + + return 0; +} + +static int rk_hash_unprepare(struct crypto_engine *engine, void *breq) { - int err; + struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); + struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); + struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); =20 - err =3D dev->load_data(dev, dev->sg_src, NULL); - if (!err) - crypto_ahash_dma_start(dev); - return err; + dma_unmap_sg(tctx->dev->dev, areq->src, rctx->nrsg, DMA_TO_DEVICE); + return 0; } =20 -static int rk_ahash_start(struct rk_crypto_info *dev) +static int rk_hash_run(struct crypto_engine *engine, void *breq) { - struct ahash_request *req =3D ahash_request_cast(dev->async_req); - struct crypto_ahash *tfm; - struct rk_ahash_rctx *rctx; - - dev->total =3D req->nbytes; - dev->left_bytes =3D req->nbytes; - dev->sg_dst =3D NULL; - dev->sg_src =3D req->src; - dev->first =3D req->src; - dev->src_nents =3D sg_nents(req->src); - rctx =3D ahash_request_ctx(req); + struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); + struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); + struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); + struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct scatterlist *sg =3D areq->src; + int err =3D 0; + int i; + u32 v; + rctx->mode =3D 0; =20 - tfm =3D crypto_ahash_reqtfm(req); switch (crypto_ahash_digestsize(tfm)) { case SHA1_DIGEST_SIZE: rctx->mode =3D RK_CRYPTO_HASH_SHA1; @@ -255,30 +267,26 @@ static int rk_ahash_start(struct rk_crypto_info *dev) rctx->mode =3D RK_CRYPTO_HASH_MD5; break; default: - return -EINVAL; + err =3D -EINVAL; + goto theend; } =20 - rk_ahash_reg_init(dev); - return rk_ahash_set_data_start(dev); -} + rk_ahash_reg_init(areq); =20 -static int rk_ahash_crypto_rx(struct rk_crypto_info *dev) -{ - int err =3D 0; - struct ahash_request *req =3D ahash_request_cast(dev->async_req); - struct crypto_ahash *tfm; - - dev->unload_data(dev); - if (dev->left_bytes) { - if (sg_is_last(dev->sg_src)) { - dev_warn(dev->dev, "[%s:%d], Lack of data\n", - __func__, __LINE__); - err =3D -ENOMEM; - goto out_rx; + while (sg) { + reinit_completion(&tctx->dev->complete); + tctx->dev->status =3D 0; + crypto_ahash_dma_start(tctx->dev, sg); + wait_for_completion_interruptible_timeout(&tctx->dev->complete, + msecs_to_jiffies(2000)); + if (!tctx->dev->status) { + dev_err(tctx->dev->dev, "DMA timeout\n"); + err =3D -EFAULT; + goto theend; } - dev->sg_src =3D sg_next(dev->sg_src); - err =3D rk_ahash_set_data_start(dev); - } else { + sg =3D sg_next(sg); + } + /* * it will take some time to process date after last dma * transmission. @@ -289,18 +297,20 @@ static int rk_ahash_crypto_rx(struct rk_crypto_info *= dev) * efficiency, and make it response quickly when dma * complete. */ - while (!CRYPTO_READ(dev, RK_CRYPTO_HASH_STS)) - udelay(10); - - tfm =3D crypto_ahash_reqtfm(req); - memcpy_fromio(req->result, dev->reg + RK_CRYPTO_HASH_DOUT_0, - crypto_ahash_digestsize(tfm)); - dev->complete(dev->async_req, 0); - tasklet_schedule(&dev->queue_task); + while (!CRYPTO_READ(tctx->dev, RK_CRYPTO_HASH_STS)) + udelay(10); + + for (i =3D 0; i < crypto_ahash_digestsize(tfm) / 4; i++) { + v =3D readl(tctx->dev->reg + RK_CRYPTO_HASH_DOUT_0 + i * 4); + put_unaligned_le32(v, areq->result + i * 4); } =20 -out_rx: - return err; +theend: + local_bh_disable(); + crypto_finalize_hash_request(engine, breq, err); + local_bh_enable(); + + return 0; } =20 static int rk_cra_hash_init(struct crypto_tfm *tfm) @@ -314,9 +324,6 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) algt =3D container_of(alg, struct rk_crypto_tmp, alg.hash); =20 tctx->dev =3D algt->dev; - tctx->dev->start =3D rk_ahash_start; - tctx->dev->update =3D rk_ahash_crypto_rx; - tctx->dev->complete =3D rk_ahash_crypto_complete; =20 /* for fallback */ tctx->fallback_tfm =3D crypto_alloc_ahash(alg_name, 0, @@ -325,10 +332,15 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) dev_err(tctx->dev->dev, "Could not load fallback driver.\n"); return PTR_ERR(tctx->fallback_tfm); } + crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm), sizeof(struct rk_ahash_rctx) + crypto_ahash_reqsize(tctx->fallback_tfm)); =20 + tctx->enginectx.op.do_one_request =3D rk_hash_run; + tctx->enginectx.op.prepare_request =3D rk_hash_prepare; + tctx->enginectx.op.unprepare_request =3D rk_hash_unprepare; + return 0; } =20 diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index d067b7f09165..67a7e05d5ae3 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -9,6 +9,7 @@ * Some ideas are from marvell-cesa.c and s5p-sss.c driver. */ #include +#include #include "rk3288_crypto.h" =20 #define RK_CRYPTO_DEC BIT(0) @@ -70,19 +71,15 @@ static int rk_cipher_fallback(struct skcipher_request *= areq) return err; } =20 -static void rk_crypto_complete(struct crypto_async_request *base, int err) -{ - if (base->complete) - base->complete(base, err); -} - static int rk_handle_req(struct rk_crypto_info *dev, struct skcipher_request *req) { + struct crypto_engine *engine =3D dev->engine; + if (rk_cipher_need_fallback(req)) return rk_cipher_fallback(req); =20 - return dev->enqueue(dev, &req->base); + return crypto_transfer_skcipher_request_to_engine(engine, req); } =20 static int rk_aes_setkey(struct crypto_skcipher *cipher, @@ -265,25 +262,21 @@ static int rk_des3_ede_cbc_decrypt(struct skcipher_re= quest *req) return rk_handle_req(dev, req); } =20 -static void rk_ablk_hw_init(struct rk_crypto_info *dev) +static void rk_ablk_hw_init(struct rk_crypto_info *dev, struct skcipher_re= quest *req) { - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); struct crypto_skcipher *cipher =3D crypto_skcipher_reqtfm(req); struct crypto_tfm *tfm =3D crypto_skcipher_tfm(cipher); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(cipher); - u32 ivsize, block, conf_reg =3D 0; + u32 block, conf_reg =3D 0; =20 block =3D crypto_tfm_alg_blocksize(tfm); - ivsize =3D crypto_skcipher_ivsize(cipher); =20 if (block =3D=3D DES_BLOCK_SIZE) { rctx->mode |=3D RK_CRYPTO_TDES_FIFO_MODE | RK_CRYPTO_TDES_BYTESWAP_KEY | RK_CRYPTO_TDES_BYTESWAP_IV; CRYPTO_WRITE(dev, RK_CRYPTO_TDES_CTRL, rctx->mode); - memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, req->iv, ivsize); memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, ctx->key, ctx->keylen= ); conf_reg =3D RK_CRYPTO_DESSEL; } else { @@ -296,7 +289,6 @@ static void rk_ablk_hw_init(struct rk_crypto_info *dev) else if (ctx->keylen =3D=3D AES_KEYSIZE_256) rctx->mode |=3D RK_CRYPTO_AES_256BIT_key; CRYPTO_WRITE(dev, RK_CRYPTO_AES_CTRL, rctx->mode); - memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, req->iv, ivsize); memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, ctx->key, ctx->keylen); } conf_reg |=3D RK_CRYPTO_BYTESWAP_BTFIFO | @@ -306,133 +298,138 @@ static void rk_ablk_hw_init(struct rk_crypto_info *= dev) RK_CRYPTO_BCDMA_ERR_ENA | RK_CRYPTO_BCDMA_DONE_ENA); } =20 -static void crypto_dma_start(struct rk_crypto_info *dev) +static void crypto_dma_start(struct rk_crypto_info *dev, + struct scatterlist *sgs, + struct scatterlist *sgd, unsigned int todo) { - CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAS, dev->addr_in); - CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAL, dev->count / 4); - CRYPTO_WRITE(dev, RK_CRYPTO_BTDMAS, dev->addr_out); + CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAS, sg_dma_address(sgs)); + CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAL, todo); + CRYPTO_WRITE(dev, RK_CRYPTO_BTDMAS, sg_dma_address(sgd)); CRYPTO_WRITE(dev, RK_CRYPTO_CTRL, RK_CRYPTO_BLOCK_START | _SBF(RK_CRYPTO_BLOCK_START, 16)); } =20 -static int rk_set_data_start(struct rk_crypto_info *dev) +static int rk_cipher_run(struct crypto_engine *engine, void *async_req) { - int err; - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); + struct skcipher_request *areq =3D container_of(async_req, struct skcipher= _request, base); + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); - u32 ivsize =3D crypto_skcipher_ivsize(tfm); - u8 *src_last_blk =3D page_address(sg_page(dev->sg_src)) + - dev->sg_src->offset + dev->sg_src->length - ivsize; - - /* Store the iv that need to be updated in chain mode. - * And update the IV buffer to contain the next IV for decryption mode. - */ - if (rctx->mode & RK_CRYPTO_DEC) { - memcpy(ctx->iv, src_last_blk, ivsize); - sg_pcopy_to_buffer(dev->first, dev->src_nents, req->iv, - ivsize, dev->total - ivsize); - } - - err =3D dev->load_data(dev, dev->sg_src, dev->sg_dst); - if (!err) - crypto_dma_start(dev); - return err; -} - -static int rk_ablk_start(struct rk_crypto_info *dev) -{ - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); - unsigned long flags; + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(areq); + struct scatterlist *sgs, *sgd; int err =3D 0; + int ivsize =3D crypto_skcipher_ivsize(tfm); + int offset; + u8 iv[AES_BLOCK_SIZE]; + u8 biv[AES_BLOCK_SIZE]; + u8 *ivtouse =3D areq->iv; + unsigned int len =3D areq->cryptlen; + unsigned int todo; + + ivsize =3D crypto_skcipher_ivsize(tfm); + if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) { + if (rctx->mode & RK_CRYPTO_DEC) { + offset =3D areq->cryptlen - ivsize; + scatterwalk_map_and_copy(rctx->backup_iv, areq->src, + offset, ivsize, 0); + } + } =20 - dev->left_bytes =3D req->cryptlen; - dev->total =3D req->cryptlen; - dev->sg_src =3D req->src; - dev->first =3D req->src; - dev->src_nents =3D sg_nents(req->src); - dev->sg_dst =3D req->dst; - dev->dst_nents =3D sg_nents(req->dst); - - spin_lock_irqsave(&dev->lock, flags); - rk_ablk_hw_init(dev); - err =3D rk_set_data_start(dev); - spin_unlock_irqrestore(&dev->lock, flags); - return err; -} - -static void rk_iv_copyback(struct rk_crypto_info *dev) -{ - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); - u32 ivsize =3D crypto_skcipher_ivsize(tfm); + sgs =3D areq->src; + sgd =3D areq->dst; =20 - /* Update the IV buffer to contain the next IV for encryption mode. */ - if (!(rctx->mode & RK_CRYPTO_DEC)) { - memcpy(req->iv, - sg_virt(dev->sg_dst) + dev->sg_dst->length - ivsize, - ivsize); + while (sgs && sgd && len) { + if (!sgs->length) { + sgs =3D sg_next(sgs); + sgd =3D sg_next(sgd); + continue; + } + if (rctx->mode & RK_CRYPTO_DEC) { + /* we backup last block of source to be used as IV at next step */ + offset =3D sgs->length - ivsize; + scatterwalk_map_and_copy(biv, sgs, offset, ivsize, 0); + } + if (sgs =3D=3D sgd) { + err =3D dma_map_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + if (err <=3D 0) { + err =3D -EINVAL; + goto theend_iv; + } + } else { + err =3D dma_map_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + if (err <=3D 0) { + err =3D -EINVAL; + goto theend_iv; + } + err =3D dma_map_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + if (err <=3D 0) { + err =3D -EINVAL; + goto theend_sgs; + } + } + err =3D 0; + rk_ablk_hw_init(ctx->dev, areq); + if (ivsize) { + if (ivsize =3D=3D DES_BLOCK_SIZE) + memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_IV_0, ivtouse, ivsize); + else + memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_IV_0, ivtouse, ivsize); + } + reinit_completion(&ctx->dev->complete); + ctx->dev->status =3D 0; + + todo =3D min(sg_dma_len(sgs), len); + len -=3D todo; + crypto_dma_start(ctx->dev, sgs, sgd, todo / 4); + wait_for_completion_interruptible_timeout(&ctx->dev->complete, + msecs_to_jiffies(2000)); + if (!ctx->dev->status) { + dev_err(ctx->dev->dev, "DMA timeout\n"); + err =3D -EFAULT; + goto theend; + } + if (sgs =3D=3D sgd) { + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + } else { + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + } + if (rctx->mode & RK_CRYPTO_DEC) { + memcpy(iv, biv, ivsize); + ivtouse =3D iv; + } else { + offset =3D sgd->length - ivsize; + scatterwalk_map_and_copy(iv, sgd, offset, ivsize, 0); + ivtouse =3D iv; + } + sgs =3D sg_next(sgs); + sgd =3D sg_next(sgd); } -} - -static void rk_update_iv(struct rk_crypto_info *dev) -{ - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); - u32 ivsize =3D crypto_skcipher_ivsize(tfm); - u8 *new_iv =3D NULL; =20 - if (rctx->mode & RK_CRYPTO_DEC) { - new_iv =3D ctx->iv; - } else { - new_iv =3D page_address(sg_page(dev->sg_dst)) + - dev->sg_dst->offset + dev->sg_dst->length - ivsize; + if (areq->iv && ivsize > 0) { + offset =3D areq->cryptlen - ivsize; + if (rctx->mode & RK_CRYPTO_DEC) { + memcpy(areq->iv, rctx->backup_iv, ivsize); + memzero_explicit(rctx->backup_iv, ivsize); + } else { + scatterwalk_map_and_copy(areq->iv, areq->dst, offset, + ivsize, 0); + } } =20 - if (ivsize =3D=3D DES_BLOCK_SIZE) - memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, new_iv, ivsize); - else if (ivsize =3D=3D AES_BLOCK_SIZE) - memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, new_iv, ivsize); -} +theend: + local_bh_disable(); + crypto_finalize_skcipher_request(engine, areq, err); + local_bh_enable(); + return 0; =20 -/* return: - * true some err was occurred - * fault no err, continue - */ -static int rk_ablk_rx(struct rk_crypto_info *dev) -{ - int err =3D 0; - struct skcipher_request *req =3D - skcipher_request_cast(dev->async_req); - - dev->unload_data(dev); - if (dev->left_bytes) { - rk_update_iv(dev); - if (sg_is_last(dev->sg_src)) { - dev_err(dev->dev, "[%s:%d] Lack of data\n", - __func__, __LINE__); - err =3D -ENOMEM; - goto out_rx; - } - dev->sg_src =3D sg_next(dev->sg_src); - dev->sg_dst =3D sg_next(dev->sg_dst); - err =3D rk_set_data_start(dev); +theend_sgs: + if (sgs =3D=3D sgd) { + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); } else { - rk_iv_copyback(dev); - /* here show the calculation is over without any err */ - dev->complete(dev->async_req, 0); - tasklet_schedule(&dev->queue_task); + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); } -out_rx: +theend_iv: return err; } =20 @@ -446,9 +443,6 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) algt =3D container_of(alg, struct rk_crypto_tmp, alg.skcipher); =20 ctx->dev =3D algt->dev; - ctx->dev->start =3D rk_ablk_start; - ctx->dev->update =3D rk_ablk_rx; - ctx->dev->complete =3D rk_crypto_complete; =20 ctx->fallback_tfm =3D crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALL= BACK); if (IS_ERR(ctx->fallback_tfm)) { @@ -460,6 +454,8 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) tfm->reqsize =3D sizeof(struct rk_cipher_rctx) + crypto_skcipher_reqsize(ctx->fallback_tfm); =20 + ctx->enginectx.op.do_one_request =3D rk_cipher_run; + return 0; } =20 --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76F6CC07E9D for ; Tue, 27 Sep 2022 07:56:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230415AbiI0H4R (ORCPT ); Tue, 27 Sep 2022 03:56:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231335AbiI0Hzs (ORCPT ); Tue, 27 Sep 2022 03:55:48 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C908ABF04 for ; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id z13-20020a7bc7cd000000b003b5054c6f9bso8373834wmk.2 for ; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=8+zNu8By2wCTRIvE0cQTAVxjDoLu9Skp/kq6mTlEw+Q=; b=pttI2/Au91o3zgibFACg8Nhk3ilBKuhylxhCeEhYU5JAGaaWvV/RBKC/mQQ2SFYGZM OQLm8qX+wc0P+swBCmLlo40WQ0Grcxs+F7XW4nJw5p6z+JKD6MyvvSxV8g6IDZzqSV3A ztpVCUU07lMC/50isJTvu6S769yKbp/FzFQ37td3+TnpoWBJzZchRZB5xmP/vOSZ4n2m LxhxfQCqxT8geyv8oNIc+9i49aqRWVDG92Gj2Pg+pK7fGWaLSVdbpQpeoeprri4/s5tL aswitSe4j0QM1hBiSAtW/0PEsgGRfznESnLz/KfA0zjwPkzi/1TN66LJdkdyItRPZMBH Sp5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=8+zNu8By2wCTRIvE0cQTAVxjDoLu9Skp/kq6mTlEw+Q=; b=bJiaaqDplr/ijwLO52rKljP0+ROhNiwx+9Fx/ujCcIT7sQtW4XO2Y+BzcJmtOnAKLP fJeXmN/fYGoOac/KYjKxVU3lTeet7TlUykeqrWAc2L6RJn6xktBm+LcK7NyKTF0Sd8d0 EGAWcsvf1/Jwmtg/cPLOQFCsQjiVcG8nk1PhFiLMgnfToqVflc6lyyrUNbxIaRLKggtz VSSduzjkYVJYHRWkCMijugwnJZ0P3x/E2Hc3ocETzDDEuFiCVtxcQMwQkAoJWfurbHzs YPxweJPXKZulh7RyO2rn6e/Y7RwHSVXEx7QEa/r0lMTBL7tzECWo3Hn4uGMXtjw1bqVL yGlw== X-Gm-Message-State: ACrzQf3ONGLR9hm0ti0mpjtV64+QjrIyi+opcZdnISMiRW8XzZxC7epF /h5A3LVTayWtM5lrSzlsJBkr8Q== X-Google-Smtp-Source: AMsMyM5lBaQ5pnRqiZc7fxXzLCtvzbYRUjOCoeRyhLfmfsSlZ3HAXwtcnbTn/Shy28opSmHMjOiNXA== X-Received: by 2002:a7b:c451:0:b0:3b4:851f:d200 with SMTP id l17-20020a7bc451000000b003b4851fd200mr1679325wmi.196.1664265345418; Tue, 27 Sep 2022 00:55:45 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:44 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 11/33] crypto: rockchip: rewrite type Date: Tue, 27 Sep 2022 07:54:49 +0000 Message-Id: <20220927075511.3147847-12-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of using a custom type for classify algorithms, let's just use already defined ones. And let's made a bit more verbose about what is registered. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 26 +++++++++++++------ drivers/crypto/rockchip/rk3288_crypto.h | 7 +---- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 6 ++--- .../crypto/rockchip/rk3288_crypto_skcipher.c | 12 ++++----- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 1afb65eee6c9..8f9664acc78d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -102,12 +102,22 @@ static int rk_crypto_register(struct rk_crypto_info *= crypto_info) =20 for (i =3D 0; i < ARRAY_SIZE(rk_cipher_algs); i++) { rk_cipher_algs[i]->dev =3D crypto_info; - if (rk_cipher_algs[i]->type =3D=3D ALG_TYPE_CIPHER) - err =3D crypto_register_skcipher( - &rk_cipher_algs[i]->alg.skcipher); - else - err =3D crypto_register_ahash( - &rk_cipher_algs[i]->alg.hash); + switch (rk_cipher_algs[i]->type) { + case CRYPTO_ALG_TYPE_SKCIPHER: + dev_info(crypto_info->dev, "Register %s as %s\n", + rk_cipher_algs[i]->alg.skcipher.base.cra_name, + rk_cipher_algs[i]->alg.skcipher.base.cra_driver_name); + err =3D crypto_register_skcipher(&rk_cipher_algs[i]->alg.skcipher); + break; + case CRYPTO_ALG_TYPE_AHASH: + dev_info(crypto_info->dev, "Register %s as %s\n", + rk_cipher_algs[i]->alg.hash.halg.base.cra_name, + rk_cipher_algs[i]->alg.hash.halg.base.cra_driver_name); + err =3D crypto_register_ahash(&rk_cipher_algs[i]->alg.hash); + break; + default: + dev_err(crypto_info->dev, "unknown algorithm\n"); + } if (err) goto err_cipher_algs; } @@ -115,7 +125,7 @@ static int rk_crypto_register(struct rk_crypto_info *cr= ypto_info) =20 err_cipher_algs: for (k =3D 0; k < i; k++) { - if (rk_cipher_algs[i]->type =3D=3D ALG_TYPE_CIPHER) + if (rk_cipher_algs[i]->type =3D=3D CRYPTO_ALG_TYPE_SKCIPHER) crypto_unregister_skcipher(&rk_cipher_algs[k]->alg.skcipher); else crypto_unregister_ahash(&rk_cipher_algs[i]->alg.hash); @@ -128,7 +138,7 @@ static void rk_crypto_unregister(void) unsigned int i; =20 for (i =3D 0; i < ARRAY_SIZE(rk_cipher_algs); i++) { - if (rk_cipher_algs[i]->type =3D=3D ALG_TYPE_CIPHER) + if (rk_cipher_algs[i]->type =3D=3D CRYPTO_ALG_TYPE_SKCIPHER) crypto_unregister_skcipher(&rk_cipher_algs[i]->alg.skcipher); else crypto_unregister_ahash(&rk_cipher_algs[i]->alg.hash); diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 65ed645e0168..d924ea17402a 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -232,18 +232,13 @@ struct rk_cipher_rctx { struct skcipher_request fallback_req; // keep at the end }; =20 -enum alg_type { - ALG_TYPE_HASH, - ALG_TYPE_CIPHER, -}; - struct rk_crypto_tmp { + u32 type; struct rk_crypto_info *dev; union { struct skcipher_alg skcipher; struct ahash_alg hash; } alg; - enum alg_type type; }; =20 extern struct rk_crypto_tmp rk_ecb_aes_alg; diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index edd40e16a3f0..d08e2438d356 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -352,7 +352,7 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) } =20 struct rk_crypto_tmp rk_ahash_sha1 =3D { - .type =3D ALG_TYPE_HASH, + .type =3D CRYPTO_ALG_TYPE_AHASH, .alg.hash =3D { .init =3D rk_ahash_init, .update =3D rk_ahash_update, @@ -382,7 +382,7 @@ struct rk_crypto_tmp rk_ahash_sha1 =3D { }; =20 struct rk_crypto_tmp rk_ahash_sha256 =3D { - .type =3D ALG_TYPE_HASH, + .type =3D CRYPTO_ALG_TYPE_AHASH, .alg.hash =3D { .init =3D rk_ahash_init, .update =3D rk_ahash_update, @@ -412,7 +412,7 @@ struct rk_crypto_tmp rk_ahash_sha256 =3D { }; =20 struct rk_crypto_tmp rk_ahash_md5 =3D { - .type =3D ALG_TYPE_HASH, + .type =3D CRYPTO_ALG_TYPE_AHASH, .alg.hash =3D { .init =3D rk_ahash_init, .update =3D rk_ahash_update, diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 67a7e05d5ae3..1ed297f5d809 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -468,7 +468,7 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) } =20 struct rk_crypto_tmp rk_ecb_aes_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "ecb(aes)", .base.cra_driver_name =3D "ecb-aes-rk", @@ -490,7 +490,7 @@ struct rk_crypto_tmp rk_ecb_aes_alg =3D { }; =20 struct rk_crypto_tmp rk_cbc_aes_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "cbc(aes)", .base.cra_driver_name =3D "cbc-aes-rk", @@ -513,7 +513,7 @@ struct rk_crypto_tmp rk_cbc_aes_alg =3D { }; =20 struct rk_crypto_tmp rk_ecb_des_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "ecb(des)", .base.cra_driver_name =3D "ecb-des-rk", @@ -535,7 +535,7 @@ struct rk_crypto_tmp rk_ecb_des_alg =3D { }; =20 struct rk_crypto_tmp rk_cbc_des_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "cbc(des)", .base.cra_driver_name =3D "cbc-des-rk", @@ -558,7 +558,7 @@ struct rk_crypto_tmp rk_cbc_des_alg =3D { }; =20 struct rk_crypto_tmp rk_ecb_des3_ede_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "ecb(des3_ede)", .base.cra_driver_name =3D "ecb-des3-ede-rk", @@ -580,7 +580,7 @@ struct rk_crypto_tmp rk_ecb_des3_ede_alg =3D { }; =20 struct rk_crypto_tmp rk_cbc_des3_ede_alg =3D { - .type =3D ALG_TYPE_CIPHER, + .type =3D CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher =3D { .base.cra_name =3D "cbc(des3_ede)", .base.cra_driver_name =3D "cbc-des3-ede-rk", --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7556EC07E9D for ; Tue, 27 Sep 2022 07:57:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231472AbiI0H5p (ORCPT ); Tue, 27 Sep 2022 03:57:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231461AbiI0H43 (ORCPT ); Tue, 27 Sep 2022 03:56:29 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4656EAC242 for ; Tue, 27 Sep 2022 00:55:48 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id iv17so5975024wmb.4 for ; Tue, 27 Sep 2022 00:55:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=L8AvsohsoBltn+JQtOUo9SRwvt3mTUYzs8yXR4j4JbM=; b=0UqETPBuU1nXKIMnu2lTumwoCguAbyQBr0p+NVarCht2EJzH+kDHCJKkIZunUqFH5w t1aX9y1Ah3DiEXG3+Vn5vgjz1xKVs2hTb62aCGZEFUDfQtGOFAHFnV5iCtBCNbc1AomD psFSTYxGcVFmzLX+EAvsA55+RFVsSmLzY911k9D7nYcfKQaZ8zPLxHZCzMWUcsNVJBrw tlQ5wZJLUDm9BHrsblQ2Wh3UdER2ea4/jkmsD9BgnAZ7XMS9eC26W7+/fh/OH3oOiw4i Bhuti+5UWe8pKi+Y38QmMNqgmZq+5LkRjZxOCdTql9rtJf5shvCse7qVOQyydFwNUnhB Xcvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=L8AvsohsoBltn+JQtOUo9SRwvt3mTUYzs8yXR4j4JbM=; b=jgG/NC/nB1whmmNCr053Yng9VsKoYZBtg/NSV8mqGzwLmkAtbb/GBKjKFqBbuwpxIo wzvL9sUdtsJiRFCRKRHJ3vPQfdQdUSSE9Qo+LupSL9Y3xv7L81uSHdfrPZFWvj8vtmWE ARhrmqU5gVf0aY4IpjAQDRVvoRrRWQCmb9wEj0TDuBkeHJmO0PEDZjsr0vYtuDSL4byP ixINnb+2lNj7oulHFH7DA/bz863WnPrFfhEC91F5bo7fB8PHVxmWOlEbhtEfgcQk/g// wtU+e4w8uorZ4hbOY89Ge4i37CUs9xISNx9JS19zVio/SZVm0IvDDsX8xhAdg3mZwUEz cBSw== X-Gm-Message-State: ACrzQf1jCQ4hl8yFmCX+MhSgu5k2RuCraMZ240zDviarD6Iv/+JQxwBF 1CVXAhw0UblGddSzeyASsXOiuA== X-Google-Smtp-Source: AMsMyM5MwYbCBPkvrsR/kgsa9LyomSPnq0iHx7GyWwkb+r2ScJmlGlhSFIVQYxF8IeyJ8i6gvROFZg== X-Received: by 2002:a05:600c:3591:b0:3b4:bf48:9f10 with SMTP id p17-20020a05600c359100b003b4bf489f10mr1720662wmq.76.1664265346455; Tue, 27 Sep 2022 00:55:46 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:46 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 12/33] crypto: rockchip: add debugfs Date: Tue, 27 Sep 2022 07:54:50 +0000 Message-Id: <20220927075511.3147847-13-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This patch enable to access usage stats for each algorithm. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/Kconfig | 10 ++++ drivers/crypto/rockchip/rk3288_crypto.c | 47 +++++++++++++++++++ drivers/crypto/rockchip/rk3288_crypto.h | 11 +++++ drivers/crypto/rockchip/rk3288_crypto_ahash.c | 8 ++++ .../crypto/rockchip/rk3288_crypto_skcipher.c | 15 ++++++ 5 files changed, 91 insertions(+) diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index c30b5a39c2ac..2947888d3b82 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -686,6 +686,16 @@ config CRYPTO_DEV_ROCKCHIP This driver interfaces with the hardware crypto accelerator. Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode. =20 +config CRYPTO_DEV_ROCKCHIP_DEBUG + bool "Enable Rockchip crypto stats" + depends on CRYPTO_DEV_ROCKCHIP + depends on DEBUG_FS + help + Say y to enable Rockchip crypto debug stats. + This will create /sys/kernel/debug/rk3288_crypto/stats for displaying + the number of requests per algorithm and other internal stats. + + config CRYPTO_DEV_ZYNQMP_AES tristate "Support for Xilinx ZynqMP AES hw accelerator" depends on ZYNQMP_FIRMWARE || COMPILE_TEST diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 8f9664acc78d..3e1b4f3b2422 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -95,6 +95,41 @@ static struct rk_crypto_tmp *rk_cipher_algs[] =3D { &rk_ahash_md5, }; =20 +#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG +static int rk_crypto_debugfs_show(struct seq_file *seq, void *v) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(rk_cipher_algs); i++) { + if (!rk_cipher_algs[i]->dev) + continue; + switch (rk_cipher_algs[i]->type) { + case CRYPTO_ALG_TYPE_SKCIPHER: + seq_printf(seq, "%s %s reqs=3D%lu fallback=3D%lu\n", + rk_cipher_algs[i]->alg.skcipher.base.cra_driver_name, + rk_cipher_algs[i]->alg.skcipher.base.cra_name, + rk_cipher_algs[i]->stat_req, rk_cipher_algs[i]->stat_fb); + seq_printf(seq, "\tfallback due to length: %lu\n", + rk_cipher_algs[i]->stat_fb_len); + seq_printf(seq, "\tfallback due to alignment: %lu\n", + rk_cipher_algs[i]->stat_fb_align); + seq_printf(seq, "\tfallback due to SGs: %lu\n", + rk_cipher_algs[i]->stat_fb_sgdiff); + break; + case CRYPTO_ALG_TYPE_AHASH: + seq_printf(seq, "%s %s reqs=3D%lu fallback=3D%lu\n", + rk_cipher_algs[i]->alg.hash.halg.base.cra_driver_name, + rk_cipher_algs[i]->alg.hash.halg.base.cra_name, + rk_cipher_algs[i]->stat_req, rk_cipher_algs[i]->stat_fb); + break; + } + } + return 0; +} + +DEFINE_SHOW_ATTRIBUTE(rk_crypto_debugfs); +#endif + static int rk_crypto_register(struct rk_crypto_info *crypto_info) { unsigned int i, k; @@ -246,6 +281,15 @@ static int rk_crypto_probe(struct platform_device *pde= v) goto err_register_alg; } =20 +#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG + /* Ignore error of debugfs */ + crypto_info->dbgfs_dir =3D debugfs_create_dir("rk3288_crypto", NULL); + crypto_info->dbgfs_stats =3D debugfs_create_file("stats", 0444, + crypto_info->dbgfs_dir, + crypto_info, + &rk_crypto_debugfs_fops); +#endif + dev_info(dev, "Crypto Accelerator successfully registered\n"); return 0; =20 @@ -260,6 +304,9 @@ static int rk_crypto_remove(struct platform_device *pde= v) { struct rk_crypto_info *crypto_tmp =3D platform_get_drvdata(pdev); =20 +#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG + debugfs_remove_recursive(crypto_tmp->dbgfs_dir); +#endif rk_crypto_unregister(); rk_crypto_disable_clk(crypto_tmp); crypto_engine_exit(crypto_tmp->engine); diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index d924ea17402a..945a8184bbad 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -199,6 +200,10 @@ struct rk_crypto_info { struct crypto_engine *engine; struct completion complete; int status; +#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG + struct dentry *dbgfs_dir; + struct dentry *dbgfs_stats; +#endif }; =20 /* the private variable of hash */ @@ -239,6 +244,12 @@ struct rk_crypto_tmp { struct skcipher_alg skcipher; struct ahash_alg hash; } alg; + unsigned long stat_req; + unsigned long stat_fb; + unsigned long stat_fb_len; + unsigned long stat_fb_sglen; + unsigned long stat_fb_align; + unsigned long stat_fb_sgdiff; }; =20 extern struct rk_crypto_tmp rk_ecb_aes_alg; diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index d08e2438d356..8856c6226be6 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -39,6 +39,10 @@ static int rk_ahash_digest_fb(struct ahash_request *areq) struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_ctx *tfmctx =3D crypto_ahash_ctx(tfm); + struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->base.__crt_alg); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.hash); + + algt->stat_fb++; =20 ahash_request_set_tfm(&rctx->fallback_req, tfmctx->fallback_tfm); rctx->fallback_req.base.flags =3D areq->base.flags & @@ -249,6 +253,8 @@ static int rk_hash_run(struct crypto_engine *engine, vo= id *breq) struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->base.__crt_alg); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.hash); struct scatterlist *sg =3D areq->src; int err =3D 0; int i; @@ -256,6 +262,8 @@ static int rk_hash_run(struct crypto_engine *engine, vo= id *breq) =20 rctx->mode =3D 0; =20 + algt->stat_req++; + switch (crypto_ahash_digestsize(tfm)) { case SHA1_DIGEST_SIZE: rctx->mode =3D RK_CRYPTO_HASH_SHA1; diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 1ed297f5d809..91b8a4c574da 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -18,6 +18,8 @@ static int rk_cipher_need_fallback(struct skcipher_reques= t *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); unsigned int bs =3D crypto_skcipher_blocksize(tfm); + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); struct scatterlist *sgs, *sgd; unsigned int stodo, dtodo, len; =20 @@ -29,20 +31,25 @@ static int rk_cipher_need_fallback(struct skcipher_requ= est *req) sgd =3D req->dst; while (sgs && sgd) { if (!IS_ALIGNED(sgs->offset, sizeof(u32))) { + algt->stat_fb_align++; return true; } if (!IS_ALIGNED(sgd->offset, sizeof(u32))) { + algt->stat_fb_align++; return true; } stodo =3D min(len, sgs->length); if (stodo % bs) { + algt->stat_fb_len++; return true; } dtodo =3D min(len, sgd->length); if (dtodo % bs) { + algt->stat_fb_len++; return true; } if (stodo !=3D dtodo) { + algt->stat_fb_sgdiff++; return true; } len -=3D stodo; @@ -57,8 +64,12 @@ static int rk_cipher_fallback(struct skcipher_request *a= req) struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); struct rk_cipher_ctx *op =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(areq); + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); int err; =20 + algt->stat_fb++; + skcipher_request_set_tfm(&rctx->fallback_req, op->fallback_tfm); skcipher_request_set_callback(&rctx->fallback_req, areq->base.flags, areq->base.complete, areq->base.data); @@ -324,6 +335,10 @@ static int rk_cipher_run(struct crypto_engine *engine,= void *async_req) u8 *ivtouse =3D areq->iv; unsigned int len =3D areq->cryptlen; unsigned int todo; + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); + + algt->stat_req++; =20 ivsize =3D crypto_skcipher_ivsize(tfm); if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) { --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F419C54EE9 for ; Tue, 27 Sep 2022 07:57:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231315AbiI0H52 (ORCPT ); Tue, 27 Sep 2022 03:57:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231431AbiI0H4W (ORCPT ); Tue, 27 Sep 2022 03:56:22 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 408A9ABF27 for ; Tue, 27 Sep 2022 00:55:48 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id o5so6000084wms.1 for ; Tue, 27 Sep 2022 00:55:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=k3IddiKdhwAn8qAKW9Ise9jrX8X5WN4qU+7hTXJ6Zgw=; b=1dStpo4HzhMoMbxjDkUb3bFnlbEQP+ZlShuzex9XwYN99ohVGGmJM4OZtJpApjRO8g ZSLliG5Kub4MOCEv5uY65BMYSMMGUVJ5seRgCIMkwq3oUaFX/Qu686MqgjODb1nS6wQm 5Pd97Ier9gEjeA0PXdwyZwxsGba3y6quMV620yiRvDebBQxXkGDK57k0UNjeVKGm0IlM m9yIPjkQpqdjuHmxo18GLGYPKgF5imJRhSBqZlt5bIahYdCMLp93cYnumb5szL4C59Mm iRmAb2bNNF6nUeNM3B04Kz0mlTGJA4sGe4GyDpYUrvUDTqAVWJnffSQRBxhYeVByndp2 Lrxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=k3IddiKdhwAn8qAKW9Ise9jrX8X5WN4qU+7hTXJ6Zgw=; b=Kug+0uQWKhfnGhcQjZCZg3R64+ET4l8pamKEvaghEjcvehanaROVIwWjcWbEmbLCc7 dtt1cf7e1OHMr/MsO3XphXGuNrlPQs8w7d88rbjfCPm8N6ZAhGPBGQMINJ0WjGBEwnOe OZkXy6wXcdPbYhTNgEiIj1LpLQEpLKBzdvOLaJtKGNaHvb8p7dnWCa24uza0HZvRMrf6 i2TdeOGv3aFzndnarcHWaG80l4JIeK3SmavqtrxiONrNdxFR8MAOHkLCNIcFyxmO8Zrr 0h6+790dO0KGmLC5bw51FugcebFRhpftIm0p0+jMgsXSKO/1N10LQgZ5DbluOzHC0LzF mtVQ== X-Gm-Message-State: ACrzQf1fwAE/kGEC6t1VwLpPaaR+qjYmukOegFDNO2wqjhRUFAIS+l7K I6EDfahWIKnqZriPTq3blNa6DQ== X-Google-Smtp-Source: AMsMyM4vYXm9vml7hwC/BmH70eNQHE64Uecz5pGbpe9kPxs2Az79Q1eu5C/yIXPlf3NJwTTX0tOceQ== X-Received: by 2002:a05:600c:46c6:b0:3b4:d069:913f with SMTP id q6-20020a05600c46c600b003b4d069913fmr1607696wmo.27.1664265347653; Tue, 27 Sep 2022 00:55:47 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:47 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 13/33] crypto: rockchip: introduce PM Date: Tue, 27 Sep 2022 07:54:51 +0000 Message-Id: <20220927075511.3147847-14-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add runtime PM support for rockchip crypto. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 51 ++++++++++++++++++- drivers/crypto/rockchip/rk3288_crypto.h | 1 + drivers/crypto/rockchip/rk3288_crypto_ahash.c | 10 ++++ .../crypto/rockchip/rk3288_crypto_skcipher.c | 9 ++++ 4 files changed, 69 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 3e1b4f3b2422..d9258b9e71b3 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -65,6 +65,48 @@ static void rk_crypto_disable_clk(struct rk_crypto_info = *dev) clk_disable_unprepare(dev->sclk); } =20 +/* + * Power management strategy: The device is suspended unless a TFM exists = for + * one of the algorithms proposed by this driver. + */ +static int rk_crypto_pm_suspend(struct device *dev) +{ + struct rk_crypto_info *rkdev =3D dev_get_drvdata(dev); + + rk_crypto_disable_clk(rkdev); + return 0; +} + +static int rk_crypto_pm_resume(struct device *dev) +{ + struct rk_crypto_info *rkdev =3D dev_get_drvdata(dev); + + return rk_crypto_enable_clk(rkdev); +} + +static const struct dev_pm_ops rk_crypto_pm_ops =3D { + SET_RUNTIME_PM_OPS(rk_crypto_pm_suspend, rk_crypto_pm_resume, NULL) +}; + +static int rk_crypto_pm_init(struct rk_crypto_info *rkdev) +{ + int err; + + pm_runtime_use_autosuspend(rkdev->dev); + pm_runtime_set_autosuspend_delay(rkdev->dev, 2000); + + err =3D pm_runtime_set_suspended(rkdev->dev); + if (err) + return err; + pm_runtime_enable(rkdev->dev); + return err; +} + +static void rk_crypto_pm_exit(struct rk_crypto_info *rkdev) +{ + pm_runtime_disable(rkdev->dev); +} + static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id) { struct rk_crypto_info *dev =3D platform_get_drvdata(dev_id); @@ -273,7 +315,9 @@ static int rk_crypto_probe(struct platform_device *pdev) crypto_engine_start(crypto_info->engine); init_completion(&crypto_info->complete); =20 - rk_crypto_enable_clk(crypto_info); + err =3D rk_crypto_pm_init(crypto_info); + if (err) + goto err_pm; =20 err =3D rk_crypto_register(crypto_info); if (err) { @@ -294,6 +338,8 @@ static int rk_crypto_probe(struct platform_device *pdev) return 0; =20 err_register_alg: + rk_crypto_pm_exit(crypto_info); +err_pm: crypto_engine_exit(crypto_info->engine); err_crypto: dev_err(dev, "Crypto Accelerator not successfully registered\n"); @@ -308,7 +354,7 @@ static int rk_crypto_remove(struct platform_device *pde= v) debugfs_remove_recursive(crypto_tmp->dbgfs_dir); #endif rk_crypto_unregister(); - rk_crypto_disable_clk(crypto_tmp); + rk_crypto_pm_exit(crypto_tmp); crypto_engine_exit(crypto_tmp->engine); return 0; } @@ -318,6 +364,7 @@ static struct platform_driver crypto_driver =3D { .remove =3D rk_crypto_remove, .driver =3D { .name =3D "rk3288-crypto", + .pm =3D &rk_crypto_pm_ops, .of_match_table =3D crypto_of_id_table, }, }; diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 945a8184bbad..ddbb9246ce16 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 8856c6226be6..137013bd4410 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -328,6 +328,7 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->__crt_alg); =20 const char *alg_name =3D crypto_tfm_alg_name(tfm); + int err; =20 algt =3D container_of(alg, struct rk_crypto_tmp, alg.hash); =20 @@ -349,7 +350,15 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) tctx->enginectx.op.prepare_request =3D rk_hash_prepare; tctx->enginectx.op.unprepare_request =3D rk_hash_unprepare; =20 + err =3D pm_runtime_resume_and_get(tctx->dev->dev); + if (err < 0) + goto error_pm; + return 0; +error_pm: + crypto_free_ahash(tctx->fallback_tfm); + + return err; } =20 static void rk_cra_hash_exit(struct crypto_tfm *tfm) @@ -357,6 +366,7 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); =20 crypto_free_ahash(tctx->fallback_tfm); + pm_runtime_put_autosuspend(tctx->dev->dev); } =20 struct rk_crypto_tmp rk_ahash_sha1 =3D { diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 91b8a4c574da..3bdb304aa794 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -454,6 +454,7 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); const char *name =3D crypto_tfm_alg_name(&tfm->base); struct rk_crypto_tmp *algt; + int err; =20 algt =3D container_of(alg, struct rk_crypto_tmp, alg.skcipher); =20 @@ -471,7 +472,14 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tf= m) =20 ctx->enginectx.op.do_one_request =3D rk_cipher_run; =20 + err =3D pm_runtime_resume_and_get(ctx->dev->dev); + if (err < 0) + goto error_pm; + return 0; +error_pm: + crypto_free_skcipher(ctx->fallback_tfm); + return err; } =20 static void rk_ablk_exit_tfm(struct crypto_skcipher *tfm) @@ -480,6 +488,7 @@ static void rk_ablk_exit_tfm(struct crypto_skcipher *tf= m) =20 memzero_explicit(ctx->key, ctx->keylen); crypto_free_skcipher(ctx->fallback_tfm); + pm_runtime_put_autosuspend(ctx->dev->dev); } =20 struct rk_crypto_tmp rk_ecb_aes_alg =3D { --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84951C6FA83 for ; Tue, 27 Sep 2022 07:58:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230432AbiI0H6Q (ORCPT ); Tue, 27 Sep 2022 03:58:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231492AbiI0H4x (ORCPT ); Tue, 27 Sep 2022 03:56:53 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E64AABD43 for ; Tue, 27 Sep 2022 00:56:10 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id e18so5978121wmq.3 for ; Tue, 27 Sep 2022 00:56:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=5JnoAw4X1z7bCscIjsjfjSMoE54Bwt7ulA7ZsyJ5jyg=; b=BAEIwPdPo97GcH+1wCKYAvWzAKOymsVbLsGocAIxNn6gxhCoMqYd5T+1ct3/STEMc0 P88AJfOkg1nRgg3ELPKYgEXSPs5bG5jfe34eznuA2GSLRs6cT0awTDEFkjwoDio3bJsh gHJiOv2k2UKAV7JkG4LPvNvA/kNpHHClPSdyDK1q4ZZoihg45ujIrrJYViNPRmip1yiS GbAVKvWMtHaPz4BoVgnl114K/5Y19j3p5Rtg84C8YwjhtW4JFbowgU4NHcUbw/sEM2EU owzHS9E+tJGEgHZnC24mSqSaKbeEz4Hn4YbSmGsp5KZduNJiI+s5oEwacyOvdAGsgUJP vwjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=5JnoAw4X1z7bCscIjsjfjSMoE54Bwt7ulA7ZsyJ5jyg=; b=gmsmnqpX7y5U5web9s3rjQq8wSBNeqvYpaye6cH9rkx029VQVCwE2UvJFiBPT51fsi yV0JOg5fjirwvn6gWGpuhF8hfsAb11trIoerWQpxtC7sBGkfHBioTk5eWF0xBE0+ab8T JF+Jl/5SnOnSxGjmgFwgiWrXtMcNY+3UEzEyFPzMMVEEYVRxwiwvBaWgqm6cS94IPOr1 7rKTEQD9dGDnZqKSUGZ5HPorrEINHO/F6AcQklaSvlZQfAxE70rKNu0LX1y0GpC4OeqK OSwKFYMYL+qWKMmSw3VHHrJ+y3UytKOWMOdDOC4YVC5zkxw718Oi144ID0ZessaPBIQz 6P8A== X-Gm-Message-State: ACrzQf3UQ4Szrf4Kev2TVFm6MngH3kru70AApS2OnSTo2qYiEQEZJK9m rNf45xvIcbfhKQZr84+OM1PRVQ== X-Google-Smtp-Source: AMsMyM4uL0HObRJBotMMVGLYbEpvjLQleTH4GKMAsTIxMiv2kESR0p82m1H8rmbo2gqmUlSYI2Y8FQ== X-Received: by 2002:a05:600c:1f05:b0:3b4:ae0a:b2e5 with SMTP id bd5-20020a05600c1f0500b003b4ae0ab2e5mr1691511wmb.104.1664265348751; Tue, 27 Sep 2022 00:55:48 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:48 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 14/33] crypto: rockchip: handle reset also in PM Date: Tue, 27 Sep 2022 07:54:52 +0000 Message-Id: <20220927075511.3147847-15-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" reset could be handled by PM functions. We keep the initial reset pulse to be sure the hw is a know device state after probe. Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index d9258b9e71b3..399829ef92e0 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -74,14 +74,23 @@ static int rk_crypto_pm_suspend(struct device *dev) struct rk_crypto_info *rkdev =3D dev_get_drvdata(dev); =20 rk_crypto_disable_clk(rkdev); + reset_control_assert(rkdev->rst); + return 0; } =20 static int rk_crypto_pm_resume(struct device *dev) { struct rk_crypto_info *rkdev =3D dev_get_drvdata(dev); + int ret; + + ret =3D rk_crypto_enable_clk(rkdev); + if (ret) + return ret; + + reset_control_deassert(rkdev->rst); + return 0; =20 - return rk_crypto_enable_clk(rkdev); } =20 static const struct dev_pm_ops rk_crypto_pm_ops =3D { @@ -222,13 +231,6 @@ static void rk_crypto_unregister(void) } } =20 -static void rk_crypto_action(void *data) -{ - struct rk_crypto_info *crypto_info =3D data; - - reset_control_assert(crypto_info->rst); -} - static const struct of_device_id crypto_of_id_table[] =3D { { .compatible =3D "rockchip,rk3288-crypto" }, {} @@ -258,10 +260,6 @@ static int rk_crypto_probe(struct platform_device *pde= v) usleep_range(10, 20); reset_control_deassert(crypto_info->rst); =20 - err =3D devm_add_action_or_reset(dev, rk_crypto_action, crypto_info); - if (err) - goto err_crypto; - crypto_info->reg =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(crypto_info->reg)) { err =3D PTR_ERR(crypto_info->reg); --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 304FCC07E9D for ; Tue, 27 Sep 2022 07:57:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231501AbiI0H5W (ORCPT ); Tue, 27 Sep 2022 03:57:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231425AbiI0H4W (ORCPT ); Tue, 27 Sep 2022 03:56:22 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5131C8050B for ; Tue, 27 Sep 2022 00:55:50 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id ay36so6005347wmb.0 for ; Tue, 27 Sep 2022 00:55:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=UGbdJwhNtYNfg6qIard96SGzNtmQLkXSB3qcyDfr1D0=; b=oJ1V7ClH/AxqFsip+Snl9v8pZ3quO3ZUVr2JKxgO/s+X8KKUFRT6eXqmLeRsBKUV+S 7dxCj7gqXUPZs7CjKFJ9pQn2CcbApzGeKH/9pCZF2GGSiij+xFaCZY9hhyFZXAPaU+MK ZdwEiA7p5MT5pAwxf5xBp21GiJxvMg0FaNEbvtY3Sh5FUomwM73EUKW5GCzfWDgMZMxt Foc6fvkXgvb4oeV9NonPouZXSeDg/BJhZFtLb35BZPcax4UwhE0SqBIzSbthWLcHhRA6 UEwTeP1K4uJlZwPMmisUjO/n0JIlegHqUV+owv/PfLUkt2exHgMHqWo6NPtvM0t/aEGI njGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=UGbdJwhNtYNfg6qIard96SGzNtmQLkXSB3qcyDfr1D0=; b=P4gN2VmwEwkfb7P5b90g8u3Qrtsd7y4yytVnfereaUf3udjBgaQ3vD+p5JkZU3qcYc Yj2q9U6Riet/zGaNVD+FB0Kjy9IQAHWGos5MXL8mWvjjhtc//Ry8iyxxEVegYloCdJYh rUiHsHfxqZgwmlO1OuLvHF2ULrllmT+JLdQjAX3wy4wfHsOGJL6UR7YhOle/Xt/Pw1N7 EwaeS5S+Gv1X0i/BFglWrmb6kuYMEGrbm1NDieU50fv0YhkNVUV+ejGrG9cgBNc2Bds0 fyfP7217BYe3Tug1FHvuGLYtp3n/ypFIrJb1FpC+VD5fvnK9uUvp6Q/9jvrwNNVLkWpv VO5Q== X-Gm-Message-State: ACrzQf03ODzAPmYYJ7P6dscWwEIljZfXObtS33Va1bJerOFwX+PrqfD/ 0ODTjUOgoU2wx1X/v+kJvWAjcw== X-Google-Smtp-Source: AMsMyM4bzqnDK4LTxi2vGiu4E7Q4X7uUBhhe14IwJVcXvStrXPgAVdY5OvOZgVsUz1NGFhvIgYQbvg== X-Received: by 2002:a05:600c:4e52:b0:3b4:91ec:b15d with SMTP id e18-20020a05600c4e5200b003b491ecb15dmr1591518wmq.119.1664265349794; Tue, 27 Sep 2022 00:55:49 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:49 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 15/33] crypto: rockchip: use clk_bulk to simplify clock management Date: Tue, 27 Sep 2022 07:54:53 +0000 Message-Id: <20220927075511.3147847-16-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" rk3328 does not have the same clock names than rk3288, instead of using a c= omplex clock management, let's use clk_bulk to simplify their handling. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 66 ++++--------------------- drivers/crypto/rockchip/rk3288_crypto.h | 6 +-- 2 files changed, 11 insertions(+), 61 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 399829ef92e0..a635029ac71d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -22,47 +22,16 @@ static int rk_crypto_enable_clk(struct rk_crypto_info *= dev) { int err; =20 - err =3D clk_prepare_enable(dev->sclk); - if (err) { - dev_err(dev->dev, "[%s:%d], Couldn't enable clock sclk\n", - __func__, __LINE__); - goto err_return; - } - err =3D clk_prepare_enable(dev->aclk); - if (err) { - dev_err(dev->dev, "[%s:%d], Couldn't enable clock aclk\n", - __func__, __LINE__); - goto err_aclk; - } - err =3D clk_prepare_enable(dev->hclk); - if (err) { - dev_err(dev->dev, "[%s:%d], Couldn't enable clock hclk\n", - __func__, __LINE__); - goto err_hclk; - } - err =3D clk_prepare_enable(dev->dmaclk); - if (err) { - dev_err(dev->dev, "[%s:%d], Couldn't enable clock dmaclk\n", - __func__, __LINE__); - goto err_dmaclk; - } - return err; -err_dmaclk: - clk_disable_unprepare(dev->hclk); -err_hclk: - clk_disable_unprepare(dev->aclk); -err_aclk: - clk_disable_unprepare(dev->sclk); -err_return: + err =3D clk_bulk_prepare_enable(dev->num_clks, dev->clks); + if (err) + dev_err(dev->dev, "Could not enable clock clks\n"); + return err; } =20 static void rk_crypto_disable_clk(struct rk_crypto_info *dev) { - clk_disable_unprepare(dev->dmaclk); - clk_disable_unprepare(dev->hclk); - clk_disable_unprepare(dev->aclk); - clk_disable_unprepare(dev->sclk); + clk_bulk_disable_unprepare(dev->num_clks, dev->clks); } =20 /* @@ -266,27 +235,10 @@ static int rk_crypto_probe(struct platform_device *pd= ev) goto err_crypto; } =20 - crypto_info->aclk =3D devm_clk_get(&pdev->dev, "aclk"); - if (IS_ERR(crypto_info->aclk)) { - err =3D PTR_ERR(crypto_info->aclk); - goto err_crypto; - } - - crypto_info->hclk =3D devm_clk_get(&pdev->dev, "hclk"); - if (IS_ERR(crypto_info->hclk)) { - err =3D PTR_ERR(crypto_info->hclk); - goto err_crypto; - } - - crypto_info->sclk =3D devm_clk_get(&pdev->dev, "sclk"); - if (IS_ERR(crypto_info->sclk)) { - err =3D PTR_ERR(crypto_info->sclk); - goto err_crypto; - } - - crypto_info->dmaclk =3D devm_clk_get(&pdev->dev, "apb_pclk"); - if (IS_ERR(crypto_info->dmaclk)) { - err =3D PTR_ERR(crypto_info->dmaclk); + crypto_info->num_clks =3D devm_clk_bulk_get_all(&pdev->dev, + &crypto_info->clks); + if (crypto_info->num_clks < 3) { + err =3D -EINVAL; goto err_crypto; } =20 diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index ddbb9246ce16..28bf09fe1c1d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -190,10 +190,8 @@ =20 struct rk_crypto_info { struct device *dev; - struct clk *aclk; - struct clk *hclk; - struct clk *sclk; - struct clk *dmaclk; + struct clk_bulk_data *clks; + int num_clks; struct reset_control *rst; void __iomem *reg; int irq; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF12AC07E9D for ; Tue, 27 Sep 2022 07:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231515AbiI0H7O (ORCPT ); Tue, 27 Sep 2022 03:59:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230454AbiI0H5m (ORCPT ); Tue, 27 Sep 2022 03:57:42 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BBD23AF0E6 for ; Tue, 27 Sep 2022 00:56:17 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id k3-20020a05600c1c8300b003b4fa1a85f8so4957469wms.3 for ; Tue, 27 Sep 2022 00:56:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=7ylfTYeCV4qm7Xvrt0AIQJLtkrEPyfygSFvvPlELDM0=; b=wbc0SyvXaTABHib78FBmKP0lE8/ezGuglpmYtKia6eLXSGdcnnuFZMkaTGKpXEox4l ej+Hu/upuxu6yu9UE0GM8vHx+E47AP2++H7Qcv5gphNO3kGJWajB32KvPh0HH3iwIVgH GlfryTyUxdtGkELhzh1hfnyQqVtxXHhRSoHqMDRYSQpykLw1uDm4VkyyVpU1rzYLJsmJ grs2Bx7U5y86yamAWrJ9B7/ODTH22xtzlr4xnxhQ+40iT/TuM1TQ4tP00HDR0ymArd5Y k0EgwtLUppyzKohuWTHK/iDb4TR1FCbaJBuZ8TRFAUinMweAt42fMZQFiNfxu2kPCw/G ADVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=7ylfTYeCV4qm7Xvrt0AIQJLtkrEPyfygSFvvPlELDM0=; b=OiMKgbwyPelrPD4+hq7FrbVZ7mbByhbrAKp5+Gk7TcoIQwSIxtARlX5BquNVy11ldG hXjgWUsUwvnJlU8ck3xutreDNLoZGAi8kueAHT/lSgGf+FBwrNa7VAWDFUINfVCs1H6C HVqUOVUb7iBNMxnvABKWiICT6zjwdRORdzOKWUDHYnVmCNx066XxWZeNfqgvuvcQLLDv tusNY/fY0CGoE86Y2UOK49yqplwTcRJ9SDhBHOgJkwahwLqUsVA/1Zdnz8AZjx8TaFE5 IwZD5YoFhyWWVqR2WDNUhcSZ1w6zAxYIkJL3BGewZROEaho2Jh65qlN0foUairqM4CSy Fr3Q== X-Gm-Message-State: ACrzQf1mYXsVWKOKPYQcCCnh8vdutZlEln9rGW/NX7UwZX8h2BqF2rzF XjFLsvfpFKYURy/BIi7TgbYt1A== X-Google-Smtp-Source: AMsMyM7KPzoDPDP6P3GJiPjCTQ7gxxhh8hRIjHM6cB/B4uAKtXlN9csha8doRS7dLCk+7FZcdL5dMQ== X-Received: by 2002:a1c:202:0:b0:3a8:4197:eec0 with SMTP id 2-20020a1c0202000000b003a84197eec0mr1602533wmc.83.1664265350864; Tue, 27 Sep 2022 00:55:50 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:50 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 16/33] crypto: rockchip: add myself as maintainer Date: Tue, 27 Sep 2022 07:54:54 +0000 Message-Id: <20220927075511.3147847-17-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Nobody is set as maintainer of rockchip crypto, I propose to do it as I have already reworked lot of this code. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index d0d808564539..4798da736ad1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17702,6 +17702,13 @@ F: Documentation/ABI/*/sysfs-driver-hid-roccat* F: drivers/hid/hid-roccat* F: include/linux/hid-roccat* =20 +ROCKCHIP CRYPTO DRIVERS +M: Corentin Labbe +L: linux-crypto@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml +F: drivers/crypto/rockchip/ + ROCKCHIP I2S TDM DRIVER M: Nicolas Frattaroli L: linux-rockchip@lists.infradead.org --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9437C6FA92 for ; Tue, 27 Sep 2022 07:57:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231540AbiI0H5a (ORCPT ); Tue, 27 Sep 2022 03:57:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbiI0H4W (ORCPT ); Tue, 27 Sep 2022 03:56:22 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5BFBAC26D for ; Tue, 27 Sep 2022 00:55:52 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id u16-20020a05600c211000b003b5152ebf09so6341696wml.5 for ; Tue, 27 Sep 2022 00:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=cJE9JrNh4HvbwKuPRZxdjE4sOr8yHsnud2KqNuPrCRY=; b=20kzfWx9aFDUAIT6CRNbmts2xKF41R3yIU2wQhMgemqKUKm9PfGdpdzuA3A7EFeJ6H Iok7JfIJA8T6hUZ+qSRMg914u+8yUXo2KS4PCKgbA1w3KeOklMBs1KPtN9soEnGDIz9U bYJ774WZT/cLBQ/uNvbZkJz6DCK6FT3peZunOxgHG9OMq+51o2soutWOn79dSpqZjqpf Mc4ASvDawv4rRHqam72yB4bJCJGoiLljB6VjuRs2y42cj0oUPUnkC/Dev9InlFQGKCt8 EcuQxhssHuLmWz0fusJlKiCjh/0z9LR6cY1XMUiD/SfNH33cgAQRdiWUa4665WIAyM4r jj+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=cJE9JrNh4HvbwKuPRZxdjE4sOr8yHsnud2KqNuPrCRY=; b=TnokVprvntlW35OuPh6a/cTQTN0ePzZ7BEECOFd7G30fCPHBnXuWeUTqqkBErszpSd 9+VRYI8AYlEPKaImaMDKYYMBEJSljdL12yr+843wYHVQ5MN3l6sZ1rjagQzoKT7wgG4L mq/SldAFmnWrGUNSTZCnn24Lq+24BtIDF5kXFDPLEOglxtq5Perh/naRxaPOP84L/JoL /XzxD4yqf9q9PsePmGQVCdrrET6bxVwKlIR0rqMX/AQ3MkRHKXhkzFxBXVInEH2psJLm M+tk991k5xZqlMiowCfXCcGLr0LQXEHaIvvP2DG4LqozYHnUU2gMpiijaEy5rminI/cs Tazg== X-Gm-Message-State: ACrzQf1c7ptglsI790qhPmGs9kF/a1h+gqkHpvlEMKl9x6kg3b5bkI6i C0Y5FxI0IOrBhB7A+wz14gmg/w== X-Google-Smtp-Source: AMsMyM5Hup35F8JL91OS8GUnQcPPFYhGSM2YCoZNnF0Xb08xMtOKnNvRAzZkn4zQ06arBDX8UGaGGA== X-Received: by 2002:a7b:ce99:0:b0:3b4:9031:fc02 with SMTP id q25-20020a7bce99000000b003b49031fc02mr1635504wmj.154.1664265352028; Tue, 27 Sep 2022 00:55:52 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:51 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 17/33] crypto: rockchip: use read_poll_timeout Date: Tue, 27 Sep 2022 07:54:55 +0000 Message-Id: <20220927075511.3147847-18-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use read_poll_timeout instead of open coding it. In the same time, fix indentation of related comment. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 137013bd4410..1fbab86c9238 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -10,6 +10,7 @@ */ #include #include +#include #include "rk3288_crypto.h" =20 /* @@ -295,18 +296,17 @@ static int rk_hash_run(struct crypto_engine *engine, = void *breq) sg =3D sg_next(sg); } =20 - /* - * it will take some time to process date after last dma - * transmission. - * - * waiting time is relative with the last date len, - * so cannot set a fixed time here. - * 10us makes system not call here frequently wasting - * efficiency, and make it response quickly when dma - * complete. - */ - while (!CRYPTO_READ(tctx->dev, RK_CRYPTO_HASH_STS)) - udelay(10); + /* + * it will take some time to process date after last dma + * transmission. + * + * waiting time is relative with the last date len, + * so cannot set a fixed time here. + * 10us makes system not call here frequently wasting + * efficiency, and make it response quickly when dma + * complete. + */ + readl_poll_timeout(tctx->dev->reg + RK_CRYPTO_HASH_STS, v, v =3D=3D 0, 10= , 1000); =20 for (i =3D 0; i < crypto_ahash_digestsize(tfm) / 4; i++) { v =3D readl(tctx->dev->reg + RK_CRYPTO_HASH_DOUT_0 + i * 4); --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1D1CC07E9D for ; Tue, 27 Sep 2022 07:59:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231617AbiI0H7V (ORCPT ); Tue, 27 Sep 2022 03:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231559AbiI0H5n (ORCPT ); Tue, 27 Sep 2022 03:57:43 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9A21AF0C8 for ; Tue, 27 Sep 2022 00:56:24 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id c192-20020a1c35c9000000b003b51339d350so6486712wma.3 for ; Tue, 27 Sep 2022 00:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=YefmDD2ry3pwsMvqRhlFBCTRYluZUGamucEuHQLyttA=; b=b6cyFsVdHpavnTM+FghMbIremImdbNLhZmESi/YDiLg9fwtm0QB7WjxwYZaUgSVT22 adTJB5aBAQo5ybo0VDTQhr7MsEtfmfI2pnxOZgN/OCHlCZ1T919He2kgIWwO0IxebmSr XMOJ7FzxqpmgVaGM95K6alSXq+rv2ih8+odCnxRElBu6w/O3E8UbuAlOC9aaQCMBCkpx JGo+ViAbGhq9PYLNKl0BSmrGVkHdbHXFAlStXqDzt6tNplT4hvECzVveS0fD0rmmRV83 dzZox8w9RS+kY5hgSTAer1oJkQBTdTajgqHDVS09yMcPtSJ+34d5Kk8WSLCkIejgGdyu Z6aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=YefmDD2ry3pwsMvqRhlFBCTRYluZUGamucEuHQLyttA=; b=cCiGRsHFJY48Kom7TKsybkIfDII+7okywW0hJMf2W1SJCSmvC8Vg73jEsNybje6+Xd WkKj8JrEjDBITGMSi4nEHxYRWIklF/hKW53zcY+dP7KuhtmfX2Ty6vP2rbPKadafItvR e/6Q2NsBjeOdE7lw3K/dNdZ6fxjydjiw9VNqLTErw1NWdx148x52c1qPr6OxHjKgYlbe VtBd5ov7GQ0qNpTnQPMskYOYQNsDzKSIuNmh2ftKVBxNehHJiaeaRKbhzoBRoAILEKhK BGD/i0vLz3/DuDfYRTDD81BQ8Nb1r/ZRjy4rE1m5ZiSEUDO0qXSmVeeNhwBDc00kw8l6 9N6g== X-Gm-Message-State: ACrzQf1c/wVryhdjmn0OOagEIb+xx7M9HS6AwE9L9SE3bPNDfzv9zlge jL9X3CYIvDaa3jXNJ6m9OY8Eiw== X-Google-Smtp-Source: AMsMyM4/rNZzgNJTepN67xDHUXBr/ay4ncfQEeuGV0yY19vs4s1TrxLKZO2Q4CYlVMNJk0l0nCKOMg== X-Received: by 2002:a05:600c:6025:b0:3b4:8c0c:f3c9 with SMTP id az37-20020a05600c602500b003b48c0cf3c9mr1592002wmb.206.1664265353398; Tue, 27 Sep 2022 00:55:53 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:52 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 18/33] crypto: rockchip: fix style issue Date: Tue, 27 Sep 2022 07:54:56 +0000 Message-Id: <20220927075511.3147847-19-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This patch fixes some warning reported by checkpatch Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 1fbab86c9238..fae779d73c84 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -336,7 +336,7 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) =20 /* for fallback */ tctx->fallback_tfm =3D crypto_alloc_ahash(alg_name, 0, - CRYPTO_ALG_NEED_FALLBACK); + CRYPTO_ALG_NEED_FALLBACK); if (IS_ERR(tctx->fallback_tfm)) { dev_err(tctx->dev->dev, "Could not load fallback driver.\n"); return PTR_ERR(tctx->fallback_tfm); @@ -394,8 +394,8 @@ struct rk_crypto_tmp rk_ahash_sha1 =3D { .cra_init =3D rk_cra_hash_init, .cra_exit =3D rk_cra_hash_exit, .cra_module =3D THIS_MODULE, - } - } + } + } } }; =20 @@ -424,8 +424,8 @@ struct rk_crypto_tmp rk_ahash_sha256 =3D { .cra_init =3D rk_cra_hash_init, .cra_exit =3D rk_cra_hash_exit, .cra_module =3D THIS_MODULE, - } - } + } + } } }; =20 @@ -454,7 +454,7 @@ struct rk_crypto_tmp rk_ahash_md5 =3D { .cra_init =3D rk_cra_hash_init, .cra_exit =3D rk_cra_hash_exit, .cra_module =3D THIS_MODULE, - } } + } } }; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D9E9C6FA83 for ; Tue, 27 Sep 2022 07:59:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231608AbiI0H7w (ORCPT ); Tue, 27 Sep 2022 03:59:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231488AbiI0H6J (ORCPT ); Tue, 27 Sep 2022 03:58:09 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F24EFAFAC2 for ; Tue, 27 Sep 2022 00:56:26 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id r10-20020a1c440a000000b003b494ffc00bso769409wma.0 for ; Tue, 27 Sep 2022 00:56:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=V0VQZblY3ilqDl88ksU7sNdmpCxvXcKe3g1VMncWlyM=; b=1PX3SXj7VPF0pe7fhlNFB9cxwIRGoeeqcKLXCn49u5WMzeqSM0T09nj6e3A6DOKU8q tGcMs5u7Y80omnaGO5Bqw4gPL5/YObdpQYk4sXIQc+Bv6xJobf1FIeT//nhZ8Z9tiu4g dJo4c3LyA1MIScZWHvRYHWrDq2fDzTcKsEmlBe76Bbu916t+kk3MP+dzVtZGxyIb7N7D LyDyu6wDzZXY5DIBWytQLu3dfejqbgNgJ7dx0MPJqPpOX3TJ2iSA+eY2PS7Y+uZCqkh0 K1pGmnB3scOqO6nbgmogm3dFqMkElIzaBqI8+x73RdpMpCYZDjqwP1Z703xvRCt/2P1/ dYZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=V0VQZblY3ilqDl88ksU7sNdmpCxvXcKe3g1VMncWlyM=; b=vKNvNzFWJjBg78m5bmyaKtAWk0DsbrzOooEwShvCXFmZ8UrqBCubLu5/t9R3KcJast +9rom3kDdotukXwDFi+z0diMIj9iF0xO3Y/U/qGc3iD8hgSqmwxpE13WmhKHfHUN4tKs gcYoyj94omQMoCXtmpw9hOVBQ0Jpw3Q/73ncnwDVkMw3c9BFlclWWRY4bKGe9tjl7oXr wC1ju4V+XV9/O4UKSClqzR2hR2GMmAXsJ6RXjXb968jdq5BT5883TLmC1XANXUnEQ28v uIwaernE/0D4R6IsArvG4vgIsA9bM5scYzX9jKGP23oljUumwYFydjCLQUwl2H0UFL/8 sfRA== X-Gm-Message-State: ACrzQf1Y2UVczQJDHNH+XlTPSidG+2sY3qXHwIHaEK+pGnM2QMmMpls9 ickvmOdAlNRJn9AIp7EMAhAkyQ== X-Google-Smtp-Source: AMsMyM6frkTpArL1ymbs5PR7cpgsCIvMZ4EbT+UIaulpCw2vJIN/ofpo1m8tRMkH7XX/NfYVj+uOOQ== X-Received: by 2002:a05:600c:1da2:b0:3b4:856a:162c with SMTP id p34-20020a05600c1da200b003b4856a162cmr1578572wms.28.1664265354557; Tue, 27 Sep 2022 00:55:54 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:54 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 19/33] crypto: rockchip: add support for rk3328 Date: Tue, 27 Sep 2022 07:54:57 +0000 Message-Id: <20220927075511.3147847-20-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The rk3328 could be used as-is by the rockchip driver. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index a635029ac71d..c92559b83f7d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -202,6 +202,7 @@ static void rk_crypto_unregister(void) =20 static const struct of_device_id crypto_of_id_table[] =3D { { .compatible =3D "rockchip,rk3288-crypto" }, + { .compatible =3D "rockchip,rk3328-crypto" }, {} }; MODULE_DEVICE_TABLE(of, crypto_of_id_table); --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 649C8C54EE9 for ; Tue, 27 Sep 2022 07:58:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231398AbiI0H6C (ORCPT ); Tue, 27 Sep 2022 03:58:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231318AbiI0H4h (ORCPT ); Tue, 27 Sep 2022 03:56:37 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29EE6AD9B6 for ; Tue, 27 Sep 2022 00:55:56 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id z13-20020a7bc7cd000000b003b5054c6f9bso8374086wmk.2 for ; Tue, 27 Sep 2022 00:55:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=Q4N9p9400PLUtdaZmzB/PKY2HSpZteQvpiDlvRaNw2k=; b=2YNx7Vm/cu9BQX7KzXYyP5dyfR9lielU/tKDaNk634elT/ixEzFH7iMcAlmh/rT1tb TZ4jhnw59rw7hH8C1ENLtCx5ozeASrFLKMKqy1WY+sVylzRCKJ9LVlgpHreIXawCOZc9 jEr/xQgxsVG1iBdsHPhrV0reBL2C3ASQg/Ay9OEeNgrwoFLvUAuyRaGxa36TTL5IYAyt 5TEqABNapcZhcZNjbAcjhzAPaoiTjlh38M0x+t3MJT2wxa4P5HBC9us/FozEEt2OAWSv wWvNV5rAPCv/IYTYQsGC33gLh2XtELcf5gRESRXh5X/OfFtb0Kp/E0GQUK75IMO8nxCY ZSjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=Q4N9p9400PLUtdaZmzB/PKY2HSpZteQvpiDlvRaNw2k=; b=F8bslxB5lxqa1D3k84jFFrzdvRs2AY/zLeudVN7Jcyv803t5P6Dc+M/Gcr5J4XITGC lf9h3KfYy7/Z5AT32Ivcambe2mdFruL2QABWGjmXRZKaoUZ2YJ8wz1Xi/E+8II5Lev6o obciLnsFSZDoV+6E+ZtsJ2mgsDdukgyWVnhrj+WviA2kxyHzTl+yODtsMj2vh4gLDlcp Vl2KDMTK05auawEp1WcN686bjZ08aUvCqRZnzUr2e8qLINIEps8dMGHxUNAKSxng6ulN 0WGT4bfqklPocws8kG4TlUatIzSk77/uX9oR8e2u/a02SFRw7I/HllA4EfGgy6XrSq3C VJAw== X-Gm-Message-State: ACrzQf3rewTYcWGzgODZzRgW69WFPF4CFDn90gn7Zn+EDvs8D8lluLwc Y8r/EfsQCzWUjgyqE14w+4/20w== X-Google-Smtp-Source: AMsMyM47ZgGy8Hel1AQ0L7w3l2RRrzmJJV3djR8qtlt06P0yc+cy9Isj7Cl5G7LBgIyvG2HUIEJX9Q== X-Received: by 2002:a05:600c:4256:b0:3b4:7cfc:a626 with SMTP id r22-20020a05600c425600b003b47cfca626mr1643910wmm.187.1664265355647; Tue, 27 Sep 2022 00:55:55 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:55 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 20/33] crypto: rockchip: rename ablk functions to cipher Date: Tue, 27 Sep 2022 07:54:58 +0000 Message-Id: <20220927075511.3147847-21-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Some functions have still ablk in their name even if there are not handling ablk_cipher anymore. So let's rename them. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- .../crypto/rockchip/rk3288_crypto_skcipher.c | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 3bdb304aa794..d60c206e717d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -273,7 +273,7 @@ static int rk_des3_ede_cbc_decrypt(struct skcipher_requ= est *req) return rk_handle_req(dev, req); } =20 -static void rk_ablk_hw_init(struct rk_crypto_info *dev, struct skcipher_re= quest *req) +static void rk_cipher_hw_init(struct rk_crypto_info *dev, struct skcipher_= request *req) { struct crypto_skcipher *cipher =3D crypto_skcipher_reqtfm(req); struct crypto_tfm *tfm =3D crypto_skcipher_tfm(cipher); @@ -382,7 +382,7 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) } } err =3D 0; - rk_ablk_hw_init(ctx->dev, areq); + rk_cipher_hw_init(ctx->dev, areq); if (ivsize) { if (ivsize =3D=3D DES_BLOCK_SIZE) memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_IV_0, ivtouse, ivsize); @@ -448,7 +448,7 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) return err; } =20 -static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) +static int rk_cipher_tfm_init(struct crypto_skcipher *tfm) { struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); @@ -482,7 +482,7 @@ static int rk_ablk_init_tfm(struct crypto_skcipher *tfm) return err; } =20 -static void rk_ablk_exit_tfm(struct crypto_skcipher *tfm) +static void rk_cipher_tfm_exit(struct crypto_skcipher *tfm) { struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); =20 @@ -503,8 +503,8 @@ struct rk_crypto_tmp rk_ecb_aes_alg =3D { .base.cra_alignmask =3D 0x0f, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D AES_MIN_KEY_SIZE, .max_keysize =3D AES_MAX_KEY_SIZE, .setkey =3D rk_aes_setkey, @@ -525,8 +525,8 @@ struct rk_crypto_tmp rk_cbc_aes_alg =3D { .base.cra_alignmask =3D 0x0f, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D AES_MIN_KEY_SIZE, .max_keysize =3D AES_MAX_KEY_SIZE, .ivsize =3D AES_BLOCK_SIZE, @@ -548,8 +548,8 @@ struct rk_crypto_tmp rk_ecb_des_alg =3D { .base.cra_alignmask =3D 0x07, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D DES_KEY_SIZE, .max_keysize =3D DES_KEY_SIZE, .setkey =3D rk_des_setkey, @@ -570,8 +570,8 @@ struct rk_crypto_tmp rk_cbc_des_alg =3D { .base.cra_alignmask =3D 0x07, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D DES_KEY_SIZE, .max_keysize =3D DES_KEY_SIZE, .ivsize =3D DES_BLOCK_SIZE, @@ -593,8 +593,8 @@ struct rk_crypto_tmp rk_ecb_des3_ede_alg =3D { .base.cra_alignmask =3D 0x07, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D DES3_EDE_KEY_SIZE, .max_keysize =3D DES3_EDE_KEY_SIZE, .setkey =3D rk_tdes_setkey, @@ -615,8 +615,8 @@ struct rk_crypto_tmp rk_cbc_des3_ede_alg =3D { .base.cra_alignmask =3D 0x07, .base.cra_module =3D THIS_MODULE, =20 - .init =3D rk_ablk_init_tfm, - .exit =3D rk_ablk_exit_tfm, + .init =3D rk_cipher_tfm_init, + .exit =3D rk_cipher_tfm_exit, .min_keysize =3D DES3_EDE_KEY_SIZE, .max_keysize =3D DES3_EDE_KEY_SIZE, .ivsize =3D DES_BLOCK_SIZE, --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9543EC07E9D for ; Tue, 27 Sep 2022 07:57:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231549AbiI0H5e (ORCPT ); Tue, 27 Sep 2022 03:57:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231436AbiI0H4W (ORCPT ); Tue, 27 Sep 2022 03:56:22 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41331ADCDE for ; Tue, 27 Sep 2022 00:55:57 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id h7so1287023wru.10 for ; Tue, 27 Sep 2022 00:55:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=cJjKlAvPGNgNOZFjIKeGYWIyXJ/4+hZsDzTA+cA/SLw=; b=m5n1hfmP7pIDzFzBcumD0hy9Q+PWxmoMtg5nEtzu1kbhQhCcYmG5+ytBirot97oKut cvlPpEOBsXsHg97F4O7s0RttDWFxFn7H7+QOx6N3aDMsnCbR7WQk2wKkqN/h1EaAUZpJ Bg/9EKM9VtNsmgwN1r0woFq3L/BgmWfapVcDHqakrHnwxOIlYHwm6YyWwAtta0l3SD1r Jjb8V8QZhsmc3hkDI2CpRCpr4yQX5yUU3u0aC+AQ2A2CGwCEHr+2wUwFzzovNps4bztF ZnfMWKWtPWF8zsHn0A+TAw7p53iJYmOpUSbcsE25OxgpNa5XVeoHqo37qwoLy0wDAsFO xLsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=cJjKlAvPGNgNOZFjIKeGYWIyXJ/4+hZsDzTA+cA/SLw=; b=Jqv3oH+8OTZ1InEkiSwx3Xa1eVBEk+sVSgTUgFtDWRMd4VFgR4spExPNnuhZsT9FIv NKngep1ftcYWHLF3osOZQIzHpILo9o8OJOlIDkv4z0irJIf5mxBN8atW41zmWrIp6iHm qlExzFtODvYoLJzgv6ug7XoFpbLImCyCqKfaHy3dB5rKbmRBp+T9ilUSRx++/gFF8YgU uUBy/Trz8QbW/d4BUxPFRVVOCaqmbYpyOt1qu+SQ2YiFNpEZ4nTwa14CB6YeZFbnZ4OI WFyEEishxxPkK7dksQPNPdGRS7cc2OXaS13lMuwkpYdsbJX6Mjl1FN6Kde4GBoDtE4y8 7ZpQ== X-Gm-Message-State: ACrzQf3V+BppLnVKz31QYAdb02vJyNz4nUi+Ol1kKCo/jM36GkByM4NI aWR31EGM66AvPVNr50tpLdRa5A== X-Google-Smtp-Source: AMsMyM5w5WJ8EMI1WmF/vGNfyrNy7ojbBJiXeCrRcd//uaevvFaFX46ctwX3iIW5MrrxveII1qPgGA== X-Received: by 2002:a5d:5a85:0:b0:22a:34a8:eda7 with SMTP id bp5-20020a5d5a85000000b0022a34a8eda7mr15589631wrb.687.1664265356697; Tue, 27 Sep 2022 00:55:56 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:56 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 21/33] crypto: rockchip: rework rk_handle_req function Date: Tue, 27 Sep 2022 07:54:59 +0000 Message-Id: <20220927075511.3147847-22-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This patch rework the rk_handle_req(), simply removing the rk_crypto_info parameter. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- .../crypto/rockchip/rk3288_crypto_skcipher.c | 68 +++++-------------- 1 file changed, 17 insertions(+), 51 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index d60c206e717d..3187869c4c68 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -82,10 +82,12 @@ static int rk_cipher_fallback(struct skcipher_request *= areq) return err; } =20 -static int rk_handle_req(struct rk_crypto_info *dev, - struct skcipher_request *req) +static int rk_cipher_handle_req(struct skcipher_request *req) { - struct crypto_engine *engine =3D dev->engine; + struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); + struct rk_cipher_ctx *tctx =3D crypto_skcipher_ctx(tfm); + struct rk_crypto_info *rkc =3D tctx->dev; + struct crypto_engine *engine =3D rkc->engine; =20 if (rk_cipher_need_fallback(req)) return rk_cipher_fallback(req); @@ -142,135 +144,99 @@ static int rk_tdes_setkey(struct crypto_skcipher *ci= pher, =20 static int rk_aes_ecb_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_AES_ECB_MODE; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_aes_ecb_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_AES_ECB_MODE | RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_aes_cbc_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_AES_CBC_MODE; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_aes_cbc_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_AES_CBC_MODE | RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des_ecb_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D 0; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des_ecb_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des_cbc_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des_cbc_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_CHAINMODE_CBC | RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des3_ede_ecb_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_SELECT; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des3_ede_ecb_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des3_ede_cbc_encrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static int rk_des3_ede_cbc_decrypt(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *dev =3D ctx->dev; =20 rctx->mode =3D RK_CRYPTO_TDES_SELECT | RK_CRYPTO_TDES_CHAINMODE_CBC | RK_CRYPTO_DEC; - return rk_handle_req(dev, req); + return rk_cipher_handle_req(req); } =20 static void rk_cipher_hw_init(struct rk_crypto_info *dev, struct skcipher_= request *req) --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9EB07C54EE9 for ; Tue, 27 Sep 2022 07:57:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231566AbiI0H5s (ORCPT ); Tue, 27 Sep 2022 03:57:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231299AbiI0H4a (ORCPT ); Tue, 27 Sep 2022 03:56:30 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E11BACA25 for ; Tue, 27 Sep 2022 00:55:58 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id cc5so13689983wrb.6 for ; Tue, 27 Sep 2022 00:55:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=ByxNWxvo3Qxto7Y23zUxo9nNTozJns03C6t8K9dbr0w=; b=smDM3tVmVodbklwniS6svwjdSpY+WazEs7IMOFi/szLoLpZCBtsU0LaPuA4DGRTq2G f7GR89ybjAYC3gqGtqbjvHzqPNO7mJfM9ElwTTrqXFaXCmNUBxGMNLKpsPjLJounan1n oH2iHugPqHpLxlt9DWo84X6ZRu+8/hYjsfdDdmb0MAG2SN8KY9xFTiDvs6iXc4nsrOCj qnlrbO409EbRm1Gs8D/bRvWAHq/4eg4ggxJ8YtxGTCGNW1Yk9f+uGh3oJykuhykyngGU 1/+WujnQ6e5920tsAFVNMCWlXIabCelZH9TYo4bTZ6qSRw2eRl/oh5K0CZFrUIl5hE0g FP6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=ByxNWxvo3Qxto7Y23zUxo9nNTozJns03C6t8K9dbr0w=; b=mWw07eCnZ5lN2hHG1ELboSHvhjkFZIQcoPvhsp26TkyUsw/t5Cx5eMsvtGvFK42Joj MddLtkex8d6kR5s9fSDWWDnp7VPX9A2A87Mma9wwVAt8NiINqHQTMf+/p03FRkOm9xJ6 9LzaxuYEekiLreszZacLO4ueSPudFaEByQv0FpUUjHMYZFlnNLQ7DTJgk7jIEuzVzc1w 0+4x9d1sRjYk1Mxflfw/ARM/MlQRPpCBQYG6pJAK/FrK2nsdw2m4qQTQYduzwCkQnzLB IRPFpo8jFnfTuZLChIq7X78V8BvnE3JAkuVXstzpE9GiLo45rbTLo39r5+ftRk0xVxZ3 B8UQ== X-Gm-Message-State: ACrzQf2/dPqdLQKRHBGgaRs2ttrKKd55ZBF8cnfbgWeHC5CKGXILG4NS 7NC6ysLXBS9NKKviGyKZf7+0lkEgGjq8mQ== X-Google-Smtp-Source: AMsMyM6O5wZXbjaZ9aq4z/59XpF6EWFYY42RyTPdnS8NuRkRp0uSP1jSqZUacleNqvVIk39tA6Mdcw== X-Received: by 2002:adf:df82:0:b0:228:e2cf:d20f with SMTP id z2-20020adfdf82000000b00228e2cfd20fmr16982503wrl.356.1664265358103; Tue, 27 Sep 2022 00:55:58 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:57 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 22/33] crypto: rockchip: use a rk_crypto_info variable instead of lot of indirection Date: Tue, 27 Sep 2022 07:55:00 +0000 Message-Id: <20220927075511.3147847-23-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of using lot of ctx->dev->xx indirections, use an intermediate variable for rk_crypto_info. This will help later, when 2 different rk_crypto_info would be used. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 23 +++++++----- .../crypto/rockchip/rk3288_crypto_skcipher.c | 37 ++++++++++--------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index fae779d73c84..636dbcde0ca3 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -226,9 +226,10 @@ static int rk_hash_prepare(struct crypto_engine *engin= e, void *breq) struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct rk_crypto_info *rkc =3D tctx->dev; int ret; =20 - ret =3D dma_map_sg(tctx->dev->dev, areq->src, sg_nents(areq->src), DMA_TO= _DEVICE); + ret =3D dma_map_sg(rkc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVIC= E); if (ret <=3D 0) return -EINVAL; =20 @@ -243,8 +244,9 @@ static int rk_hash_unprepare(struct crypto_engine *engi= ne, void *breq) struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); + struct rk_crypto_info *rkc =3D tctx->dev; =20 - dma_unmap_sg(tctx->dev->dev, areq->src, rctx->nrsg, DMA_TO_DEVICE); + dma_unmap_sg(rkc->dev, areq->src, rctx->nrsg, DMA_TO_DEVICE); return 0; } =20 @@ -257,6 +259,7 @@ static int rk_hash_run(struct crypto_engine *engine, vo= id *breq) struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->base.__crt_alg); struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.hash); struct scatterlist *sg =3D areq->src; + struct rk_crypto_info *rkc =3D tctx->dev; int err =3D 0; int i; u32 v; @@ -283,13 +286,13 @@ static int rk_hash_run(struct crypto_engine *engine, = void *breq) rk_ahash_reg_init(areq); =20 while (sg) { - reinit_completion(&tctx->dev->complete); - tctx->dev->status =3D 0; - crypto_ahash_dma_start(tctx->dev, sg); - wait_for_completion_interruptible_timeout(&tctx->dev->complete, + reinit_completion(&rkc->complete); + rkc->status =3D 0; + crypto_ahash_dma_start(rkc, sg); + wait_for_completion_interruptible_timeout(&rkc->complete, msecs_to_jiffies(2000)); - if (!tctx->dev->status) { - dev_err(tctx->dev->dev, "DMA timeout\n"); + if (!rkc->status) { + dev_err(rkc->dev, "DMA timeout\n"); err =3D -EFAULT; goto theend; } @@ -306,10 +309,10 @@ static int rk_hash_run(struct crypto_engine *engine, = void *breq) * efficiency, and make it response quickly when dma * complete. */ - readl_poll_timeout(tctx->dev->reg + RK_CRYPTO_HASH_STS, v, v =3D=3D 0, 10= , 1000); + readl_poll_timeout(rkc->reg + RK_CRYPTO_HASH_STS, v, v =3D=3D 0, 10, 1000= ); =20 for (i =3D 0; i < crypto_ahash_digestsize(tfm) / 4; i++) { - v =3D readl(tctx->dev->reg + RK_CRYPTO_HASH_DOUT_0 + i * 4); + v =3D readl(rkc->reg + RK_CRYPTO_HASH_DOUT_0 + i * 4); put_unaligned_le32(v, areq->result + i * 4); } =20 diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 3187869c4c68..6a1bea98fded 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -303,6 +303,7 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) unsigned int todo; struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); + struct rk_crypto_info *rkc =3D ctx->dev; =20 algt->stat_req++; =20 @@ -330,49 +331,49 @@ static int rk_cipher_run(struct crypto_engine *engine= , void *async_req) scatterwalk_map_and_copy(biv, sgs, offset, ivsize, 0); } if (sgs =3D=3D sgd) { - err =3D dma_map_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + err =3D dma_map_sg(rkc->dev, sgs, 1, DMA_BIDIRECTIONAL); if (err <=3D 0) { err =3D -EINVAL; goto theend_iv; } } else { - err =3D dma_map_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + err =3D dma_map_sg(rkc->dev, sgs, 1, DMA_TO_DEVICE); if (err <=3D 0) { err =3D -EINVAL; goto theend_iv; } - err =3D dma_map_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + err =3D dma_map_sg(rkc->dev, sgd, 1, DMA_FROM_DEVICE); if (err <=3D 0) { err =3D -EINVAL; goto theend_sgs; } } err =3D 0; - rk_cipher_hw_init(ctx->dev, areq); + rk_cipher_hw_init(rkc, areq); if (ivsize) { if (ivsize =3D=3D DES_BLOCK_SIZE) - memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_IV_0, ivtouse, ivsize); + memcpy_toio(rkc->reg + RK_CRYPTO_TDES_IV_0, ivtouse, ivsize); else - memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_IV_0, ivtouse, ivsize); + memcpy_toio(rkc->reg + RK_CRYPTO_AES_IV_0, ivtouse, ivsize); } - reinit_completion(&ctx->dev->complete); - ctx->dev->status =3D 0; + reinit_completion(&rkc->complete); + rkc->status =3D 0; =20 todo =3D min(sg_dma_len(sgs), len); len -=3D todo; - crypto_dma_start(ctx->dev, sgs, sgd, todo / 4); - wait_for_completion_interruptible_timeout(&ctx->dev->complete, + crypto_dma_start(rkc, sgs, sgd, todo / 4); + wait_for_completion_interruptible_timeout(&rkc->complete, msecs_to_jiffies(2000)); - if (!ctx->dev->status) { - dev_err(ctx->dev->dev, "DMA timeout\n"); + if (!rkc->status) { + dev_err(rkc->dev, "DMA timeout\n"); err =3D -EFAULT; goto theend; } if (sgs =3D=3D sgd) { - dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + dma_unmap_sg(rkc->dev, sgs, 1, DMA_BIDIRECTIONAL); } else { - dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); - dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + dma_unmap_sg(rkc->dev, sgs, 1, DMA_TO_DEVICE); + dma_unmap_sg(rkc->dev, sgd, 1, DMA_FROM_DEVICE); } if (rctx->mode & RK_CRYPTO_DEC) { memcpy(iv, biv, ivsize); @@ -405,10 +406,10 @@ static int rk_cipher_run(struct crypto_engine *engine= , void *async_req) =20 theend_sgs: if (sgs =3D=3D sgd) { - dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + dma_unmap_sg(rkc->dev, sgs, 1, DMA_BIDIRECTIONAL); } else { - dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); - dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + dma_unmap_sg(rkc->dev, sgs, 1, DMA_TO_DEVICE); + dma_unmap_sg(rkc->dev, sgd, 1, DMA_FROM_DEVICE); } theend_iv: return err; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1839C07E9D for ; Tue, 27 Sep 2022 07:59:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231504AbiI0H74 (ORCPT ); Tue, 27 Sep 2022 03:59:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231607AbiI0H6V (ORCPT ); Tue, 27 Sep 2022 03:58:21 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 875CDB029A for ; Tue, 27 Sep 2022 00:56:34 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id t14so13666309wrx.8 for ; Tue, 27 Sep 2022 00:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=0KerGvUzdejWLAwshDyy9ppWCWrJnFuYbHleK5z5lUU=; b=tFZZkGLF12zpJ31kndQX4/eM+ARGjrnucK7XCQ8xEzjNs8rXqJXlW9DOiPgvta1cA0 Yy9+5gkNcMt20ahW61SdWn0goPxqolClL5ZlG+JTNs278lWWZq453BNrLGlUX/q/Z8mx 1LYi9+zNPagPwC71r/b8mMLvjoKFrQcG99vO5jCh+QgbOBn9ntWmGCYNEjZDvVCZmyj2 l4QUUuEbbcrs4NIHGKG9IwB9S9/nUTSwAzTFoPQYAZMneUoXm8ypujPZAKTJ7amhwD0e P5wdhOt3nio9X2nmDhWLztkpWl5ax1AXyki3jhpErcshNVxIZXh2JEDgx4/mwoVzU/Ti hBQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=0KerGvUzdejWLAwshDyy9ppWCWrJnFuYbHleK5z5lUU=; b=T2JHOOlx20weCJnZXZvs9aRYZYIQRz92AU0q2JsxumemrsirLeQ9E5Xe3R8jQucSDY KDpxowLRvEkFfcyyiseM2qGFuTA369ZEBAndObmm52x5kc+g7FX8Z0hFZAcv++B5UaMh dV0jxALLjoYJKpEATYFYvP1dHgFFAti30biGKCndkNrtGXok0Le76+ZUb4LGcLSonh1z aQFxVJxn/lTTuYRlKJDSDcRLvoTzF09KSUXxlsGoMfzzVZL+eC0nu2bMQRENff2AMGL0 5reIb7cptr6gO6MF3/bq8mDDDH1+CJaBxNgxodFPJuVj/57PJ28sYUqa7vJKRbwQfkIO WttQ== X-Gm-Message-State: ACrzQf2F1I20w6E2oV6a2iSigkLudv8Ph6joM7E/BIISzm81pmXhUaf7 McSyd79N7v9QVr96NjlU4rUn/A== X-Google-Smtp-Source: AMsMyM7cTV+QeJCXQ/wabYGrCDeuge3SgCP1vYJoewZaxtGyOUU+Nm9KENJZ/QjBK8MeyIn1pqZGSQ== X-Received: by 2002:adf:9cd0:0:b0:22a:7cea:d3c3 with SMTP id h16-20020adf9cd0000000b0022a7cead3c3mr16728656wre.196.1664265359229; Tue, 27 Sep 2022 00:55:59 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:58 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping Subject: [PATCH v10 23/33] crypto: rockchip: use the rk_crypto_info given as parameter Date: Tue, 27 Sep 2022 07:55:01 +0000 Message-Id: <20220927075511.3147847-24-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of using the crypto_info from TFM ctx, use the one given as paramet= er. Reviewed-by: John Keeping Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 6a1bea98fded..cf0dfb6029d8 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -254,7 +254,7 @@ static void rk_cipher_hw_init(struct rk_crypto_info *de= v, struct skcipher_reques RK_CRYPTO_TDES_BYTESWAP_KEY | RK_CRYPTO_TDES_BYTESWAP_IV; CRYPTO_WRITE(dev, RK_CRYPTO_TDES_CTRL, rctx->mode); - memcpy_toio(ctx->dev->reg + RK_CRYPTO_TDES_KEY1_0, ctx->key, ctx->keylen= ); + memcpy_toio(dev->reg + RK_CRYPTO_TDES_KEY1_0, ctx->key, ctx->keylen); conf_reg =3D RK_CRYPTO_DESSEL; } else { rctx->mode |=3D RK_CRYPTO_AES_FIFO_MODE | @@ -266,7 +266,7 @@ static void rk_cipher_hw_init(struct rk_crypto_info *de= v, struct skcipher_reques else if (ctx->keylen =3D=3D AES_KEYSIZE_256) rctx->mode |=3D RK_CRYPTO_AES_256BIT_key; CRYPTO_WRITE(dev, RK_CRYPTO_AES_CTRL, rctx->mode); - memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, ctx->key, ctx->keylen); + memcpy_toio(dev->reg + RK_CRYPTO_AES_KEY_0, ctx->key, ctx->keylen); } conf_reg |=3D RK_CRYPTO_BYTESWAP_BTFIFO | RK_CRYPTO_BYTESWAP_BRFIFO; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88D2AC54EE9 for ; Tue, 27 Sep 2022 08:00:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231614AbiI0IAZ (ORCPT ); Tue, 27 Sep 2022 04:00:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231308AbiI0H7N (ORCPT ); Tue, 27 Sep 2022 03:59:13 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC9A1B02AE for ; Tue, 27 Sep 2022 00:56:35 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id c11so13640651wrp.11 for ; Tue, 27 Sep 2022 00:56:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=Y1ZryWow92c9hwwvz5Hh3ukn+dkdomJWMwO/HyG9hMQ=; b=vSEfwmTdvS0rDWOpL4kN1U9FsGdM8Is94fqgDJOosfdOwlQjxFj2gaZo8uoGxnipj5 vXvw238UdUg5hr8Pn+hR+lyATIEoLNX6VlWt192Nsdqtrq5dZ6SqdUEjF7P3mEtu5dlt lTVasTjkFs26TcTXRAWfGQjg7ch1Z5+fxpuECglpYnjnWILhq+j3jNQMDz2qVESS6zQb plYabEwgNUFEoDhbNamK/eHiuUrcR6qbIp0uqeomCHrt1IOZXYWsLvDy+QInbc17ARJl cN1B28TN+I8tLDBI+M5Sk649lb4bL6zmsBOZhjro21dDbiMc4U6sjWqakjbWXarnlzfU H1HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=Y1ZryWow92c9hwwvz5Hh3ukn+dkdomJWMwO/HyG9hMQ=; b=CrjWmjTtTC5d6AF3qQ25GWTmqFy5yuvTq+A3kgQWZ6+F7/EAD2DelEN/BAh6GYeTCZ 4muSD9H67ustEZyFSJW+VwAHbWG4bq7b/ocEfZFdvABUJv0NrQk9xj1daRUm360Q8b7B /zCrL0UG8ClMaKT8vuwNogtO7jsH+dk0NslKiGFiJeNAbLccdVWqeLvLplMyC5FDp7bh vqodQFMUYH97fuTJPOPO2Y3n+e75ZDiVc9IVlBIe/AInExKjIWjRan9+8h/GwuD1znuS PP65d4bvQi9hvXzMY+UtGVN9Y57M8ZJUcvmzXjABbzOqYNs+r8rDG3Cw/iF4LkBMReEP UVOA== X-Gm-Message-State: ACrzQf3SAgt65BzNnKW5PgxuTJNx+n/JsorJnQA2XIwqLL9O+KWN+5rj gZW9hOesPedX91ZbEc0fuHE8nw== X-Google-Smtp-Source: AMsMyM6FtJzoyOaACXFQFUnMTqzDhHzSxdMONARXjapnrk5VKMZTHX5M8BbUXf/7AnxCxq/CgufRYw== X-Received: by 2002:a05:6000:1a87:b0:22a:56da:9a2b with SMTP id f7-20020a0560001a8700b0022a56da9a2bmr15995284wry.433.1664265360372; Tue, 27 Sep 2022 00:56:00 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.55.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:55:59 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , John Keeping , Krzysztof Kozlowski Subject: [PATCH v10 24/33] dt-bindings: crypto: convert rockchip-crypto to YAML Date: Tue, 27 Sep 2022 07:55:02 +0000 Message-Id: <20220927075511.3147847-25-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Convert rockchip-crypto to YAML. Reviewed-by: John Keeping Reviewed-by: Krzysztof Kozlowski Signed-off-by: Corentin Labbe --- .../crypto/rockchip,rk3288-crypto.yaml | 64 +++++++++++++++++++ .../bindings/crypto/rockchip-crypto.txt | 28 -------- 2 files changed, 64 insertions(+), 28 deletions(-) create mode 100644 Documentation/devicetree/bindings/crypto/rockchip,rk328= 8-crypto.yaml delete mode 100644 Documentation/devicetree/bindings/crypto/rockchip-crypt= o.txt diff --git a/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypt= o.yaml b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.ya= ml new file mode 100644 index 000000000000..8a219d439d02 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/crypto/rockchip,rk3288-crypto.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Rockchip Electronics Security Accelerator + +maintainers: + - Heiko Stuebner + +properties: + compatible: + enum: + - rockchip,rk3288-crypto + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + maxItems: 4 + + clock-names: + items: + - const: aclk + - const: hclk + - const: sclk + - const: apb_pclk + + resets: + maxItems: 1 + + reset-names: + items: + - const: crypto-rst + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - resets + - reset-names + +additionalProperties: false + +examples: + - | + #include + #include + crypto@ff8a0000 { + compatible =3D "rockchip,rk3288-crypto"; + reg =3D <0xff8a0000 0x4000>; + interrupts =3D ; + clocks =3D <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>, + <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>; + clock-names =3D "aclk", "hclk", "sclk", "apb_pclk"; + resets =3D <&cru SRST_CRYPTO>; + reset-names =3D "crypto-rst"; + }; diff --git a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt b= /Documentation/devicetree/bindings/crypto/rockchip-crypto.txt deleted file mode 100644 index 5e2ba385b8c9..000000000000 --- a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt +++ /dev/null @@ -1,28 +0,0 @@ -Rockchip Electronics And Security Accelerator - -Required properties: -- compatible: Should be "rockchip,rk3288-crypto" -- reg: Base physical address of the engine and length of memory mapped - region -- interrupts: Interrupt number -- clocks: Reference to the clocks about crypto -- clock-names: "aclk" used to clock data - "hclk" used to clock data - "sclk" used to clock crypto accelerator - "apb_pclk" used to clock dma -- resets: Must contain an entry for each entry in reset-names. - See ../reset/reset.txt for details. -- reset-names: Must include the name "crypto-rst". - -Examples: - - crypto: cypto-controller@ff8a0000 { - compatible =3D "rockchip,rk3288-crypto"; - reg =3D <0xff8a0000 0x4000>; - interrupts =3D ; - clocks =3D <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>, - <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>; - clock-names =3D "aclk", "hclk", "sclk", "apb_pclk"; - resets =3D <&cru SRST_CRYPTO>; - reset-names =3D "crypto-rst"; - }; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD6B4C07E9D for ; Tue, 27 Sep 2022 08:00:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231411AbiI0IAb (ORCPT ); Tue, 27 Sep 2022 04:00:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231389AbiI0H7P (ORCPT ); Tue, 27 Sep 2022 03:59:15 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3AFAAFADF for ; Tue, 27 Sep 2022 00:56:38 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id l18so1693560wrw.9 for ; Tue, 27 Sep 2022 00:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=ADE9d2Wn62ug3S5fC01dr3GFFHi+uj6qkqBx4/1dDhY=; b=SFEI88fkm5llcXA8dPnC3RNaxnqCMd7HxoPOQJrSbU2s0cxl37X0bOycL9YhowtTgN mnYLz/9AlqlQy1PRPCzLml87bfY9x9N2HP0evWgN0cowQbY7X1RDkW7ik8/bLMNGqrZw gj/pflWQQDsEJgi3q/tpwD6aU9fJKGBct8AYSmELz4BW6J5bof+QhacW8Ygv0uf5qd5X dh+gcjuxSMP8SRkBL607z+JzJKO4rvEfuldb99VUJfFpBWGwsHc78rNLimjJer28WwTl xYYlaNoUx621vQERHGohqDT5a6J+gdbd3tMr8O/1w+Wc2XC67onafUfYlR3mQl7zWe2k zoPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=ADE9d2Wn62ug3S5fC01dr3GFFHi+uj6qkqBx4/1dDhY=; b=YFHxr94zyKpkc44ld2TIzknkRD7pJr5pm+6cwMWTII5Ug099Gwq0aFWZFsCrtX79/W tLStfvvq2m/tqwJi2ybLNf5qngbCzM0cYJLLMBTdVxwmtWOwrg3XIv7mI1IiZjtu5Hrx JZYaUuMyQjJgoHVmy9xXUW3Peoj0mqjPtgzn/I+rzHLGNX3tl/sPvXod/FTPkfuBv8Km k7mRv1xvbQO2zp2gSeFWf4rD56Od9SOT2H0IcIJmX2YAtYGdTb0lEWopS3vOBZMyWjlw vhUOYOFtggt1yJoeEx1TaM7uHTN61J+mLAWbXlPNZAtWb1be36AXca97qd3PbzQZGdIz 8igg== X-Gm-Message-State: ACrzQf3b1IyAb+1NstXRZMhlDEGOSVIuOcHHuDCpYu3tifsNXCZ5BHzL IRkuDA7aanNvOb5DWX2Gf1mKTg== X-Google-Smtp-Source: AMsMyM6ePM+zTcykCEiPPOORnN7IA3QoPxj/NeY87glfHwuYP7Nou0cf8S83ruI20zoa58qpPnaAZg== X-Received: by 2002:a5d:4a01:0:b0:21d:8ce1:8b6d with SMTP id m1-20020a5d4a01000000b0021d8ce18b6dmr15738325wrq.718.1664265361715; Tue, 27 Sep 2022 00:56:01 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:01 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 25/33] dt-bindings: crypto: rockchip: add new compatible Date: Tue, 27 Sep 2022 07:55:03 +0000 Message-Id: <20220927075511.3147847-26-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Since driver support new compatible, we need to update the driver bindings. Signed-off-by: Corentin Labbe Reviewed-by: Rob Herring --- .../crypto/rockchip,rk3288-crypto.yaml | 79 +++++++++++++++++-- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypt= o.yaml b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.ya= ml index 8a219d439d02..f1a9da8bff7a 100644 --- a/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml +++ b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml @@ -13,6 +13,8 @@ properties: compatible: enum: - rockchip,rk3288-crypto + - rockchip,rk3328-crypto + - rockchip,rk3399-crypto =20 reg: maxItems: 1 @@ -21,21 +23,82 @@ properties: maxItems: 1 =20 clocks: + minItems: 3 maxItems: 4 =20 clock-names: - items: - - const: aclk - - const: hclk - - const: sclk - - const: apb_pclk + minItems: 3 + maxItems: 4 =20 resets: - maxItems: 1 + minItems: 1 + maxItems: 3 =20 reset-names: - items: - - const: crypto-rst + minItems: 1 + maxItems: 3 + +allOf: + - if: + properties: + compatible: + contains: + const: rockchip,rk3288-crypto + then: + properties: + clocks: + minItems: 4 + clock-names: + items: + - const: aclk + - const: hclk + - const: sclk + - const: apb_pclk + resets: + maxItems: 1 + reset-names: + items: + - const: crypto-rst + - if: + properties: + compatible: + contains: + const: rockchip,rk3328-crypto + then: + properties: + clocks: + maxItems: 3 + clock-names: + items: + - const: hclk_master + - const: hclk_slave + - const: sclk + resets: + maxItems: 1 + reset-names: + items: + - const: crypto-rst + - if: + properties: + compatible: + contains: + const: rockchip,rk3399-crypto + then: + properties: + clocks: + maxItems: 3 + clock-names: + items: + - const: hclk_master + - const: hclk_slave + - const: sclk + resets: + minItems: 3 + reset-names: + items: + - const: master + - const: slave + - const: crypto-rst =20 required: - compatible --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D01E7C07E9D for ; Tue, 27 Sep 2022 07:58:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231335AbiI0H6L (ORCPT ); Tue, 27 Sep 2022 03:58:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231486AbiI0H4w (ORCPT ); Tue, 27 Sep 2022 03:56:52 -0400 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44B03AE231 for ; Tue, 27 Sep 2022 00:56:03 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id e18so5978461wmq.3 for ; Tue, 27 Sep 2022 00:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=ZivRzjlDS3OoPoRTHkJnPDZ3sM1VA8uv4BaZC71qcQ0=; b=Hi/PfgX466QUwnJFm9k1zLSql6rT5CjE01/66twod+tuTI0yOR+7txzfcYZltmqEZ2 WoO0mSzSJd1QcUwCvajDOwo4a8WSQNbYEOyBSkj05F+VRuK4K0dO02+IkF237XmXwmAn +85jsxrHxNkLEupTOLl/Jc3C4eY4I8wuGPll1rk0VnFMl+Ud1v4y64X4QhbPPZ0qQh1S Aaj2P3F7oWm3WCyuuWWx48rT5Aia8r85PLVZcHB+xB84TXvMckzUKZHCzyhWkm53PwR9 EPOMevwrP9mbDOyu2MYuq/PCpengknDNrhgzZCtHleE/MywmhhlAeErCxGDOsn9r05M3 ELzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=ZivRzjlDS3OoPoRTHkJnPDZ3sM1VA8uv4BaZC71qcQ0=; b=hpHuaeZsG+bEoQ+rv2XMEh8xtOa/vVCPVIHEDSN47iY4K4DwZy7YSqnkoJjva1HlgZ pzDXRXGf6E2VaPvnb1CCbfTvW1Gs8wJTcNOIg1VxGZZSPoh/dWQ/wM+tHW6VQGzbRk/s q3MCdXSiemUUX34fpeCqYhVaiCSeH29MwEHoBaGkuIuu9JYrgxFsEFtiUscEZwJADI8h U7X+WuURA2CHSRryZuH6/S2+6+IJ98BHnPsEq0qa4JIHM1xTdEc0JiytD9VYD0D+IejX 2OZvYKHNPbi/FfQrt7DLEIrZG3CrfnaOr1Ept/yuojrlUZE/go6n5Wu5dLWzMBPfm+zT lDRQ== X-Gm-Message-State: ACrzQf1FYjL3sO6l1iR2tL9zMmJP70K3khVcmkiUHrW1M3yeEun+HT9e jWbML1pUi5GCAiZvMSUgFHPdXQ== X-Google-Smtp-Source: AMsMyM5TTwj3ckRPTtCPXJIEkijaJ3Io02K7CqsJQYSUJEPJ6vwCKX0TepgfinUTDLaNDeXwwOLTHg== X-Received: by 2002:a05:600c:4e94:b0:3b4:b416:46c3 with SMTP id f20-20020a05600c4e9400b003b4b41646c3mr1645457wmq.149.1664265362733; Tue, 27 Sep 2022 00:56:02 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:02 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe , Rob Herring Subject: [PATCH v10 26/33] clk: rk3399: use proper crypto0 name Date: Tue, 27 Sep 2022 07:55:04 +0000 Message-Id: <20220927075511.3147847-27-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" RK3399 has 2 crypto instance, named crypto0 and crypto1 in the TRM. Only reset for crypto1 is correctly named, but crypto0 is not. Since nobody use them , add a 0 to be consistent with the TRM and crypto1 e= ntries. Acked-by: Rob Herring Signed-off-by: Corentin Labbe Acked-by: Stephen Boyd --- include/dt-bindings/clock/rk3399-cru.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/dt-bindings/clock/rk3399-cru.h b/include/dt-bindings/c= lock/rk3399-cru.h index 44e0a319f077..39169d94a44e 100644 --- a/include/dt-bindings/clock/rk3399-cru.h +++ b/include/dt-bindings/clock/rk3399-cru.h @@ -547,8 +547,8 @@ #define SRST_H_PERILP0 171 #define SRST_H_PERILP0_NOC 172 #define SRST_ROM 173 -#define SRST_CRYPTO_S 174 -#define SRST_CRYPTO_M 175 +#define SRST_CRYPTO0_S 174 +#define SRST_CRYPTO0_M 175 =20 /* cru_softrst_con11 */ #define SRST_P_DCF 176 @@ -556,7 +556,7 @@ #define SRST_CM0S 178 #define SRST_CM0S_DBG 179 #define SRST_CM0S_PO 180 -#define SRST_CRYPTO 181 +#define SRST_CRYPTO0 181 #define SRST_P_PERILP1_SGRF 182 #define SRST_P_PERILP1_GRF 183 #define SRST_CRYPTO1_S 184 --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 23722C54EE9 for ; Tue, 27 Sep 2022 07:59:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231476AbiI0H7R (ORCPT ); Tue, 27 Sep 2022 03:59:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231377AbiI0H5n (ORCPT ); Tue, 27 Sep 2022 03:57:43 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97839AE238 for ; Tue, 27 Sep 2022 00:56:04 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id u16-20020a05600c211000b003b5152ebf09so6342089wml.5 for ; Tue, 27 Sep 2022 00:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=QXNec13rQxx7mczo0Bb45Dl1W4/rRz+jQsRU4AeJnZM=; b=7Z4Ya4FJF8izdlJJi0KOSJdYA3ci49E1lmr+MVg9ExH4Yw/daGRLYbHqoztQ0FZdrB xjpJNLPVkg8W/HiFxbqgE0IQ/1BunOKYfekMEtWIdLWIwIBjtUTfe/vgxqC5nFi+xuAu aXyUoidd6XaoadwuPJc3YLUowY1Peid71VpJrjEOXtRpFEZlUizKBE3WVKBUBKrFrVLE ZNjMBcMAwfFieUMKtd6iHcF4174GELX3ZRIO3E4sBpnn5mB1Qxhl+u2HpPBA39mgJsw7 e7QvfbTXN6jVQgsXQkvuGx3HwCtUHeEIIUZjFE0WNR7tK8Vfoi4E9D0/tCaFaqWeH+gJ 70Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=QXNec13rQxx7mczo0Bb45Dl1W4/rRz+jQsRU4AeJnZM=; b=Knkay0/iXfVhKPuOGSwVPPKtoZwkixvSQl06+lXy2qsG11QDkOwvJyM+aPgpEs8ND7 k2yYEZrEMsLaHSBIL9e3NdTRGHN2OoDOVMjLWQWil0Pa1mROjnq8b66u4PxiNMy9vcL9 mavd7yZ4+YIKlE2aF2pg2YVPQiWW/UcjlroqrdYw8FvEoHF5dwFbY1l6knVn3FKMbWzY V9GLt8rufS7YV0uGaTondxReWxZwziZ0nRLw2eMaUkheoo1WnFLVU7Z+yskVQtq5Xnv6 UN2gCL3Jsr3zlGOVxhaU8tPYHzs6tDyHKezL1cKKynEYP6L0VmWyKtrorO7oC6R7acWP mVzg== X-Gm-Message-State: ACrzQf1htAG3gOtztol0EhTTPPcBlS38myIoPrGb+k/OMB/t5Bhiqihr K2GJxZjKIAV60ocxSuczFtRmIg== X-Google-Smtp-Source: AMsMyM5nnhYhQwme3zvGgjZnP57vTakH5++Ar9MdcosaQ773rvsfR+o2LAUTSt89rn6+lT118m1cGA== X-Received: by 2002:a05:600c:3591:b0:3b4:bf48:9f10 with SMTP id p17-20020a05600c359100b003b4bf489f10mr1721441wmq.76.1664265363834; Tue, 27 Sep 2022 00:56:03 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:03 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 27/33] arm64: dts: rockchip: add rk3328 crypto node Date: Tue, 27 Sep 2022 07:55:05 +0000 Message-Id: <20220927075511.3147847-28-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" rk3328 has a crypto IP handled by the rk3288 crypto driver so adds a node for it. Signed-off-by: Corentin Labbe --- arch/arm64/boot/dts/rockchip/rk3328.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts= /rockchip/rk3328.dtsi index 49ae15708a0b..96a7a777bae8 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi @@ -1025,6 +1025,17 @@ gic: interrupt-controller@ff811000 { (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; }; =20 + crypto: crypto@ff060000 { + compatible =3D "rockchip,rk3328-crypto"; + reg =3D <0x0 0xff060000 0x0 0x4000>; + interrupts =3D ; + clocks =3D <&cru HCLK_CRYPTO_MST>, <&cru HCLK_CRYPTO_SLV>, + <&cru SCLK_CRYPTO>; + clock-names =3D "hclk_master", "hclk_slave", "sclk"; + resets =3D <&cru SRST_CRYPTO>; + reset-names =3D "crypto-rst"; + }; + pinctrl: pinctrl { compatible =3D "rockchip,rk3328-pinctrl"; rockchip,grf =3D <&grf>; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF2D7C07E9D for ; Tue, 27 Sep 2022 07:58:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231506AbiI0H6W (ORCPT ); Tue, 27 Sep 2022 03:58:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231407AbiI0H4w (ORCPT ); Tue, 27 Sep 2022 03:56:52 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7B88AE84E for ; Tue, 27 Sep 2022 00:56:05 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id n10so13634701wrw.12 for ; Tue, 27 Sep 2022 00:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=U4G0XoR4OtiRi5wvEtvdLd6HFOllsQWXwedib2I2XRI=; b=FwA/ieJr1TKaFR5LKDFY3s/yBX9tqhQuaKMyBWipgkHFDq7GRX86eJR+E8pqtJo1BT kn7z6ZZ/UqUhsY15DfOPzk+URV1Q+A5t1IIRx0VcQfBMdEbxMgN5TDtQtcM5/jLr4XTs I45DCRQ1uGVsFf7dSz7biWKsa5VhZy9ZImpKkceMUGXjeyJVTY5svF8K2InJdrQP8Yy/ TnYbEeR7fiq1RyWPNBkGuABBNRwQFVA6a84V6VuuZwJuMrZdHe7iqAejUUcYeqtRwe1m JnCkshPDYzzlwmdxy9zAq+aC/9jzUIX6ofBxSr2TaXuFpJhLMxeYhhG5kL3SlV0RMnDr K20w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=U4G0XoR4OtiRi5wvEtvdLd6HFOllsQWXwedib2I2XRI=; b=TvOIUW5wE/Ka8b7IkLm11iIp6CgS+P5/Ht8oznbIPQXVImuiPkaI63Zco8CiUtm/LI xqP1NPY+iwtpCzNtEZbt2yD+lDdrxzpUC3wt8wtESaXgsRp7YBYbzxTo7RLPQpSdeb1R CZ5cgB5Mfd0+lr0iDhdLn3LyaAzuUxutIq8Kfz2OU0GiPO6irKvdyxM0OcSHtDuiHI8U G9BzhLJUO1qCv/mbV0l+6/no04PS8iI6/RJ0MLzG2pWkfLe5G6YTemnvtQNi4VQ4JX75 bLHV4nyADpJicKXUyM8NugQgyHbjYdrppCaAS0MqXQjJPNvPjOCJelWmh1T6XsVIqgrY mk2Q== X-Gm-Message-State: ACrzQf2u48+PjC2snLa9/4gicrOO5e06InOicbYfdttGvKgaRfMMJRTk ZkVSJ3vmv3qGe2P4iDMR2wxCJA== X-Google-Smtp-Source: AMsMyM72xxcbDl2X+QT2Is3zqpSPwfG5om66b6BrUcHJHVTz8wEZCd6Saf9lq9jbqFld0R5E753rNg== X-Received: by 2002:a5d:45c4:0:b0:228:9248:867d with SMTP id b4-20020a5d45c4000000b002289248867dmr15858905wrs.474.1664265365119; Tue, 27 Sep 2022 00:56:05 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:04 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 28/33] arm64: dts: rockchip: rk3399: add crypto node Date: Tue, 27 Sep 2022 07:55:06 +0000 Message-Id: <20220927075511.3147847-29-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The rk3399 has a crypto IP handled by the rk3288 crypto driver so adds a node for it. Tested-by Diederik de Haas Signed-off-by: Corentin Labbe Tested-by Diederik de Haas --- arch/arm64/boot/dts/rockchip/rk3399.dtsi | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts= /rockchip/rk3399.dtsi index 92c2207e686c..4391aea25984 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -582,6 +582,26 @@ saradc: saradc@ff100000 { status =3D "disabled"; }; =20 + crypto0: crypto@ff8b0000 { + compatible =3D "rockchip,rk3399-crypto"; + reg =3D <0x0 0xff8b0000 0x0 0x4000>; + interrupts =3D ; + clocks =3D <&cru HCLK_M_CRYPTO0>, <&cru HCLK_S_CRYPTO0>, <&cru SCLK_CRYP= TO0>; + clock-names =3D "hclk_master", "hclk_slave", "sclk"; + resets =3D <&cru SRST_CRYPTO0>, <&cru SRST_CRYPTO0_S>, <&cru SRST_CRYPTO= 0_M>; + reset-names =3D "master", "lave", "crypto"; + }; + + crypto1: crypto@ff8b8000 { + compatible =3D "rockchip,rk3399-crypto"; + reg =3D <0x0 0xff8b8000 0x0 0x4000>; + interrupts =3D ; + clocks =3D <&cru HCLK_M_CRYPTO1>, <&cru HCLK_S_CRYPTO1>, <&cru SCLK_CRYP= TO1>; + clock-names =3D "hclk_master", "hclk_slave", "sclk"; + resets =3D <&cru SRST_CRYPTO1>, <&cru SRST_CRYPTO1_S>, <&cru SRST_CRYPTO= 1_M>; + reset-names =3D "master", "slave", "crypto"; + }; + i2c1: i2c@ff110000 { compatible =3D "rockchip,rk3399-i2c"; reg =3D <0x0 0xff110000 0x0 0x1000>; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F66BC07E9D for ; Tue, 27 Sep 2022 08:01:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231635AbiI0IBp (ORCPT ); Tue, 27 Sep 2022 04:01:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231578AbiI0IAm (ORCPT ); Tue, 27 Sep 2022 04:00:42 -0400 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4DA9B0882 for ; Tue, 27 Sep 2022 00:56:49 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id r3-20020a05600c35c300b003b4b5f6c6bdso4963310wmq.2 for ; Tue, 27 Sep 2022 00:56:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=YTCwVt48y9KJqKpi4AoXVBEGpD4ZzF22SRLhTWJSe6w=; b=aNRUzEYRbYUc1tlLJG/XgPdAulKmUd3MB39rMJUpjJNaQrLWVJY0Mq+n/Nl40U3zcw zew6Z7VJgI4WInSGzsrRXkLixHvAEGqZh3/MDSIf3SFizMxmj19zW7tQldiVRtCQXvuo syIBNh4LA07yD/xqbRQDY0v0zdeIOm4aPC1mWIfrVM/oqDYUjcXUC89kHUs2ueiDDxcN g32bEWK5JDuYkAEDu0cMhZwGoDwKhkEioiKbWI20Q+jX8Wo101UNETleAWRAfj295GM2 65FWj7yAFDOkWntFr+m3qiKi9BrXYxbOIg+ex3mpln6dQnq1fz0uX0WUwH3/yGFA2Hbr 3p0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=YTCwVt48y9KJqKpi4AoXVBEGpD4ZzF22SRLhTWJSe6w=; b=NzusWQ0ap0VhNfpwbeUydGaDA589NNoWRU0x9kH1DcPx6AUg7aivcrIGnAipzhDOtj 04miZSVS+kSOJY0TwceAutQgo4xOX5s8lRaR423Ma8AYMQWaCrmgsHzj7R39XAKKV3oI Zsf5rlemPgWyHvOT9y0gVA7YjXQmyy8LMpvgSK/iBX2CaL64+F3q0RliUcfaHb4mmBZz aktw2fQOZRpnUmplzwRc6AoCsyC6QMY54YUN8qI6WrQ0337lV4ANy2TW6SsCJhYgo3U4 olXZ9S1SQCI9QsRaJ6GI47/+6tMulG5wFZeosaBAMl9ZtF1QCYm80bgOZAN+SZFLk4Re bIYQ== X-Gm-Message-State: ACrzQf0nYZ49yLbdPdMBwXxXFMs4uIv2Uiu8Xi6NiR6IgY0SHLuEEXOh A69iFI+PlR/5gO/YH0dHV0sLKQ== X-Google-Smtp-Source: AMsMyM6vVLxhhyKwI9CurLZNUl4up5EoRpsbV6dKVmexy3Dd91tsn3iNplphEMmVGJEGUIJEWgREuQ== X-Received: by 2002:a1c:202:0:b0:3a8:4197:eec0 with SMTP id 2-20020a1c0202000000b003a84197eec0mr1603199wmc.83.1664265366451; Tue, 27 Sep 2022 00:56:06 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:05 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 29/33] crypto: rockchip: store crypto_info in request context Date: Tue, 27 Sep 2022 07:55:07 +0000 Message-Id: <20220927075511.3147847-30-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The crypto_info to use must be stored in the request context. This will help when 2 crypto_info will be available on rk3399. Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.h | 2 ++ drivers/crypto/rockchip/rk3288_crypto_ahash.c | 14 ++++++-------- drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 6 ++++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index 28bf09fe1c1d..ff9fc25972eb 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -215,6 +215,7 @@ struct rk_ahash_ctx { =20 /* the private variable of hash for fallback */ struct rk_ahash_rctx { + struct rk_crypto_info *dev; struct ahash_request fallback_req; u32 mode; int nrsg; @@ -231,6 +232,7 @@ struct rk_cipher_ctx { }; =20 struct rk_cipher_rctx { + struct rk_crypto_info *dev; u8 backup_iv[AES_BLOCK_SIZE]; u32 mode; struct skcipher_request fallback_req; // keep at the end diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 636dbcde0ca3..d1bf68cb390d 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -200,6 +200,7 @@ static int rk_ahash_export(struct ahash_request *req, v= oid *out) =20 static int rk_ahash_digest(struct ahash_request *req) { + struct rk_ahash_rctx *rctx =3D ahash_request_ctx(req); struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(req->base.tfm); struct rk_crypto_info *dev =3D tctx->dev; =20 @@ -209,6 +210,8 @@ static int rk_ahash_digest(struct ahash_request *req) if (!req->nbytes) return zero_message_process(req); =20 + rctx->dev =3D dev; + return crypto_transfer_hash_request_to_engine(dev->engine, req); } =20 @@ -223,10 +226,8 @@ static void crypto_ahash_dma_start(struct rk_crypto_in= fo *dev, struct scatterlis static int rk_hash_prepare(struct crypto_engine *engine, void *breq) { struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); - struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); - struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); - struct rk_crypto_info *rkc =3D tctx->dev; + struct rk_crypto_info *rkc =3D rctx->dev; int ret; =20 ret =3D dma_map_sg(rkc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVIC= E); @@ -241,10 +242,8 @@ static int rk_hash_prepare(struct crypto_engine *engin= e, void *breq) static int rk_hash_unprepare(struct crypto_engine *engine, void *breq) { struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); - struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); - struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); - struct rk_crypto_info *rkc =3D tctx->dev; + struct rk_crypto_info *rkc =3D rctx->dev; =20 dma_unmap_sg(rkc->dev, areq->src, rctx->nrsg, DMA_TO_DEVICE); return 0; @@ -255,11 +254,10 @@ static int rk_hash_run(struct crypto_engine *engine, = void *breq) struct ahash_request *areq =3D container_of(breq, struct ahash_request, b= ase); struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(areq); struct rk_ahash_rctx *rctx =3D ahash_request_ctx(areq); - struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->base.__crt_alg); struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.hash); struct scatterlist *sg =3D areq->src; - struct rk_crypto_info *rkc =3D tctx->dev; + struct rk_crypto_info *rkc =3D rctx->dev; int err =3D 0; int i; u32 v; diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index cf0dfb6029d8..0b1c90ababb7 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -86,12 +86,15 @@ static int rk_cipher_handle_req(struct skcipher_request= *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); struct rk_cipher_ctx *tctx =3D crypto_skcipher_ctx(tfm); + struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); struct rk_crypto_info *rkc =3D tctx->dev; struct crypto_engine *engine =3D rkc->engine; =20 if (rk_cipher_need_fallback(req)) return rk_cipher_fallback(req); =20 + rctx->dev =3D rkc; + return crypto_transfer_skcipher_request_to_engine(engine, req); } =20 @@ -290,7 +293,6 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) { struct skcipher_request *areq =3D container_of(async_req, struct skcipher= _request, base); struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(areq); - struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(areq); struct scatterlist *sgs, *sgd; int err =3D 0; @@ -303,7 +305,7 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) unsigned int todo; struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); - struct rk_crypto_info *rkc =3D ctx->dev; + struct rk_crypto_info *rkc =3D rctx->dev; =20 algt->stat_req++; =20 --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1386EC07E9D for ; Tue, 27 Sep 2022 08:01:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231700AbiI0IBU (ORCPT ); Tue, 27 Sep 2022 04:01:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231359AbiI0IAO (ORCPT ); Tue, 27 Sep 2022 04:00:14 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28646B07F3 for ; Tue, 27 Sep 2022 00:56:50 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id bk15so5928354wrb.13 for ; Tue, 27 Sep 2022 00:56:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=ScW8Amy0Gr2Hkf7kzoiIS1O1Eux9N8ylUQeMnxBh6Sw=; b=UQmQ/xlXPpyHldcxn/PuGfEV7YVvqScnEI7fG81jRWYyJeSazypmP3qGUp6/Thguux lE6mnyvwmO4ZxCqmPnqhbuaW/4dG8x2wennVoCU5rk4kWn29D2zmwwuJHVwRDzT4OSpu WosAKtddUB6u2evESxWJ3hyMAQnDvorHs6T4N+0YrBKKRRwYS0+cHgEqpDQv0L7wd7l0 zoztjch6/vJ7Dyvf9UmOuw7Ea0gDEwTwkWT1SmphnnknYGsJh5+VEtYGewLzx/sLiHWo Fv5xv0y0fjvq9ZpqcqguqxDJTd/IZ6QKaWcli64po8sZMPbtP5UiDgULbJBcZwuyw28W GT8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=ScW8Amy0Gr2Hkf7kzoiIS1O1Eux9N8ylUQeMnxBh6Sw=; b=m3Yag5k2PsGwVMIZ44KxO2MNvCogh8uVX2OE32ivy9rsmqXTmoWFJKP4SLYlO0I/wb OhatZCQES9ofOye1GYM8tXB7pwCEIo3jUpELdBmHfPz0CnyYwC1n044ahGmpLA8RBREM ePKmH7V0LOGKcdKy0pVI49rVxka4B4mUTQNzWrYHIniIEi/+4tncFVbjn33DX3MdroeO PnxotAN5heR9cxJYYk+t/sNsdpvohwfqLAbhuOoAWg58XbZHAjiqzRTy9Awns68na3D9 t57R34qaaNNm+l7dUrYuHq45a6MyQE1qQF0A3FDmhJNzusU8UPRi+F7pTiBfk/ENuaw3 G70w== X-Gm-Message-State: ACrzQf10VAmagIlePSls9c9SogkUOaGnBVA2kM3amSra5Zz5MSGUkBXH IVRFSZZ200C2rpztuR4kT3InHg== X-Google-Smtp-Source: AMsMyM5+CRcmaAXQ4MD1KnJBzIjFb/gIaEASatDT+vc4tREVZLd/A+8DocqiRzm2Ws6lAbWTYTGwGQ== X-Received: by 2002:a5d:648c:0:b0:22a:2c04:97a5 with SMTP id o12-20020a5d648c000000b0022a2c0497a5mr15951167wri.326.1664265367702; Tue, 27 Sep 2022 00:56:07 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:07 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 30/33] crypto: rockchip: Check for clocks numbers and their frequencies Date: Tue, 27 Sep 2022 07:55:08 +0000 Message-Id: <20220927075511.3147847-31-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add the number of clocks needed for each compatible. Rockchip's datasheet give maximum frequencies for some clocks, so add checks for verifying they are within limits. Let's start with rk3288 for clock frequency check, other will came later. Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 75 +++++++++++++++++++++---- drivers/crypto/rockchip/rk3288_crypto.h | 16 +++++- 2 files changed, 79 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index c92559b83f7d..232dc625d6e5 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -14,10 +14,58 @@ #include #include #include +#include #include #include #include =20 +static const struct rk_variant rk3288_variant =3D { + .num_clks =3D 4, + .rkclks =3D { + { "sclk", 150000000}, + } +}; + +static const struct rk_variant rk3328_variant =3D { + .num_clks =3D 3, +}; + +static int rk_crypto_get_clks(struct rk_crypto_info *dev) +{ + int i, j, err; + unsigned long cr; + + dev->num_clks =3D devm_clk_bulk_get_all(dev->dev, &dev->clks); + if (dev->num_clks < dev->variant->num_clks) { + dev_err(dev->dev, "Missing clocks, got %d instead of %d\n", + dev->num_clks, dev->variant->num_clks); + return -EINVAL; + } + + for (i =3D 0; i < dev->num_clks; i++) { + cr =3D clk_get_rate(dev->clks[i].clk); + for (j =3D 0; j < ARRAY_SIZE(dev->variant->rkclks); j++) { + if (dev->variant->rkclks[j].max =3D=3D 0) + continue; + if (strcmp(dev->variant->rkclks[j].name, dev->clks[i].id)) + continue; + if (cr > dev->variant->rkclks[j].max) { + err =3D clk_set_rate(dev->clks[i].clk, + dev->variant->rkclks[j].max); + if (err) + dev_err(dev->dev, "Fail downclocking %s from %lu to %lu\n", + dev->variant->rkclks[j].name, cr, + dev->variant->rkclks[j].max); + else + dev_info(dev->dev, "Downclocking %s from %lu to %lu\n", + dev->variant->rkclks[j].name, cr, + dev->variant->rkclks[j].max); + } + } + } + return 0; +} + static int rk_crypto_enable_clk(struct rk_crypto_info *dev) { int err; @@ -201,8 +249,12 @@ static void rk_crypto_unregister(void) } =20 static const struct of_device_id crypto_of_id_table[] =3D { - { .compatible =3D "rockchip,rk3288-crypto" }, - { .compatible =3D "rockchip,rk3328-crypto" }, + { .compatible =3D "rockchip,rk3288-crypto", + .data =3D &rk3288_variant, + }, + { .compatible =3D "rockchip,rk3328-crypto", + .data =3D &rk3328_variant, + }, {} }; MODULE_DEVICE_TABLE(of, crypto_of_id_table); @@ -220,6 +272,15 @@ static int rk_crypto_probe(struct platform_device *pde= v) goto err_crypto; } =20 + crypto_info->dev =3D &pdev->dev; + platform_set_drvdata(pdev, crypto_info); + + crypto_info->variant =3D of_device_get_match_data(&pdev->dev); + if (!crypto_info->variant) { + dev_err(&pdev->dev, "Missing variant\n"); + return -EINVAL; + } + crypto_info->rst =3D devm_reset_control_get(dev, "crypto-rst"); if (IS_ERR(crypto_info->rst)) { err =3D PTR_ERR(crypto_info->rst); @@ -236,12 +297,9 @@ static int rk_crypto_probe(struct platform_device *pde= v) goto err_crypto; } =20 - crypto_info->num_clks =3D devm_clk_bulk_get_all(&pdev->dev, - &crypto_info->clks); - if (crypto_info->num_clks < 3) { - err =3D -EINVAL; + err =3D rk_crypto_get_clks(crypto_info); + if (err) goto err_crypto; - } =20 crypto_info->irq =3D platform_get_irq(pdev, 0); if (crypto_info->irq < 0) { @@ -259,9 +317,6 @@ static int rk_crypto_probe(struct platform_device *pdev) goto err_crypto; } =20 - crypto_info->dev =3D &pdev->dev; - platform_set_drvdata(pdev, crypto_info); - crypto_info->engine =3D crypto_engine_alloc_init(&pdev->dev, true); crypto_engine_start(crypto_info->engine); init_completion(&crypto_info->complete); diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index ff9fc25972eb..ac979d67ced9 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -188,14 +188,26 @@ #define CRYPTO_WRITE(dev, offset, val) \ writel_relaxed((val), ((dev)->reg + (offset))) =20 +#define RK_MAX_CLKS 4 + +struct rk_clks { + const char *name; + unsigned long max; +}; + +struct rk_variant { + int num_clks; + struct rk_clks rkclks[RK_MAX_CLKS]; +}; + struct rk_crypto_info { struct device *dev; struct clk_bulk_data *clks; - int num_clks; + int num_clks; struct reset_control *rst; void __iomem *reg; int irq; - + const struct rk_variant *variant; struct crypto_engine *engine; struct completion complete; int status; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF11EC07E9D for ; Tue, 27 Sep 2022 08:01:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231705AbiI0IBH (ORCPT ); Tue, 27 Sep 2022 04:01:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231286AbiI0IAO (ORCPT ); Tue, 27 Sep 2022 04:00:14 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79FF6B14F2 for ; Tue, 27 Sep 2022 00:56:54 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id e10-20020a05600c4e4a00b003b4eff4ab2cso8880697wmq.4 for ; Tue, 27 Sep 2022 00:56:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=/HcULCDUWUOb7zL9pkaT5teTJK7hgsOh6ToY9+UZMac=; b=7lLd0LEwj1X7XZMWENgGR2iUtmd3mQmo2CkvfLT1Mil4cjHHSmbIOAFJ01jDjX5pC2 80mHdhoD/49EcCspvFrffQgX7nO5s1eAmwz/zW1oF1+4qCyv+rqFmnXWNwY+BO387Gf4 c5YqFAiAl06up8ol/ZCBtqk+LeuQ3I0nJhxgKA9WL53Bm9r0qMcc6CUHnK46ySVDGmh/ WGD1wirGtNiXPQZH5euvBPGCiNBqOgq2uzwBFySI5vjSCVy1mLRT3xrOu/h1BiImqXTf YQluU1dzfcWu4077Henz279+fKNBb0/CL6eBoe/ZGy1dH9iJ722p5K8Gz95MwWulnpdv qydA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=/HcULCDUWUOb7zL9pkaT5teTJK7hgsOh6ToY9+UZMac=; b=R1tyzk7nqA7OXuXnEZwUdaAS+hGpLV1ZVObdhwX03B0oy/GcVvtDu98HREhBeBW4aM FERXyDkVB9IVes38aI6Xp2qQjDqFj08w21VKtKo0KYxnBQ+IFHuvlKhVovhBVWDQR8en BwskPbDXT49QMG/njdusNI2hPJzyZ1chjPQhROgYC4mOaOEqYJCrH8PQd5qolAvvnCIa oCYv4+rGBjKKNvl8kpm5o54CzHrFZ5+JYIcI0KxweNVfAY77oFPaa4ILQi1/jSEOTcPm fLdz+qHIVJMKlWoYGE3IVJ+jT8G3YLPMKhMCYTq3xchBZ6j21KXavOjJwQag7cn62H6Y b1zg== X-Gm-Message-State: ACrzQf2tgQq0jaD3dBZiaTULRHFU7sTBaydgSNKzBw+VxqwiCK4ioOND n34Qd0P5XG1JLBaJOfNxu4E+5Q== X-Google-Smtp-Source: AMsMyM4MKhcqcAW8tXr2t2zLzf0IU90hIT+K9JixREHhebzInhta7AbKkldKQKBi2KsiRvbjvtU36w== X-Received: by 2002:a7b:c051:0:b0:3a6:36fc:8429 with SMTP id u17-20020a7bc051000000b003a636fc8429mr1572126wmc.78.1664265368752; Tue, 27 Sep 2022 00:56:08 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:08 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 31/33] crypto: rockchip: rk_ahash_reg_init use crypto_info from parameter Date: Tue, 27 Sep 2022 07:55:09 +0000 Message-Id: <20220927075511.3147847-32-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" rk_ahash_reg_init() use crypto_info from TFM context, since we will remove it, let's take if from parameters. Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index d1bf68cb390d..30f78256c955 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -78,12 +78,10 @@ static int zero_message_process(struct ahash_request *r= eq) return 0; } =20 -static void rk_ahash_reg_init(struct ahash_request *req) +static void rk_ahash_reg_init(struct ahash_request *req, + struct rk_crypto_info *dev) { struct rk_ahash_rctx *rctx =3D ahash_request_ctx(req); - struct crypto_ahash *tfm =3D crypto_ahash_reqtfm(req); - struct rk_ahash_ctx *tctx =3D crypto_ahash_ctx(tfm); - struct rk_crypto_info *dev =3D tctx->dev; int reg_status; =20 reg_status =3D CRYPTO_READ(dev, RK_CRYPTO_CTRL) | @@ -281,7 +279,7 @@ static int rk_hash_run(struct crypto_engine *engine, vo= id *breq) goto theend; } =20 - rk_ahash_reg_init(areq); + rk_ahash_reg_init(areq, rkc); =20 while (sg) { reinit_completion(&rkc->complete); --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74F11C54EE9 for ; Tue, 27 Sep 2022 07:59:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231629AbiI0H71 (ORCPT ); Tue, 27 Sep 2022 03:59:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231573AbiI0H5v (ORCPT ); Tue, 27 Sep 2022 03:57:51 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62663AE9F5 for ; Tue, 27 Sep 2022 00:56:10 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id i203-20020a1c3bd4000000b003b3df9a5ecbso8909110wma.1 for ; Tue, 27 Sep 2022 00:56:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=z10vTtQ4qHSJZ9nRrmQY5lLp9Bvyc0G2kDbemdDveLc=; b=SUtWt/yKk8dwQYXBM4pX0YSAMwhU0ggta2eQ2yzWE3hZuzbqcAra+8iI1B43bIaLde 2A5pKkjX7yk/Ek7bmehuqmQsmxxHC7tGVGUTB9P3weCNedcwxv2TbavFR7/94cJMiKBg GDLHG/gw8KymsHp402S2SKJ57hI1Crk1V/vmJGaSqUcOMlE808U4gcA+45+bv29Mlo9v cczjPNLpUfrYxoQcled6pr02jRD8OzLNZX4rqOuu+AKIEvyECAACnj7lKco/su8KTFtV ICkdHA72mnoM156gkzmBCTRv/g55zJuHF437s8jfbVy+bPoJly6lTWmH2el8NhUSvFCT o6yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=z10vTtQ4qHSJZ9nRrmQY5lLp9Bvyc0G2kDbemdDveLc=; b=pcNrieP4W4RX3EZcxAWX3t2pmEyFQu+MXupN8VBT75o3WWoLdYu2IuyDH6h9YxOMxk efjH+He5/shDm1Fo49+O47jNYxpw+OBZAwhcSF28otF+rcjmUQ4zBNLlIH55FrXhqvek pSBEGBS212AOfoZDvDrgwwZo5iycdKW5AFvubfhyyKjEoJnPI8mU1rS19uwG+1NJGp67 Ej9tw8mI2yUWnqeVD5bdbzLbMXKLWMnxhMtXydvHWIVgP+IdqoUa/5t14Ug7WiMg2cMY ZGMPTQNeqEQCoUIKmu9oddEpL6duX94XXKcgPUqtGEKSEsNDtOR+zIKE0pENISXfuQrx rThg== X-Gm-Message-State: ACrzQf2rcQGCjTMr6tGrUgUBa2e50OAExtstlgNOiWww/fdBx1uu9UUc /EIxrGcIqVfISbYtHTA7HiDRkA== X-Google-Smtp-Source: AMsMyM4BaygUsH/WyeQVQo3CW9varbVyVY8PtLnBUqF7L7qtyzWYzthtkrR1qRH4omU72F2l8jzJYA== X-Received: by 2002:a05:600c:1c03:b0:3b4:618b:5d14 with SMTP id j3-20020a05600c1c0300b003b4618b5d14mr1534048wms.59.1664265369832; Tue, 27 Sep 2022 00:56:09 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:09 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 32/33] crypto: rockchip: permit to have more than one reset Date: Tue, 27 Sep 2022 07:55:10 +0000 Message-Id: <20220927075511.3147847-33-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The RK3399 has 3 resets, so the driver to handle multiple resets. This is done by using devm_reset_control_array_get_exclusive(). Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index 232dc625d6e5..d96f375423d5 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -281,7 +281,7 @@ static int rk_crypto_probe(struct platform_device *pdev) return -EINVAL; } =20 - crypto_info->rst =3D devm_reset_control_get(dev, "crypto-rst"); + crypto_info->rst =3D devm_reset_control_array_get_exclusive(dev); if (IS_ERR(crypto_info->rst)) { err =3D PTR_ERR(crypto_info->rst); goto err_crypto; --=20 2.35.1 From nobody Mon May 4 13:09:36 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2088BC07E9D for ; Tue, 27 Sep 2022 07:59:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231624AbiI0H7X (ORCPT ); Tue, 27 Sep 2022 03:59:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231562AbiI0H5o (ORCPT ); Tue, 27 Sep 2022 03:57:44 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3894AEDAC for ; Tue, 27 Sep 2022 00:56:11 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id h7so1287919wru.10 for ; Tue, 27 Sep 2022 00:56:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=QipqmHbUZGHLWu5BlBNjHs+pAuw4tqeLoTpMAyu+/es=; b=jwcCEhTXdHbeKkjeWK+MvMrthc056cMoYzAYbT9fSGb4d/OJwB6wTXFupwgWETwDUk KMdfyclrKSBYQhc9WU7mbIJiZj5oXw1mWipTjTmBuUfFIRcCmzl7+7SxCKCIFMSAuDWr yFmEHpTm1OqGTaSEBdNsL0QDOr+kcC+BR1GvBdheTTSfxSsPtMdIZc7sDmZbiFJMnypi eXyOEnRwQvrnlctUAGdFo5lUxUIabgfQj6F4R6PLQ+Q3Gw1/5nwjl8W7julSwfOfyuVX tbGqcAz0RPmJLTRatEe6eZsjE5l9mhKDEPFq+Wg7/XFyrBGn+DsZeTyxKlVgYpMPl3BA /PjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=QipqmHbUZGHLWu5BlBNjHs+pAuw4tqeLoTpMAyu+/es=; b=pBlp1X2/selzKBVgby++FGxW8OgQxgcG9APVyQkJUTsN6bssPoiW2GA4AISPc0z7R0 FprvP9PCgKuVdpi9fMiFRm2zc9THFgujLi1nVeigMJr9PKGed8NyGy6FgdKRssM2Y3ID gcQoX2GQ4htbMNZ3+Xepg4h3YZrRTPoPmPkcXghlEb2AylN1u9OTPyeVKJTAEVVTD0ZP 3AL8mekKCqEAvOBTwNp4ytHk31ubKdqShIUot15HZBNLccx0u49i1nB5SHaAjyBVX8yP 1dW27YIQfCBndJ6+0ljZObzPMOUCUOpC5edeECTsU1aDMVSTkNBWvnM2fpFyn0VwG0A+ osGQ== X-Gm-Message-State: ACrzQf2g+ogFHzlFSYaNGmn3qQIDYkyU7qTe3hzKhpO0vfMshOttHbxZ WxqPZBFnoFTYyAgSWgc7FPMJfw== X-Google-Smtp-Source: AMsMyM7K+ymi+QQYX5gsaalOWOHDoQxV3Hvf+WX5bbEGtYUAWosJaxnVIUdGEXgs6HuIfnku7XpykA== X-Received: by 2002:a5d:5a85:0:b0:22a:34a8:eda7 with SMTP id bp5-20020a5d5a85000000b0022a34a8eda7mr15590236wrb.687.1664265371088; Tue, 27 Sep 2022 00:56:11 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id x8-20020adfdcc8000000b0022afbd02c69sm1076654wrm.56.2022.09.27.00.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 00:56:10 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, ardb@kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Corentin Labbe Subject: [PATCH v10 33/33] crypto: rockchip: Add support for RK3399 Date: Tue, 27 Sep 2022 07:55:11 +0000 Message-Id: <20220927075511.3147847-34-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220927075511.3147847-1-clabbe@baylibre.com> References: <20220927075511.3147847-1-clabbe@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The RK3399 has 2 rk3288 compatible crypto device named crypto0 and crypto1. The only difference is lack of RSA in crypto1. We need to add driver support for 2 parallel instance as only one need to register crypto algorithms. Then the driver will round robin each request on each device. For avoiding complexity (device bringup after a TFM is created), PM is modified to be handled per request. Signed-off-by: Corentin Labbe --- drivers/crypto/rockchip/rk3288_crypto.c | 92 +++++++++++++++---- drivers/crypto/rockchip/rk3288_crypto.h | 25 +++-- drivers/crypto/rockchip/rk3288_crypto_ahash.c | 37 ++++---- .../crypto/rockchip/rk3288_crypto_skcipher.c | 37 ++++---- 4 files changed, 123 insertions(+), 68 deletions(-) diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockc= hip/rk3288_crypto.c index d96f375423d5..6217e73ba4c4 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c @@ -19,6 +19,23 @@ #include #include =20 +static struct rockchip_ip rocklist =3D { + .dev_list =3D LIST_HEAD_INIT(rocklist.dev_list), + .lock =3D __SPIN_LOCK_UNLOCKED(rocklist.lock), +}; + +struct rk_crypto_info *get_rk_crypto(void) +{ + struct rk_crypto_info *first; + + spin_lock(&rocklist.lock); + first =3D list_first_entry_or_null(&rocklist.dev_list, + struct rk_crypto_info, list); + list_rotate_left(&rocklist.dev_list); + spin_unlock(&rocklist.lock); + return first; +} + static const struct rk_variant rk3288_variant =3D { .num_clks =3D 4, .rkclks =3D { @@ -30,6 +47,10 @@ static const struct rk_variant rk3328_variant =3D { .num_clks =3D 3, }; =20 +static const struct rk_variant rk3399_variant =3D { + .num_clks =3D 3, +}; + static int rk_crypto_get_clks(struct rk_crypto_info *dev) { int i, j, err; @@ -83,8 +104,8 @@ static void rk_crypto_disable_clk(struct rk_crypto_info = *dev) } =20 /* - * Power management strategy: The device is suspended unless a TFM exists = for - * one of the algorithms proposed by this driver. + * Power management strategy: The device is suspended until a request + * is handled. For avoiding suspend/resume yoyo, the autosuspend is set to= 2s. */ static int rk_crypto_pm_suspend(struct device *dev) { @@ -166,8 +187,17 @@ static struct rk_crypto_tmp *rk_cipher_algs[] =3D { #ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG static int rk_crypto_debugfs_show(struct seq_file *seq, void *v) { + struct rk_crypto_info *dd; unsigned int i; =20 + spin_lock(&rocklist.lock); + list_for_each_entry(dd, &rocklist.dev_list, list) { + seq_printf(seq, "%s %s requests: %lu\n", + dev_driver_string(dd->dev), dev_name(dd->dev), + dd->nreq); + } + spin_unlock(&rocklist.lock); + for (i =3D 0; i < ARRAY_SIZE(rk_cipher_algs); i++) { if (!rk_cipher_algs[i]->dev) continue; @@ -198,6 +228,18 @@ static int rk_crypto_debugfs_show(struct seq_file *seq= , void *v) DEFINE_SHOW_ATTRIBUTE(rk_crypto_debugfs); #endif =20 +static void register_debugfs(struct rk_crypto_info *crypto_info) +{ +#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG + /* Ignore error of debugfs */ + rocklist.dbgfs_dir =3D debugfs_create_dir("rk3288_crypto", NULL); + rocklist.dbgfs_stats =3D debugfs_create_file("stats", 0444, + rocklist.dbgfs_dir, + &rocklist, + &rk_crypto_debugfs_fops); +#endif +} + static int rk_crypto_register(struct rk_crypto_info *crypto_info) { unsigned int i, k; @@ -255,6 +297,9 @@ static const struct of_device_id crypto_of_id_table[] = =3D { { .compatible =3D "rockchip,rk3328-crypto", .data =3D &rk3328_variant, }, + { .compatible =3D "rockchip,rk3399-crypto", + .data =3D &rk3399_variant, + }, {} }; MODULE_DEVICE_TABLE(of, crypto_of_id_table); @@ -262,7 +307,7 @@ MODULE_DEVICE_TABLE(of, crypto_of_id_table); static int rk_crypto_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; - struct rk_crypto_info *crypto_info; + struct rk_crypto_info *crypto_info, *first; int err =3D 0; =20 crypto_info =3D devm_kzalloc(&pdev->dev, @@ -325,22 +370,22 @@ static int rk_crypto_probe(struct platform_device *pd= ev) if (err) goto err_pm; =20 - err =3D rk_crypto_register(crypto_info); - if (err) { - dev_err(dev, "err in register alg"); - goto err_register_alg; - } + spin_lock(&rocklist.lock); + first =3D list_first_entry_or_null(&rocklist.dev_list, + struct rk_crypto_info, list); + list_add_tail(&crypto_info->list, &rocklist.dev_list); + spin_unlock(&rocklist.lock); + + if (!first) { + err =3D rk_crypto_register(crypto_info); + if (err) { + dev_err(dev, "Fail to register crypto algorithms"); + goto err_register_alg; + } =20 -#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG - /* Ignore error of debugfs */ - crypto_info->dbgfs_dir =3D debugfs_create_dir("rk3288_crypto", NULL); - crypto_info->dbgfs_stats =3D debugfs_create_file("stats", 0444, - crypto_info->dbgfs_dir, - crypto_info, - &rk_crypto_debugfs_fops); -#endif + register_debugfs(crypto_info); + } =20 - dev_info(dev, "Crypto Accelerator successfully registered\n"); return 0; =20 err_register_alg: @@ -355,11 +400,20 @@ static int rk_crypto_probe(struct platform_device *pd= ev) static int rk_crypto_remove(struct platform_device *pdev) { struct rk_crypto_info *crypto_tmp =3D platform_get_drvdata(pdev); + struct rk_crypto_info *first; + + spin_lock_bh(&rocklist.lock); + list_del(&crypto_tmp->list); + first =3D list_first_entry_or_null(&rocklist.dev_list, + struct rk_crypto_info, list); + spin_unlock_bh(&rocklist.lock); =20 + if (!first) { #ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG - debugfs_remove_recursive(crypto_tmp->dbgfs_dir); + debugfs_remove_recursive(rocklist.dbgfs_dir); #endif - rk_crypto_unregister(); + rk_crypto_unregister(); + } rk_crypto_pm_exit(crypto_tmp); crypto_engine_exit(crypto_tmp->engine); return 0; diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockc= hip/rk3288_crypto.h index ac979d67ced9..b2695258cade 100644 --- a/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h @@ -190,6 +190,20 @@ =20 #define RK_MAX_CLKS 4 =20 +/* + * struct rockchip_ip - struct for managing a list of RK crypto instance + * @dev_list: Used for doing a list of rk_crypto_info + * @lock: Control access to dev_list + * @dbgfs_dir: Debugfs dentry for statistic directory + * @dbgfs_stats: Debugfs dentry for statistic counters + */ +struct rockchip_ip { + struct list_head dev_list; + spinlock_t lock; /* Control access to dev_list */ + struct dentry *dbgfs_dir; + struct dentry *dbgfs_stats; +}; + struct rk_clks { const char *name; unsigned long max; @@ -201,6 +215,7 @@ struct rk_variant { }; =20 struct rk_crypto_info { + struct list_head list; struct device *dev; struct clk_bulk_data *clks; int num_clks; @@ -208,19 +223,15 @@ struct rk_crypto_info { void __iomem *reg; int irq; const struct rk_variant *variant; + unsigned long nreq; struct crypto_engine *engine; struct completion complete; int status; -#ifdef CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG - struct dentry *dbgfs_dir; - struct dentry *dbgfs_stats; -#endif }; =20 /* the private variable of hash */ struct rk_ahash_ctx { struct crypto_engine_ctx enginectx; - struct rk_crypto_info *dev; /* for fallback */ struct crypto_ahash *fallback_tfm; }; @@ -236,7 +247,6 @@ struct rk_ahash_rctx { /* the private variable of cipher */ struct rk_cipher_ctx { struct crypto_engine_ctx enginectx; - struct rk_crypto_info *dev; unsigned int keylen; u8 key[AES_MAX_KEY_SIZE]; u8 iv[AES_BLOCK_SIZE]; @@ -252,7 +262,7 @@ struct rk_cipher_rctx { =20 struct rk_crypto_tmp { u32 type; - struct rk_crypto_info *dev; + struct rk_crypto_info *dev; union { struct skcipher_alg skcipher; struct ahash_alg hash; @@ -276,4 +286,5 @@ extern struct rk_crypto_tmp rk_ahash_sha1; extern struct rk_crypto_tmp rk_ahash_sha256; extern struct rk_crypto_tmp rk_ahash_md5; =20 +struct rk_crypto_info *get_rk_crypto(void); #endif diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto= /rockchip/rk3288_crypto_ahash.c index 30f78256c955..a78ff3dcd0b1 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c @@ -199,8 +199,8 @@ static int rk_ahash_export(struct ahash_request *req, v= oid *out) static int rk_ahash_digest(struct ahash_request *req) { struct rk_ahash_rctx *rctx =3D ahash_request_ctx(req); - struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(req->base.tfm); - struct rk_crypto_info *dev =3D tctx->dev; + struct rk_crypto_info *dev; + struct crypto_engine *engine; =20 if (rk_ahash_need_fallback(req)) return rk_ahash_digest_fb(req); @@ -208,9 +208,12 @@ static int rk_ahash_digest(struct ahash_request *req) if (!req->nbytes) return zero_message_process(req); =20 + dev =3D get_rk_crypto(); + rctx->dev =3D dev; + engine =3D dev->engine; =20 - return crypto_transfer_hash_request_to_engine(dev->engine, req); + return crypto_transfer_hash_request_to_engine(engine, req); } =20 static void crypto_ahash_dma_start(struct rk_crypto_info *dev, struct scat= terlist *sg) @@ -260,9 +263,14 @@ static int rk_hash_run(struct crypto_engine *engine, v= oid *breq) int i; u32 v; =20 + err =3D pm_runtime_resume_and_get(rkc->dev); + if (err) + return err; + rctx->mode =3D 0; =20 algt->stat_req++; + rkc->nreq++; =20 switch (crypto_ahash_digestsize(tfm)) { case SHA1_DIGEST_SIZE: @@ -313,6 +321,8 @@ static int rk_hash_run(struct crypto_engine *engine, vo= id *breq) } =20 theend: + pm_runtime_put_autosuspend(rkc->dev); + local_bh_disable(); crypto_finalize_hash_request(engine, breq, err); local_bh_enable(); @@ -323,21 +333,15 @@ static int rk_hash_run(struct crypto_engine *engine, = void *breq) static int rk_cra_hash_init(struct crypto_tfm *tfm) { struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); - struct rk_crypto_tmp *algt; - struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->__crt_alg); - const char *alg_name =3D crypto_tfm_alg_name(tfm); - int err; - - algt =3D container_of(alg, struct rk_crypto_tmp, alg.hash); - - tctx->dev =3D algt->dev; + struct ahash_alg *alg =3D __crypto_ahash_alg(tfm->__crt_alg); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.hash); =20 /* for fallback */ tctx->fallback_tfm =3D crypto_alloc_ahash(alg_name, 0, CRYPTO_ALG_NEED_FALLBACK); if (IS_ERR(tctx->fallback_tfm)) { - dev_err(tctx->dev->dev, "Could not load fallback driver.\n"); + dev_err(algt->dev->dev, "Could not load fallback driver.\n"); return PTR_ERR(tctx->fallback_tfm); } =20 @@ -349,15 +353,7 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) tctx->enginectx.op.prepare_request =3D rk_hash_prepare; tctx->enginectx.op.unprepare_request =3D rk_hash_unprepare; =20 - err =3D pm_runtime_resume_and_get(tctx->dev->dev); - if (err < 0) - goto error_pm; - return 0; -error_pm: - crypto_free_ahash(tctx->fallback_tfm); - - return err; } =20 static void rk_cra_hash_exit(struct crypto_tfm *tfm) @@ -365,7 +361,6 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm) struct rk_ahash_ctx *tctx =3D crypto_tfm_ctx(tfm); =20 crypto_free_ahash(tctx->fallback_tfm); - pm_runtime_put_autosuspend(tctx->dev->dev); } =20 struct rk_crypto_tmp rk_ahash_sha1 =3D { diff --git a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c b/drivers/cry= pto/rockchip/rk3288_crypto_skcipher.c index 0b1c90ababb7..59069457582b 100644 --- a/drivers/crypto/rockchip/rk3288_crypto_skcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_skcipher.c @@ -17,11 +17,11 @@ static int rk_cipher_need_fallback(struct skcipher_request *req) { struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - unsigned int bs =3D crypto_skcipher_blocksize(tfm); struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); struct scatterlist *sgs, *sgd; unsigned int stodo, dtodo, len; + unsigned int bs =3D crypto_skcipher_blocksize(tfm); =20 if (!req->cryptlen) return true; @@ -84,15 +84,16 @@ static int rk_cipher_fallback(struct skcipher_request *= areq) =20 static int rk_cipher_handle_req(struct skcipher_request *req) { - struct crypto_skcipher *tfm =3D crypto_skcipher_reqtfm(req); - struct rk_cipher_ctx *tctx =3D crypto_skcipher_ctx(tfm); struct rk_cipher_rctx *rctx =3D skcipher_request_ctx(req); - struct rk_crypto_info *rkc =3D tctx->dev; - struct crypto_engine *engine =3D rkc->engine; + struct rk_crypto_info *rkc; + struct crypto_engine *engine; =20 if (rk_cipher_need_fallback(req)) return rk_cipher_fallback(req); =20 + rkc =3D get_rk_crypto(); + + engine =3D rkc->engine; rctx->dev =3D rkc; =20 return crypto_transfer_skcipher_request_to_engine(engine, req); @@ -307,7 +308,12 @@ static int rk_cipher_run(struct crypto_engine *engine,= void *async_req) struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); struct rk_crypto_info *rkc =3D rctx->dev; =20 + err =3D pm_runtime_resume_and_get(rkc->dev); + if (err) + return err; + algt->stat_req++; + rkc->nreq++; =20 ivsize =3D crypto_skcipher_ivsize(tfm); if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) { @@ -401,6 +407,8 @@ static int rk_cipher_run(struct crypto_engine *engine, = void *async_req) } =20 theend: + pm_runtime_put_autosuspend(rkc->dev); + local_bh_disable(); crypto_finalize_skcipher_request(engine, areq, err); local_bh_enable(); @@ -420,18 +428,13 @@ static int rk_cipher_run(struct crypto_engine *engine= , void *async_req) static int rk_cipher_tfm_init(struct crypto_skcipher *tfm) { struct rk_cipher_ctx *ctx =3D crypto_skcipher_ctx(tfm); - struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); const char *name =3D crypto_tfm_alg_name(&tfm->base); - struct rk_crypto_tmp *algt; - int err; - - algt =3D container_of(alg, struct rk_crypto_tmp, alg.skcipher); - - ctx->dev =3D algt->dev; + struct skcipher_alg *alg =3D crypto_skcipher_alg(tfm); + struct rk_crypto_tmp *algt =3D container_of(alg, struct rk_crypto_tmp, al= g.skcipher); =20 ctx->fallback_tfm =3D crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALL= BACK); if (IS_ERR(ctx->fallback_tfm)) { - dev_err(ctx->dev->dev, "ERROR: Cannot allocate fallback for %s %ld\n", + dev_err(algt->dev->dev, "ERROR: Cannot allocate fallback for %s %ld\n", name, PTR_ERR(ctx->fallback_tfm)); return PTR_ERR(ctx->fallback_tfm); } @@ -441,14 +444,7 @@ static int rk_cipher_tfm_init(struct crypto_skcipher *= tfm) =20 ctx->enginectx.op.do_one_request =3D rk_cipher_run; =20 - err =3D pm_runtime_resume_and_get(ctx->dev->dev); - if (err < 0) - goto error_pm; - return 0; -error_pm: - crypto_free_skcipher(ctx->fallback_tfm); - return err; } =20 static void rk_cipher_tfm_exit(struct crypto_skcipher *tfm) @@ -457,7 +453,6 @@ static void rk_cipher_tfm_exit(struct crypto_skcipher *= tfm) =20 memzero_explicit(ctx->key, ctx->keylen); crypto_free_skcipher(ctx->fallback_tfm); - pm_runtime_put_autosuspend(ctx->dev->dev); } =20 struct rk_crypto_tmp rk_ecb_aes_alg =3D { --=20 2.35.1