From patchwork Mon Aug 12 20:07:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090757 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A8A971398 for ; Mon, 12 Aug 2019 20:08:05 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9924B2856F for ; Mon, 12 Aug 2019 20:08:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8D0432857D; Mon, 12 Aug 2019 20:08:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E7A182856F for ; Mon, 12 Aug 2019 20:08:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727360AbfHLUID (ORCPT ); Mon, 12 Aug 2019 16:08:03 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:34950 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727346AbfHLUID (ORCPT ); Mon, 12 Aug 2019 16:08:03 -0400 Received: by mail-pl1-f196.google.com with SMTP id w24so48286962plp.2; Mon, 12 Aug 2019 13:08:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6x6jWn1arFYtCfxNQ45HZjLDVkH250RmOZOdF+kQcoI=; b=PJYRznlxL0VeXnkGUFm9XT4yRiHKP23qWD00ALeK6ioMlmpIURc892o6HXnyR7KfIH 6CbltQBtKQDolzQEG+po1g5JcbFUOAjFNodgK8iCnrJykOyDuA/PLEELJa4L1IX6vezb 69WhjAZWJ8t0ItWCF7wjtr9H/fvxOwmQ5vsMhQ3uREudKPjcDRKSKW0+LLVykERNpxRA eSnp2ctWXEQGTY3fG4Hcz1ILzoEe4AXV5IbPcOFmWtWO1N7PS4ki7lQS1pV6MEa0xvbt +WYmDrGwvWGTgcObpdDOh1SJd5QIlrbLCBGWdzXYIhnbE2rt9uub4conkpXy6NZr8/WP SxHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6x6jWn1arFYtCfxNQ45HZjLDVkH250RmOZOdF+kQcoI=; b=CNs/3P8LcC1wZuOQuxKJi0TIKhv+UuB7SHSWPur+56uq8ygacMUTuoJYkjbubF62JJ tW9AilFwEVvTt7W7I4UvuaIw+1+eNjjHtuGc5tbrpNK/Q1QTUtPcY/PyR7AXr0yWOZNz Jao/eoEmnoJvrNnKPgyW3BDxtaADVIk+N6Sw2rVJ+d5PVvhGTSr//+PpgXufiwWWVg+W Zo1HHpthHDwLmP946kXbXoYPEIbp5DvzkViIotoVrxbSU6kGNQXZzJWLdYSwzNi/eeZB YCu0iBAXLWrGeqWPpyC+oLZRqPqbREHB7DFhUoqidWvGcmN4BnSQ6TniP73f8CBTx6R9 6Auw== X-Gm-Message-State: APjAAAU9fTUo5gKQzYXTS3KpraJE8EKl6Gu857sd+5ukXUB/9U+4JZPj bgAkUEcLvim5/sZJ1ruEO5DYh0gz X-Google-Smtp-Source: APXvYqzzRVdrygTg90yQc/eHwvD5s55dQrJ/JAAtS25b+D9bH5jrnitKW0n2hxmguHOU9py5BFsRNw== X-Received: by 2002:a17:902:524:: with SMTP id 33mr22156644plf.27.1565640481908; Mon, 12 Aug 2019 13:08:01 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.00 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:01 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , =?utf-8?q?Horia_Geant=C4=83?= , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 01/15] crypto: caam - move DMA mask selection into a function Date: Mon, 12 Aug 2019 13:07:25 -0700 Message-Id: <20190812200739.30389-2-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Exactly the same code to figure out DMA mask is repeated twice in the driver code. To avoid repetition, move that logic into a standalone subroutine in intern.h. While at it re-shuffle the code to make it more readable with early returns. Signed-off-by: Andrey Smirnov Reviewed-by: Horia Geantă Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/ctrl.c | 11 +---------- drivers/crypto/caam/intern.h | 20 ++++++++++++++++++++ drivers/crypto/caam/jr.c | 15 +-------------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 4e43ca4d3656..e674d8770cdb 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -688,16 +688,7 @@ static int caam_probe(struct platform_device *pdev) JRSTART_JR1_START | JRSTART_JR2_START | JRSTART_JR3_START); - if (sizeof(dma_addr_t) == sizeof(u64)) { - if (caam_dpaa2) - ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(49)); - else if (of_device_is_compatible(nprop, "fsl,sec-v5.0")) - ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40)); - else - ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(36)); - } else { - ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32)); - } + ret = dma_set_mask_and_coherent(dev, caam_get_dma_mask(dev)); if (ret) { dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret); goto iounmap_ctrl; diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 6af84bbc612c..ec25d260fa40 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -10,6 +10,8 @@ #ifndef INTERN_H #define INTERN_H +#include "ctrl.h" + /* Currently comes from Kconfig param as a ^2 (driver-required) */ #define JOBR_DEPTH (1 << CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE) @@ -215,4 +217,22 @@ DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n"); DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n"); #endif +static inline u64 caam_get_dma_mask(struct device *dev) +{ + struct device_node *nprop = dev->of_node; + + if (sizeof(dma_addr_t) != sizeof(u64)) + return DMA_BIT_MASK(32); + + if (caam_dpaa2) + return DMA_BIT_MASK(49); + + if (of_device_is_compatible(nprop, "fsl,sec-v5.0-job-ring") || + of_device_is_compatible(nprop, "fsl,sec-v5.0")) + return DMA_BIT_MASK(40); + + return DMA_BIT_MASK(36); +} + + #endif /* INTERN_H */ diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index cea811fed320..4b25b2fa3d02 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -543,20 +543,7 @@ static int caam_jr_probe(struct platform_device *pdev) jrpriv->rregs = (struct caam_job_ring __iomem __force *)ctrl; - if (sizeof(dma_addr_t) == sizeof(u64)) { - if (caam_dpaa2) - error = dma_set_mask_and_coherent(jrdev, - DMA_BIT_MASK(49)); - else if (of_device_is_compatible(nprop, - "fsl,sec-v5.0-job-ring")) - error = dma_set_mask_and_coherent(jrdev, - DMA_BIT_MASK(40)); - else - error = dma_set_mask_and_coherent(jrdev, - DMA_BIT_MASK(36)); - } else { - error = dma_set_mask_and_coherent(jrdev, DMA_BIT_MASK(32)); - } + error = dma_set_mask_and_coherent(jrdev, caam_get_dma_mask(jrdev)); if (error) { dev_err(jrdev, "dma_set_mask_and_coherent failed (%d)\n", error); From patchwork Mon Aug 12 20:07:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090785 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 527DE112C for ; Mon, 12 Aug 2019 20:09:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 436A528569 for ; Mon, 12 Aug 2019 20:09:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 36B612857B; Mon, 12 Aug 2019 20:09:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B3BF28569 for ; Mon, 12 Aug 2019 20:09:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727431AbfHLUJB (ORCPT ); Mon, 12 Aug 2019 16:09:01 -0400 Received: from mail-pl1-f195.google.com ([209.85.214.195]:36562 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727362AbfHLUIF (ORCPT ); Mon, 12 Aug 2019 16:08:05 -0400 Received: by mail-pl1-f195.google.com with SMTP id g4so1814214plo.3; Mon, 12 Aug 2019 13:08:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=njaaX+v3zVOgi3btPb1Cd4Fk2+OoSqjziBc/o7zS7Q0=; b=Zsqe74PzQiv+1qJLJBRUKHHHT5g5G02GNK+EzQOPVDnW7Or2p2pEhL3s6BjC49W4IN zVG/DzMYCRZsyjhlUtfhmlhSYLir9E2S/XTKE22eTCTnh8SP7jvUN1WOakxW5doH1Sly KzOctGcmZzuU65elVDyHtxydHkhk3qY/Z96z2sxqxtLK1HapQHYMEbxNxzKEz6RSbHRH GUYSgRK8gxsUgEWNaKFiz8KlRRfxJulCvzY0S242P1/+BRSdHxF93YtGWumxCgJwPKvj OQ6wh6K0iY++G7R4irNwFtddEPPz81CogDq8r3xyTDIAxQF0PO27fuzgHnBp6gg2QYsi RAcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=njaaX+v3zVOgi3btPb1Cd4Fk2+OoSqjziBc/o7zS7Q0=; b=VweJpkvxjNb5F7oACMSQAOuC27FKbjkLPLsbfP8VLDHym4aGmKdgbdLf0JaYzNrzAg jJADT79ovnZmtb6eBvBa88lh3aHZH0bbEuAeUAaUQK4b2RypFEj17PAGT1KeXiUKJCNx gpHrfH58Ou0IrWzcOe6IQBmUb8oOWkxVljp4ppOTdew7O8wYF7VfNe7QelxzqnRzUdrv FZnw5JeK3JhlNI0PiTiiGgC/E1p+e5nkb4g36+j6szbTKzzTPwaN//KzWnEAsSk49eor bsLRZpfMg+YqCpcTI8NJ+cZxAH9LopGssHX4bS5mBd9mTiMYjljRZ5497YHCx7Vej4KH 9HGg== X-Gm-Message-State: APjAAAVaiutiCuBF9kcJRMaDJ8XeoCeCgpIHWRZO0bbuy50Y0f9FbG2L kxN8nnMNe0kULf1DAVjjs0PKSFOI X-Google-Smtp-Source: APXvYqxpyrE68uOIrlE/3PWVLv4sb4Y4QKN7VMxHTTjOmEZNtO80PSx7AJF1pDVAAIhSX7+rX3yDkQ== X-Received: by 2002:a17:902:8543:: with SMTP id d3mr27655116plo.80.1565640483357; Mon, 12 Aug 2019 13:08:03 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.01 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:02 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Leonard Crestez , Iuliana Prodan , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , linux-kernel@vger.kernel.org Subject: [PATCH v7 02/15] crypto: caam - simplfy clock initialization Date: Mon, 12 Aug 2019 13:07:26 -0700 Message-Id: <20190812200739.30389-3-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Simplify clock initialization code by converting it to use clk-bulk, devres and soc_device_match() match table. No functional change intended. Signed-off-by: Andrey Smirnov Reviewed-by: Leonard Crestez Tested-by: Iuliana Prodan Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/ctrl.c | 199 ++++++++++++++++------------------- drivers/crypto/caam/intern.h | 7 +- 2 files changed, 94 insertions(+), 112 deletions(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index e674d8770cdb..ef6ebe63652a 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -25,16 +25,6 @@ EXPORT_SYMBOL(caam_dpaa2); #include "qi.h" #endif -/* - * i.MX targets tend to have clock control subsystems that can - * enable/disable clocking to our device. - */ -static inline struct clk *caam_drv_identify_clk(struct device *dev, - char *clk_name) -{ - return caam_imx ? devm_clk_get(dev, clk_name) : NULL; -} - /* * Descriptor to instantiate RNG State Handle 0 in normal mode and * load the JDKEK, TDKEK and TDSK registers @@ -342,13 +332,6 @@ static int caam_remove(struct platform_device *pdev) /* Unmap controller region */ iounmap(ctrl); - /* shut clocks off before finalizing shutdown */ - clk_disable_unprepare(ctrlpriv->caam_ipg); - if (ctrlpriv->caam_mem) - clk_disable_unprepare(ctrlpriv->caam_mem); - clk_disable_unprepare(ctrlpriv->caam_aclk); - if (ctrlpriv->caam_emi_slow) - clk_disable_unprepare(ctrlpriv->caam_emi_slow); return 0; } @@ -497,20 +480,98 @@ static const struct of_device_id caam_match[] = { }; MODULE_DEVICE_TABLE(of, caam_match); +struct caam_imx_data { + const struct clk_bulk_data *clks; + int num_clks; +}; + +static const struct clk_bulk_data caam_imx6_clks[] = { + { .id = "ipg" }, + { .id = "mem" }, + { .id = "aclk" }, + { .id = "emi_slow" }, +}; + +static const struct caam_imx_data caam_imx6_data = { + .clks = caam_imx6_clks, + .num_clks = ARRAY_SIZE(caam_imx6_clks), +}; + +static const struct clk_bulk_data caam_imx7_clks[] = { + { .id = "ipg" }, + { .id = "aclk" }, +}; + +static const struct caam_imx_data caam_imx7_data = { + .clks = caam_imx7_clks, + .num_clks = ARRAY_SIZE(caam_imx7_clks), +}; + +static const struct clk_bulk_data caam_imx6ul_clks[] = { + { .id = "ipg" }, + { .id = "mem" }, + { .id = "aclk" }, +}; + +static const struct caam_imx_data caam_imx6ul_data = { + .clks = caam_imx6ul_clks, + .num_clks = ARRAY_SIZE(caam_imx6ul_clks), +}; + +static const struct soc_device_attribute caam_imx_soc_table[] = { + { .soc_id = "i.MX6UL", .data = &caam_imx6ul_data }, + { .soc_id = "i.MX6*", .data = &caam_imx6_data }, + { .soc_id = "i.MX7*", .data = &caam_imx7_data }, + { .family = "Freescale i.MX" }, + { /* sentinel */ } +}; + +static void disable_clocks(void *data) +{ + struct caam_drv_private *ctrlpriv = data; + + clk_bulk_disable_unprepare(ctrlpriv->num_clks, ctrlpriv->clks); +} + +static int init_clocks(struct device *dev, const struct caam_imx_data *data) +{ + struct caam_drv_private *ctrlpriv = dev_get_drvdata(dev); + int ret; + + ctrlpriv->num_clks = data->num_clks; + ctrlpriv->clks = devm_kmemdup(dev, data->clks, + data->num_clks * sizeof(data->clks[0]), + GFP_KERNEL); + if (!ctrlpriv->clks) + return -ENOMEM; + + ret = devm_clk_bulk_get(dev, ctrlpriv->num_clks, ctrlpriv->clks); + if (ret) { + dev_err(dev, + "Failed to request all necessary clocks\n"); + return ret; + } + + ret = clk_bulk_prepare_enable(ctrlpriv->num_clks, ctrlpriv->clks); + if (ret) { + dev_err(dev, + "Failed to prepare/enable all necessary clocks\n"); + return ret; + } + + return devm_add_action_or_reset(dev, disable_clocks, ctrlpriv); +} + /* Probe routine for CAAM top (controller) level */ static int caam_probe(struct platform_device *pdev) { int ret, ring, gen_sk, ent_delay = RTSDCTL_ENT_DLY_MIN; u64 caam_id; - static const struct soc_device_attribute imx_soc[] = { - {.family = "Freescale i.MX"}, - {}, - }; + const struct soc_device_attribute *imx_soc_match; struct device *dev; struct device_node *nprop, *np; struct caam_ctrl __iomem *ctrl; struct caam_drv_private *ctrlpriv; - struct clk *clk; #ifdef CONFIG_DEBUG_FS struct caam_perfmon *perfmon; #endif @@ -527,91 +588,25 @@ static int caam_probe(struct platform_device *pdev) dev_set_drvdata(dev, ctrlpriv); nprop = pdev->dev.of_node; - caam_imx = (bool)soc_device_match(imx_soc); - - /* Enable clocking */ - clk = caam_drv_identify_clk(&pdev->dev, "ipg"); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); - dev_err(&pdev->dev, - "can't identify CAAM ipg clk: %d\n", ret); - return ret; - } - ctrlpriv->caam_ipg = clk; - - if (!of_machine_is_compatible("fsl,imx7d") && - !of_machine_is_compatible("fsl,imx7s") && - !of_machine_is_compatible("fsl,imx7ulp")) { - clk = caam_drv_identify_clk(&pdev->dev, "mem"); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); - dev_err(&pdev->dev, - "can't identify CAAM mem clk: %d\n", ret); - return ret; + imx_soc_match = soc_device_match(caam_imx_soc_table); + if (imx_soc_match) { + if (!imx_soc_match->data) { + dev_err(dev, "No clock data provided for i.MX SoC"); + return -EINVAL; } - ctrlpriv->caam_mem = clk; - } - clk = caam_drv_identify_clk(&pdev->dev, "aclk"); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); - dev_err(&pdev->dev, - "can't identify CAAM aclk clk: %d\n", ret); - return ret; - } - ctrlpriv->caam_aclk = clk; - - if (!of_machine_is_compatible("fsl,imx6ul") && - !of_machine_is_compatible("fsl,imx7d") && - !of_machine_is_compatible("fsl,imx7s") && - !of_machine_is_compatible("fsl,imx7ulp")) { - clk = caam_drv_identify_clk(&pdev->dev, "emi_slow"); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); - dev_err(&pdev->dev, - "can't identify CAAM emi_slow clk: %d\n", ret); + ret = init_clocks(dev, imx_soc_match->data); + if (ret) return ret; - } - ctrlpriv->caam_emi_slow = clk; - } - - ret = clk_prepare_enable(ctrlpriv->caam_ipg); - if (ret < 0) { - dev_err(&pdev->dev, "can't enable CAAM ipg clock: %d\n", ret); - return ret; - } - - if (ctrlpriv->caam_mem) { - ret = clk_prepare_enable(ctrlpriv->caam_mem); - if (ret < 0) { - dev_err(&pdev->dev, "can't enable CAAM secure mem clock: %d\n", - ret); - goto disable_caam_ipg; - } - } - - ret = clk_prepare_enable(ctrlpriv->caam_aclk); - if (ret < 0) { - dev_err(&pdev->dev, "can't enable CAAM aclk clock: %d\n", ret); - goto disable_caam_mem; - } - - if (ctrlpriv->caam_emi_slow) { - ret = clk_prepare_enable(ctrlpriv->caam_emi_slow); - if (ret < 0) { - dev_err(&pdev->dev, "can't enable CAAM emi slow clock: %d\n", - ret); - goto disable_caam_aclk; - } } + caam_imx = (bool)imx_soc_match; /* Get configuration properties from device tree */ /* First, get register page */ ctrl = of_iomap(nprop, 0); if (ctrl == NULL) { dev_err(dev, "caam: of_iomap() failed\n"); - ret = -ENOMEM; - goto disable_caam_emi_slow; + return -ENOMEM; } caam_little_end = !(bool)(rd_reg32(&ctrl->perfmon.status) & @@ -899,16 +894,6 @@ static int caam_probe(struct platform_device *pdev) #endif iounmap_ctrl: iounmap(ctrl); -disable_caam_emi_slow: - if (ctrlpriv->caam_emi_slow) - clk_disable_unprepare(ctrlpriv->caam_emi_slow); -disable_caam_aclk: - clk_disable_unprepare(ctrlpriv->caam_aclk); -disable_caam_mem: - if (ctrlpriv->caam_mem) - clk_disable_unprepare(ctrlpriv->caam_mem); -disable_caam_ipg: - clk_disable_unprepare(ctrlpriv->caam_ipg); return ret; } diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index ec25d260fa40..1f01703f510a 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -94,11 +94,8 @@ struct caam_drv_private { Handles of the RNG4 block are initialized by this driver */ - struct clk *caam_ipg; - struct clk *caam_mem; - struct clk *caam_aclk; - struct clk *caam_emi_slow; - + struct clk_bulk_data *clks; + int num_clks; /* * debugfs entries for developer view into driver/device * variables at runtime. From patchwork Mon Aug 12 20:07:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090783 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7DE3A112C for ; Mon, 12 Aug 2019 20:09:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6DDF12856F for ; Mon, 12 Aug 2019 20:09:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 610AB2857B; Mon, 12 Aug 2019 20:09:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DBE9F28569 for ; Mon, 12 Aug 2019 20:09:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727204AbfHLUJA (ORCPT ); Mon, 12 Aug 2019 16:09:00 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:40628 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727371AbfHLUIF (ORCPT ); Mon, 12 Aug 2019 16:08:05 -0400 Received: by mail-pl1-f194.google.com with SMTP id a93so48240915pla.7; Mon, 12 Aug 2019 13:08:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x765OFLB0P9m/pbBx527mO3B9e7m04LRo1RUV+KGNXI=; b=Spq27TAslUeLVI9WFsDPPuJ0MfRsVdB4IFY1be3v2/7cX9YBIgYKORrLuq0fZhcdo2 4hQOJ6oIbwLI8UN+cokVgbTYeBY0Vs7ksgjIfaJKfwpyr4AfVEXWun7xeR/QHugUxQgS yOLqCv9Bj9M7jdGwl7WnuMnVKuQFGDo2AhT67MvqYUC0OODHFjRMaMkLoARFBVrDDKHe +GnHL5lIvHeqGsnhEuIkJ4RRl+47wniE4NJz496jFg9pZibhBqW5OEP08C1Aa0yFTHLR 42kPjsyIHFi4QN0yKX7hvYk3IBojhkXOmpn3xL124qYnyyChTL/wf7E1OsTNrmHgjxj2 KVsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=x765OFLB0P9m/pbBx527mO3B9e7m04LRo1RUV+KGNXI=; b=GpmKpu9RRet3CsUozoBW1o3XKgDbaSiI/7HPJ2vz4LZjMgw1VGmB+hUdPcvx0JTJnk /EcVSnhMv9NjC6xx/EoPNHJx54B0UGhgSMwVZliVtxAw0sGKm8ltY9vVFOaxHKSe5/4F 9VcIkhOJsFI2NhWSVPg0uiU9w9HLPLxdjKHhCe2hs7OYaKpUFeMqF5KyRtX4C34lDY2U Lw2R93/EDCy+XnfZfJyU0ckHmrRuQj4JiduwtFAsPJ5esEsE4Ti0mGsu36XUSl957rPX xGXyG88BaLld15L9/4lUyrtbrIj96FbPV6Qggem2OS+0vJ187Jh/K2s7Qg/GTwMsrf3F tOlg== X-Gm-Message-State: APjAAAUHyqZTE0SPWnrveGWgEUNbX5sAfb+f5pB/YI+AhAlLQkL53qLs vFMGt5U/sxnidK2m7qQ3V7JvwRNv X-Google-Smtp-Source: APXvYqwxJ43J243ace515kBBgbwck7VZsCIDJQRU3eoa1g4Q/Du1jjMFkkNcByixazAd+SSch6BwIA== X-Received: by 2002:a17:902:e30d:: with SMTP id cg13mr34623128plb.173.1565640484383; Mon, 12 Aug 2019 13:08:04 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.03 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:03 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , =?utf-8?q?Horia_Geant=C4=83?= , Cory Tusar , Chris Healy , Lucas Stach , Aymen Sghaier , linux-kernel@vger.kernel.org Subject: [PATCH v7 03/15] crypto: caam - convert caam_jr_init() to use devres Date: Mon, 12 Aug 2019 13:07:27 -0700 Message-Id: <20190812200739.30389-4-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Use devres to allocate all of the resources in caam_jr_init() (DMA coherent and regular memory, IRQs) drop calls to corresponding deallocation routines. No functional change intended. Signed-off-by: Andrey Smirnov Reviewed-by: Horia Geantă Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/jr.c | 48 ++++++++++++---------------------------- 1 file changed, 14 insertions(+), 34 deletions(-) diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 4b25b2fa3d02..ea02f7774f7c 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -108,25 +108,12 @@ static int caam_reset_hw_jr(struct device *dev) static int caam_jr_shutdown(struct device *dev) { struct caam_drv_private_jr *jrp = dev_get_drvdata(dev); - dma_addr_t inpbusaddr, outbusaddr; int ret; ret = caam_reset_hw_jr(dev); tasklet_kill(&jrp->irqtask); - /* Release interrupt */ - free_irq(jrp->irq, dev); - - /* Free rings */ - inpbusaddr = rd_reg64(&jrp->rregs->inpring_base); - outbusaddr = rd_reg64(&jrp->rregs->outring_base); - dma_free_coherent(dev, sizeof(dma_addr_t) * JOBR_DEPTH, - jrp->inpring, inpbusaddr); - dma_free_coherent(dev, sizeof(struct jr_outentry) * JOBR_DEPTH, - jrp->outring, outbusaddr); - kfree(jrp->entinfo); - return ret; } @@ -444,8 +431,8 @@ static int caam_jr_init(struct device *dev) tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev); /* Connect job ring interrupt handler. */ - error = request_irq(jrp->irq, caam_jr_interrupt, IRQF_SHARED, - dev_name(dev), dev); + error = devm_request_irq(dev, jrp->irq, caam_jr_interrupt, IRQF_SHARED, + dev_name(dev), dev); if (error) { dev_err(dev, "can't connect JobR %d interrupt (%d)\n", jrp->ridx, jrp->irq); @@ -454,22 +441,25 @@ static int caam_jr_init(struct device *dev) error = caam_reset_hw_jr(dev); if (error) - goto out_free_irq; + goto out_kill_deq; error = -ENOMEM; - jrp->inpring = dma_alloc_coherent(dev, sizeof(*jrp->inpring) * - JOBR_DEPTH, &inpbusaddr, GFP_KERNEL); + jrp->inpring = dmam_alloc_coherent(dev, sizeof(*jrp->inpring) * + JOBR_DEPTH, &inpbusaddr, + GFP_KERNEL); if (!jrp->inpring) - goto out_free_irq; + goto out_kill_deq; - jrp->outring = dma_alloc_coherent(dev, sizeof(*jrp->outring) * - JOBR_DEPTH, &outbusaddr, GFP_KERNEL); + jrp->outring = dmam_alloc_coherent(dev, sizeof(*jrp->outring) * + JOBR_DEPTH, &outbusaddr, + GFP_KERNEL); if (!jrp->outring) - goto out_free_inpring; + goto out_kill_deq; - jrp->entinfo = kcalloc(JOBR_DEPTH, sizeof(*jrp->entinfo), GFP_KERNEL); + jrp->entinfo = devm_kcalloc(dev, JOBR_DEPTH, sizeof(*jrp->entinfo), + GFP_KERNEL); if (!jrp->entinfo) - goto out_free_outring; + goto out_kill_deq; for (i = 0; i < JOBR_DEPTH; i++) jrp->entinfo[i].desc_addr_dma = !0; @@ -494,16 +484,6 @@ static int caam_jr_init(struct device *dev) (JOBR_INTC_TIME_THLD << JRCFG_ICTT_SHIFT)); return 0; - -out_free_outring: - dma_free_coherent(dev, sizeof(struct jr_outentry) * JOBR_DEPTH, - jrp->outring, outbusaddr); -out_free_inpring: - dma_free_coherent(dev, sizeof(dma_addr_t) * JOBR_DEPTH, - jrp->inpring, inpbusaddr); - dev_err(dev, "can't allocate job rings for %d\n", jrp->ridx); -out_free_irq: - free_irq(jrp->irq, dev); out_kill_deq: tasklet_kill(&jrp->irqtask); return error; From patchwork Mon Aug 12 20:07:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090781 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5E5791398 for ; Mon, 12 Aug 2019 20:08:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4D31228569 for ; Mon, 12 Aug 2019 20:08:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 417892857B; Mon, 12 Aug 2019 20:08:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D1E0728569 for ; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727414AbfHLUIH (ORCPT ); Mon, 12 Aug 2019 16:08:07 -0400 Received: from mail-pl1-f195.google.com ([209.85.214.195]:45770 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727393AbfHLUIG (ORCPT ); Mon, 12 Aug 2019 16:08:06 -0400 Received: by mail-pl1-f195.google.com with SMTP id y8so6183671plr.12; Mon, 12 Aug 2019 13:08:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Lf1Bp+42OlJDYkDhdg78vigaCDh56XZkLKRQRM+cZOU=; b=ivsV157OcUC416TIEiX5U0eGHo3eBnq1qK2ZvjV60lOEnlnd+y3defIb0CuhUZPj6w WUAs+TgnSu8XjvopPtG6m7PGImtagn+D9NRzwY2YghwuERVPWMy47/qNoBBHFudAFJty 1uBRYfXq0wRbmGXBX9VMirM9M+/8i89a4DMl2KKnmE34Fiv4JeGdq+muqJuHgVn2ABKY vNDP9/cO/Qr+EN/iHUp/wZAetT7pLmLA8E8MBvbBHnbFzC6AghcuRTmJ5fEu4FsymF3S W1qodTmjp1YB+nAzf7WSnJvwcQSD3aSkVutV+zf9o+Z4fEANmhAl/Q6Aa0z/p8dg1nv6 yu7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Lf1Bp+42OlJDYkDhdg78vigaCDh56XZkLKRQRM+cZOU=; b=H6tvTL4HmHAEijMV9Me3V6ADmCFtxh1wO+rqINYX7cgmK5vQhs1SnrbOw+Nm69az5g /fhIvv6IuW0rIWHRqC0qkH22QTSg/8TCMGqIFSg4YwAfhssd9RZwPNDQUC2hnJOkKXRA hAedqpcBgUFkJNmcWwvG8lrW+x7CMe41FF+xfHf69ZEznzNwR3IN2xTPTxCJm34r2Z+K SjE2gUKKbmd6oU909KgTFQnDBST5S5q0UYpkvYpAjJXuktp30nZwoVgItzGtCCxKYMk7 9mwa1jLiL2PMbunlUqnJ5B+wo63VsH9xEeju3kumdwgTTKB89eIOScZJq43ecXIH1MAU errg== X-Gm-Message-State: APjAAAW04swf544arICdU4RCReAu6Z6KMWakIduk7srfjghZhU7nq6FX odAARB9ekqqxB5lTY/tP0seIxQoY X-Google-Smtp-Source: APXvYqw4zeKLzCv1iSaK1ebEQ5H4EVn0xHfHIR6hN3TsQ/WVs7Tjarqjia4gNcPg0bOgMEKOtgG2xg== X-Received: by 2002:a17:902:2b8a:: with SMTP id l10mr34450069plb.283.1565640485748; Mon, 12 Aug 2019 13:08:05 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.04 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:05 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 04/15] crypto: caam - request JR IRQ as the last step Date: Mon, 12 Aug 2019 13:07:28 -0700 Message-Id: <20190812200739.30389-5-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to avoid any risk of JR IRQ request being handled while some of the resources used for that are not yet allocated move the code requesting said IRQ to the endo of caam_jr_init(). Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/jr.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index ea02f7774f7c..98b308de42c0 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -428,38 +428,26 @@ static int caam_jr_init(struct device *dev) jrp = dev_get_drvdata(dev); - tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev); - - /* Connect job ring interrupt handler. */ - error = devm_request_irq(dev, jrp->irq, caam_jr_interrupt, IRQF_SHARED, - dev_name(dev), dev); - if (error) { - dev_err(dev, "can't connect JobR %d interrupt (%d)\n", - jrp->ridx, jrp->irq); - goto out_kill_deq; - } - error = caam_reset_hw_jr(dev); if (error) - goto out_kill_deq; + return error; - error = -ENOMEM; jrp->inpring = dmam_alloc_coherent(dev, sizeof(*jrp->inpring) * JOBR_DEPTH, &inpbusaddr, GFP_KERNEL); if (!jrp->inpring) - goto out_kill_deq; + return -ENOMEM; jrp->outring = dmam_alloc_coherent(dev, sizeof(*jrp->outring) * JOBR_DEPTH, &outbusaddr, GFP_KERNEL); if (!jrp->outring) - goto out_kill_deq; + return -ENOMEM; jrp->entinfo = devm_kcalloc(dev, JOBR_DEPTH, sizeof(*jrp->entinfo), GFP_KERNEL); if (!jrp->entinfo) - goto out_kill_deq; + return -ENOMEM; for (i = 0; i < JOBR_DEPTH; i++) jrp->entinfo[i].desc_addr_dma = !0; @@ -483,9 +471,17 @@ static int caam_jr_init(struct device *dev) (JOBR_INTC_COUNT_THLD << JRCFG_ICDCT_SHIFT) | (JOBR_INTC_TIME_THLD << JRCFG_ICTT_SHIFT)); - return 0; -out_kill_deq: - tasklet_kill(&jrp->irqtask); + tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev); + + /* Connect job ring interrupt handler. */ + error = devm_request_irq(dev, jrp->irq, caam_jr_interrupt, IRQF_SHARED, + dev_name(dev), dev); + if (error) { + dev_err(dev, "can't connect JobR %d interrupt (%d)\n", + jrp->ridx, jrp->irq); + tasklet_kill(&jrp->irqtask); + } + return error; } From patchwork Mon Aug 12 20:07:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090779 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 84CDF1398 for ; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 728E728569 for ; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 63CB12856F; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E3C792857F for ; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726951AbfHLUIJ (ORCPT ); Mon, 12 Aug 2019 16:08:09 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:38981 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727428AbfHLUII (ORCPT ); Mon, 12 Aug 2019 16:08:08 -0400 Received: by mail-pl1-f196.google.com with SMTP id z3so1471344pln.6; Mon, 12 Aug 2019 13:08:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5TiP43SIEA9K4dnH/+GiV+LFGwLrB0dXtWpopoBzfso=; b=VZhQY1ocNC7xoRev3ZKejslwAxrAD2VhrheyHT6pRcbOdlz1zwPCOPzcW6yImLg52c es15BnEW7Dhm1OkffAQF918ZEAGOy/39YI3PNlg7R2IQF/BS2zXh+GHUy0LjJgCaiPBJ lgWAvV8jNB5eBg5B79Y7JaFKJg29JwOnJouLFSxyEmhhc0gEJhpxdHCqBGPBlRn0zuFa 2b38GdI97hsTprqLGyZF079X8r4WGUq4B6NMK+seRfAORonI0CQKJUDDGx16PDV7D1OY WBg+3LcbJI0oC95X8uZrbaUO8dtcraMGjhQYbmii0HHM1bc1nGJLiTpGZB3Kb3KLLmmd s3rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5TiP43SIEA9K4dnH/+GiV+LFGwLrB0dXtWpopoBzfso=; b=FJEWIcUmlqTxKWBALQRjwTp8bsPTV5AnhSMad204kZfMV2ShhuNXG45xb33jPYP/U1 TmSn9UIK+HO0O9JAW03VAwxhzcHU9Ue5iMdPDQIcN11LgnCtwJGagJ1uIJkudlcxG3Ha yxztYSkoYr1rHqojYe6Tbj93cg7sti0koEljdHWiAMGTTC6o04H6FlW72mjrJRp2xjPX +4EDpN1lmvNbNcJ/IGkIFwYxsFWntzionPIKou/r2smJ95yZRsR/+3GH7DFgnpHz3sSK vUQQbL7+VXE+WuPllwDJbOQsFFtfXV9UQoJQhG5fn8MI5scJw7yWS87B2wdgCABx6kEu eggA== X-Gm-Message-State: APjAAAWjArz3WafCtbZ390ho6Sq+r/GPBcw+b1p5TOnI9B01p3Wet7cg f3Pe2YNxMty8qw4lygvE+0Tu0+5j X-Google-Smtp-Source: APXvYqzz58GpN9GYcUZU0K5ME6MLIUqq3+SCjcwlHmwnDJXj5SL8MR5abFLgDb/TmflSZBNtQzwS0w== X-Received: by 2002:a17:902:b497:: with SMTP id y23mr34806936plr.68.1565640487064; Mon, 12 Aug 2019 13:08:07 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:06 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , =?utf-8?q?Horia_Geant=C4=83?= , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 05/15] crytpo: caam - make use of iowrite64*_hi_lo in wr_reg64 Date: Mon, 12 Aug 2019 13:07:29 -0700 Message-Id: <20190812200739.30389-6-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to be able to unify 64 and 32 bit implementations of wr_reg64, let's convert it to use helpers from first. Here are the steps of the transformation: 1. Inline wr_reg32 helpers: if (!caam_imx && caam_little_end) { if (caam_little_end) { iowrite32(data >> 32, (u32 __iomem *)(reg) + 1); iowrite32(data, (u32 __iomem *)(reg)); } else { iowrite32be(data >> 32, (u32 __iomem *)(reg) + 1); iowrite32be(data, (u32 __iomem *)(reg)); } } else { if (caam_little_end) { iowrite32(data >> 32, (u32 __iomem *)(reg)); iowrite32(data, (u32 __iomem *)(reg) + 1); } else { iowrite32be(data >> 32, (u32 __iomem *)(reg)); iowrite32be(data, (u32 __iomem *)(reg) + 1); } } 2. Transfrom the conditionals such that the check for 'caam_little_end' is at the top level: if (caam_little_end) { if (!caam_imx) { iowrite32(data >> 32, (u32 __iomem *)(reg) + 1); iowrite32(data, (u32 __iomem *)(reg)); } else { iowrite32(data >> 32, (u32 __iomem *)(reg)); iowrite32(data, (u32 __iomem *)(reg) + 1); } } else { iowrite32be(data >> 32, (u32 __iomem *)(reg)); iowrite32be(data, (u32 __iomem *)(reg) + 1); } 3. Invert the check for !caam_imx: if (caam_little_end) { if (caam_imx) { iowrite32(data >> 32, (u32 __iomem *)(reg)); iowrite32(data, (u32 __iomem *)(reg) + 1); } else { iowrite32(data >> 32, (u32 __iomem *)(reg) + 1); iowrite32(data, (u32 __iomem *)(reg)); } } else { iowrite32be(data >> 32, (u32 __iomem *)(reg)); iowrite32be(data, (u32 __iomem *)(reg) + 1); } 4. Make use of iowrite64* helpers from if (caam_little_end) { if (caam_imx) { iowrite32(data >> 32, (u32 __iomem *)(reg)); iowrite32(data, (u32 __iomem *)(reg) + 1); } else { iowrite64(data, reg); } } else { iowrite64be(data, reg); } No functional change intended. Signed-off-by: Andrey Smirnov Reviewed-by: Horia Geantă Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/regs.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 8591914d5c51..6e8352ac0d92 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -12,6 +12,7 @@ #include #include #include +#include /* * Architecture-specific register access methods @@ -157,12 +158,15 @@ static inline u64 rd_reg64(void __iomem *reg) #else /* CONFIG_64BIT */ static inline void wr_reg64(void __iomem *reg, u64 data) { - if (!caam_imx && caam_little_end) { - wr_reg32((u32 __iomem *)(reg) + 1, data >> 32); - wr_reg32((u32 __iomem *)(reg), data); + if (caam_little_end) { + if (caam_imx) { + iowrite32(data >> 32, (u32 __iomem *)(reg)); + iowrite32(data, (u32 __iomem *)(reg) + 1); + } else { + iowrite64(data, reg); + } } else { - wr_reg32((u32 __iomem *)(reg), data >> 32); - wr_reg32((u32 __iomem *)(reg) + 1, data); + iowrite64be(data, reg); } } From patchwork Mon Aug 12 20:07:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090777 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0D75513B1 for ; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0044128569 for ; Mon, 12 Aug 2019 20:08:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E024D2857B; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 77F172857B for ; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727483AbfHLUIM (ORCPT ); Mon, 12 Aug 2019 16:08:12 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:34036 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726925AbfHLUIJ (ORCPT ); Mon, 12 Aug 2019 16:08:09 -0400 Received: by mail-pg1-f195.google.com with SMTP id n9so43812625pgc.1; Mon, 12 Aug 2019 13:08:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=W3mqNlztumnj4XZjnpVKcSX85dy4Kmg7xsrPbi19fGU=; b=cfGR6XxvNHmo3XMtcjbqldZcf/+nOaYFAACqescotLy66IgUuclzE5aPlXuJX4jKSe s+JtLwAbDCtElO9RHrMGFgrw+uO94LvRfiOW+at0y3ZninXRF760xWwvf3WyZq28kgco BUv+clUT3XgejBeR0jc0VCxa+PkmgNwepX4c7JDG6jpT7UP46MQkjaorlemXXtz3nkXD TI/57XlvtNdWMkLbdeVxReWacDRmUdh4aokemC1T0eDXKO8Dv7SgHMvawLbTxe6JaIVH 1qQCw4z0ADVTh6aAEtS7pG7rKRC9dELlnY20U1GRfpM2edRfE5maQXvKiGHQ3JJacQZD sImQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W3mqNlztumnj4XZjnpVKcSX85dy4Kmg7xsrPbi19fGU=; b=Y4mkPrRIoi0AxPtnvBjIIThbrtZsVKOz6N6XKvJ9gMp7xMyUf15SsQpNgGKE3OsGrT jk4cm2nXYvY7F0ZjzG3nIsjJaF04GFzWiLx0qPTKM/TVrAgzZQTzNMUso/VH6tJ1KUO8 88CMf4Je3NCCKJBeN9Y1cnczuCmeISq17Xml9Q5tQ4+9bmXOn5UOkBuaA7qUjBbwkXCf Ldn7ek1c8XPdYvYXqAjFR0P0ik9mz4IirGiDhZLXUHI6u75UoK+G8UPPTHzPgGwA30iK wy1J1vlCcWz3MKhvgjpm9/W0CXQLwil7aFz1WItp8BzePJ5CMg1eg+/C2Yk/bPaabtO3 QxMA== X-Gm-Message-State: APjAAAVNpU4iP8OgIB0jQJt3+I4LeGt80csQ/0onJ50n0kYJ1Z7s5sf1 KsKwpObv7Do4gzrYQweIFCFKENiF X-Google-Smtp-Source: APXvYqzozM4srkHF8bJu/MzZqJ+Apnzs8T8Au4a3m225ce5KDLYy6W6sEWP/FCJJhqcUlfWJDH7oKQ== X-Received: by 2002:a17:90a:b394:: with SMTP id e20mr950774pjr.76.1565640488411; Mon, 12 Aug 2019 13:08:08 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.07 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:07 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , =?utf-8?q?Horia_Geant=C4=83?= , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 06/15] crypto: caam - use ioread64*_hi_lo in rd_reg64 Date: Mon, 12 Aug 2019 13:07:30 -0700 Message-Id: <20190812200739.30389-7-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Following the same transformation logic as outlined in previous commit converting wr_reg64, convert rd_reg64 to use helpers from first. No functional change intended. Signed-off-by: Andrey Smirnov Reviewed-by: Horia Geantă Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/regs.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 6e8352ac0d92..afdc0d1aa338 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -172,12 +172,20 @@ static inline void wr_reg64(void __iomem *reg, u64 data) static inline u64 rd_reg64(void __iomem *reg) { - if (!caam_imx && caam_little_end) - return ((u64)rd_reg32((u32 __iomem *)(reg) + 1) << 32 | - (u64)rd_reg32((u32 __iomem *)(reg))); + if (caam_little_end) { + if (caam_imx) { + u32 low, high; - return ((u64)rd_reg32((u32 __iomem *)(reg)) << 32 | - (u64)rd_reg32((u32 __iomem *)(reg) + 1)); + high = ioread32(reg); + low = ioread32(reg + sizeof(u32)); + + return low + ((u64)high << 32); + } else { + return ioread64(reg); + } + } else { + return ioread64be(reg); + } } #endif /* CONFIG_64BIT */ From patchwork Mon Aug 12 20:07:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090775 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E4395112C for ; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D4B2B28569 for ; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C70242857E; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5893828569 for ; Mon, 12 Aug 2019 20:08:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727481AbfHLUIL (ORCPT ); Mon, 12 Aug 2019 16:08:11 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:44551 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727467AbfHLUIK (ORCPT ); Mon, 12 Aug 2019 16:08:10 -0400 Received: by mail-pf1-f195.google.com with SMTP id c81so1235331pfc.11; Mon, 12 Aug 2019 13:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=akl89jMmEGF3yE+77IIDs3S0+ezFFeZWWakji+x8GQI=; b=Lpsk1STXXgN22FD3TEBIC0Uc4/wLctQrp57jTap+ynMnDQbDwh0TJG/zVnnw3tAB0K CIb2CJohbNpFDz8rTfrKWoATPvu2S4gIeqAA8C7PQQTVlaQIJJuHJY2suW4wY922p/lW 7SIEoHrx9XPm+kPBOELeeETcAJwhMi3Ftxp2s82v06B9S8NLb5GlL+GxYEDX8VwE3sHP VFENgJlPZnKm1K/ZNUgD2vxDqAp6IoHMPUMOWpkev//mifIMbaBlp9IVH5kQJ35e01QI aXdeZdjd6rpOEwH0opwz1qrEU/ao9QTH+eKiy1zvrfqit4YEQDm0owr9CpxV2KZZQfGC t5Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=akl89jMmEGF3yE+77IIDs3S0+ezFFeZWWakji+x8GQI=; b=G2/BFCjjuR1+MMcegpyaT9tHvnmUI4YEeP8NdgdoucbkYN18TTpuL2zk6I3Vi2DRL8 +L+Vjf+yVbAJPCA3ZK2e/SpYvgkpHOJstLPxRZvUGvz6/QAs5VH1YowDR7CarFPRBJ7H wXJgP5x5TJSqO6KhRxDSqxprj4N9OX7uyqIKuARRiRN+gPYQDSB6X8kdRzcT2oVPsRja o8trR52TswdomXz4PaHCoAQm2jkpZPO9AGQXPUr7CrZYu7D1wet9GuLbdzuTA48oWW20 /wR/AAM3PmHzSbAcM1mV0Z1iLZ2ER40FJEZ1LjFjACQ7tKW5/DBQdyGYaS0DElpzyF4L vQKA== X-Gm-Message-State: APjAAAXWzL2Q4U5/4oecL1T7dg4HzcfmrcxJbtyrffqcxFkfucCbHTrp ytt8bxml1GS51qtcvBVsUtEwXl3M X-Google-Smtp-Source: APXvYqzOhRxF+F9/X7gCWTy7L9DC9wTLIYbxLs4EKLMhbR7oP6GCrOM3+RdrhfCO0TMfBxxFTJEAFw== X-Received: by 2002:a63:e10:: with SMTP id d16mr31908280pgl.444.1565640489637; Mon, 12 Aug 2019 13:08:09 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.08 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:09 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , =?utf-8?q?Horia_Geant=C4=83?= , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 07/15] crypto: caam - drop 64-bit only wr/rd_reg64() Date: Mon, 12 Aug 2019 13:07:31 -0700 Message-Id: <20190812200739.30389-8-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Since 32-bit of both wr_reg64 and rd_reg64 now use 64-bit IO helpers, these functions should no longer be necessary. No functional change intended. Signed-off-by: Andrey Smirnov Reviewed-by: Horia Geantă Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/regs.h | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index afdc0d1aa338..fb494d14f262 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -138,24 +138,6 @@ static inline void clrsetbits_32(void __iomem *reg, u32 clear, u32 set) * base + 0x0000 : least-significant 32 bits * base + 0x0004 : most-significant 32 bits */ -#ifdef CONFIG_64BIT -static inline void wr_reg64(void __iomem *reg, u64 data) -{ - if (caam_little_end) - iowrite64(data, reg); - else - iowrite64be(data, reg); -} - -static inline u64 rd_reg64(void __iomem *reg) -{ - if (caam_little_end) - return ioread64(reg); - else - return ioread64be(reg); -} - -#else /* CONFIG_64BIT */ static inline void wr_reg64(void __iomem *reg, u64 data) { if (caam_little_end) { @@ -187,7 +169,6 @@ static inline u64 rd_reg64(void __iomem *reg) return ioread64be(reg); } } -#endif /* CONFIG_64BIT */ static inline u64 cpu_to_caam_dma64(dma_addr_t value) { From patchwork Mon Aug 12 20:07:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090759 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E95B0112C for ; Mon, 12 Aug 2019 20:08:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D7DA528569 for ; Mon, 12 Aug 2019 20:08:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CC0FC2857B; Mon, 12 Aug 2019 20:08:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4077628569 for ; Mon, 12 Aug 2019 20:08:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727485AbfHLUIM (ORCPT ); Mon, 12 Aug 2019 16:08:12 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:37241 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727476AbfHLUIM (ORCPT ); Mon, 12 Aug 2019 16:08:12 -0400 Received: by mail-pl1-f196.google.com with SMTP id bj8so1274820plb.4; Mon, 12 Aug 2019 13:08:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QK9nbOQLmR2o+Rue6/mhiH1zSdAqfrSWD3bg8umpWQ4=; b=elE0LCj5jrc//mNgwtPk7q2HxGJ9PalFmmt6jkrmQTs4USe3uO3wZhTpaIuwtnhSRI rfpkyu7zVs5SX/0PyDhB/sS2nKtSHkFvg+N/zCCd6QIk+xmBCmO3/WOrDixFhe33osqC /6Ov18Mmp/xTdjnj0o4hlnY6JmZ1WEIcuIoPFHIV2jOYFBK2sBsEM62CQjXjQNT5BfFd XvNxHcFeHG1s/p00qWGbnezj2R87UlwMikQqXeGEadgHptiwGq21Im2gaxZ+j8VcfkkC qiLF24T4N/AROwrzrpyMpoghsIh22jaXbu0LgL1ogwoHqgcJpxnEOhzPOK0AZ0R0rSm+ Saqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QK9nbOQLmR2o+Rue6/mhiH1zSdAqfrSWD3bg8umpWQ4=; b=qAuejXJbEUWln1JyYxEDqGpO1YAkMSgWmln/9IMagZQH/M+Ve4kjjxJxdL/6VkB4fM jjdDNLCdCxA3WZYflxBOCG2C5QaY3FesMe0FSNCBa7t29YrQN6ExC3JAgtzFFyeYmBhB JJsSWepiAy/IMiyG0aXC/QdIJ45m929Mf/uWtAe7YuUerP8OgXRLPX63Wjj1qOwbpZIN 7ljMC8M9oDrdtnFf1KnU5GFixQQrOsWbSRqs1vd0oPvLHl9bcoCxDr3lCgNNSwkDC5NL 9Y4l3cXhctEDQ8FXrjRu+Qyn135oJRvv9ZP+XBd4+nBChiQ2VRXsf1LRvFjLmzohNSNQ cRcA== X-Gm-Message-State: APjAAAXWtKzC6coTP+7gw/R3SiADGu+Ip79MeMeVFfNCRwAeZEUmhqMy cQTMVQtqbogdgUo1uRz+UiEEfVus X-Google-Smtp-Source: APXvYqzUcUa6q53OLTQTTjNEbd4FlLyUE6qrRLHTYIRsdsu9Vvcz8V982u7N1vxL4+dVP/3l2EX2IA== X-Received: by 2002:a17:902:a70c:: with SMTP id w12mr7069221plq.288.1565640490986; Mon, 12 Aug 2019 13:08:10 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:10 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 08/15] crypto: caam - share definition for MAX_SDLEN Date: Mon, 12 Aug 2019 13:07:32 -0700 Message-Id: <20190812200739.30389-9-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Both qi.h and cammalg_qi2.h seem to define identical versions of MAX_SDLEN. Move it to desc_constr.h to avoid duplication. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/caamalg_qi2.h | 27 --------------------------- drivers/crypto/caam/desc_constr.h | 27 +++++++++++++++++++++++++++ drivers/crypto/caam/qi.h | 26 -------------------------- 3 files changed, 27 insertions(+), 53 deletions(-) diff --git a/drivers/crypto/caam/caamalg_qi2.h b/drivers/crypto/caam/caamalg_qi2.h index be5085451053..a5e0785917b5 100644 --- a/drivers/crypto/caam/caamalg_qi2.h +++ b/drivers/crypto/caam/caamalg_qi2.h @@ -90,33 +90,6 @@ struct dpaa2_caam_priv_per_cpu { struct dpaa2_io *dpio; }; -/* - * The CAAM QI hardware constructs a job descriptor which points - * to shared descriptor (as pointed by context_a of FQ to CAAM). - * When the job descriptor is executed by deco, the whole job - * descriptor together with shared descriptor gets loaded in - * deco buffer which is 64 words long (each 32-bit). - * - * The job descriptor constructed by QI hardware has layout: - * - * HEADER (1 word) - * Shdesc ptr (1 or 2 words) - * SEQ_OUT_PTR (1 word) - * Out ptr (1 or 2 words) - * Out length (1 word) - * SEQ_IN_PTR (1 word) - * In ptr (1 or 2 words) - * In length (1 word) - * - * The shdesc ptr is used to fetch shared descriptor contents - * into deco buffer. - * - * Apart from shdesc contents, the total number of words that - * get loaded in deco buffer are '8' or '11'. The remaining words - * in deco buffer can be used for storing shared descriptor. - */ -#define MAX_SDLEN ((CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) / CAAM_CMD_SZ) - /* Length of a single buffer in the QI driver memory cache */ #define CAAM_QI_MEMCACHE_SIZE 512 diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h index 5988a26a2441..c364f9a94046 100644 --- a/drivers/crypto/caam/desc_constr.h +++ b/drivers/crypto/caam/desc_constr.h @@ -18,6 +18,33 @@ #define CAAM_DESC_BYTES_MAX (CAAM_CMD_SZ * MAX_CAAM_DESCSIZE) #define DESC_JOB_IO_LEN (CAAM_CMD_SZ * 5 + CAAM_PTR_SZ * 3) +/* + * The CAAM QI hardware constructs a job descriptor which points + * to shared descriptor (as pointed by context_a of FQ to CAAM). + * When the job descriptor is executed by deco, the whole job + * descriptor together with shared descriptor gets loaded in + * deco buffer which is 64 words long (each 32-bit). + * + * The job descriptor constructed by QI hardware has layout: + * + * HEADER (1 word) + * Shdesc ptr (1 or 2 words) + * SEQ_OUT_PTR (1 word) + * Out ptr (1 or 2 words) + * Out length (1 word) + * SEQ_IN_PTR (1 word) + * In ptr (1 or 2 words) + * In length (1 word) + * + * The shdesc ptr is used to fetch shared descriptor contents + * into deco buffer. + * + * Apart from shdesc contents, the total number of words that + * get loaded in deco buffer are '8' or '11'. The remaining words + * in deco buffer can be used for storing shared descriptor. + */ +#define MAX_SDLEN ((CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) / CAAM_CMD_SZ) + #ifdef DEBUG #define PRINT_POS do { printk(KERN_DEBUG "%02d: %s\n", desc_len(desc),\ &__func__[sizeof("append")]); } while (0) diff --git a/drivers/crypto/caam/qi.h b/drivers/crypto/caam/qi.h index f93c9c7ed430..db0549549e3b 100644 --- a/drivers/crypto/caam/qi.h +++ b/drivers/crypto/caam/qi.h @@ -14,32 +14,6 @@ #include "desc.h" #include "desc_constr.h" -/* - * CAAM hardware constructs a job descriptor which points to a shared descriptor - * (as pointed by context_a of to-CAAM FQ). - * When the job descriptor is executed by DECO, the whole job descriptor - * together with shared descriptor gets loaded in DECO buffer, which is - * 64 words (each 32-bit) long. - * - * The job descriptor constructed by CAAM hardware has the following layout: - * - * HEADER (1 word) - * Shdesc ptr (1 or 2 words) - * SEQ_OUT_PTR (1 word) - * Out ptr (1 or 2 words) - * Out length (1 word) - * SEQ_IN_PTR (1 word) - * In ptr (1 or 2 words) - * In length (1 word) - * - * The shdesc ptr is used to fetch shared descriptor contents into DECO buffer. - * - * Apart from shdesc contents, the total number of words that get loaded in DECO - * buffer are '8' or '11'. The remaining words in DECO buffer can be used for - * storing shared descriptor. - */ -#define MAX_SDLEN ((CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) / CAAM_CMD_SZ) - /* Length of a single buffer in the QI driver memory cache */ #define CAAM_QI_MEMCACHE_SIZE 768 From patchwork Mon Aug 12 20:07:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090761 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C4D6A112C for ; Mon, 12 Aug 2019 20:08:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B49B828569 for ; Mon, 12 Aug 2019 20:08:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A33F32857B; Mon, 12 Aug 2019 20:08:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0A86A28569 for ; Mon, 12 Aug 2019 20:08:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727493AbfHLUIO (ORCPT ); Mon, 12 Aug 2019 16:08:14 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:33696 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727487AbfHLUIN (ORCPT ); Mon, 12 Aug 2019 16:08:13 -0400 Received: by mail-pg1-f193.google.com with SMTP id n190so9222346pgn.0; Mon, 12 Aug 2019 13:08:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ezw5+uYU8DBMcqxS+YGEM+lHRvPRuincO7Au07w6j+w=; b=FWz4Yaf8tHYgEdMpb8LLDifPfXFu4OowhTsPLhdvdClRaQlrEAvAKOjsOgsfYmwxoP hZel8zbY/EdiriBDVzguv5LMItH3rJxyFyAfGVs1aAGC6FYuo5wTuHs58BUPRvKko8s1 +/InFh0NQYns73bH0+aMHfqRRVCJ1iWxWk4hrMv4v8dlCKRa2wEksrelUKDuGufPhaaV 65ZOtRHr4mKOsUjBQgzTVGJqpRz2J6U9WqvCo7LI7dx4VyQwmWmRltqNrLc7xK0Jv6dd n9HHDWHtSY/QE3YGs3N5aK5TwCbveQ4qMzF8mo+8oCLwArjcWcoG2RIJj7sJKKjbcO3a wZLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ezw5+uYU8DBMcqxS+YGEM+lHRvPRuincO7Au07w6j+w=; b=ontbo0EutzO+A7WuslcTA0B8tS1wJ8j2qu3Nrjd116wA9e+1eY318bw/KtgLltRN5O uvIABCY3EAwxCFn39JXwRkoBRoAkZhs7QSWDAIJYLyBS/TfbzrAVR86ikGkbnXLlMi4Y B6FlrKC+4FT6SunimJQKVTQlxfA5jlVuiPFA5ebaM1Tv27QReSc0OXgj5e2ntUcK677S bX+J1WvjOiwNi71xJcz9rEWpHG7mm8geVE3/ghwfzdHQLy1N+qt6m7nReXEY217F2J/3 XyzVnLVLOzivI47KsN/nVIppFAOiqksvq/8J1Eh2Mz92ZK4sgC2Q/5RIBkPDEXIHTYbo SDaQ== X-Gm-Message-State: APjAAAXmwVJ2Vu7WtEFLo6puIMXo2JSyWjSGTjtYSpLqJIJUiWzLP4BR 2Kxjfh+PeCyVXwNhmgviP0uslFJf X-Google-Smtp-Source: APXvYqydKFYR35MjN0XFxpChvsR2fD/2iokmjMSXQsWwSYC9lR8DSGDdHDHJ2ufExgCYEFTMpxelhw== X-Received: by 2002:a63:1c22:: with SMTP id c34mr31433404pgc.56.1565640492519; Mon, 12 Aug 2019 13:08:12 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.11 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:11 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 09/15] crypto: caam - make CAAM_PTR_SZ dynamic Date: Mon, 12 Aug 2019 13:07:33 -0700 Message-Id: <20190812200739.30389-10-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to be able to configure CAAM pointer size at run-time, which needed to support i.MX8MQ, which is 64-bit SoC with 32-bit pointer size, convert CAAM_PTR_SZ to refer to a global variable of the same name ("caam_ptr_sz") and adjust the rest of the code accordingly. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/caamalg.c | 2 +- drivers/crypto/caam/caamhash.c | 2 +- drivers/crypto/caam/caamrng.c | 2 +- drivers/crypto/caam/ctrl.c | 2 ++ drivers/crypto/caam/desc_constr.h | 12 +++++++++--- drivers/crypto/caam/error.c | 3 +++ 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index 43f18253e5b6..4dda2f50a724 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -74,7 +74,7 @@ #define CHACHAPOLY_DESC_JOB_IO_LEN (AEAD_DESC_JOB_IO_LEN + CAAM_CMD_SZ * 6) -#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) +#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN_MIN) #define DESC_MAX_USED_LEN (DESC_MAX_USED_BYTES / CAAM_CMD_SZ) struct caam_alg_entry { diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c index e4ac5d591ad6..955cb4d7c910 100644 --- a/drivers/crypto/caam/caamhash.c +++ b/drivers/crypto/caam/caamhash.c @@ -538,7 +538,7 @@ struct ahash_edesc { dma_addr_t sec4_sg_dma; int src_nents; int sec4_sg_bytes; - u32 hw_desc[DESC_JOB_IO_LEN / sizeof(u32)] ____cacheline_aligned; + u32 hw_desc[DESC_JOB_IO_LEN_MAX / sizeof(u32)] ____cacheline_aligned; struct sec4_sg_entry sec4_sg[0]; }; diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c index 561bcb535184..511f0b44e258 100644 --- a/drivers/crypto/caam/caamrng.c +++ b/drivers/crypto/caam/caamrng.c @@ -53,7 +53,7 @@ L1_CACHE_BYTES) /* length of descriptors */ -#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ * 2) +#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ_MAX * 2) #define DESC_RNG_LEN (3 * CAAM_CMD_SZ) /* Buffer, its dma address and lock */ diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index ef6ebe63652a..2f608206947a 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -601,6 +601,8 @@ static int caam_probe(struct platform_device *pdev) } caam_imx = (bool)imx_soc_match; + caam_ptr_sz = sizeof(dma_addr_t); + /* Get configuration properties from device tree */ /* First, get register page */ ctrl = of_iomap(nprop, 0); diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h index c364f9a94046..e0dc1e27ee80 100644 --- a/drivers/crypto/caam/desc_constr.h +++ b/drivers/crypto/caam/desc_constr.h @@ -14,9 +14,14 @@ #define IMMEDIATE (1 << 23) #define CAAM_CMD_SZ sizeof(u32) -#define CAAM_PTR_SZ sizeof(dma_addr_t) +#define CAAM_PTR_SZ caam_ptr_sz +#define CAAM_PTR_SZ_MAX sizeof(dma_addr_t) +#define CAAM_PTR_SZ_MIN sizeof(u32) #define CAAM_DESC_BYTES_MAX (CAAM_CMD_SZ * MAX_CAAM_DESCSIZE) -#define DESC_JOB_IO_LEN (CAAM_CMD_SZ * 5 + CAAM_PTR_SZ * 3) +#define __DESC_JOB_IO_LEN(n) (CAAM_CMD_SZ * 5 + (n) * 3) +#define DESC_JOB_IO_LEN __DESC_JOB_IO_LEN(CAAM_PTR_SZ) +#define DESC_JOB_IO_LEN_MAX __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MAX) +#define DESC_JOB_IO_LEN_MIN __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MIN) /* * The CAAM QI hardware constructs a job descriptor which points @@ -43,7 +48,7 @@ * get loaded in deco buffer are '8' or '11'. The remaining words * in deco buffer can be used for storing shared descriptor. */ -#define MAX_SDLEN ((CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) / CAAM_CMD_SZ) +#define MAX_SDLEN ((CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN_MIN) / CAAM_CMD_SZ) #ifdef DEBUG #define PRINT_POS do { printk(KERN_DEBUG "%02d: %s\n", desc_len(desc),\ @@ -64,6 +69,7 @@ (LDOFF_ENABLE_AUTO_NFIFO << LDST_OFFSET_SHIFT)) extern bool caam_little_end; +extern size_t caam_ptr_sz; /* * HW fetches 4 S/G table entries at a time, irrespective of how many entries diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c index 4f0d45865aa2..885cd364a01d 100644 --- a/drivers/crypto/caam/error.c +++ b/drivers/crypto/caam/error.c @@ -56,6 +56,9 @@ EXPORT_SYMBOL(caam_little_end); bool caam_imx; EXPORT_SYMBOL(caam_imx); +size_t caam_ptr_sz; +EXPORT_SYMBOL(caam_ptr_sz); + static const struct { u8 value; const char *error_text; From patchwork Mon Aug 12 20:07:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090773 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AA105112C for ; Mon, 12 Aug 2019 20:08:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9AC5E28569 for ; Mon, 12 Aug 2019 20:08:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8E71B2857B; Mon, 12 Aug 2019 20:08:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3106728569 for ; Mon, 12 Aug 2019 20:08:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727502AbfHLUIQ (ORCPT ); Mon, 12 Aug 2019 16:08:16 -0400 Received: from mail-pf1-f196.google.com ([209.85.210.196]:33002 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727497AbfHLUIP (ORCPT ); Mon, 12 Aug 2019 16:08:15 -0400 Received: by mail-pf1-f196.google.com with SMTP id g2so50248910pfq.0; Mon, 12 Aug 2019 13:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BNJCQUNcof8kUIy33ye35eh+3AWm1VC+G5oQzkM3XSE=; b=WHTEtjXRo8DrdN1VRmDhMPuVlMxvMxS/wA2pCm1btxsleh+qXPysnYVh2SBw9+cs9V Smrq1ymVhBkbZYnOTYKYKm8OQTpIVvesEqfDKJwTCgqdYagoxUdDkKe5fNrIkQNjnINf TpHRkerNv0m6HyHwMKsLApHXVglSzMFOUdwGfYcIUxAii/KEpaFGmTBC+WD205zuJVrp xndidFP4sBLRhfp3iz0zE0r3Kh2bxV46JAkCHxSuOK4EHbMRukOrYh9RptRHBkIaDBp9 E/6hfNDViIjtHS9c1IFENz91N45cGLZQMnvCErls6rw937S7MlIWfz66nWd+ZpCfYL/I eV+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BNJCQUNcof8kUIy33ye35eh+3AWm1VC+G5oQzkM3XSE=; b=BVH8ToZVcu+dtB+N9vA8TRMjYDwISkWFHio9aQrWQqzD1TAlbodZ8/OjVDcPGy1OJP s2K5NwywlkjjEAPUiIeQC8764AfGaoBXX94hw3J6IrULxEvvm1lJv3ZiMRBcmLHaB7Et GYcNDJhU/TYoefMPjprmUEP71+cVleHn51Pp2TtW37kg6TxZZLbkJacBv0P0v5QPU5gc NpHBs+ZDGFO+qo/8MGgd7iDyc3rM7pZGo+lNyEAmAkVYi1dwVpezIaaDI5qK2XC18dLH 9QRVPTOC0OUT6M5LzIOB/i2fuRmeocvJKxUOrteKy8WpFWvumL3HbuF8k/JGNuVyx8N4 XOGA== X-Gm-Message-State: APjAAAVfoeI3sBHX+aMoleCLdyjxNsU0jRRU+0J1PnC4DsPziTxJGg4q tYPEoAGXxS8bzUwuw+kO+1GQtRHt X-Google-Smtp-Source: APXvYqx8qUaZUXh2jl63iVLoehuXgxWsETKSHBB1LArwgeHCYiAIVWk/xu1RDPcUa4EESI7ev7VV7Q== X-Received: by 2002:a63:ff0c:: with SMTP id k12mr30297926pgi.186.1565640494071; Mon, 12 Aug 2019 13:08:14 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.12 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:13 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 10/15] crypto: caam - move cpu_to_caam_dma() selection to runtime Date: Mon, 12 Aug 2019 13:07:34 -0700 Message-Id: <20190812200739.30389-11-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of selecting the implementation of cpu_to_caam_dma()/caam_dma_to_cpu() at build time using the preprocessor, convert the code to do that at run-time using IS_ENABLED macro. This is needed to add support for i.MX8MQ. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/regs.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index fb494d14f262..511e28ba740a 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -188,13 +188,21 @@ static inline u64 caam_dma64_to_cpu(u64 value) return caam64_to_cpu(value); } -#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT -#define cpu_to_caam_dma(value) cpu_to_caam_dma64(value) -#define caam_dma_to_cpu(value) caam_dma64_to_cpu(value) -#else -#define cpu_to_caam_dma(value) cpu_to_caam32(value) -#define caam_dma_to_cpu(value) caam32_to_cpu(value) -#endif /* CONFIG_ARCH_DMA_ADDR_T_64BIT */ +static inline u64 cpu_to_caam_dma(u64 value) +{ + if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)) + return cpu_to_caam_dma64(value); + else + return cpu_to_caam32(value); +} + +static inline u64 caam_dma_to_cpu(u64 value) +{ + if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)) + return caam_dma64_to_cpu(value); + else + return caam32_to_cpu(value); +} /* * jr_outentry From patchwork Mon Aug 12 20:07:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090763 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2A3D21398 for ; Mon, 12 Aug 2019 20:08:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1B62F28569 for ; Mon, 12 Aug 2019 20:08:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0FAAE2857B; Mon, 12 Aug 2019 20:08:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 787E828569 for ; Mon, 12 Aug 2019 20:08:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727467AbfHLUIR (ORCPT ); Mon, 12 Aug 2019 16:08:17 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:34619 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727503AbfHLUIQ (ORCPT ); Mon, 12 Aug 2019 16:08:16 -0400 Received: by mail-pl1-f194.google.com with SMTP id i2so48331598plt.1; Mon, 12 Aug 2019 13:08:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5g6o6Lp80oy8EJTZ94zrh0tPPdvJH/y/GEv7sypy9+k=; b=LdC5Dy2anjKepHyMAfivGOu44OiAe/+CPdjjdp89f6Alyhr/jOnSEV0wKcW0Q/oceZ uLz/O29yOoGrT6mDAWibL2uXl43/AxFK2zZE552JwmH9rO0TWPqbsJuZ3DnOq0Mu7g6k 668aKZF+cyStmleJT4/B+A7oRKdzgWWWp86zccBP8yHhLLqpwx1Sn2QXhUV39orQo1ry O469cnlxZ0Ym46XyKmL0zaca7020AieIhfFCus0s2XonCkJwnnurlo/KY08wvAc7xYIq hjouWWeE9MF9xmf7d3GfrAmhLk0+ZDeCuvrFka8YiYb/gntUSiUPS5A9UZTNlyGSXBWp QOmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5g6o6Lp80oy8EJTZ94zrh0tPPdvJH/y/GEv7sypy9+k=; b=U2loczZ0MJHF535C1i+diVgork3pM1wgq8ImPOG4jzDN08ESlRrSKzV/x7BiiCP4hv Q06FjmdvDYYsCCfc8O8cauzU9a8QjiWvdKSKTfSsrPlt3IcjN2SA41UADiCwf4hT37EK jktW/irisYK9K926697dlgmr578TQMZXdCaD9mBrRXFiKXHddUNxhcYNLxKkwS0UuZUi NhQFyQcyxnG/zH5xTKYdQjc0Cu3RhQzAkUG7RhUAcR0y4BcY+z34J2yWIl8rPgcizxm9 IR3NvYyrAGflK2aeG/ockt0lbD/4j5W8hy9139SS/Vn0YWEzSWTm3pVua6jSQXGqaB9X gL+w== X-Gm-Message-State: APjAAAW4tylXjmVFPqCjsdz+U/uPIBYqSXn7hU/vj4NreImmFtYItmcd Nqn0z6u/mQnZMyUNYoU9NE7UtFOz X-Google-Smtp-Source: APXvYqxLCoMwtHz5ph6FHqFHb5QRFVfdvY8Da+HLZCq7g0b+Vk6FdkTbL5v5WLXM9ZHICiIu/Aj4jA== X-Received: by 2002:a17:902:e30b:: with SMTP id cg11mr35018612plb.335.1565640495502; Mon, 12 Aug 2019 13:08:15 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.14 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:14 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 11/15] crypto: caam - drop explicit usage of struct jr_outentry Date: Mon, 12 Aug 2019 13:07:35 -0700 Message-Id: <20190812200739.30389-12-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Using struct jr_outentry to specify the layout of JobR output ring is not appropriate for all 64-bit SoC, since some of them, like i.MX8MQ, use 32-bit pointers there which doesn't match 64-bit dma_addr_t. Convert existing code to use explicit helper functions to access any of the JobR output ring elements, so that the support for i.MX8MQ can be added later. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/intern.h | 2 +- drivers/crypto/caam/jr.c | 10 +++++---- drivers/crypto/caam/regs.h | 40 ++++++++++++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 1f01703f510a..081805c0f88b 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -58,7 +58,7 @@ struct caam_drv_private_jr { dma_addr_t *inpring; /* Base of input ring, alloc DMA-safe */ int out_ring_read_index; /* Output index "tail" */ int tail; /* entinfo (s/w ring) tail index */ - struct jr_outentry *outring; /* Base of output ring, DMA-safe */ + void *outring; /* Base of output ring, DMA-safe */ }; /* diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 98b308de42c0..6c91f38862e4 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -211,7 +211,7 @@ static void caam_jr_dequeue(unsigned long devarg) for (i = 0; CIRC_CNT(head, tail + i, JOBR_DEPTH) >= 1; i++) { sw_idx = (tail + i) & (JOBR_DEPTH - 1); - if (jrp->outring[hw_idx].desc == + if (jr_outentry_desc(jrp->outring, hw_idx) == caam_dma_to_cpu(jrp->entinfo[sw_idx].desc_addr_dma)) break; /* found */ } @@ -220,7 +220,8 @@ static void caam_jr_dequeue(unsigned long devarg) /* Unmap just-run descriptor so we can post-process */ dma_unmap_single(dev, - caam_dma_to_cpu(jrp->outring[hw_idx].desc), + caam_dma_to_cpu(jr_outentry_desc(jrp->outring, + hw_idx)), jrp->entinfo[sw_idx].desc_size, DMA_TO_DEVICE); @@ -231,7 +232,8 @@ static void caam_jr_dequeue(unsigned long devarg) usercall = jrp->entinfo[sw_idx].callbk; userarg = jrp->entinfo[sw_idx].cbkarg; userdesc = jrp->entinfo[sw_idx].desc_addr_virt; - userstatus = caam32_to_cpu(jrp->outring[hw_idx].jrstatus); + userstatus = caam32_to_cpu(jr_outentry_jrstatus(jrp->outring, + hw_idx)); /* * Make sure all information from the job has been obtained @@ -438,7 +440,7 @@ static int caam_jr_init(struct device *dev) if (!jrp->inpring) return -ENOMEM; - jrp->outring = dmam_alloc_coherent(dev, sizeof(*jrp->outring) * + jrp->outring = dmam_alloc_coherent(dev, SIZEOF_JR_OUTENTRY * JOBR_DEPTH, &outbusaddr, GFP_KERNEL); if (!jrp->outring) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 511e28ba740a..0cc4a48dfc30 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -71,6 +71,7 @@ extern bool caam_little_end; extern bool caam_imx; +extern size_t caam_ptr_sz; #define caam_to_cpu(len) \ static inline u##len caam##len ## _to_cpu(u##len val) \ @@ -208,10 +209,41 @@ static inline u64 caam_dma_to_cpu(u64 value) * jr_outentry * Represents each entry in a JobR output ring */ -struct jr_outentry { - dma_addr_t desc;/* Pointer to completed descriptor */ - u32 jrstatus; /* Status for completed descriptor */ -} __packed; + +static inline void jr_outentry_get(void *outring, int hw_idx, dma_addr_t *desc, + u32 *jrstatus) +{ + struct { + dma_addr_t desc;/* Pointer to completed descriptor */ + u32 jrstatus; /* Status for completed descriptor */ + } __packed *outentry = outring; + + *desc = outentry[hw_idx].desc; + *jrstatus = outentry[hw_idx].jrstatus; +} + +#define SIZEOF_JR_OUTENTRY (caam_ptr_sz + sizeof(u32)) + +static inline dma_addr_t jr_outentry_desc(void *outring, int hw_idx) +{ + dma_addr_t desc; + u32 unused; + + jr_outentry_get(outring, hw_idx, &desc, &unused); + + return desc; +} + +static inline u32 jr_outentry_jrstatus(void *outring, int hw_idx) +{ + dma_addr_t unused; + u32 jrstatus; + + jr_outentry_get(outring, hw_idx, &unused, &jrstatus); + + return jrstatus; +} + /* Version registers (Era 10+) e80-eff */ struct version_regs { From patchwork Mon Aug 12 20:07:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090771 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E1F11112C for ; Mon, 12 Aug 2019 20:08:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF44A28569 for ; Mon, 12 Aug 2019 20:08:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C316A2857B; Mon, 12 Aug 2019 20:08:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4F1B228569 for ; Mon, 12 Aug 2019 20:08:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727519AbfHLUIS (ORCPT ); Mon, 12 Aug 2019 16:08:18 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:38919 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727512AbfHLUIS (ORCPT ); Mon, 12 Aug 2019 16:08:18 -0400 Received: by mail-pf1-f194.google.com with SMTP id f17so46250775pfn.6; Mon, 12 Aug 2019 13:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TkVFUnWvJCHZSuz5kCJjBMCkT9Ucd3dtuxDhVNZWcP0=; b=eAdg+tjI3A7omgWRkKbaQG5PSDmWL8NOhp9uhbnpMX/+grYWEV3arx7AKWPITwJ6iS oc8jJ+6MZWy4u6F23V9c3CU5U71Ei+rmBLgd7hkL+vtZYbBnOeMzzqewPgT1CLE+O+LT /qlgQPvm0WVyt7Nb0dP9eJFi/oR3/StrhNV0tO5pQpUb/P6QYwt6rda2nMsifrTAdaE7 dEYPmmVKQGAtW94sFG0E34MhjIv4L0rbyKPRf7A82Eip/23UMNdyQ6cVwgQ0gFJGo+if DGeEyme/w79NPLQQYcrUIfuztIak1e/8zNdvnaSn5ri+Ql9eWXUJoid4S7vMeqhbdGZU B67g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TkVFUnWvJCHZSuz5kCJjBMCkT9Ucd3dtuxDhVNZWcP0=; b=dtQ4briB9tnWCLej8A0/aKbI2BChl6oirfzyP39D2Axev+tvaYw+AVL+7rCKJFnq4d FLXN9M9ZiLta0eOZCxB8XU9ue4tuXqcikpbDJW4F/jdSLQdOzXVoMRwSxUHyRvaX9enQ NBvnIXYlIQdpAceSsX2cO61MKTmMNr2nRe2Epz/BH9oGpt3PHDCI3i0KKYUm7jQEC4pV B8nFc3AiJQd4KYWwpyZn3V5HIY/2a6QUP1xIWolx4GpreFl4QaUoV1mlHp5mMeIXvaTg wwVFs+0O/xO0/ncsBwKmV1eN0edwAXIR75nKoRo3Wsa/2hWGDivV/mFTf8Og+4EJmfm9 VC9g== X-Gm-Message-State: APjAAAUfITz4nf+QZOWakWJHbo4WkXyXwwftkH2d4e6/nDn579rHvbRk brmJJwS9L70WqsoTI1bBJte3k66R X-Google-Smtp-Source: APXvYqw5rP9UaDzJcbd3PRjBHqcx/piuWhD0oy+tYrfqUwOQd1xg7XSxvkv+nnEnf+o6cQH26N0DXg== X-Received: by 2002:a17:90a:3321:: with SMTP id m30mr973297pjb.2.1565640496749; Mon, 12 Aug 2019 13:08:16 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.15 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:16 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 12/15] crypto: caam - don't hardcode inpentry size Date: Mon, 12 Aug 2019 13:07:36 -0700 Message-Id: <20190812200739.30389-13-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Using dma_addr_t for elements of JobR input ring is not appropriate on all 64-bit SoCs, some of which, like i.MX8MQ, use only 32-bit wide pointers there. Convert all of the code to use explicit helper function that can be later extended to support i.MX8MQ. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/intern.h | 3 ++- drivers/crypto/caam/jr.c | 4 ++-- drivers/crypto/caam/regs.h | 9 +++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 081805c0f88b..c00c7c84ec84 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -55,7 +55,8 @@ struct caam_drv_private_jr { spinlock_t inplock ____cacheline_aligned; /* Input ring index lock */ u32 inpring_avail; /* Number of free entries in input ring */ int head; /* entinfo (s/w ring) head index */ - dma_addr_t *inpring; /* Base of input ring, alloc DMA-safe */ + void *inpring; /* Base of input ring, alloc + * DMA-safe */ int out_ring_read_index; /* Output index "tail" */ int tail; /* entinfo (s/w ring) tail index */ void *outring; /* Base of output ring, DMA-safe */ diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 6c91f38862e4..417ad52615c6 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -388,7 +388,7 @@ int caam_jr_enqueue(struct device *dev, u32 *desc, head_entry->cbkarg = areq; head_entry->desc_addr_dma = desc_dma; - jrp->inpring[head] = cpu_to_caam_dma(desc_dma); + jr_inpentry_set(jrp->inpring, head, cpu_to_caam_dma(desc_dma)); /* * Guarantee that the descriptor's DMA address has been written to @@ -434,7 +434,7 @@ static int caam_jr_init(struct device *dev) if (error) return error; - jrp->inpring = dmam_alloc_coherent(dev, sizeof(*jrp->inpring) * + jrp->inpring = dmam_alloc_coherent(dev, SIZEOF_JR_INPENTRY * JOBR_DEPTH, &inpbusaddr, GFP_KERNEL); if (!jrp->inpring) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 0cc4a48dfc30..ec49f5ba9689 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -244,6 +244,15 @@ static inline u32 jr_outentry_jrstatus(void *outring, int hw_idx) return jrstatus; } +static inline void jr_inpentry_set(void *inpring, int hw_idx, dma_addr_t val) +{ + dma_addr_t *inpentry = inpring; + + inpentry[hw_idx] = val; +} + +#define SIZEOF_JR_INPENTRY caam_ptr_sz + /* Version registers (Era 10+) e80-eff */ struct version_regs { From patchwork Mon Aug 12 20:07:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090769 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6107613B1 for ; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5207228569 for ; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 45E7B2857B; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 79A8C28569 for ; Mon, 12 Aug 2019 20:08:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727528AbfHLUIU (ORCPT ); Mon, 12 Aug 2019 16:08:20 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:41025 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727524AbfHLUIT (ORCPT ); Mon, 12 Aug 2019 16:08:19 -0400 Received: by mail-pf1-f195.google.com with SMTP id 196so3075305pfz.8; Mon, 12 Aug 2019 13:08:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YWL/EWtRgg0sbDRdNWURx8pbmUBwr6hKZ+w2U7ouj2Y=; b=s3m5T27FxejpPwAjg9d8lAT16wjIr9b3GAtx4+u2QR70aCk5MIXnY1byv+RKT2sCe4 FSSl7QMNEuUJOJE1KdTeET317+ki2kbyxQLXPNuho/HOewwnec8jnobmD2RkJuaAQy1y Jxm5DdS3ibpH+0g7rY+yyryJosQMY9arU7UZbthXmVMYtmsMbyWSoLhqt0x+kjDv1hwu tZFux+5ASCSSwz5utpgSvb1HQ99XRon5J6oFDqCKbxxfdKIPF0UNKPBCG50H3J9bTNWe oQ7/8X0Somc4IbeuD0ghJkwYgeRX7+jSzlFIVRgy/2XYbXkDpLNl8OB0r6+1dY0QOlf8 Hf+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YWL/EWtRgg0sbDRdNWURx8pbmUBwr6hKZ+w2U7ouj2Y=; b=LZ+mr72MRHDoXMCeXC6sBXtkL3xrSgwDizTqcMTnpmyiSL47aIzc9U57qP37VXkp2k c7+qXND7mu1xgjn6ZaQeAfppNYbOISLshEqbyXhSC9Jaizwie7xyxOmWzWHt1FqpktV9 rUldbn2GfS9lvX3fnrT/Rux+ptxWPt80Llm25LLlL0mD7fZb0sS4qF+fNr8ifVFCNmoI O7M9yMuWJFxVPsvk7P+NSya2/n0kIYC3PQoROXl4m/5pgfbhPtP0qsANZNeHAnK5x2ac D0fbBxgyUcdN4IuW85rIEJ5ZKgjVfFK/wQoAIp1EBgOSvkmTog6mJcVkTFpHELQHbFGd G7Ww== X-Gm-Message-State: APjAAAWClL4e99jGy428dECq3seOl0+t2yU3mdqvILOyZvlVFBSyEcxJ tAF4WCq0CewjJ0cHHukntxG6suQO X-Google-Smtp-Source: APXvYqwBe6G7U34JX6GHR0bPBM/0+OZYtrWspZxbIJr2gPTfEsy/aPkknvFKt5q9GnFsgoh9d+7rhA== X-Received: by 2002:a17:90a:b104:: with SMTP id z4mr947689pjq.102.1565640498013; Mon, 12 Aug 2019 13:08:18 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.16 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:17 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 13/15] crypto: caam - force DMA address to 32-bit on 64-bit i.MX SoCs Date: Mon, 12 Aug 2019 13:07:37 -0700 Message-Id: <20190812200739.30389-14-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP i.MX8 mScale SoC still use 32-bit addresses in its CAAM implmentation, so change all of the code to be able to handle that. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/caampkc.c | 8 +++---- drivers/crypto/caam/ctrl.c | 6 +++-- drivers/crypto/caam/desc_constr.h | 10 ++++++-- drivers/crypto/caam/intern.h | 2 +- drivers/crypto/caam/pdb.h | 16 +++++++++---- drivers/crypto/caam/pkc_desc.c | 8 +++---- drivers/crypto/caam/regs.h | 39 +++++++++++++++++++++++-------- 7 files changed, 62 insertions(+), 27 deletions(-) diff --git a/drivers/crypto/caam/caampkc.c b/drivers/crypto/caam/caampkc.c index 80574106af29..0e95ad555156 100644 --- a/drivers/crypto/caam/caampkc.c +++ b/drivers/crypto/caam/caampkc.c @@ -17,13 +17,13 @@ #include "sg_sw_sec4.h" #include "caampkc.h" -#define DESC_RSA_PUB_LEN (2 * CAAM_CMD_SZ + sizeof(struct rsa_pub_pdb)) +#define DESC_RSA_PUB_LEN (2 * CAAM_CMD_SZ + SIZEOF_RSA_PUB_PDB) #define DESC_RSA_PRIV_F1_LEN (2 * CAAM_CMD_SZ + \ - sizeof(struct rsa_priv_f1_pdb)) + SIZEOF_RSA_PRIV_F1_PDB) #define DESC_RSA_PRIV_F2_LEN (2 * CAAM_CMD_SZ + \ - sizeof(struct rsa_priv_f2_pdb)) + SIZEOF_RSA_PRIV_F2_PDB) #define DESC_RSA_PRIV_F3_LEN (2 * CAAM_CMD_SZ + \ - sizeof(struct rsa_priv_f3_pdb)) + SIZEOF_RSA_PRIV_F3_PDB) #define CAAM_RSA_MAX_INPUT_SIZE 512 /* for a 4096-bit modulus */ /* buffer filled with zeros, used for padding */ diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 2f608206947a..7f6022a73865 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -598,11 +598,13 @@ static int caam_probe(struct platform_device *pdev) ret = init_clocks(dev, imx_soc_match->data); if (ret) return ret; + + caam_ptr_sz = sizeof(u32); + } else { + caam_ptr_sz = sizeof(dma_addr_t); } caam_imx = (bool)imx_soc_match; - caam_ptr_sz = sizeof(dma_addr_t); - /* Get configuration properties from device tree */ /* First, get register page */ ctrl = of_iomap(nprop, 0); diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h index e0dc1e27ee80..53b9c1ab5098 100644 --- a/drivers/crypto/caam/desc_constr.h +++ b/drivers/crypto/caam/desc_constr.h @@ -136,9 +136,15 @@ static inline void init_job_desc_pdb(u32 * const desc, u32 options, static inline void append_ptr(u32 * const desc, dma_addr_t ptr) { - dma_addr_t *offset = (dma_addr_t *)desc_end(desc); + if (caam_ptr_sz == sizeof(dma_addr_t)) { + dma_addr_t *offset = (dma_addr_t *)desc_end(desc); - *offset = cpu_to_caam_dma(ptr); + *offset = cpu_to_caam_dma(ptr); + } else { + u32 *offset = (u32 *)desc_end(desc); + + *offset = cpu_to_caam_dma(ptr); + } (*desc) = cpu_to_caam32(caam32_to_cpu(*desc) + CAAM_PTR_SZ / CAAM_CMD_SZ); diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index c00c7c84ec84..731b06becd9c 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -219,7 +219,7 @@ static inline u64 caam_get_dma_mask(struct device *dev) { struct device_node *nprop = dev->of_node; - if (sizeof(dma_addr_t) != sizeof(u64)) + if (caam_ptr_sz != sizeof(u64)) return DMA_BIT_MASK(32); if (caam_dpaa2) diff --git a/drivers/crypto/caam/pdb.h b/drivers/crypto/caam/pdb.h index 810f0bef0652..68c1fd5dee5d 100644 --- a/drivers/crypto/caam/pdb.h +++ b/drivers/crypto/caam/pdb.h @@ -512,7 +512,9 @@ struct rsa_pub_pdb { dma_addr_t n_dma; dma_addr_t e_dma; u32 f_len; -} __packed; +}; + +#define SIZEOF_RSA_PUB_PDB (2 * sizeof(u32) + 4 * caam_ptr_sz) /** * RSA Decrypt PDB - Private Key Form #1 @@ -528,7 +530,9 @@ struct rsa_priv_f1_pdb { dma_addr_t f_dma; dma_addr_t n_dma; dma_addr_t d_dma; -} __packed; +}; + +#define SIZEOF_RSA_PRIV_F1_PDB (sizeof(u32) + 4 * caam_ptr_sz) /** * RSA Decrypt PDB - Private Key Form #2 @@ -554,7 +558,9 @@ struct rsa_priv_f2_pdb { dma_addr_t tmp1_dma; dma_addr_t tmp2_dma; u32 p_q_len; -} __packed; +}; + +#define SIZEOF_RSA_PRIV_F2_PDB (2 * sizeof(u32) + 7 * caam_ptr_sz) /** * RSA Decrypt PDB - Private Key Form #3 @@ -586,6 +592,8 @@ struct rsa_priv_f3_pdb { dma_addr_t tmp1_dma; dma_addr_t tmp2_dma; u32 p_q_len; -} __packed; +}; + +#define SIZEOF_RSA_PRIV_F3_PDB (2 * sizeof(u32) + 9 * caam_ptr_sz) #endif diff --git a/drivers/crypto/caam/pkc_desc.c b/drivers/crypto/caam/pkc_desc.c index 2a8d87ea94bf..0d5ee762e036 100644 --- a/drivers/crypto/caam/pkc_desc.c +++ b/drivers/crypto/caam/pkc_desc.c @@ -13,7 +13,7 @@ /* Descriptor for RSA Public operation */ void init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb) { - init_job_desc_pdb(desc, 0, sizeof(*pdb)); + init_job_desc_pdb(desc, 0, SIZEOF_RSA_PUB_PDB); append_cmd(desc, pdb->sgf); append_ptr(desc, pdb->f_dma); append_ptr(desc, pdb->g_dma); @@ -26,7 +26,7 @@ void init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb) /* Descriptor for RSA Private operation - Private Key Form #1 */ void init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb) { - init_job_desc_pdb(desc, 0, sizeof(*pdb)); + init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F1_PDB); append_cmd(desc, pdb->sgf); append_ptr(desc, pdb->g_dma); append_ptr(desc, pdb->f_dma); @@ -39,7 +39,7 @@ void init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb) /* Descriptor for RSA Private operation - Private Key Form #2 */ void init_rsa_priv_f2_desc(u32 *desc, struct rsa_priv_f2_pdb *pdb) { - init_job_desc_pdb(desc, 0, sizeof(*pdb)); + init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F2_PDB); append_cmd(desc, pdb->sgf); append_ptr(desc, pdb->g_dma); append_ptr(desc, pdb->f_dma); @@ -56,7 +56,7 @@ void init_rsa_priv_f2_desc(u32 *desc, struct rsa_priv_f2_pdb *pdb) /* Descriptor for RSA Private operation - Private Key Form #3 */ void init_rsa_priv_f3_desc(u32 *desc, struct rsa_priv_f3_pdb *pdb) { - init_job_desc_pdb(desc, 0, sizeof(*pdb)); + init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F3_PDB); append_cmd(desc, pdb->sgf); append_ptr(desc, pdb->g_dma); append_ptr(desc, pdb->f_dma); diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index ec49f5ba9689..f7a1584046ea 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -191,7 +191,8 @@ static inline u64 caam_dma64_to_cpu(u64 value) static inline u64 cpu_to_caam_dma(u64 value) { - if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)) + if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) && + caam_ptr_sz == sizeof(u64)) return cpu_to_caam_dma64(value); else return cpu_to_caam32(value); @@ -199,7 +200,8 @@ static inline u64 cpu_to_caam_dma(u64 value) static inline u64 caam_dma_to_cpu(u64 value) { - if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)) + if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) && + caam_ptr_sz == sizeof(u64)) return caam_dma64_to_cpu(value); else return caam32_to_cpu(value); @@ -213,13 +215,24 @@ static inline u64 caam_dma_to_cpu(u64 value) static inline void jr_outentry_get(void *outring, int hw_idx, dma_addr_t *desc, u32 *jrstatus) { - struct { - dma_addr_t desc;/* Pointer to completed descriptor */ - u32 jrstatus; /* Status for completed descriptor */ - } __packed *outentry = outring; - *desc = outentry[hw_idx].desc; - *jrstatus = outentry[hw_idx].jrstatus; + if (caam_ptr_sz == sizeof(u32)) { + struct { + u32 desc; + u32 jrstatus; + } __packed *outentry = outring; + + *desc = outentry[hw_idx].desc; + *jrstatus = outentry[hw_idx].jrstatus; + } else { + struct { + dma_addr_t desc;/* Pointer to completed descriptor */ + u32 jrstatus; /* Status for completed descriptor */ + } __packed *outentry = outring; + + *desc = outentry[hw_idx].desc; + *jrstatus = outentry[hw_idx].jrstatus; + } } #define SIZEOF_JR_OUTENTRY (caam_ptr_sz + sizeof(u32)) @@ -246,9 +259,15 @@ static inline u32 jr_outentry_jrstatus(void *outring, int hw_idx) static inline void jr_inpentry_set(void *inpring, int hw_idx, dma_addr_t val) { - dma_addr_t *inpentry = inpring; + if (caam_ptr_sz == sizeof(u32)) { + u32 *inpentry = inpring; - inpentry[hw_idx] = val; + inpentry[hw_idx] = val; + } else { + dma_addr_t *inpentry = inpring; + + inpentry[hw_idx] = val; + } } #define SIZEOF_JR_INPENTRY caam_ptr_sz From patchwork Mon Aug 12 20:07:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090767 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 34103112C for ; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 26F5A2856F for ; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1B9712857D; Mon, 12 Aug 2019 20:08:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AC5582856F for ; Mon, 12 Aug 2019 20:08:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727466AbfHLUIt (ORCPT ); Mon, 12 Aug 2019 16:08:49 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:34624 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727529AbfHLUIU (ORCPT ); Mon, 12 Aug 2019 16:08:20 -0400 Received: by mail-pl1-f193.google.com with SMTP id i2so48331668plt.1; Mon, 12 Aug 2019 13:08:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Hkp3G+DyaHhtptU5+NqkGexINUv2DZxaXcPwVtwRiGs=; b=J+9Zn4c3CfEaGKcds2ANE2b1ES79dPCHFJCneGUZsFY/c8gtALj0PIa7O4PM8GaUC/ oozu4QFjqodhiCkn4L8IP/3T/gCIJq2G7Y9JDHY1ityh9MhGUVQF3K/uiKpMjFZMvFHK jbHiFxsvMrFsoIdjg4VqkJaOvSzYgtSlE1OpA6qmRGFi4yvFJIxbmMjXnv6AXR89ymCO 0wkxcKHUrRHMRxFo3IiZAe92e5nOACcosXPy1i1rWU4egPxdIzQrrWalsnHvhoYGn5/W 2VzFUOuDsDfJhelfKxXtM2WFP5a2kLKLrKPAmTUX53ZCadw4PzxufdXTkZ8lW5EUkzlk RcAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Hkp3G+DyaHhtptU5+NqkGexINUv2DZxaXcPwVtwRiGs=; b=VfEidY+X9eR0UYcyuE+aeTKhjIiMhW/5agdb+mm85JZTAZd0Ei3vr1fyE8homNBy3h KeNBi247I7sp7iW+Q1WP3oakogxh8lawvtpWgQy1sWtme4WvDfllR1iBGOD6SJfW6jl6 WTfKtqXMhkjlJIkameIU5Vcbyom9N1kpHPoWA2fMGbg4OqWx2Sx4FAIgTkjkYSWtA/Jl Gs8+qmeT3ZNv2+cEE5xp6vwB4u05g+DpZItFXN10Aa63DYCu8kfG6s0FNj/UE1+rTJLT v3X39sn2dtz55XNAqzSCTsoVcq2j2VF4TKhey0+zjkYsA/AUYF7wNSvmHPJBbwQ88eJF MWqw== X-Gm-Message-State: APjAAAVY0blwznIRMzaibTKsFgTYZjOkpZG0hZ0mKqfxcXQicJRHlpdd hPr11hcoBtRcuf05VWOFMK8vr+/N X-Google-Smtp-Source: APXvYqyysdWZVFPT5oPESIryY9EJjhxOItucmIpi3OoXVoJE6d9BCNSH7R7knDYWaVp1UGp+wIQLEQ== X-Received: by 2002:a17:902:bc41:: with SMTP id t1mr3786571plz.171.1565640499405; Mon, 12 Aug 2019 13:08:19 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.18 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:18 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 14/15] crypto: caam - always select job ring via RSR on i.MX8MQ Date: Mon, 12 Aug 2019 13:07:38 -0700 Message-Id: <20190812200739.30389-15-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Per feedback from NXP tech support the way to use register based service interface on i.MX8MQ is to follow the same set of steps outlined for the case when virtualization is enabled, regardless if it is. Current version of SRM for i.MX8MQ speaks of DECO DID_MS and DECO DID_LS registers, but apparently those are not implemented, so the case when SCFGR[VIRT_EN]=0 should be handled the same as the case when SCFGR[VIRT_EN]=1 Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/ctrl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 7f6022a73865..d3bdc56b9256 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -97,7 +97,12 @@ static inline int run_descriptor_deco0(struct device *ctrldev, u32 *desc, int i; - if (ctrlpriv->virt_en == 1) { + if (ctrlpriv->virt_en == 1 || + /* + * Apparently on i.MX8MQ it doesn't matter if virt_en == 1 + * and the following steps should be performed regardless + */ + of_machine_is_compatible("fsl,imx8mq")) { clrsetbits_32(&ctrl->deco_rsr, 0, DECORSR_JR0); while (!(rd_reg32(&ctrl->deco_rsr) & DECORSR_VALID) && From patchwork Mon Aug 12 20:07:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 11090765 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 78FEB1398 for ; Mon, 12 Aug 2019 20:08:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6A37F28569 for ; Mon, 12 Aug 2019 20:08:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5DE7F2857B; Mon, 12 Aug 2019 20:08:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0851828569 for ; Mon, 12 Aug 2019 20:08:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727545AbfHLUIW (ORCPT ); Mon, 12 Aug 2019 16:08:22 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:34627 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727533AbfHLUIV (ORCPT ); Mon, 12 Aug 2019 16:08:21 -0400 Received: by mail-pl1-f196.google.com with SMTP id i2so48331684plt.1; Mon, 12 Aug 2019 13:08:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8ZK5y0NuBb1Z+mREJ9g5/HGQ03jRD7kE7KKrJnxhVYM=; b=fxRGsySO0kbbsBdRLh1mtbTE65CtV6MFuwpRKt4K9LJMVY55aNMT1VXyVsS3dNRIdz YkwnJe+lMxK4CeGJJD5xSH4SoJYdYUG+qel+d7vr03lOh1YO9w8GpzK/F2ucHPJwF4LK VaxrjjUcfwP4hNM5AZf7f6D1KeHlJtY5Dmfce4n1cqb5uxhVo3LePOFmoqM2FOfhyOiP zLTf00oQ53KdwRPuhDDAP0RY5w3f+uTsPxobccNZBvxwjrxP/8dfwz7foSZeTwS5OKF+ xH8AHn6Zf6UBjICpnBNE6pSVoS/xGs+sRmV4s+6lu8Vd/vnUzrYw2xYJVjMkKAX10fIf lTrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8ZK5y0NuBb1Z+mREJ9g5/HGQ03jRD7kE7KKrJnxhVYM=; b=O8WEkJudIEZ2xftKl7mjfd2MX9keGJK8dF/G9ei7b4L+G/xhOIRN4pLzMnkTROrQPN Z3p/PDk90kvI3HrYOGOBED8QBPqljHZFetefR9psqyZEFTrVpU/aRH07RoN2WRERlOHK oDWvFqD8sFIa9nTTw0TrGplk3RWyIdZlEy7/opQHFMFuTRrJXNNNJtRMItNTyaqd9yRY tx8iVEABhWE5X6WEBFUyn3lIz7ai2oqDWDDY9jDtLXdEo+Gwe/Kp+NkwPo2/uR+SISY/ dQGjQHeeJJGqAccnTSpIBWKVWkkKwTfX68ychDRriFUwFUlvORwTzbMHsHnBcFIpw1gR i1vA== X-Gm-Message-State: APjAAAVm5q1/wPlN6mWoTBbIQNS2hIkSRGW6Bo2h+OVM/Ys4n4Gtjm0u POWS87t3ik6IfPsWo0hd49LGrYp/ X-Google-Smtp-Source: APXvYqyWZX7Y0c4B5mH2KVQj9lC2Ua3IlYpR8LaEqrF7WmIcKNhTBjLvCdrzF+tELO6AUCWdrOShmw== X-Received: by 2002:a17:902:3103:: with SMTP id w3mr35013368plb.84.1565640500766; Mon, 12 Aug 2019 13:08:20 -0700 (PDT) Received: from localhost.lan (c-67-185-54-80.hsd1.wa.comcast.net. [67.185.54.80]) by smtp.gmail.com with ESMTPSA id o14sm352844pjp.19.2019.08.12.13.08.19 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 12 Aug 2019 13:08:20 -0700 (PDT) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Chris Spencer , Cory Tusar , Chris Healy , Lucas Stach , =?utf-8?q?Horia_Geant=C4=83?= , Aymen Sghaier , Leonard Crestez , linux-kernel@vger.kernel.org Subject: [PATCH v7 15/15] crypto: caam - add clock entry for i.MX8MQ Date: Mon, 12 Aug 2019 13:07:39 -0700 Message-Id: <20190812200739.30389-16-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190812200739.30389-1-andrew.smirnov@gmail.com> References: <20190812200739.30389-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add clock entry needed to support i.MX8MQ. Signed-off-by: Andrey Smirnov Cc: Chris Spencer Cc: Cory Tusar Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Aymen Sghaier Cc: Leonard Crestez Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/ctrl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index d3bdc56b9256..c6c46939d534 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -527,6 +527,7 @@ static const struct soc_device_attribute caam_imx_soc_table[] = { { .soc_id = "i.MX6UL", .data = &caam_imx6ul_data }, { .soc_id = "i.MX6*", .data = &caam_imx6_data }, { .soc_id = "i.MX7*", .data = &caam_imx7_data }, + { .soc_id = "i.MX8MQ", .data = &caam_imx7_data }, { .family = "Freescale i.MX" }, { /* sentinel */ } };