From nobody Mon May 4 10:18:56 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 E4DB6C433EF for ; Wed, 6 Jul 2022 09:04:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231965AbiGFJEm (ORCPT ); Wed, 6 Jul 2022 05:04:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231964AbiGFJEg (ORCPT ); Wed, 6 Jul 2022 05:04:36 -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 7CE651CB08 for ; Wed, 6 Jul 2022 02:04:35 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id a5so6364314wrx.12 for ; Wed, 06 Jul 2022 02:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2nwWkT4441Zvq5igIAOKA8C0HAjPPXDmTRADPlAyhok=; b=Pr3IXa8ExRhTFh+SPH7MrhQizXMmrRN4KOZzHqdYpWENJ96Ms04oBik0WfZbJ27egJ ldxRn/lKH+72j5pIK0nS2nYnViD4t7mh4Zb1sOqM2u2kO5jOs6YQUThf4H4eI2Km2Ujk DwddZ86xRnFapyFfMRqcT6ohi+6e0uc4u1C7mMTTJA/fIR7ogqFH26AfqYtb+NPy09S6 Lqsl7Gej6g7TLBDiNG7TJFSX2PL0SMt1IdS4uGkcq1ucTSIZUoDqeFV0sk0icX109eD0 +evOAKZrJ8Fcpr+vITTRyd9o5yoYy0tl+3ssElJnyQ3+12HdNMnyGRJT/M/jsAeeXFrC 2s1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2nwWkT4441Zvq5igIAOKA8C0HAjPPXDmTRADPlAyhok=; b=bbhBWPJBxv5ciabiqi+1cs9rMt9MZsJJsZ1kATxSqE74w+2IaeSLxiVv6ejXiPTKAx TP89lvvaLs1C99tT7S8GPk5ySPbknEy8Pww1osn3QkM2D7gBQnnnGyus+KggoAWlLvN+ WC0+aIzd7vLf+VvGp1GXThK2ax7gEWIf/dI+tT229xHZloz8ADma4em6/gVL8ScicoWg 0Fe/mDDTmIJZ4aGOy1iifcCuE0FmDNOe7qWoHVgbjB4PsVP8b/U9Je2lyDJX4/oEGXb1 uNk5mmWMNTooBE8lI9MNzGlO52iRwpd1WKt3pitFSkY2cvCVoGiUrHYP/cPbKUZ+Ipgw qxYg== X-Gm-Message-State: AJIora+cpc3ct2Ojx98gyd3kxB4f1VUd5D9itqj1umZOqJ6cELvj3o2T NH7c2GC4/3VYjqaiZkQ0wm35mw== X-Google-Smtp-Source: AGRyM1uEESfBM2/+cx8O6PDi67ahL3H9B52KIeo6hugjBlO2PZU9E0Dg3m/zc4Jx7ArSkzmwQCEl3w== X-Received: by 2002:a5d:6d0c:0:b0:21b:ccda:fc67 with SMTP id e12-20020a5d6d0c000000b0021bccdafc67mr37250833wrq.246.1657098274092; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:33 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 01/33] crypto: rockchip: use dev_err for error message about interrupt Date: Wed, 6 Jul 2022 09:03:40 +0000 Message-Id: <20220706090412.806101-2-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 DA8A4CCA473 for ; Wed, 6 Jul 2022 09:04:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231921AbiGFJEp (ORCPT ); Wed, 6 Jul 2022 05:04:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232422AbiGFJEh (ORCPT ); Wed, 6 Jul 2022 05:04:37 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AC43B77 for ; Wed, 6 Jul 2022 02:04:36 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id q9so21050891wrd.8 for ; Wed, 06 Jul 2022 02:04:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5oq+K0wpCSsh7jUwt6+vmm/hcvr/21v0i001Dyw+Eww=; b=k8LlTAqfCG2MWgGVosUzsf/3RmyqtW/i+DpBCpSfQ22u42x1tejqkBDQ6ffKHO3bJ1 3wzV83iQGKTtCe9UxhxmSsAKVTMOKE/2muz17umcnBAnr29UDj98wi6EEIN4pa22LhXS Y6Zk4BNnre57MmSW1zFna8x0+vRrRI8hazfxFw7GgUcPN5igcUqRZLBRkDDKZR9A9yCk i9enxCyKUOU70JpxnLdzPyPdZbGrk5UzkcekofjqylR2mSK9Ix/7AU9S0BrQPWx3jKz2 kmIFnnzwY8/rQzM6Au1RaEn5KUfLhq89YgifALgPUsvVlMDthcCOKseLJzR+8V1yiLW1 j2LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5oq+K0wpCSsh7jUwt6+vmm/hcvr/21v0i001Dyw+Eww=; b=P6PATEDhh26lp15u920//pSkHKGxPWFScPo+R1wtZN5Vfy3Uh05gHUB7PG+oPBiP+K v9jUPwmND1uV0MykX0XhypiLrH5eDfWEyGiluDKFImtEKaW/IDgSt3lmEKkrzUld4kgw TmKDlERlSG3rM7S6VnaXAEag+1wzibXYgkV+ICLmrD/xnjpyAN2e9QuAT2Y7PyVtXE95 UbMczgnFDFjH3FyuR3KxEsCl37eEyxOHhQJmzMS8wW3eyILvg6Wh6kwhmGv5wFHiy6h4 W/i93OWkKSJYLymrK/3uG1IIq8AiU1w4OggVdT6BjspfUIWAM4wRe3DGjUXbq8jFc333 tgrA== X-Gm-Message-State: AJIora92kaoVpspBieLXsDMBarJZOooXllSz8qVT8t6U6sn9ROs9Xcb3 sDFED057ahU7USIYDP8oPuqSgg== X-Google-Smtp-Source: AGRyM1vW2O1Tjam4DfMdiLa04E+GjcW9Az1x+XRRK+o2g1q0r9++MfwNim2xWPdJ0BepE8gNKN85hQ== X-Received: by 2002:a05:6000:1243:b0:21d:6123:7a80 with SMTP id j3-20020a056000124300b0021d61237a80mr20480718wrx.354.1657098275124; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:34 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 02/33] crypto: rockchip: do not use uninitialized variable Date: Wed, 6 Jul 2022 09:03:41 +0000 Message-Id: <20220706090412.806101-3-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 15F52C43334 for ; Wed, 6 Jul 2022 09:05:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232729AbiGFJFF (ORCPT ); Wed, 6 Jul 2022 05:05:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232656AbiGFJEn (ORCPT ); Wed, 6 Jul 2022 05:04:43 -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 8AD931AF3C for ; Wed, 6 Jul 2022 02:04:37 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id s1so21047192wra.9 for ; Wed, 06 Jul 2022 02:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=859E0YEubESiyrb+oeUTAg5/XBxqc58UKlJ7e69ztp0=; b=h9PhuTJWLoltGwBkAxtkiSdX7roGbTC4vn3P+0UWJW7wwDcEfsRRYmEfoA1fapinEY a0BzS/CVuEJxsi8fFfmWTf2fRSCt+A2DQJ6wVGLUF4V41Q9VEb3BGRi4ZSSf15P1IKfn +mTz6R7YRqs8lkGu5o3p6NI2L4bMEve2rjxQiMoRmsKvpeO8KfA0iShRpaCPvI2ppQ1e qXrCJwvGgyMCfUyZrpBKM363GQuAA7VLC5sjZ2jsR7b3jWSYYla0cRJqLgCzCi3wI7pI ig4nFOh9ubUh6QnMxs+vEVfJHlkefBHsxhjDwsXaVacd8RtTkUFUdrdxAEkGA35psGeX rimA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=859E0YEubESiyrb+oeUTAg5/XBxqc58UKlJ7e69ztp0=; b=icSkQJNPsbw2UjxjOkUdrlBk6W+956/pZEN971WQpyl3kqzZxLuOZHaiMb202Vk60W 1515+SM+F6hmQUmcfPvLoONcbPx7mJOWzz5HGL6aqWMYwQKZwywWVmX9xBim0nO3wzXx 1cmdwL+0VziubJlQeIkUFxHaczfgiMkmOk3La+sHDwDTNHTUoWk/jd1Vx0otK4jIKJx8 TsBxAwLHe+faMXfCmDZq1G+alpnNQQVlnydhDa5TugFECwZ1CQZNkyXhz6VgszOHT4tr gl5ELR6XfBl3Rzp2dwye3sEzNY+FczJ7kHOtU601/uLh59JwRvOecSiwz+Uce8OHt2UQ V0LA== X-Gm-Message-State: AJIora+lc2hdyJMHGGdPRyoIRDH0JhLrd+U1l9hUe3HBZxS7tO+CYO23 zyo4eqH6gRTOm0Lt6VXspncIhw== X-Google-Smtp-Source: AGRyM1uGaPfIfWwxoEeJp2iiYMlfNF64ryMNj2+XHW0wolxABcxBDbUoxclVB8+24W1gt3JVoHyNMQ== X-Received: by 2002:a5d:59a9:0:b0:21d:7ee2:8f90 with SMTP id p9-20020a5d59a9000000b0021d7ee28f90mr1316055wrr.598.1657098276166; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:35 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 03/33] crypto: rockchip: do not do custom power management Date: Wed, 6 Jul 2022 09:03:42 +0000 Message-Id: <20220706090412.806101-4-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 353C2CCA473 for ; Wed, 6 Jul 2022 09:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232647AbiGFJFA (ORCPT ); Wed, 6 Jul 2022 05:05:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232662AbiGFJEo (ORCPT ); Wed, 6 Jul 2022 05:04:44 -0400 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A39DC1AF2B for ; Wed, 6 Jul 2022 02:04:38 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id z12so11453054wrq.7 for ; Wed, 06 Jul 2022 02:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=e93jdwU7lOD2x9pMhJTBQN+yJo5I1w/iWBnUD+AsvRI=; b=qYnjOSsve+CU60SZAGBBlF7DQsf40B4ppATy+M4RqiYsYCYGKKCqLRBjoS63bwkV7y UoyVME2BouYSVlzOVHR6OxKaX2DFxVDM9B9YIM7cfyB5gyZFOlQs8mYBZWEGlfHHsP2W X62q5fLEGO+E3EPkCFO9+yKEZCts36MY8GKJVxDvHnRxL9/yoNWSNyos37133Ntfdp58 PBgsRy7ZvTDQwm47ks9TFgn1xoxX/K4tDresapBXPykl/Vcpn1a/l6OMpl2Pzvn1IN68 PZvbv9fdH1jJvCr0lwZ+xqiAiH2Rfnzik628v8RTHB6oNElHz0aPV2wEA8WKUCWrDepD mzXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=e93jdwU7lOD2x9pMhJTBQN+yJo5I1w/iWBnUD+AsvRI=; b=eNHnuBiqXLQTH8wj/1K1XjGklpknvPNTw30eY0YC2Z/Kc86V5t6WL0VEj+e9nyplaA 671rC+PCcOWAmn3Pkoo+EHO+59Iwl5tLqu3hpIhHSSbD6D3xpDgORfzuaiVsWqWgQYHi RBz1W/a9wrh+rOwcnJs1Cv5BcWFdhONHvdtmz7HQjHe1TX/LuZISksuGpEKGhVaMzC3k J0Fr0X4j0xlxxos2Dc1jTevFIvunWg69NJZ/YS8JqaYEw+rQ6UyoaXL9uJa42BRKvH1x R91qhSTjqQV8v99LdoO1CQVrOvxCaI5Dc2UXDQbAdFw5FjX8M+NtDUTRZ1pWvsmAC0K3 soeA== X-Gm-Message-State: AJIora/kdOkoSpqTT9jSH5KCR8acyEui39K+mNvFHjBAH1gdNfcF5dyJ mWj5LTJtRCIhLzBEAVRm7COCXA== X-Google-Smtp-Source: AGRyM1sJ/Eew7H8iS7hX0nzquUCXkYxooD06C+J/SXSVN+r6E2DP9OY9XPMY7TacADQllOgs5bFVTw== X-Received: by 2002:a5d:6e8d:0:b0:21d:7223:1e1b with SMTP id k13-20020a5d6e8d000000b0021d72231e1bmr7734511wrz.713.1657098277195; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:36 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 04/33] crypto: rockchip: fix privete/private typo Date: Wed, 6 Jul 2022 09:03:43 +0000 Message-Id: <20220706090412.806101-5-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 5619EC433EF for ; Wed, 6 Jul 2022 09:05:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231858AbiGFJFK (ORCPT ); Wed, 6 Jul 2022 05:05:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232422AbiGFJE4 (ORCPT ); Wed, 6 Jul 2022 05:04:56 -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 DD74620F56 for ; Wed, 6 Jul 2022 02:04:39 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 205-20020a1c02d6000000b003a03567d5e9so10752272wmc.1 for ; Wed, 06 Jul 2022 02:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oouPZY4jXMX4kuosliYv2WbNP1uk5Gy/Lp8NUrzXszo=; b=o9Zd1oMgpeujPxRxECsSBIU98M7pRiOSkmwc2f/BKuZrS4V4Vn+gHf82xKynL2wphy 851DCqVstrq5aO3K7WZ9YJYWnPTi4sk3sxejKzIBg96iNxTo/cfce1HxvuvF+lzBPsVy 4UdsPd6pKHydCHIw3lH6N/fQMc3TizwOjv3hWHHGDNTqfIRz31ZVDvsgm4EciVF+ffiM woS/A4iuKIehhCmY92I8urvucn8aqw66zVCWED8hBaIkxhuaKFPb25f7sU7jpn49N9J6 lTYIJoRbt/lZTjSh5rQTE/4+dwCbW+Q8qOef3I/+bvHvwvnC2LmN1c0TtnShflOYFE8n 5gAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oouPZY4jXMX4kuosliYv2WbNP1uk5Gy/Lp8NUrzXszo=; b=4NJ0uaAbLBTU3UWMDXsDeaojPAUgwzp+lcQMFZL8quJfv67dV6gAZfZWTQ6IoZlgql VxQAboZQESoD3QM8vLYLfq2c4K7gHEJtz+tdqjigR+7rFNam7Jj+NYMf5r1yUsUpWtAq I7BouVWzH7Wute7qRtcRimt7lBeEHb8pDgA+TsjNKHfXFRf6Znz6bVpUlaOXeSuXHkF2 1mUwpp4cMmFtLAFxVFRH8ppm0PpBCB/EnyX7+z5iUqvgu7kQawOi/JRetN6e+OX3Xjp3 9Ks4NQL4DrygIuO0LiDEyTyGvSkKXMN464gJOpPq0kCOYKTU7cEUyhluoCw3xB56Dx/M eCuw== X-Gm-Message-State: AJIora/M60/dFVEqgP452QZVqUnoCNAL7yyMwp9u5PpfvZ9RounEv+26 SL1p/Hk7OCgYlw+AkozilhBEsw== X-Google-Smtp-Source: AGRyM1vSZUxBFPPKHTsniWzOKrNZECsFtl45NKDFHHLFJwfDyFnF0GYrYMuZJzYINl1CwrEuxcUKng== X-Received: by 2002:a05:600c:154a:b0:3a1:70dd:9a12 with SMTP id f10-20020a05600c154a00b003a170dd9a12mr40806492wmg.70.1657098278220; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:37 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 05/33] crypto: rockchip: do not store mode globally Date: Wed, 6 Jul 2022 09:03:44 +0000 Message-Id: <20220706090412.806101-6-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 2612ACCA473 for ; Wed, 6 Jul 2022 09:05:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232697AbiGFJFQ (ORCPT ); Wed, 6 Jul 2022 05:05:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232694AbiGFJE6 (ORCPT ); Wed, 6 Jul 2022 05:04:58 -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 D9E48220E8 for ; Wed, 6 Jul 2022 02:04:40 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id g39-20020a05600c4ca700b003a03ac7d540so11170722wmp.3 for ; Wed, 06 Jul 2022 02:04:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ME8Y4kRTkIs//WGHXoSnEtu/nBMpdqDM8UB8oWi8MOY=; b=UdRN60DQUVaZIRf8L2zvMiUKDe/LvTFpB/KOxFMLKCW/gdP6TRQbojcMSbN9UFrDmf 6wScDi4yZ/uTnD3oyPyTPclKoMWIoAsY+wFzcoQ3OYqVrLS4siENLAg2sVHaMdu/vvTb MKzu7n7g5DWTvCrHdz5zCEBSwFMtDY/4sru099AfRrks3KtMuLDXhEA3x0tFSKquPaP7 Giu5HfCzCfk49A4XQUtEc4Ls+FyyoYJKo48fZVZchfng/gH2m8yhZlCh4zbLUb7qR7fz Mpo/3m1iZ4h+Cv6K9QsLl2KsmBth769Co+BI2SEHk529xFQB9F6Kn5kEPG3YgwBo6a3q kHFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ME8Y4kRTkIs//WGHXoSnEtu/nBMpdqDM8UB8oWi8MOY=; b=OCKIas/VLcQskfMnxGfU8tZ74f6xqAsOm8M3QK/CzkRYdukR3+rQhqaOPEm/nL6wPO /mzfyTFz365cJ662V2PAPr4xWdseh3Fv+xo7gUUMlLGvbVkQP70oqBSM6I09rvRUQ+QB NLmHHcwnBsv9YiwYEBKH/X+A8CaaOXlC6Iu3TCAeBKpxmXlHV26zhtoKbzYuegbKJzwY CdUTBNeIJck2axndAvm6TD9FLlq54HT5DaekJn3AiO5N1xjAwszDeC5pA/Gvk3DUgZl+ Npgjp3A3snyDAXksRNA4J9y4uUjEnf/pK+0OpwdS/Fqg/eEpXTVZerWH78+NLivI65L1 kLpQ== X-Gm-Message-State: AJIora9ZhJgdrdgTzgbRKL6Vx7APU2hPxmVA67OLppbkocwv0A6tKKzl aEOO+7VrEO/PHyk+2AN0tiXROw== X-Google-Smtp-Source: AGRyM1s9DaSBt6vuHk4EgmNeMLDT2eSsveDx7wd120eJUB9Y5vufORk/vGm7z7AawTId3YsmeddpYg== X-Received: by 2002:a05:600c:4183:b0:3a0:4694:a862 with SMTP id p3-20020a05600c418300b003a04694a862mr44324738wmh.150.1657098279242; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:38 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 06/33] crypto: rockchip: add fallback for cipher Date: Wed, 6 Jul 2022 09:03:45 +0000 Message-Id: <20220706090412.806101-7-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 ee99c02c84e8..c293f801806c 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -784,6 +784,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 10:18:56 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 8A70AC433EF for ; Wed, 6 Jul 2022 09:05:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232783AbiGFJFT (ORCPT ); Wed, 6 Jul 2022 05:05:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232699AbiGFJE6 (ORCPT ); Wed, 6 Jul 2022 05:04:58 -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 D8B2D22B39 for ; Wed, 6 Jul 2022 02:04:41 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id n185so8422054wmn.4 for ; Wed, 06 Jul 2022 02:04:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Lb5wXjXl71KLOn69lH3EgInZyalgQlnigOqDmtk2Tt0=; b=zzT8S8RHrwSOYDYb4nSxX1Vj2+7cZjylmxpA5nZxp11NT/r63jTYcVVHZVl1lod/vB s4xJiX61UpU/2yD2nDSoAXIUQOjT25go1QRplexRcmJizflXuNntueAVYZ4v4ZLopP8/ gL6ba9Slb3Y8RCW5lRpR8O/XRgUTDBfYs8WszlEED2WevNhp5huie9+dYgrB0wxuN+Bt iaN0wmPl8OrU95zsa3j5H2CK/L2eZYGG0cPCFukjkmOKO5VREcFxavuSxGROA/kv+GHZ kEbvvxkjoCQ+tNJ+fYZc2xx2gOoSiQyhMMtENoQzsznYrFRR1EAxEVMH9i+YrweM2h9E Xbhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Lb5wXjXl71KLOn69lH3EgInZyalgQlnigOqDmtk2Tt0=; b=yKWdpUVHnhRXizcz2N5KzNl+Q4g7h9J1M63MyG2t/dLRPx8p5lgozOnaV2TCoxKHLS I4SqcrtFobF/Ve2mth9bGKXODnJCpSr5jL1SeEc5dyhNLI1H5+D6pu657FBGavCiFoD7 d/yW2QJ7iQ4jrNY330OHQrJ8/gEAyHzU3o4J3HONFR7BmHhkMZlb1AB5FKtJLZAWDTx5 PNqPg4NoNrfzO16gzNSWmmVNsEeSfGzWy9/ujyyz/84ooVfpiu8jJHjDRK6IYZBVvg9A 5V6z4FJQVHRS0ymSxbnt/1GvxfThVDLi9lvzDIAdP0zOoCCqg+XtDmNPnMwNxdY0Ov+m zrGw== X-Gm-Message-State: AJIora8fFTdOZdUhoG/DXzZTg7CyQ/B2eRFju9s2dlA/efS7BHo/vZnz amnR19WJ3MlaJKYRmANS0FRgdQ== X-Google-Smtp-Source: AGRyM1tU/eQs9y3rllPt7O3uf71DaGtNf9lf86F+8T4gDenqt/KrF5cKS5X1r9zX5d+0CXqvHL2xqA== X-Received: by 2002:a7b:cb93:0:b0:3a0:4d00:2517 with SMTP id m19-20020a7bcb93000000b003a04d002517mr41934646wmi.117.1657098280280; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:39 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 07/33] crypto: rockchip: add fallback for ahash Date: Wed, 6 Jul 2022 09:03:46 +0000 Message-Id: <20220706090412.806101-8-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 CE16EC43334 for ; Wed, 6 Jul 2022 09:05:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232785AbiGFJFX (ORCPT ); Wed, 6 Jul 2022 05:05:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232676AbiGFJE6 (ORCPT ); Wed, 6 Jul 2022 05:04:58 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B480C22BF0 for ; Wed, 6 Jul 2022 02:04:42 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id u12-20020a05600c210c00b003a02b16d2b8so8603403wml.2 for ; Wed, 06 Jul 2022 02:04:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LTH5XZUoNfw5j5g91Ov715oBhaysSZASayzIPMZPNtU=; b=HiNN4arNTOOhs9pH0zETW9PEf0t4cBav8j8OlYVHAkOsQl7tfFPo4HqmbDEznAxXuc XDYhqFpKVz9hwoGM4w86coynCJ7UoUckfkKJBRRjAOGju1YG7IVeDGxExQwYgwd80cJ2 r4nu6M578mf12ieQMSs4EMY5Yu2A9gDXkfN6gaXXJjo48uva1gP6ha9DsfZSyj7geqdE YTfNVG/d+2CVhTEN87kAPYq2Z3nUvFjIvhaQrmf4MYFfZkKslFdh0DUjijuSJyRmIF/V fCYfWlM7SxVSPCjO1XNdM2rmW2gYAqVPhpIWiS+dzs9N1rRYcjCqT0K08GAGQwnruT0L Edqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LTH5XZUoNfw5j5g91Ov715oBhaysSZASayzIPMZPNtU=; b=QP2obHZegPWxz2a3v/5GRGeGt1BaGbYXPjrhQrQqYHm+oJEGLBgZI2MTfMF78ECOMc 1+MFK7Lj4y+8wgDvSQ+QfMyiza1FQBo+fd8mQPyRHHapps9gOd2tR5eGiBSM0mtZ67q8 xmFS1mWdp4iUalp8KmwRwOvl1wS7z3CYdECbIQdUoTfYog5vdoW+LfDECPgN8q1n8vnn J8jJjlSEy1e5xXDq9Qrepi04KPh7lJRDv8tqrPj5Ejh+7sQ643XqV89boxLoa7HTf/Nw TuKMb99/h8CEGQeeMyTypAcomC0Fjk05xBUTyJfPxYWP0cxf2Y8vZCs7JUp8WPOhJHoU 1cCg== X-Gm-Message-State: AJIora+iF8LpK5KwQ4JS+phMs6IlyftrFQGDn7qxIM3KxFF0oOtpy8Hc YAXmFB2IlmqJkkaRmOijBUXlofatcBUhIA== X-Google-Smtp-Source: AGRyM1uHE6/MeU6YpNoLPiBOabEERMQmrU6BOfw2kwAOJC4VQQyqVrWzr04d+4njyc87jmfrGDxHMw== X-Received: by 2002:a05:600c:500a:b0:3a1:8c53:9bd5 with SMTP id n10-20020a05600c500a00b003a18c539bd5mr29826612wmr.82.1657098281303; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:40 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 08/33] crypto: rockchip: better handle cipher key Date: Wed, 6 Jul 2022 09:03:47 +0000 Message-Id: <20220706090412.806101-9-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 864FCCCA483 for ; Wed, 6 Jul 2022 09:05:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232824AbiGFJFk (ORCPT ); Wed, 6 Jul 2022 05:05:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232715AbiGFJE7 (ORCPT ); Wed, 6 Jul 2022 05:04:59 -0400 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 234CE5FB0 for ; Wed, 6 Jul 2022 02:04:44 -0700 (PDT) Received: by mail-wm1-x332.google.com with SMTP id f190so8422431wma.5 for ; Wed, 06 Jul 2022 02:04:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WjVYDZUAlIRp4eDHOXKi9ug5c8rK8IrdaxVWhXjYQvc=; b=YK3uTd1jyk5Ryj1LHgw+tO9Th1BpgqLq2u+4AV5HOdm8B/qIZSrARkxwu/ULVwNe1r 5BfC8a2NbS1hFGmshF+/DNkrgFt9EanYeGTcR5z1Yu2Uik8LqAElizSwISYsxUQRt+KW 02jJvE3esEbb4tAMvq1EoCmjkyEFGFi8vSa8U+TsTJXdNd9EFpDCUA8koaC3t4vWpIvY iW3JlRVSCXIr00ejP82AIb459vsjsBtyTEV1+4YBZlfZtWCAOMvq9sMGAocpdiQxfl81 Ng58mFeoBLezJRKIReTyTlMv+XsDdwd4nyyRdNUy4C/vH0Am2uAqoaJSnZ/uCkAezMug LJJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WjVYDZUAlIRp4eDHOXKi9ug5c8rK8IrdaxVWhXjYQvc=; b=TRuJJl/KtED2WCJ+kD6tNQshgmbq70eeuwVIPaWu/w3dbU55Nwdrfcx80blVRF1dMl lZi9tEkcv/KJ9a0mkgPZJWesZiIKNL69N3p5nhIGg+vxTG1JaQ3LHTBu1CVnEDJ49Stc aB6l3UYe3UHm3c7wktvbCmSDme+iKmlNTmQWXGoBE08CRTVfGWgfSQh7A8GROM1FC3Ft cPcTqxTy4SOGy3q4gvlluhtDtyEsud/2YQ+VDyBp/SdQp5KRCqC479vDwkheFJ7AgrWX M/DSu6TnDT9EQO0h/u38BWMZhkmCoDYA9BS83ssEJxaZYOQoVh2hCtVhs+u9L+94fEhL 00VA== X-Gm-Message-State: AJIora/8vbdvIum7Zmqkc+RNgeFy82lrcETtb5AjAgdEG6ZVozTeqlbR gBCK7wF73w7NzBHJVByPmSyYoQ== X-Google-Smtp-Source: AGRyM1u/xCsOAJu3XL7RgknwRQsilbgtiT/gy+smBNh61KM4oCsNdGWVZNKrvNkQTb0KXMaE8r11cA== X-Received: by 2002:a1c:720f:0:b0:3a0:2ac9:5231 with SMTP id n15-20020a1c720f000000b003a02ac95231mr41271300wmc.39.1657098282315; Wed, 06 Jul 2022 02:04:42 -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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:41 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 09/33] crypto: rockchip: remove non-aligned handling Date: Wed, 6 Jul 2022 09:03:48 +0000 Message-Id: <20220706090412.806101-10-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 4A0C8C43334 for ; Wed, 6 Jul 2022 09:05:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232851AbiGFJF4 (ORCPT ); Wed, 6 Jul 2022 05:05:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232736AbiGFJFN (ORCPT ); Wed, 6 Jul 2022 05:05:13 -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 76E9723176 for ; Wed, 6 Jul 2022 02:04:45 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id f190so8422467wma.5 for ; Wed, 06 Jul 2022 02:04:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vvLoc7JgLxlDmegtH87NunTN8x9IQJmltG64X4dvE5o=; b=Q+lAd6oUdrfJwaNMmsiICDGS0PGNoBKd4H0e8lxYF2NS6o9KUpfChmyNK1iaGbNP3+ 6Jg13BCIfgfCPTEPhvmom60lYZW6IS0ozJN6K3tWAk5xwALZLWcMAi99ta/0bi0YvAuU 7WG2Qu+pwzSU9+Ja0+NoQ7YQyHJxZE7NFAwDdyO2K31ZzodlJCNMdXYRjKrzRQiS6dD5 z3s/m2Z7nfyxHlfVOUguk6qtJJteT80b60uNgOzk3MfiTnelhGLaS8foILxa83TGddOM yv8Nws+wlKnD26efG/aAZKctPItmti94i5dksG7/8MN/EhWPeA00bstbONA6pxOaTs6T 3Exg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vvLoc7JgLxlDmegtH87NunTN8x9IQJmltG64X4dvE5o=; b=zHndvd5I56CkvglBaaC8YffeZHc4hpZDNLBh+jZOstOaFzvkMkMXIK2CKnonsIltxq OW0rJE/8WMjBtmhL3ZIrtGdYjmHgcCOJtkXZVsekTor4Gd8UxmUgtgAZb4RYL6V4+EHf P/zGiNgfTONqp/wtMPHF2EJars2Lju7Ik6PASeFhNJO0vN4h71IfZpXH6nAq5QPqsOWs FushkvRR/f5IjKnVdvtX749s+rjdNw00j5mm4xf2TA8Mth3c13NY6J+me9vQsHvB6sn4 AB3vGN7zpeTkZpN6hGMFVMpF2Lu/fAj4m9eqSDkXSyOCZn8BbjJDAho64o8Lly/tLhXu md+A== X-Gm-Message-State: AJIora8/9aTFYNfL0B0yC8ISABoAk49oMvUOu1HARs7AQCJdctApToRK ufEtKs1cCBzt7w6mCEUEA/6tJQ== X-Google-Smtp-Source: AGRyM1t1epReE0Yy1wIuj/nlbSeyDzx7u/cCWGEgvBpAN3S8CThksCp8SvCPMWoRQmMrvipqry4zuQ== X-Received: by 2002:a05:600c:3d8f:b0:3a1:8c7f:1908 with SMTP id bi15-20020a05600c3d8f00b003a18c7f1908mr29307442wmb.201.1657098283444; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:42 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 10/33] crypto: rockchip: rework by using crypto_engine Date: Wed, 6 Jul 2022 09:03:49 +0000 Message-Id: <20220706090412.806101-11-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 c293f801806c..df4f0a2de098 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -789,6 +789,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 10:18:56 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 5934FC43334 for ; Wed, 6 Jul 2022 09:05:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232834AbiGFJFm (ORCPT ); Wed, 6 Jul 2022 05:05:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232718AbiGFJE7 (ORCPT ); Wed, 6 Jul 2022 05:04:59 -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 E36272315F for ; Wed, 6 Jul 2022 02:04:44 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 205-20020a1c02d6000000b003a03567d5e9so10752474wmc.1 for ; Wed, 06 Jul 2022 02:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8+zNu8By2wCTRIvE0cQTAVxjDoLu9Skp/kq6mTlEw+Q=; b=QXU/Hy8SZIBn2OhVktLcqFRlwVUkvFh4s6/l1mnut+jLyRghE+1nXvbLGrbXKd7zji eTKE0TXMrFfpaadXrTsCQ9IsUwIsG7Bn8ciCk5Te4B5s2bdTrT6W06DCeBur9O+E647q qQGvAUK92GPuGgcEUwY9MjYkktOnHwKIL5eyRqzamRqB9o4o+L5qAQeFazVFWpAyJgKf LvEeOsX25Fmi1HnmJTwJ00Y9062gCkYKT/K2fg4q9OIH1uBPFGBHziPrKkT9rAS2cvh4 O+apdFK41Pm7SdK94fjL4uDKsA8NuQp2fTehiOOuKxr2g3IxXA7EWrsDDLOeWy830MZS s51w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8+zNu8By2wCTRIvE0cQTAVxjDoLu9Skp/kq6mTlEw+Q=; b=KdNV7eu2fm90o8i+yYUT5o+E57JSVa0EiuVWO9xRWSJZPpqYaSon8cTDM41Yr5kNRF k/9QPjIsjVXiapbs+fjk3arlX5SaBMSHF0Qle2wB5eGtj6SLzoVgmG75b0qehB5s/aDI Vhy20dOR2u1XsMzaNSbdgdmhB6AQQk2hXMOHIMHGbYFJiidY8aFpnoypQpeS1sLf54JN ESafS1oPG4vGZd7zebK51iRa6+ypAyELnYhKN1ZxiUoTm/1d9TlJwj1U52G+oieCKQqs yjUMhWEdMM/sXc2EBC5wFhLZS0QdSt1R4gin7D67r3HX9Zy0eYKUFn3/3CS+Z9VmsiXC oBFQ== X-Gm-Message-State: AJIora8aCM/KDldogNwnPDRo98EUWOjjLgPwFT83NLQBbTOh/CEGfIJZ +grkKq4soMcazHn2Fkm9lhQxNg== X-Google-Smtp-Source: AGRyM1vLphvBpXT/k/qIrhyevrjHvkoNvpi/aV2VW0NZgZYRyzaJk+WW7LSexXBz5CeOtFKmJA0LaQ== X-Received: by 2002:a7b:c31a:0:b0:39c:4783:385e with SMTP id k26-20020a7bc31a000000b0039c4783385emr42156922wmj.185.1657098284513; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:44 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 11/33] crypto: rockchip: rewrite type Date: Wed, 6 Jul 2022 09:03:50 +0000 Message-Id: <20220706090412.806101-12-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 E91A3C43334 for ; Wed, 6 Jul 2022 09:05:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232839AbiGFJFq (ORCPT ); Wed, 6 Jul 2022 05:05:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232732AbiGFJFG (ORCPT ); Wed, 6 Jul 2022 05:05:06 -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 2BCC4237C5 for ; Wed, 6 Jul 2022 02:04:45 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id be14-20020a05600c1e8e00b003a04a458c54so8590264wmb.3 for ; Wed, 06 Jul 2022 02:04:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SY27zUOPhGpfGqShGZHh/LeCOu4fFuQvT5QyG/wyCDc=; b=XjbxgxbJEhDTeVVtqKznNTUbO8lMrqZv9weFUMmWunXx912sPJRUb3SGsIpy/xnU3F c6i4Sx3/TmCv/AD9fWJCYI77+O52JWqnfYamqcKYv0sonjiP9QtLDzVPwkQGoLpN+37W Bk7eSR5y4ZF7gLtvYCBZecrtEGb1rSncKC9DMBNdVTvH4WUZR7X9MYAkyFnfcC87fcMh Nwk+DueGSC1qER/Nvd7OqACbzobnIsLUxchHzz8qKdk/9v/G/aXVXOW1bIGhsTNAOATh 5lBzrR9pLd5xbp+m0wBO8m4JmJhaPM3a+fkzVUs0+d9ZBbeG7Vo4khO4xh87IZ1CqQG+ l2mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SY27zUOPhGpfGqShGZHh/LeCOu4fFuQvT5QyG/wyCDc=; b=WXM1C2nL/bkmdlR8jmUzUj6N8esCxjqHkeok4G/F1+bA6MLZwvSkgDdIISVaMxvdAc vNWOm7mRn5qQRXOPHBpCISVZBWZMQmkHeQlKDTist3eDaTI66pF0pwyIiO8SRwurgj2c b6a7j6rzkrOh1Mw6/yh9wIzY2F9xTtRJ5kFSwZcDujyxmdq46xoYwFzyNrSxsWbyiEsc MJXvoJVKvemcxaV0fTzPlhr4gxPfvi8hjx7M1BlTIIx193WO4u/ZUkYMtCbLoGTdn75W bXCk7cicfaL2y2z3E/17ceD4h4VzFFPt+Tgz7MEyqrs57MquGoZqk+FGvPqOHwnTRoJE BadQ== X-Gm-Message-State: AJIora+/fS9zC29HreclpdPnA6G+ocDskoKX7RLL3r/UULSzxGCBqtIH 9mscw0GHt8wpYOCg71SDaYgE3g== X-Google-Smtp-Source: AGRyM1udBfIKizGH5eGUAcz4VdU4gYzaO+ejM+zyiXdbdANDvA69tJ+B8/cxN3GOho73Ghpggd7E6g== X-Received: by 2002:a05:600c:3788:b0:3a0:4279:5142 with SMTP id o8-20020a05600c378800b003a042795142mr38247479wmr.21.1657098285508; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:45 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 12/33] crypto: rockchip: add debugfs Date: Wed, 6 Jul 2022 09:03:51 +0000 Message-Id: <20220706090412.806101-13-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 df4f0a2de098..2286df229c81 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -801,6 +801,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 10:18:56 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 6F4C6C43334 for ; Wed, 6 Jul 2022 09:06:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232911AbiGFJGM (ORCPT ); Wed, 6 Jul 2022 05:06:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232795AbiGFJFY (ORCPT ); Wed, 6 Jul 2022 05:05:24 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C2BC24096 for ; Wed, 6 Jul 2022 02:04:46 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id l68so8418688wml.3 for ; Wed, 06 Jul 2022 02:04:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=k3IddiKdhwAn8qAKW9Ise9jrX8X5WN4qU+7hTXJ6Zgw=; b=7WjXF0GDN3xQ0v+bTFX4uu+yaqnM4EnQeUBwb7RwOzEs/j5dN72bx//ztFHVFy/4E8 xSuCBWyjezvO3ycJmIWMK9bJGhp3izvzS2iI0FkT3RF+J3mQmDsQCrRqbZ5r/xoQge7z qpfKJUjbsxtLF1eaovFYMynQlGHwU958LyS/+7x8jGjpifz7GaWmmtCD5cFe5m1ffwgF pHQu+NxzNhpKhDU2ssO/SMkigYVPusNTedTH7ynIckXwAUZ13BiHErMm2hjZaw16a6p6 C3RIEg2QO2qu00vzW0FoDSzLhfrUugFqAeT7Jqs5ErV7FdDjYFWZV5lwbJAsnw6d9CcP l72g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=k3IddiKdhwAn8qAKW9Ise9jrX8X5WN4qU+7hTXJ6Zgw=; b=FliALmZRMr/6P/xqFvpUiAHU8a09Bzzy9MLK0FCdbTfKGMFXf17/FVJ9Jr561fhRFc f7D2D1MZMw/9gCjeGgubpVj8MHwIEn36hBH7xljLCs8wvVgNY2ToGD6q7JmVZYEq+eS2 oWaaq4gYl9ZhIFiZMxxdOnf1qR99YHh79AYmhjaErAxDGkAsLmE9ojAMt8J2QqnqwuFe JWLv6zT51lOnXtAvMi1GARuaGqj7ZuZDz/bL84z3T//TUEcqhetqvPd9jzmfE7jc430B LnDvOYCGWsJ5aCl4s5ox/35TZvM3XSGB2JjeSIBPrmU+lMdTbAXdhJeXO9E5JI2Xpx20 ChdQ== X-Gm-Message-State: AJIora8iP03KhCQzaoSAKtpcyPkrhm6fHohx9LxFGKwPV26hj53I8Laf gcwXJkhoL24ehAmn6n3mp8VtsA== X-Google-Smtp-Source: AGRyM1vVHbQnK9eVYA/FZEipQU6Dk9G2Sv3HQTRjOv3M84zMVuw2s0ZmgNF9e6cuHsyrf+ErO6mnKA== X-Received: by 2002:a05:600c:a18d:b0:3a0:2c9a:b3de with SMTP id id13-20020a05600ca18d00b003a02c9ab3demr40211045wmb.147.1657098286534; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:46 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 13/33] crypto: rockchip: introduce PM Date: Wed, 6 Jul 2022 09:03:52 +0000 Message-Id: <20220706090412.806101-14-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 6C817C43334 for ; Wed, 6 Jul 2022 09:06:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232905AbiGFJGJ (ORCPT ); Wed, 6 Jul 2022 05:06:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232793AbiGFJFY (ORCPT ); Wed, 6 Jul 2022 05:05:24 -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 86096248EC for ; Wed, 6 Jul 2022 02:04:48 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id r14so15268705wrg.1 for ; Wed, 06 Jul 2022 02:04:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5JnoAw4X1z7bCscIjsjfjSMoE54Bwt7ulA7ZsyJ5jyg=; b=xr0FpK5cwnCb0WOaO6y8mE+TkKYS/kzREEXHsfMULEMhvECHCj/xpm3tcmXurmGbP4 67CBaXwsSyy+HadNjaLE5tn18Kzcs3ftlVqzg9UtTI5eBN1Cain3QkeuoXt5au1BDgvf MAq3p1njGNYdEFTmPZHhMK0640KejDHqEL7UEnnf9NjwomqWvcL3ZuYANJ19p7Br1+ye ao3UHr0Kfd3ChdaGisMDX89uwzJ7kvTjL10Wfyp/UliCxYV6AIxufOjfOkGgWk9+le/A r7leP/Z9IP7eeTX0+oyNpWOKy68v5TIWjBRSpNKNpM0VQZidMvoyC0xuzttKj65VcJa2 sPOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5JnoAw4X1z7bCscIjsjfjSMoE54Bwt7ulA7ZsyJ5jyg=; b=2xLKd2IOLTq4vA8/BLAU8HDtIkztekG/+4RXNsakNOWewkOqHtvREeHSVodw8GqFX3 pbtcxXcFQ6Mb+9lZAO6H6L/AKeo+sJDSGONlnRZCcpyZdpkB7h3REifez22xflNXU+Bq GDBPHiq36Xt93RL0Do7hcuBB4OXtjODSJJo8l9hqr5AC4gEFg3fgBtG4gP0TFKFGGKA2 g2Wt4V9TsQn7j3co+gY387uHFChPdwH9kkPrNJvjyjo0vv1ZafJL1bJ5BPbxSYMlXhZM 1Br+dv5YXz2FPfiDkAgIQm/HoACYigYI3/rcoIjzm4a2O2nSxt/+rCNmTqPv/XBd2ztB vfXg== X-Gm-Message-State: AJIora9HIx8SToWWqKOARM/sWir18M0Q/1cw4jCxPnwHA2u5NPLymlIU Lha+SLAa1xDoLEklqgqGV1DA9g== X-Google-Smtp-Source: AGRyM1sm1kYLskwNqIGQfOuVHXIP8ExmBLLxMmvsSYCpN0ZkgD54v+VH1c74YJg19nKmo4OTTKjbow== X-Received: by 2002:a05:6000:69d:b0:21a:395e:572c with SMTP id bo29-20020a056000069d00b0021a395e572cmr35341384wrb.559.1657098287952; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:47 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 14/33] crypto: rockchip: handle reset also in PM Date: Wed, 6 Jul 2022 09:03:53 +0000 Message-Id: <20220706090412.806101-15-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 CE8F8CCA480 for ; Wed, 6 Jul 2022 09:06:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232950AbiGFJGZ (ORCPT ); Wed, 6 Jul 2022 05:06:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232720AbiGFJFi (ORCPT ); Wed, 6 Jul 2022 05:05:38 -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 A6C0524BCA for ; Wed, 6 Jul 2022 02:04:50 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id bk26so5988425wrb.11 for ; Wed, 06 Jul 2022 02:04:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UGbdJwhNtYNfg6qIard96SGzNtmQLkXSB3qcyDfr1D0=; b=gm0KhrhBhAvk1tfsnOGMz6wra9Y+oeNBjeba+VWedHQ1UHOgbxpAe4LFPDlUaxPqrs 8rY3aJf6geSq7/4QDfQac2ydBq8/0UOd9Dg1hB9jTv8DqsQLhGproaiZbYW+8TGZ/KTg /kUyJsmfSig9d3Pw1cRz7WFr7bDZJ62YOonLu3BpwE7VrewVppQo4QTEaBl8Ee80XnvP edD55QxtgY54jNehTdtmI3YMApuaxf5olBUlh6AJ4xfrveDlwFDYRXejtm89MgLaIj+Z TpZmTqBzHpU2xbi5l56oBPcj/KhHrMO8hreMhRkxEV7Sx7/JUZC08F4UCHZWeuvUBr5h EbzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UGbdJwhNtYNfg6qIard96SGzNtmQLkXSB3qcyDfr1D0=; b=nV9iUmnEfhw2AwWoOa3i8wH4/Chwfx4h2kNMNY56mrcxwq+xbRx6yDEHfRgQPtgxji Jm5LbNZ5OUWmlmM05DvAEzoXt93YFOVPruv4SO/0S0JKiUvMgT9JDP6BN14IkxtCLzMj BG3pVZWMkcT9TetB9CX5CuUrWg+SjYo9vpDa6wfJDIaax6mXsbSNdJdJHkAu2qbze0ln oOZE86HC1fTPZGiD1xyXsGKBZtmCeH2rFtUp4NIdpLkWAsq879M414azHSAHrb406ScD owmFroJUteh4uQ5bVOGLc+8yQoCS+YvSGxiK/iTJyE414RMY982HaWTyJHVfEVUv09/h WPVg== X-Gm-Message-State: AJIora/DO2DxUyDgCAIDWtVY4ayKtU00qE06riNM8HUKmyYNxM1btpb3 xyIuRKU1eBE2HyBcaEVHtW01qQ== X-Google-Smtp-Source: AGRyM1sp1cGtTs7HtYrnntFH8WN9VXQNVfvKy2ZfLC7LeqIDohbIK8azWU+UPDvtgEh1Mr//Z+4FxQ== X-Received: by 2002:adf:db12:0:b0:21b:970b:e882 with SMTP id s18-20020adfdb12000000b0021b970be882mr37315917wri.6.1657098289008; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:48 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 15/33] crypto: rockchip: use clk_bulk to simplify clock management Date: Wed, 6 Jul 2022 09:03:54 +0000 Message-Id: <20220706090412.806101-16-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 2ADC1C433EF for ; Wed, 6 Jul 2022 09:06:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232968AbiGFJGh (ORCPT ); Wed, 6 Jul 2022 05:06:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232852AbiGFJF4 (ORCPT ); Wed, 6 Jul 2022 05:05:56 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C55324BDF for ; Wed, 6 Jul 2022 02:04:51 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id z12so11453941wrq.7 for ; Wed, 06 Jul 2022 02:04:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QRwoijrMVyavgOhukFjDrHIPhw2Aizqfl4rhNplf9c8=; b=EbUW1CorL++pA5HZwPVyXI6H8KXbBXQOWYFlcoiY3OJsBDxqinf63l+PavhtEofQAo W5ftr1cD08Cle/swB280sWtQPz3Biv445WGbK7hStJXcJbOz9fGedSzu8RCp7g5c3g9M jSSYhf9YXDACW67Yty9sEtXLo7REbXz6KWlh7kadZkKFilPJoloPNyfRXJUEU80sAnNj vs3lWwjwx51u0xAyJT3JjzzG6IfewPbFTHbbmQIFuKMeB/dBz+ti+h+gaRNVbaZzPR7P ANktB5poxuBZ1wpftcZabrVA2vcgeVzX3tfT8DtYQ/5Nrq6kDF60QW5/cWpMtLfKfuPk cRNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QRwoijrMVyavgOhukFjDrHIPhw2Aizqfl4rhNplf9c8=; b=js5a6xuEvZaYLvS8w7/H6D8FHWaIVXFhcGke4FgzHnwg2Y6tADT9x39mQ1T6zYM+rZ wvRRmnmwrpk6vU+wcHJDzghA0jGd86Wr5QnEWH5uLHeG7owS+qoHg+OXJ0hggtwYb79T Vh8Y3GZ08n0pDHLn3EZhCGTMcE+aDAXpKgchW54XZn2sA/FscPXeMgMn1fsXj1Kzt9Bi 5U8ia6u8lf6bJ66QWeP8FldVfAyReZ58m4nhOtNNc7FbkB3vmXFAzEftcGaqUVNMhA5x lLsZUGYdcji+cF1WpVQNghVIdq6GrY0iO/ggrMErP/SVmoEzcOSewDR3vRvrkYqPR/v6 geMQ== X-Gm-Message-State: AJIora8Qdru2fr56KH0cmtc2wzwDAJVJrkDxVLELx0vKHaXdHoqjhWdl i4OH1TtCjBWB5kKUI7Gf+1Eqkw== X-Google-Smtp-Source: AGRyM1uHRACL/yhNWelXRoGTrppw3+XTWYAI6/alcnOGghNjRVtWhGW3TsrfO52e6QKv1JVHStv7sw== X-Received: by 2002:adf:e8ca:0:b0:21d:4ace:15b1 with SMTP id k10-20020adfe8ca000000b0021d4ace15b1mr24902118wrn.400.1657098289986; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:49 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 16/33] crypto: rockchip: add myself as maintainer Date: Wed, 6 Jul 2022 09:03:55 +0000 Message-Id: <20220706090412.806101-17-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 392e59e9a03e..f8af07fa96fe 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17449,6 +17449,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 10:18:56 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 732AEC433EF for ; Wed, 6 Jul 2022 09:06:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232954AbiGFJG3 (ORCPT ); Wed, 6 Jul 2022 05:06:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232724AbiGFJFj (ORCPT ); Wed, 6 Jul 2022 05:05:39 -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 8D0F424BD7 for ; Wed, 6 Jul 2022 02:04:51 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id v16so9615104wrd.13 for ; Wed, 06 Jul 2022 02:04:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cJE9JrNh4HvbwKuPRZxdjE4sOr8yHsnud2KqNuPrCRY=; b=zu+LLYNfYMR5w2kmcD+VYvYPTp0nJI+jT7tqr9TOwHrQicaqgP6aWYB4SxDRI4kvXK BTpaTst+Kf2CgpT8EMtXXOLZBdyjJltD/PkJYqQZlYlOt0DDcXWpehZHlYpOR0GPscdp 2MeE5vjRhXLjQHwfeySb9QQrwi8wJaCfBCzq0tYbMV3hxIVrX1u7f0UgFvrHSwmSpmJO JsbbVnLZhXi0ihk7Ko9AtHZhwkXPjnk7t7rabDtQouXLzJb5akPuulNS3jm2qpHDr8UB l298OPf2l8G1OsnQjwvWuGBdVXJkdMmjJtsLQx3KyFAaqQpNNU/uML10kbrGUrtv9uWt k0oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cJE9JrNh4HvbwKuPRZxdjE4sOr8yHsnud2KqNuPrCRY=; b=msDbRitmlqFyiFo4ubHG9acY1GnP+DQGsAYlRGv8zI084ZT+yJqVbtC2EzofJSQrXn c4Sb2abIUZNtmSw9dZImNqAKflK4rJ6PQsPnlPgQ7xP7I57DphzZZ/fSYBgtj8H9NtC5 wi7WikGa2a9l5StwfidTkJAcqvXr5f3WzzxonY4lzfrsRwL06qYp7loYErE9Xh4ty4Td fHb6/ovVCi8WhabNuBVLV059JNK3H/G1BTgSJIgurkvWgQrIQc/nzxc0c8Lt6BFc85Rq zZYZ7/dovrro9lxhuiif7m+7R9g7XCZn5U16BLOIEz9AN+mEsLvgiuhilTGQLE/zZC3I DLcw== X-Gm-Message-State: AJIora9BUjevIugI5cg248bEo8OBe4s0zB/g/xQcX5euaO/La+Vv+vI7 hCqHANyhqxtQ22q04DKpH0elgGB5AlOPnQ== X-Google-Smtp-Source: AGRyM1tEKqZlLUJfN0k4nDeQgcEf9DG4eNIDN0NpdWfXaZGKmEatPTHkXZAc5xBm0SQDd3swFPHszA== X-Received: by 2002:a05:6000:170e:b0:21d:54ac:6ce8 with SMTP id n14-20020a056000170e00b0021d54ac6ce8mr21083862wrc.43.1657098290976; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:50 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 17/33] crypto: rockchip: use read_poll_timeout Date: Wed, 6 Jul 2022 09:03:56 +0000 Message-Id: <20220706090412.806101-18-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 2FC1EC43334 for ; Wed, 6 Jul 2022 09:06:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232959AbiGFJGc (ORCPT ); Wed, 6 Jul 2022 05:06:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232825AbiGFJFk (ORCPT ); Wed, 6 Jul 2022 05:05:40 -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 67DD224BE6 for ; Wed, 6 Jul 2022 02:04:52 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id h17so7903496wrx.0 for ; Wed, 06 Jul 2022 02:04:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YefmDD2ry3pwsMvqRhlFBCTRYluZUGamucEuHQLyttA=; b=L7ciS97RLhOsfeKYlDlu8uDqvlYHu5nruqE3Z1CfDRdMSrwQf6knk8+pVieatsISs9 Of0f745OYA404hCWfAOC33y8Pbuj//tIzFKT9F2/QfHQUVaxwVZMuc1GzxHfe+YMU8ny BQx7w2gmkVRQTqY3MKq88QPjKEt3J4loRHPXZ36XuTbmtcWnrcf2QPeNSlp+WJUPnDSR UyUTpl7VQhBGKBKHal/IkqvfX8qeyQeUzJ5lcUXnAc1g2VUHq2A+KSJ6AHAWqGG+3lPV iKP1cFPhrjskyhvHotSobOUfRmL7bKKpio+ustI4Pb/bGnI//Z/2vFkrxfdirWuHiWYa 2vCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YefmDD2ry3pwsMvqRhlFBCTRYluZUGamucEuHQLyttA=; b=jZmcTUoB+bbJNk7VdSP16Zb0LUt1DQ7j1kGRM4pyPqNXdsA2P6/Ie+KNhhIGIImnse 0lyutm0+uH6RESbFTqFrY0y9EfNZAWz+sNXmzSUAUWDwKf/uAt1AmWmMGcTaO88Khybz 6eZtOEV7eJY5ugZWrzpW6+mQsjdg+OlnVxwgW1vR2EZiEa3AqOI3PZNY6xvffjhB4Myz 1gKBNU4MnvK1fjDeVQbIReRn9k8C86ymJJ0MfQLW+JWT2+Nx6Qy62Til6mniScr3pe6d awxeRizGYJPwTm9HvTv5kzogC+CH08P2MhkVGlWiGqXT6Yfr0RrAN7Bt7OmXrk7+NA9s UxvQ== X-Gm-Message-State: AJIora87cpEkFlibnamBSd+AMOwBoWfQh8CVjR4eWfCfZGzrBDGjrbxl lkVXxvhqy9qdTMAaUJkIAdm1qw== X-Google-Smtp-Source: AGRyM1tP38P1u6ggCE6YQXSuG57GyJD05zvmba2ae23fJzXhQ4yWNHlDdFkZuypKNNeZIaGw6Pz+fw== X-Received: by 2002:adf:fb08:0:b0:21b:af81:2ffd with SMTP id c8-20020adffb08000000b0021baf812ffdmr36962812wrr.685.1657098291934; Wed, 06 Jul 2022 02:04:51 -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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:51 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 18/33] crypto: rockchip: fix style issue Date: Wed, 6 Jul 2022 09:03:57 +0000 Message-Id: <20220706090412.806101-19-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 8DAC1C433EF for ; Wed, 6 Jul 2022 09:06:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232984AbiGFJGj (ORCPT ); Wed, 6 Jul 2022 05:06:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232860AbiGFJF5 (ORCPT ); Wed, 6 Jul 2022 05:05:57 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4345524BFA for ; Wed, 6 Jul 2022 02:04:53 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id be14-20020a05600c1e8e00b003a04a458c54so8590450wmb.3 for ; Wed, 06 Jul 2022 02:04:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=V0VQZblY3ilqDl88ksU7sNdmpCxvXcKe3g1VMncWlyM=; b=e0yxJClSSXUpxDCwHaDOIvRbSdrRABgnEeecbOpuZA4XLCVBkpW4gXL+Wk1VaIiSVL /yCdOstHJFcouC915CbdVqS7Tx868WNSlZHGvvOdjzkN+8V4Iv948hnotFeMmebif5KJ jIcJMhNoBQlK/G0WDrkfLcATnb9vue15d+/tkV0tTl32cpb+D5dpTGg0Xj77/c19ZvxH WPqz6PrZNnUt8yLrm11Rz6kMcDArUEH6QWDdDV8MwpK3kf9HDJ+QTxhEc+4S0/vzEyPb 3lGPUJhBlXEb7UCNljr3yotpXx9k6NmWl69/f13H4yxs8XCnIHf4nt4r8hN3UbP+WjrO hs5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=V0VQZblY3ilqDl88ksU7sNdmpCxvXcKe3g1VMncWlyM=; b=2I8FeBEtdT0CO2pzDI1IJsNoi1shQ8tabHghof2uPRHku11Qzn/1HB43JtpiQ7jDC1 WwLnqq69cvm4VUvW1RDHTOqa6hfUDc1pkHHeywbYPJUJW5CXBbIOu3wuV39BWqfDWtpR DnWy4qUqBNbcBS3h1s0/I/mDRxa4XY1NQIxk1X6kFHW5zq4jsMGlpiRxJCOctKAiE4uc 0ysvMwJXUFXVOjLRlSgYVUmTGGPgfFT0IVgPaZX2XVwXBRnFLr6E/qmvqbpmL5gSZAh5 aiVGMjKnHOqkkP5T05H6asTmQnI8dgOdu/DERHQ3Gulrk2MfR8H4Xx2mHcI5BD3l0vBp MJyQ== X-Gm-Message-State: AJIora9jcCdqpGsn6zgDWKvflUS7a2jTDheym6q7fQsfm4LmDWWN9Zsk WLnf1k/+vzfsDiorhCekAtnX1A== X-Google-Smtp-Source: AGRyM1vhku6FFRqMSgg0ZToVK+4jD8sS/eXzzi4dV/619Zhx8Ilio+pxWWjXHv62NgKXwOO5OBzU6w== X-Received: by 2002:a7b:ca54:0:b0:3a0:522c:d0ec with SMTP id m20-20020a7bca54000000b003a0522cd0ecmr40784122wml.63.1657098292893; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:52 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 19/33] crypto: rockchip: add support for rk3328 Date: Wed, 6 Jul 2022 09:03:58 +0000 Message-Id: <20220706090412.806101-20-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 D8FA7C43334 for ; Wed, 6 Jul 2022 09:06:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232755AbiGFJG4 (ORCPT ); Wed, 6 Jul 2022 05:06:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46470 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232862AbiGFJF5 (ORCPT ); Wed, 6 Jul 2022 05:05:57 -0400 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5793C23BFC for ; Wed, 6 Jul 2022 02:04:54 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id z12so11454236wrq.7 for ; Wed, 06 Jul 2022 02:04:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q4N9p9400PLUtdaZmzB/PKY2HSpZteQvpiDlvRaNw2k=; b=E/X6MfH5/AkDJTFLrHZF36oWqYZhCgjU+jjYMINuE1GVrVih8A9NRiAFtp9psn0q70 uN9jmVORb0Mx6yUlYCQq+XWLe/j9Y5uEB2EDRU8zDbIsF0zX7XCZeZKF1H7vLfS7kK3R vodka19BRoaGx10wVKpN91kAW6Mf2CQ+35ct74F3UpvLCOxp3RRgat7qAUTrl4owUALY efxfhcszpUwoX0YtnkSpCgDo3D94Ngiu6zRZ4yixMGq9dmlGSJnAsjevU1d3ylb/35ea 9QWAxZrxCFBJeYQ4eT/Oq8LWuPzXkFfjRLHZ6zBv1M+TfkDOFS8/6bODvpAYrAT+0eUO OuZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q4N9p9400PLUtdaZmzB/PKY2HSpZteQvpiDlvRaNw2k=; b=hy5Ef3URFLDGYVQhCr0i9u6an6FtkkAhcjElcr1y6UQbvTe7BDu7+M6WYoI7J3slCe 6RRwbITbhf9UiK+GOx6czyof3E7DpySnEdqwJIHw2VkjCPlBWzEZZVEZaW+pSkZn+ikL SwSzoADAPuM4w8mp1QmOD3j1Ds8Wq7LdtTweVXbrDoGp/4P55MhiIMRtYTqP61bFeBQz XMSLhzam5h4BSWb8pheqdVB91y+BcWkphPIdh/P1qlsyBLXPKiejzgm/3+Gw1rlhXMwL Tv2b4cv/hE2QE1dOpSCLI2MMFBV5F9cY29ovVbBvAmKmZMvENG9caNB07i2MJ4m/n3vu vKeQ== X-Gm-Message-State: AJIora9DF+JGhLK8ftFwSmY+qLub9obmuTQkjM3XK8Y0VUP8VBqXY2Ho 4/uZeaKoHJq2yvg0WpyLkf8Fjg== X-Google-Smtp-Source: AGRyM1vfUAg5E5BdkTbwulCrH70p7oxtuPBB3KuCILIlr8VD9qQd7o6EDTHhD+xx14csRNAVLW/4Fg== X-Received: by 2002:adf:f581:0:b0:21d:1e01:e9b7 with SMTP id f1-20020adff581000000b0021d1e01e9b7mr34980459wro.529.1657098293916; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:53 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 20/33] crypto: rockchip: rename ablk functions to cipher Date: Wed, 6 Jul 2022 09:03:59 +0000 Message-Id: <20220706090412.806101-21-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 3CE54C43334 for ; Wed, 6 Jul 2022 09:07:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232883AbiGFJG7 (ORCPT ); Wed, 6 Jul 2022 05:06:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232875AbiGFJF6 (ORCPT ); Wed, 6 Jul 2022 05:05:58 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7692F24F16 for ; Wed, 6 Jul 2022 02:04:55 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id l68so8418920wml.3 for ; Wed, 06 Jul 2022 02:04:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cJjKlAvPGNgNOZFjIKeGYWIyXJ/4+hZsDzTA+cA/SLw=; b=U3AwLBj1g1YQ3JNmcAwcZca/D6p0ZY1ffNhW6Xvx9xIdHIbypj7LpTZ7z4V0josTgO gkGcDmNHiWQkPxMLoiu8dkpj/wSVxEivmIrV937TIXWGCydZT+Wnfmji8d735oxqPfgn wGCMFWXjHz2Va20vEMkV5WoXsxwvypctXOg1LoaFQTF/sv7HFq3waQj/6JQp93cFMs5+ ers0CZiAIcyznmeD2GRVLDnRCSemUEiJnZJHb8pflR+4oVDxeOKvr1P5gPB46Y+t7b22 eqqqTaNQrbG9CJq0W9qxNESvw6LCuWrYXaFCFjCT+Sn+s6MgQx+OqEBZ0eSR2lU/Ty8S xJAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cJjKlAvPGNgNOZFjIKeGYWIyXJ/4+hZsDzTA+cA/SLw=; b=eXOEIWiznJYRMzEeltZkVZz9hsv8wRt79IwjckDF7juyF7Br0IG7ggW0zPIw3XtHag /siQzMdj7Vsp258M52FeqzwlGtABQ4llNGOGj8qK7xG8Oteku/0Yp3dkmWMgs7pFVDAN Y0+G/gzohLhulF+axKbU8lA8iFJou1m4s8qiHmkzIZXZZwgelCT7DiG1wikZmbXVpiz8 70Zg6qAPVWRwaPMI48Fd3ip3DYVSQEgMtNr/ARR4qwvccoKXglNnQMoU7+C+7/g9DjRz dS4YcJF48ZfT+lAk6UA1wgz/mV+oYm8KYDS2jWaH/eAh9bWrTEnRVaGXYAKQW8O5fiOB SVRg== X-Gm-Message-State: AJIora8xSHGQMFPHYu+CeUw98ZO80WKmNrYFbiDZbGUWd8S8l/GySWAX 3CNcD4nGVW5q59slizPGjwvmmQ== X-Google-Smtp-Source: AGRyM1tPE5BGonvjBbfeMeK14L4zurk2Dxeu0LauZuOywqFsXgqlODuGNOxklTBDSWSObXD9grko0g== X-Received: by 2002:a05:600c:8a9:b0:3a0:3d78:21a4 with SMTP id l41-20020a05600c08a900b003a03d7821a4mr40585392wmp.112.1657098294939; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:54 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 21/33] crypto: rockchip: rework rk_handle_req function Date: Wed, 6 Jul 2022 09:04:00 +0000 Message-Id: <20220706090412.806101-22-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 8B611C43334 for ; Wed, 6 Jul 2022 09:07:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231939AbiGFJHF (ORCPT ); Wed, 6 Jul 2022 05:07:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232876AbiGFJGE (ORCPT ); Wed, 6 Jul 2022 05:06:04 -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 7EDD324F1D for ; Wed, 6 Jul 2022 02:04:56 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id m184so8445782wme.1 for ; Wed, 06 Jul 2022 02:04:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ByxNWxvo3Qxto7Y23zUxo9nNTozJns03C6t8K9dbr0w=; b=Uj6A4VQMorRDpukAwKo3mZYizpLwaXmXw3lMifLZfkNvlTsXxaOCOXSNIwnm7GfcHL 6ob6kzQY/T//oE3PC27+bx2vNVultePS61OJLn36+bTtfkh8ZiU24sO9+IS2hSGjtPXv BmNJpmexSVy7EUqT9sXD90kSeF2GcAfKCo8ZR1+vXqwuV4mYpMRBtj8DOha/L6H4FVVr hO2ljaI/Q+d6f/BKhElVy7LS9GvB5L8uKJDWuyIZM86KPO2R5DeiOo8yLI2YfD8PkiA9 kCMdnW66aFFNLs5sRF6rI6sg6Pg78NTJj6ELBnzzo9qa9jTzbdTw22P24VKRDM5Jnq+H lLnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ByxNWxvo3Qxto7Y23zUxo9nNTozJns03C6t8K9dbr0w=; b=m6xdIUOrLgBhq4yjwXEcoMZcCyqg/4KxbXcYlpSAsK9h/zwsMmFyh28bMAcnCT0BOZ IJXraybKi1Lkc8R/6tiEJhuI2/lJkcpWIfDy2bZEWc0t/Fuh0wxI+5ot87Kdm6j3PWPg vIa48Kqc8awkXTKLUYOG0ReweNL4veZ5KlfDWLlyn2q/aaJnHzCJehMggxCIcmdtoMmH 2gHb2zzHFVz68hIFcm70962EyFaNHKQdVaLzBrSLYo5Ywicp6pYzkPoOA2ZK9Y9o0Rx5 6k6v8+aj87jsRlYTzWNyjrdFAuVT2F0eoHNZd70g4lT6dPnWc/BkHW3OKAusgM4CkaaO +XMw== X-Gm-Message-State: AJIora/hKoClDDmp03DND5L2Ajacx5J07+XCU1K8j7sKTu9IGFT39fvo AU3i0chI/dAcqFLNEkV0hGqxQQ== X-Google-Smtp-Source: AGRyM1sbbL9OFOe0vMUyFtYyzwsesNGIbCCct5C0zRev6g+zKLrjo/jGIAovgbyi6B6L3LuGTV9hgQ== X-Received: by 2002:a05:600c:500a:b0:3a1:8c53:9bd5 with SMTP id n10-20020a05600c500a00b003a18c539bd5mr29827788wmr.82.1657098295936; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:55 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 22/33] crypto: rockchip: use a rk_crypto_info variable instead of lot of indirection Date: Wed, 6 Jul 2022 09:04:01 +0000 Message-Id: <20220706090412.806101-23-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 3D5E2CCA47C for ; Wed, 6 Jul 2022 09:07:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233010AbiGFJHy (ORCPT ); Wed, 6 Jul 2022 05:07:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232935AbiGFJGV (ORCPT ); Wed, 6 Jul 2022 05:06:21 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E0BBB24F39 for ; Wed, 6 Jul 2022 02:05:02 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id l40-20020a05600c1d2800b003a18adff308so8911141wms.5 for ; Wed, 06 Jul 2022 02:05:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0KerGvUzdejWLAwshDyy9ppWCWrJnFuYbHleK5z5lUU=; b=cOcyzI19J2bwcidkSWv6IYChVJ99SgUBngiNcjkB1r7bHy8FEb/EHmXmVgJy+39WrI 5blmGvmfl/D2NUpaj/q6rfywpUvhhuYaegNRmMdTMEAW83+GcS/q+MqGBx1YpCQOBsNg qBuyuXLVhgf4djHOFJbgV2qsK4Rr46EOxdkXQ2MT5ZQCGfTQHhafDZXyOSHxPEScxAyi AHAWtXQTG4qcg6cG1349R17HfqlHyjtUo/gpO2yxSxyWvKDfKJAGLqnjcxNgQoeTQYLC gjv9XDsUSccvRe6OCe8NqKOiYZLID5sJXebE6y85t7ZjV/f+m8Ytib19LC1BoziJ20nl NXGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0KerGvUzdejWLAwshDyy9ppWCWrJnFuYbHleK5z5lUU=; b=3+rj5AYcEN15jygGuQYSJ7YWAh53JDg7q2AGEaQrh2enfofl9BCnc4ffi0Q6aR0Aqa xcaufC3DGolnPeV9iRdzJQI3jG2UvdofOenMCcdLgvpmLboombNumaUktdvaPWORRsIA Tqb+b4KA0zXMMeGxuuKQblsGH0A+RRvXT6FOTwNYdZ3GlXEz4XFgjNkn/IU0KGM/ghlx AaUpgKB5HyT3hQ/CwgwN414ihdLlZTDpHKPpq7ymbontkduup7d9FbqzssBTLhxvc0mh UhNcDVqiQGlkInkPp4mT5VPe6bUOW0kMkIPYrlCD5gF0H96onJL7shdZ5t8YcvatjLsg 4Gkw== X-Gm-Message-State: AJIora/v+SJA+O1Q3DGYXBuxSI54UT0Y9UYLGvsmIgutBFgefhyByLqG oupD1XOLWVbUES3e+ILVgMyTTA== X-Google-Smtp-Source: AGRyM1tm3jF1Mm9yTBvcrOrrcNwguVUNZ62czBNqaQaZTtes5qap/g64RlerawH0KAvGyiXDXVAxDQ== X-Received: by 2002:a1c:720f:0:b0:3a0:2ac9:5231 with SMTP id n15-20020a1c720f000000b003a02ac95231mr41272448wmc.39.1657098296950; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:56 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 23/33] crypto: rockchip: use the rk_crypto_info given as parameter Date: Wed, 6 Jul 2022 09:04:02 +0000 Message-Id: <20220706090412.806101-24-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 56107C433EF for ; Wed, 6 Jul 2022 09:07:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233036AbiGFJHR (ORCPT ); Wed, 6 Jul 2022 05:07:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232895AbiGFJGG (ORCPT ); Wed, 6 Jul 2022 05:06:06 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83C3224F26 for ; Wed, 6 Jul 2022 02:04:58 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id s1so21048750wra.9 for ; Wed, 06 Jul 2022 02:04:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y1ZryWow92c9hwwvz5Hh3ukn+dkdomJWMwO/HyG9hMQ=; b=1hvxm1lYCf3dt/kNWqZz5AZEreEizX7NEtB62mDJGcxhqDzVDR6GsNQjJEw6hU3Li5 DiiKB9lR7xHFHTLRAdNpWSWuQbSURbNkL4ltJzXpRwp/LO7NlZUKRyuZNF5Er/bAPBjH fHTn0cTIeLflHz8GDaigTuF2B018PZUuJJJ4xtbR6ZbHJTTNqJHyMKENGJ+uiSownI2k CD5lvOVAK4ovTpy9ILkL1b2htX61KzBLOSOsgPiYEkLzX9zQDN5FUXrVf9eJk04sXXFR j9ASqPnC7sBOK4hXbpnemsRssUwnMlNqTMG60Jpoqpbr/89/GDSIcxJ2Q4T3Chwgbbus lRbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y1ZryWow92c9hwwvz5Hh3ukn+dkdomJWMwO/HyG9hMQ=; b=cg5CNiiCNVdsQIryNKvV5PHXUb0zUEQrZbTmASY6KVHmgC8LLkSVapA9pHMeo3PAKI ewvTaYgSUjDy0BoAkx++uMXgclWf6K0RUshBCRDo5U33t20P3CBbFxv5jZJkF0nE2SGo HT0TOXIDdoCmi5xwnzMx+0Mw3byG0staTUpOlgTFs45AXxhv+7lAHc7ktoSbac350V74 +rBWJ2SLRam/kU2QWNVDqo/j7MudnVcHlF/8szb5FbzYzw153bKZiPt85DUubss5HFRW qSML1TGXTqgboTNxCbb2K2TUsuUPg26rpdDuNVU6bwcCAWMp7fHU4BlJyQwAS7fx1kO3 egGw== X-Gm-Message-State: AJIora+7uh0ZN5PyYN20+bHP6ELR0VWsjAhrNZyjD/ya4G9/XD4ckkjR zgAEhYEZgb+FBpSzvWjL3vJDcQ== X-Google-Smtp-Source: AGRyM1uabznHJAkndj0/PP8wr1qRzCNfHAe31LWA6AzcW1fqDJpCvWnIpQT9vAyuXkgDBlb3NHxJMw== X-Received: by 2002:a5d:59a9:0:b0:21d:7ee2:8f90 with SMTP id p9-20020a5d59a9000000b0021d7ee28f90mr1317827wrr.598.1657098297942; Wed, 06 Jul 2022 02:04:57 -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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:57 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe , Krzysztof Kozlowski Subject: [PATCH v8 24/33] dt-bindings: crypto: convert rockchip-crypto to YAML Date: Wed, 6 Jul 2022 09:04:03 +0000 Message-Id: <20220706090412.806101-25-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 7D44AC433EF for ; Wed, 6 Jul 2022 09:07:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233054AbiGFJHZ (ORCPT ); Wed, 6 Jul 2022 05:07:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45438 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232798AbiGFJGH (ORCPT ); Wed, 6 Jul 2022 05:06:07 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70E3C20F7B for ; Wed, 6 Jul 2022 02:04:59 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id t17-20020a1c7711000000b003a0434b0af7so8623089wmi.0 for ; Wed, 06 Jul 2022 02:04:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X7cJlxa5ip0o5lrSA1Cq27Abc5a+ZcugcbcpPEkeHA0=; b=BfBzAqSa8w4fzWQfTTC5FNOLO2uFMVd7IYdWjSD1AGYBlpM8m5TE1ecjewFy4BzQdm FplphJsHz3EMKXLnuHO0YKsCoQMx9RNS6XtxNkdrGzCO6zQdxMATQaL8JL/UnQKwIv5c r/dKRE5+NOm78+DireDdXfXz7kYN9M2FmHCjQJNAlJkuAE5oh6lL6xe5FEcOBLKr5DYL cAAMmtZtdp+qJ+In3wyGnuARZcJJDnCvMzxpqfqdiomMHErTKlnxg2tQyzjSZRmh+EJU bAqN98KmOGhaUC5nWrNl1UZjuXvogwdsAedOnXZEBJcsl9x4KytoIM8gc4N7HlsFQAef hR4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X7cJlxa5ip0o5lrSA1Cq27Abc5a+ZcugcbcpPEkeHA0=; b=NtBOBeip7XVXJYjsH71OIaoC1uaOX1kCG8rkgaQX4W8axZP6mc3Y6LctcjDHmbNOGF aA2Gav3f5I+V4mb/8v2LdrH8tEbKhCbvdVpn2pyS9nyM7RMWsXw8uh11s7X62WaplEmu HcgLlYceTE0zcT+aej5OsHXe7aG8koRveRA1UWVF8agjoDscKLqNI8R8ySEWrzg4VC5z 9X8p0Vm+51QQ7n19HEJOXrfl5/mF0EoMgV6YPyNqCpZoR+6pmTGNy6mgfjBjaQrW9vrv nLWr7FkZCOXANFa0jIOtFeiAxtPy/uhiXp1hBu1PrS3eAY76qZPBvMHNjiVcxzPyVqUc S/4A== X-Gm-Message-State: AJIora83dM7HLvD6mCdg3d537o2lgSEl7jB/Im+6q9DAqvk8EJmxc0WI TEI+0SqpTHux0fdLsRz2589n0g== X-Google-Smtp-Source: AGRyM1utZG4kGVK/bdSC11gh5qhrQPpgTsu7xN4H/jrdTP0t32LTuyn3YGK5ZUhfv+JR9psfGdVT3Q== X-Received: by 2002:a05:600c:1f11:b0:3a1:967c:5f0d with SMTP id bd17-20020a05600c1f1100b003a1967c5f0dmr22483370wmb.26.1657098299074; Wed, 06 Jul 2022 02:04: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:58 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe , Krzysztof Kozlowski Subject: [PATCH v8 25/33] dt-bindings: crypto: rockchip: convert to new driver bindings Date: Wed, 6 Jul 2022 09:04:04 +0000 Message-Id: <20220706090412.806101-26-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 latest addition to the rockchip crypto driver need to update the driver bindings. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Corentin Labbe --- .../crypto/rockchip,rk3288-crypto.yaml | 85 +++++++++++++++++-- 1 file changed, 77 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..5bb6bf4699ff 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,88 @@ 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 + minItems: 4 + resets: + maxItems: 1 + reset-names: + items: + - const: crypto-rst + maxItems: 1 + - if: + properties: + compatible: + contains: + const: rockchip,rk3328-crypto + then: + properties: + clocks: + maxItems: 3 + clock-names: + items: + - const: hclk_master + - const: hclk_slave + - const: sclk + maxItems: 3 + resets: + maxItems: 1 + reset-names: + items: + - const: crypto-rst + maxItems: 1 + - if: + properties: + compatible: + contains: + const: rockchip,rk3399-crypto + then: + properties: + clocks: + maxItems: 3 + clock-names: + items: + - const: hclk_master + - const: hclk_slave + - const: sclk + maxItems: 3 + resets: + minItems: 3 + reset-names: + items: + - const: rst_master + - const: rst_slave + - const: crypto-rst + minItems: 3 =20 required: - compatible --=20 2.35.1 From nobody Mon May 4 10:18:56 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 7D6C7CCA485 for ; Wed, 6 Jul 2022 09:07:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232925AbiGFJHu (ORCPT ); Wed, 6 Jul 2022 05:07:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232800AbiGFJGS (ORCPT ); Wed, 6 Jul 2022 05:06:18 -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 775FF24F2A for ; Wed, 6 Jul 2022 02:05:00 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id b26so21081718wrc.2 for ; Wed, 06 Jul 2022 02:05:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZivRzjlDS3OoPoRTHkJnPDZ3sM1VA8uv4BaZC71qcQ0=; b=SoR7Ux0on4nf1Qo15rxc7uNb2HO/RqGdhLcmgjl5TJEByBP0inejUpsOr/9+9c4VNe U116K/wfR+Ufafd45lYbdRzH3rmt6Y/5FzkewGjvyiK8q6SjpI6u+1dIUiDvyYyC4Mbi kwKhdmm9RZMnCRTTCcoYZdYu+JxdHWjrAX3I2fXsey51UGDw96iSQbH4mr2/lvmIjiGJ dVtw7lH3wQ4YX72TefVnwD85Nv4XoN2RiIX5+SqTM5bBc3XRAEYGPiLNCoMlJCcOo4LV cV79VDm8OAtCOf3BIV4j55ctG2COtEOh9mUkjNzSAs8uq1AHXUA3JSxfLnYfZh/13TP/ oewA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZivRzjlDS3OoPoRTHkJnPDZ3sM1VA8uv4BaZC71qcQ0=; b=fgfrzzcNn3gPBu6GGbPVHhByZAwvMximFoSHAO96IRR8Ptnx9klpqZ//V8nT5XQ9hW t/TPVrFLWQwKa5QsUyYukw23lmsxUUgDhvzFkEwySZggpsSjT18REj9+sjCkUev7viVo Ioc506Djfcd+B1UB1wRDRkoTDgKTk9REMyDGQPiZMh7PDUXkYCAupYltKXrhWcB7CnEE iqlctMjGEA96aRq77IpYiodbS+NlBgPaqft1pHPtxsG98PW41Ec/6FlOUBJ7qkNkEEeF bwdJ6OFRnCto41oAbTu0sDoXsSQEJ0tL94FCj/M4jgpxJLkqfJOW/KjZjzqEC6JATJsV dpNQ== X-Gm-Message-State: AJIora+PjBelw+YMCxn2rS53DvoZkCc/onkhxN6n3zNNUzuxEkAIZlue 1hRxgI2a7AQdZ5SQpqcOV60D2A== X-Google-Smtp-Source: AGRyM1s0NtrzbFsGKeEvThnAUtfR0Dz41YElbKBkLJkfRZht8Yko9gJ0WTqHFIVMkhaWXaYuStEsBg== X-Received: by 2002:a5d:6e8d:0:b0:21d:7223:1e1b with SMTP id k13-20020a5d6e8d000000b0021d72231e1bmr7736406wrz.713.1657098300111; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.04.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:04:59 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe , Rob Herring Subject: [PATCH v8 26/33] clk: rk3399: use proper crypto0 name Date: Wed, 6 Jul 2022 09:04:05 +0000 Message-Id: <20220706090412.806101-27-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 --- 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 10:18:56 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 D7772CCA483 for ; Wed, 6 Jul 2022 09:07:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232810AbiGFJHr (ORCPT ); Wed, 6 Jul 2022 05:07:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232799AbiGFJGT (ORCPT ); Wed, 6 Jul 2022 05:06:19 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69F3924F33 for ; Wed, 6 Jul 2022 02:05:01 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id l68so8419142wml.3 for ; Wed, 06 Jul 2022 02:05:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QXNec13rQxx7mczo0Bb45Dl1W4/rRz+jQsRU4AeJnZM=; b=2KH0c9i5pRILecSD4cAr1i5IG81/CljsGJebd4GrlEu87GGF+p4iLvgg69UypD4DGA l545no2gU5djMfQXCkQ13fkRA6JgbOl04rIrM6ABTL0bmmCnR1jciczP2obeGis+6VaG v3YHDgcdTBNvuLmF7cDwpiCUQHw2E/SyNMjbz6/BHLG0R1x71jyIulfD0jboY1YyPPIM k9BAZp0vE4EF8p5/Xeho4rFX51MilcYI0SEO6UF+eTxIihL0BCZ5GdVEBIFl9mZV70m0 m3hNv+FivGSRxvIYos1Wgq1x6JMp3lx9XVdmv+NO6xxmbgGCXd+0QaoI5xzy42DkYErn qIqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QXNec13rQxx7mczo0Bb45Dl1W4/rRz+jQsRU4AeJnZM=; b=0lZahhqUnVwriudXPr9lmUSG6TgK8vJUau0N1lAkUfkVXEg19nPkDr3WmxQyrU8IJD /U8ns9Gkis/R34PH+IOLXSYT8pBRS4pRgCKhar2PcX9l0/frLar+bmX9PvW3XCxfoGu3 OCGkva6wJNM/9ThoNx9doCRbeNqO/judN/xgAu+XSLM2jSfdLvoWYUIk5QDnPwzc1tm3 d1Gap/S9m/bi2zx4PclTnjsWaDVsSoS7ClY++9jXyIEmrvgycnVNXrJxAqNPM6lCYMci Dv0+GA1W0k35tt/M5qEsFOZMguHLTCe6lCxoqgczZftDQif+NeEsXdJESHVRCKDu+KZg Q3BA== X-Gm-Message-State: AJIora/68+AW7TTsEa+BwvK4DoGYnnMPQCnCG/TGoEBmACnm5IbdD4KX lNK81DnOMHS5/g89uCwMH/N9MQ== X-Google-Smtp-Source: AGRyM1toIJ3bBwvAdPj3WgU9vUOPQT1BAvlEHJ5810B7GsO/4J25yaE+bYN0O90J2JbxvuU5axmchw== X-Received: by 2002:a05:600c:3788:b0:3a0:4279:5142 with SMTP id o8-20020a05600c378800b003a042795142mr38248606wmr.21.1657098301075; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:00 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 27/33] arm64: dts: rockchip: add rk3328 crypto node Date: Wed, 6 Jul 2022 09:04:06 +0000 Message-Id: <20220706090412.806101-28-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 727F4C43334 for ; Wed, 6 Jul 2022 09:07:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233064AbiGFJH5 (ORCPT ); Wed, 6 Jul 2022 05:07:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232813AbiGFJGU (ORCPT ); Wed, 6 Jul 2022 05:06:20 -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 6E32424F0A for ; Wed, 6 Jul 2022 02:05:02 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id bi22-20020a05600c3d9600b003a04de22ab6so8612143wmb.1 for ; Wed, 06 Jul 2022 02:05:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Rj/Na2p2CdSqeZMTsRP9N7r+JNYd47iwYks0u+hdyhY=; b=mKtq9ve1yeoQVoxcX9vU8Kzc4lD26BfGnICxDQSTU+FaPGF//iOE0yhM54oCSAigK9 nw9+9IBaikZ7fIBfJL5/xRtLdv6VunAaQ1NIogOf9pia8Ily3Ben5QVis32InM4k/D5T AfSj67218HVN2+GtVGePlqM0jgo2354uQNXUsMyuZAioIP9MGKGscKVmvyklsbm3pcON /aKvGA8XIweKLAH1x5YWdI/17e9p+Wtui1phg0hDbSSYqdPcnc4L6WRBNE+otZiCFUvK JXdJofacBazG0blo5TNTGr+Z/z30kJwYylSc0JUYrIBbnTaLTKIAVKYdnWsrhvS09EC+ G5kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rj/Na2p2CdSqeZMTsRP9N7r+JNYd47iwYks0u+hdyhY=; b=xMmdaLuzmHiFZeKETUVMOyy5+dQTm3I3faRhajQ9BcmUyVSp+cTk9xEJk9rhXtrtfP UNhJFc5SZBu0js3ZT5JTlAUEXcrN+mgx99uZSqG+e9JKys/7KkV+xBPunmEkHbtQKqtd 458RTlKj5CLPo/UFjU6KuNyO/tdS/be9jPzvrvQryb+05eSof0N4bLiNBjfYKHwUvnHq hY0T59fEm9/T5vN9bfgk/vJ+QFnXCpnDOj/GQ4mAABr4LldrUFgJaEBmQauaB68NcYEh Szs5eVNNpBk+mraMhSjIjM8aTQYTOL9edes/5VTBK/8mFmQTw5mibimB5/w+PVHs7seC YdJg== X-Gm-Message-State: AJIora9Ky97XGn5rTSjxlHm+79dEfjF09tinEy3/ILvb2tOcSmEO+Tnu dEJG+aX5t9QguWqUSd9UXOGdFkxlAlOWAA== X-Google-Smtp-Source: AGRyM1sAnoPrBg6uJutH5ajAxHTIlpAdgFxVpIOIcQSoVgdpXp9s7DoczGILgzfePMiGZltE3rbq0A== X-Received: by 2002:a05:600c:a18d:b0:3a0:2c9a:b3de with SMTP id id13-20020a05600ca18d00b003a02c9ab3demr40212216wmb.147.1657098302032; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:01 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 28/33] arm64: dts: rockchip: rk3399: add crypto node Date: Wed, 6 Jul 2022 09:04:07 +0000 Message-Id: <20220706090412.806101-29-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 9d5b0e8c9cca..8e5aa1ca62d1 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 "rst_master", "rst_slave", "crypto-rst"; + }; + + 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 "rst_master", "rst_slave", "crypto-rst"; + }; + i2c1: i2c@ff110000 { compatible =3D "rockchip,rk3399-i2c"; reg =3D <0x0 0xff110000 0x0 0x1000>; --=20 2.35.1 From nobody Mon May 4 10:18:56 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 37607C43334 for ; Wed, 6 Jul 2022 09:08:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233096AbiGFJID (ORCPT ); Wed, 6 Jul 2022 05:08:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232823AbiGFJGX (ORCPT ); Wed, 6 Jul 2022 05:06:23 -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 77AA425280 for ; Wed, 6 Jul 2022 02:05:03 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id h17so7904271wrx.0 for ; Wed, 06 Jul 2022 02:05:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YTCwVt48y9KJqKpi4AoXVBEGpD4ZzF22SRLhTWJSe6w=; b=aROmTaAGd5Uz5ErAcUPgj5Xng9693lZ8XtgK2awEuQqhxAkqjQwWM4e9bCWIzuN+uc wtw+U7lTfgBdzB7scPLu92+ZDbFpxIMPTR9qj22P+Jfxatc/rsIt/ni7zG9Xvp45Qc1j uxylZy+jPptwy6+sevgtRWzhVjd7xCO+6GlWPmrf39fqipXEwibsZdfy5CiwlqYUiO3o bom/rzprf++oFWPvrbxSimc6AV1Qqlq/sD2yufBm1H2ZYCLsKFaPm61pmYKSrp3q/amA 8suMAqn73A02BwL5qgCNRGSjHyO+yp019HEbO8oUz4qJcEuXe9LtkK0kcVIrYMrLg0+v 5Y1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YTCwVt48y9KJqKpi4AoXVBEGpD4ZzF22SRLhTWJSe6w=; b=2CtilKrMV1t32uT0LID1ApjrHxKoHBGpMXJ7a3JRJKjE8/Vh4nVwdinwEhlK3cUjSL N2UB4rBPZvdbRHpBYFQriAp0JTvvIh5oKp2BbUSp/WObmZbALiA73XXaQWzB0O+fEW1M xt6Fts3l7LAjqWexVsL7916tt4CMYtv4FCYVFTJ74q15qM3PUgp8DQ5DHs2qy2tsq09g J04hP1GFk9UOVYFqf78atNr/tF05RDpIwRC+MWjFJQseI90xPxAN6cCVhvIhADHfqVZX hBThnYs3M4CSI4ZXV4xKzZgfsVQK3miSVe/uTGH7eLPBE3/qTwwsWiqswHMM6EjQQ0es pv4w== X-Gm-Message-State: AJIora/G1uQc24Ez1Xjqk6hOBjmXaFJd33KC5CxuKsDHArvbo0QsC6NK DCjoI6ZS492QrvGCZcp88aC6wg== X-Google-Smtp-Source: AGRyM1vC9VxnuvLBjsVAM6qNEFXl5IPwmRbanNxBUua9l8GqQ2AlSl2w3qIg0HwpaHw77/ccv3FGlw== X-Received: by 2002:adf:db12:0:b0:21b:970b:e882 with SMTP id s18-20020adfdb12000000b0021b970be882mr37317063wri.6.1657098303035; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:02 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 29/33] crypto: rockchip: store crypto_info in request context Date: Wed, 6 Jul 2022 09:04:08 +0000 Message-Id: <20220706090412.806101-30-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 3C6FEC43334 for ; Wed, 6 Jul 2022 09:08:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233079AbiGFJIB (ORCPT ); Wed, 6 Jul 2022 05:08:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232621AbiGFJGf (ORCPT ); Wed, 6 Jul 2022 05:06:35 -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 706A325287 for ; Wed, 6 Jul 2022 02:05:04 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id a5so6366405wrx.12 for ; Wed, 06 Jul 2022 02:05:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ScW8Amy0Gr2Hkf7kzoiIS1O1Eux9N8ylUQeMnxBh6Sw=; b=4A5yy9kQGo4ERp7rY2PIggGhwgToU+H7F5Vixchm05HVmWIxMTCm23JSUWwZ4YrvrZ 4rLoYxOtsS5yOzF2LLnviYJiTkDqFM00MxCfLXDLimC+AT1C89H3VSjKftnxCnNU9f+Y ieNBQRYWjpG4TYMYyjmVYUdP1b8zGWiV/6AWO8XeoAap8O+x/aGhv3LsnZSnw6yGow0X FvKQ5d/0dSksvcaRkc+/8PA3wA4ibfYMcq5PXph5q0+ICVmb+jbae9VNDthaU0wces6f LUJmH0XnIiYmKMQ9NEJFrG9uAWSGWeoWvVN3SNlOUWBndCaNUtxjtlg5e1jiQVnJXNHO B+6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ScW8Amy0Gr2Hkf7kzoiIS1O1Eux9N8ylUQeMnxBh6Sw=; b=DW0BeZ5RnwM/K+exKvErmwgNpRwiJ7q0VP0DSJKVB9gqqAd45lXzveLGeWPg9qUzZb L41+UBAiBRfu2s94UyzCLEROkbu7KpGp7jSW7T8bh8ndmF/mT9mHkQlKTAH91SEcLqzH O6gcymOd2yRu26natN1EaaHJru+4FAPiNmm3WU+B6FSAuQ/TRoCwB+kp6FUPB7ky9DxT YpXizTHyuIR4zT3zejSsTIxrPTmgmn2Rl+tq98oeBdddGD/Ik99/YkACgx4MLgH29MIe +GuyJp9I1Fi20v4us5w7GYwcYTbHhlAA36FDwbeI0LCWi/Dg6XhDaj2FdfENpyEjRCaB YCQw== X-Gm-Message-State: AJIora/xJ4fupl6fN8MfzRxiELteVZtekamjvin2OOVdB/tU0a763/UV Po2GHhXLgrv2r10BU9lyaL//ZQ== X-Google-Smtp-Source: AGRyM1txrhlhWPK2Za2eFDLPM41Mg7oVNtni+D3lhM3bHh5w5qfPwPuqYoMY0QBvWftGTwBnQMY2Ow== X-Received: by 2002:adf:dc09:0:b0:218:5f6a:f5db with SMTP id t9-20020adfdc09000000b002185f6af5dbmr36469063wri.480.1657098304025; Wed, 06 Jul 2022 02:05:04 -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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:03 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 30/33] crypto: rockchip: Check for clocks numbers and their frequencies Date: Wed, 6 Jul 2022 09:04:09 +0000 Message-Id: <20220706090412.806101-31-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 5443CC433EF for ; Wed, 6 Jul 2022 09:08:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233121AbiGFJIM (ORCPT ); Wed, 6 Jul 2022 05:08:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232852AbiGFJGh (ORCPT ); Wed, 6 Jul 2022 05:06:37 -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 6247D25290 for ; Wed, 6 Jul 2022 02:05:05 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id r14so15269961wrg.1 for ; Wed, 06 Jul 2022 02:05:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/HcULCDUWUOb7zL9pkaT5teTJK7hgsOh6ToY9+UZMac=; b=jzmrHnL6AP5JP5ynKqMYe5yX2tYmFdVE8TwhZFHgWJFWW0o1xKFCEzfUtnEChQnGm/ A6fQvxFRl2SJpiM4Zj/xug3hmVwSmyjac1QgUpHLeezzF65VvWPXm1axFpEEUOV6/Tvq FmFmnBGkQtH8EGsxTiOQ3zh9mBrKz/VYH64Ram1n1qoiNJN0DeG0dPQXrNtxp3U+wfWW e1NjKc352R2J8iC4t/8fmbX8ZkB6Zor6dVY+HZIwU2XX5wv7jTxP50GPf53rIHxA+20F 12t1xepnNyAfFnfApYwl21tsc0KoW0p5KIZ1vlvUXF4b+4tt44fifPg2WA5jVg9InUm5 TAyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/HcULCDUWUOb7zL9pkaT5teTJK7hgsOh6ToY9+UZMac=; b=dFMHhrg2IdxiKZdVJNUNOWRK/4NC3FU6EcKd4oZ/gEGOmA7MVRfRvogZByNI6A9uZj ke44qJNYvoKVIWyyOltHVc+wA8S6EOVrr5SI+FiZkQf57NJqkGHXifRPjON6ZgoJyEgk m8sWlGJPKj6Q5IkqIlVQFviwk7ILeUp3vlDfFg46g4XmlD1McRHpGl183rv0tmIiyDyT W8smqhWeyxlbigWPYKhLkCsZiGoMWVf0zdxdtboD9s1PWRcXRQxcjrkiRUEarM8HzxeO 4ytemRqR1/3PK3Au4Mb/L2XcLVozAbSbnLywngLaiF9EMgFNOIxQlPgsR7N8RLHKTLzG BbQA== X-Gm-Message-State: AJIora8y0G8TI5wGBhX0+hhIqNtUPmRjvq+CDzxG3+QCT9wuSfRH7uv2 s2eDnyiox7psyEAke6stDMJbVQ== X-Google-Smtp-Source: AGRyM1vRD4rRZCFfC8x4QQPMMOy8cjZ8voHj35W/8OT3F5k7JS0Li37UwyHkRVf/XoUVjf0EDwXrnw== X-Received: by 2002:adf:fb08:0:b0:21b:af81:2ffd with SMTP id c8-20020adffb08000000b0021baf812ffdmr36963912wrr.685.1657098305026; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:04 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 31/33] crypto: rockchip: rk_ahash_reg_init use crypto_info from parameter Date: Wed, 6 Jul 2022 09:04:10 +0000 Message-Id: <20220706090412.806101-32-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 ED46FC43334 for ; Wed, 6 Jul 2022 09:08:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233109AbiGFJIH (ORCPT ); Wed, 6 Jul 2022 05:08:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232989AbiGFJGw (ORCPT ); Wed, 6 Jul 2022 05:06:52 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 56B1325296 for ; Wed, 6 Jul 2022 02:05:06 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id f2so15688100wrr.6 for ; Wed, 06 Jul 2022 02:05:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=z10vTtQ4qHSJZ9nRrmQY5lLp9Bvyc0G2kDbemdDveLc=; b=E5GE9YCmCMIhMO2D/gpbHRe1l3D7xDBrlxRw1T0NpHDSuJX2I0zJ01SA77X+Ypb95F IxH9341vzS6f9HRvGDZW1Pvfah1Ajs+GYMuuix6+XAER3HwBkC8VVVKn8re/11zSOLUY /PpGB+RRuIYMS+tnnb7gKAgXTpXUqslS3pUYbx55O7iqFoFMR5yXFZX4/XHD1KneRk27 SbYZG0c2XxXOMsPSLg0CkQOe2LamirBkkH4ropL6mvCgJ/uXVy57YtoLlOl2NbUTROU7 xs6SXcvpWeY8HlpE/xnWr7NDJiJTiGnStnPsoRqaj2Qc0zZ5J+/gJORvYosCb/3sgoWn UDWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=z10vTtQ4qHSJZ9nRrmQY5lLp9Bvyc0G2kDbemdDveLc=; b=6kzpcCnrlvoLLjjzUrNLN51Us6Ez54FOMdU9uOnIfiW00Pc/4cikSOsBd3b5X3vJi5 hH6VlMYbtDL3b4SZgoAzKZv4yw2WvaRNa1c3jMd+pZXOoYajh+TOM3Ae2PwjExmhlDDE stQBlLAxNYuNIeSZdhD8b6YvfN8Hd6GJxl62VF9abvOsGUGratEiaEhs8RXZ99VMKfql iOIxFNJCZWESBkBhVvNH1c7TNC91WvMlCOI3cJHf6mVfpYsEuGnSTdCp125t/3FK7EBa AwsX4DWQseSq88Z9R4Zjhg2c8UaYlTJ10bWT13tNcTRlVgdkLxecRqL4m7hZR/8jyPiU PwQw== X-Gm-Message-State: AJIora+ZhkX7/tjg/q5udR0LqW2thiXMuZd+RiUtSdgyqtODLPDD3fUh MxJNIcqaMzHIo+g7rDIXuHvKKA== X-Google-Smtp-Source: AGRyM1ulg96UJaCG6169ehYplV1+a5sXk+kbCnPbNNkmvYpCCQnDU08EeOTBhit7iFXQIkTZCwV3Gg== X-Received: by 2002:a05:6000:1243:b0:21d:6123:7a80 with SMTP id j3-20020a056000124300b0021d61237a80mr20483339wrx.354.1657098305981; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:05 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 32/33] crypto: rockchip: permit to have more than one reset Date: Wed, 6 Jul 2022 09:04:11 +0000 Message-Id: <20220706090412.806101-33-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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 10:18:56 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 929BEC433EF for ; Wed, 6 Jul 2022 09:08:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233139AbiGFJIN (ORCPT ); Wed, 6 Jul 2022 05:08:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232743AbiGFJGx (ORCPT ); Wed, 6 Jul 2022 05:06:53 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 797F02529F for ; Wed, 6 Jul 2022 02:05:07 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id z12so11455193wrq.7 for ; Wed, 06 Jul 2022 02:05:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QipqmHbUZGHLWu5BlBNjHs+pAuw4tqeLoTpMAyu+/es=; b=gDGpXwHRGY/7p/RFFeQQP0rfqzNe0NslrnJ0ZJTYW3I7ZMGxirM4hfH6Wqo9U3TuPO IjJ40nttP70N8YE/47mhmgpRtNBux2d7QCylqgCyWaPicxhBnOtSUAdlh5AhEoThiqFx rq8OsFyO7a7Q/mKBIrAUhPj8MKQTCK7pzTRnyGsMh3VCZ0e0cNN97/SP+M+uNbYXbB3W A643FBD2j8ghcN3GR6sNSufPMkh9kEXH3TnPSkYWUS7uloS45eJt8M3P23c7A5pongGo ULdMkGdkGO4thl4or8Cw9eKTzUh1pYp5VgAK3B/XN3kRevxoUtalya5BXYYNJIJNfUZM 2w3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QipqmHbUZGHLWu5BlBNjHs+pAuw4tqeLoTpMAyu+/es=; b=0mJmdq6RLv9JhmMQmKOLaR3FxxPC7K/NiM4jr/BJQ4FobURCNJgc8vs0OhiWjEeoCK esWsTXdmSm7s2iAHARX9SkQ0Do9VJcbjnS6oI7p5kLB1jvd2R5n0EGvrBXa7JT+rLuaR m8+PD49/HHeP7BHqPbpvwR0IQkXgGp63SbEt8wS6BJXyx1MnzvNA0o744+l2MhaMsp8v dIKuxDwNNMl+D7WLG3MnCeA8hIM/MIZVlyiu1fTmuw7wslfOKe29E697Lv+Do364ZaNJ 53XdDznycef9DJDnA4BzYmXuSqiGIX+ReRKbqtl2buwLF2P8/9/9npQzRP3uuq9vHhCG rdAA== X-Gm-Message-State: AJIora9G1as1crFXYNU0fMaipzAUpEosPkV1I4stDFGQOPIvO/XcREor jPZiez11N+hWFeccVDvC5riP6g== X-Google-Smtp-Source: AGRyM1skwT19WIXB6+P0R6c6aHo+fjYbbftLuYZNo8otvFAD+8FiLqMKZ8oLiKk8lrcWovoYVSYUTg== X-Received: by 2002:adf:d22f:0:b0:21d:6b26:8c6f with SMTP id k15-20020adfd22f000000b0021d6b268c6fmr14385816wrh.70.1657098306982; Wed, 06 Jul 2022 02:05: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 v11-20020adfe28b000000b0021d6ef34b2asm5230223wri.51.2022.07.06.02.05.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 02:05:06 -0700 (PDT) From: Corentin Labbe To: heiko@sntech.de, herbert@gondor.apana.org.au, krzysztof.kozlowski+dt@linaro.org, mturquette@baylibre.com, p.zabel@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, john@metanate.com, didi.debian@cknow.org, Corentin Labbe Subject: [PATCH v8 33/33] crypto: rockchip: Add support for RK3399 Date: Wed, 6 Jul 2022 09:04:12 +0000 Message-Id: <20220706090412.806101-34-clabbe@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706090412.806101-1-clabbe@baylibre.com> References: <20220706090412.806101-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