Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2133589imu; Thu, 24 Jan 2019 07:46:27 -0800 (PST) X-Google-Smtp-Source: ALg8bN5ZkCDcYv58NxvyLvfMksMtRftQcDWeDSVqfEy/WIJB3KRBfcuT9plZWxM92hM+Yuy7GK6J X-Received: by 2002:aa7:8802:: with SMTP id c2mr6943848pfo.20.1548344787556; Thu, 24 Jan 2019 07:46:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548344787; cv=none; d=google.com; s=arc-20160816; b=mH3K8bZTqi3bJ4zMeznAvzu0qSYDjKMIOKUsYLGSgniLvwOt6U6O5vvn1pDgyhuGp7 VruYb+qxYqJRtoTlLuBeKMowuyL5kraTH5awkPt9tYj1uySexIJoZ1CimOlJ1CY6xdOe Uw2Vvl1dWp9MSAqCm8+4t90xFL8CZXe1faHv0MHILRYSfFd6NJ+ACMuHWb0NHmfB9v+i M3Tv3fBH4cMxJRJK/0Uclawt9iWMq6FHjdYA3DEfTMtQDRZqFRF0Lit8xlLkez1nz0kU 2MHGcJEo80KchUfQKuuYywmdF4lGqXWV1oRva6TdpL8nz+mH77hNxTdxZaCQefp2Oos0 HHFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type :content-transfer-encoding:mime-version:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=bekSzHOo2GCKZ35Z2Xc2Fk5V/yJ6eHX4HVfuY/nsook=; b=QaAMANZPbimQN/DQ4O1z/rkYMD5LY6RK/gU8OhhAuL22DPL5BuEoCRGjkCd9bYVCKe Cbiapslpdj+43Oe/h//FD+gocpj1pQpskB+mT1kV5fNR227pZ/wBTWzUuSlccSeo7NTc HFIfvg7gcbcMwqslwjpE2Deoerur/XGXzy0/s3rQ22KkzvLMbZHNHnsYAINWUyLpQrFS TzPHDmVhwCQSKTInQz8EgUi0Zlf/oGfOSveSsjQpNQ+nR6o7LLyjCxKw6Scq6uwbsJj7 0x2rN/d0fqnMqmv1OsNzNUfHzeX4ttPrlxyMWCedq0Cf4fGbHTNifWbE4iqyT7sh19ez w8zA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=SWJoHpXm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j187si22837424pfg.160.2019.01.24.07.46.12; Thu, 24 Jan 2019 07:46:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=SWJoHpXm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728703AbfAXPpz (ORCPT + 99 others); Thu, 24 Jan 2019 10:45:55 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:60060 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728650AbfAXPpn (ORCPT ); Thu, 24 Jan 2019 10:45:43 -0500 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190124154541euoutp025a2df0b81e1e8c3713c6448c85b76f8d~801bUa00i1731617316euoutp02V for ; Thu, 24 Jan 2019 15:45:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20190124154541euoutp025a2df0b81e1e8c3713c6448c85b76f8d~801bUa00i1731617316euoutp02V DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1548344741; bh=bekSzHOo2GCKZ35Z2Xc2Fk5V/yJ6eHX4HVfuY/nsook=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SWJoHpXmmFBkZ2yDKSX2D16QSsvJoD6O6ry3OSfWdPiGhoYVyAe7A5XVOrhKc5JKr 36jp7nFhuqe4dien0hK0+6imSeNfGto2CgIseK+ZZPYEJ/PMORQeXsfoMmy7QNMwVD r8/nSb++bemDszZnch+6ZlfuDTVQfdwRWQ28oCeE= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20190124154541eucas1p2579b51846dc71a82d036633186e2640b~801apqYDm0830008300eucas1p2T; Thu, 24 Jan 2019 15:45:41 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 2B.31.04806.4ADD94C5; Thu, 24 Jan 2019 15:45:40 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190124154540eucas1p219536f93a4b1e9133d2859e3c38c1f66~801Z4_Kb30349403494eucas1p2P; Thu, 24 Jan 2019 15:45:40 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20190124154540eusmtrp2068ff0f0e1a58c780e5a2a2970b4df57~801ZqI8wI1826018260eusmtrp2v; Thu, 24 Jan 2019 15:45:40 +0000 (GMT) X-AuditID: cbfec7f5-34dff700000012c6-ec-5c49dda4a44e Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F3.59.04284.3ADD94C5; Thu, 24 Jan 2019 15:45:39 +0000 (GMT) Received: from AMDC3218.DIGITAL.local (unknown [106.120.51.18]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190124154539eusmtip2faf91dda7e2f8afc22b8932f35612a26~801ZFcStM2591025910eusmtip2p; Thu, 24 Jan 2019 15:45:39 +0000 (GMT) From: Kamil Konieczny To: k.konieczny@partner.samsung.com Cc: Krzysztof Kozlowski , Vladimir Zapolskiy , Herbert Xu , "David S. Miller" , linux-crypto@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Bartlomiej Zolnierkiewicz , Marek Szyprowski Subject: [PATCH v3 3/3] crypto: s5p: add AES support for Exynos5433 Date: Thu, 24 Jan 2019 16:45:21 +0100 Message-Id: <20190124154521.13589-4-k.konieczny@partner.samsung.com> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20190124154521.13589-1-k.konieczny@partner.samsung.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGKsWRmVeSWpSXmKPExsWy7djPc7pL7nrGGKzsMbTYOGM9q8Wc8y0s Ft2vZCz69v1ntDh/fgO7xf17P5ksLu+aw2Yx4/w+Jou1R+6yW/z/1czswOWxZeVNJo9tB1Q9 Nq3qZPP4t3AKi8fBd3uYPPq2rGL0+LxJLoA9issmJTUnsyy1SN8ugSvj67ZWloJXchX7d91m a2C8IdHFyMkhIWAisXPLacYuRi4OIYEVjBLn93VDOV8YJZoafrFCOJ8ZJRoPzGDpYuQAa9l9 nwkivpxR4suTeexwHR0/v7OBzGUTMJd4tP0ME4gtIqAsMfnedGaQImaB10wSG26/AksICzhL nDs2jwXEZhFQleg7vYIdxOYVcJHY3jGTDeJAeYlpq7vA6jkFXCX2TmhmgagRlDg58wmYzQxU 07x1NtgCCYFN7BIdTa/YIZpdJPrevmCGsIUlXh3fAhWXkfi/cz4ThF0usXvrM3aI5hZGibmT F0ElrCUOH7/ICvIzs4CmxPpd+hBhR4kj875Cg4JP4sZbQYgb+CQmbQN5EiTMK9HRJgRRrSsx 7/8ZVghbWqLr/zoo20Pi5O3zrBMYFWch+WYWkm9mIexdwMi8ilE8tbQ4Nz212DgvtVyvODG3 uDQvXS85P3cTIzA1nf53/OsOxn1/kg4xCnAwKvHwdhzyjBFiTSwrrsw9xCjBwawkwut60S1G iDclsbIqtSg/vqg0J7X4EKM0B4uSOG81w4NoIYH0xJLU7NTUgtQimCwTB6dUA+OtOVq5fZ+u elhVL/b2fmjzVv+pTL2R/Vk5mVjDdXtuxJ7V2b1cqWV/FM+Wku7rO86YFahIWd2NOrm7yeM/ e6F13O+H4c7iXe/33Jgg8/iKQNT1DN8tNgxHjvcoNEnl8c47uo/VeeejlRJeIldrzpT5sZ+s bY7ZudL1Vqj74t+GWswviyL59ZVYijMSgZyi4kQARt8PcUkDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsVy+t/xe7qL73rGGDScsLHYOGM9q8Wc8y0s Ft2vZCz69v1ntDh/fgO7xf17P5ksLu+aw2Yx4/w+Jou1R+6yW/z/1czswOWxZeVNJo9tB1Q9 Nq3qZPP4t3AKi8fBd3uYPPq2rGL0+LxJLoA9Ss+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRS z9DYPNbKyFRJ384mJTUnsyy1SN8uQS/j67ZWloJXchX7d91ma2C8IdHFyMEhIWAisfs+Uxcj F4eQwFJGic1bLrB3MXICxaUlGk+vZoKwhSX+XOtigyj6xCjxc8lesCI2AXOJR9vPgBWJCChL TL43nRnEZhb4yCTxZxU3iC0s4Cxx7tg8FhCbRUBVou/0CrBeXgEXie0dM9kgFshLTFvdBTaH U8BVYu+EZrB6IaCaud9msUHUC0qcnPmEBWK+vETz1tnMExgFZiFJzUKSWsDItIpRJLW0ODc9 t9hQrzgxt7g0L10vOT93EyMwgrYd+7l5B+OljcGHGAU4GJV4eDsOecYIsSaWFVfmHmKU4GBW EuF1vegWI8SbklhZlVqUH19UmpNafIjRFOiJicxSosn5wOjOK4k3NDU0t7A0NDc2NzazUBLn PW9QGSUkkJ5YkpqdmlqQWgTTx8TBKdXAWCKbmFrxcxLDqV/634JSjvOVPZQVnaBy0VV39pYg Ecc9h2aWfgv90Hqh657Dac/1QU3v61Yen/KtlGv/NmaPZtlvuz+oT9bcGTorKDxB7KG2+bPj C9dEbt80IdSCT+XHvSOvzicfVXz2hWH/HpWrXXfOf7m3iCtbisee70Oh8aY8Z6Vr9nw5YUos xRmJhlrMRcWJAP5kMI+2AgAA X-CMS-MailID: 20190124154540eucas1p219536f93a4b1e9133d2859e3c38c1f66 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20190124154540eucas1p219536f93a4b1e9133d2859e3c38c1f66 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190124154540eucas1p219536f93a4b1e9133d2859e3c38c1f66 References: <20190124154521.13589-1-k.konieczny@partner.samsung.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add AES crypto HW acceleration for Exynos5433, with the help of SlimSSS IP. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Kamil Konieczny --- drivers/crypto/s5p-sss.c | 50 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c index 0064be0e3941..3f45cc5cb94a 100644 --- a/drivers/crypto/s5p-sss.c +++ b/drivers/crypto/s5p-sss.c @@ -232,6 +232,7 @@ * struct samsung_aes_variant - platform specific SSS driver data * @aes_offset: AES register offset from SSS module's base. * @hash_offset: HASH register offset from SSS module's base. + * @clk_names: names of clocks needed to run SSS IP * * Specifies platform specific configuration of SSS module. * Note: A structure for driver specific platform data is used for future @@ -240,6 +241,7 @@ struct samsung_aes_variant { unsigned int aes_offset; unsigned int hash_offset; + const char *clk_names[]; }; struct s5p_aes_reqctx { @@ -296,6 +298,7 @@ struct s5p_aes_ctx { struct s5p_aes_dev { struct device *dev; struct clk *clk; + struct clk *pclk; void __iomem *ioaddr; void __iomem *aes_ioaddr; int irq_fc; @@ -384,11 +387,19 @@ struct s5p_hash_ctx { static const struct samsung_aes_variant s5p_aes_data = { .aes_offset = 0x4000, .hash_offset = 0x6000, + .clk_names = { "secss", }, }; static const struct samsung_aes_variant exynos_aes_data = { .aes_offset = 0x200, .hash_offset = 0x400, + .clk_names = { "secss", }, +}; + +static const struct samsung_aes_variant exynos5433_slim_aes_data = { + .aes_offset = 0x400, + .hash_offset = 0x800, + .clk_names = { "pclk", "aclk", }, }; static const struct of_device_id s5p_sss_dt_match[] = { @@ -400,6 +411,10 @@ static const struct of_device_id s5p_sss_dt_match[] = { .compatible = "samsung,exynos4210-secss", .data = &exynos_aes_data, }, + { + .compatible = "samsung,exynos5433-slim-sss", + .data = &exynos5433_slim_aes_data, + }, { }, }; MODULE_DEVICE_TABLE(of, s5p_sss_dt_match); @@ -2208,18 +2223,39 @@ static int s5p_aes_probe(struct platform_device *pdev) return PTR_ERR(pdata->ioaddr); } - pdata->clk = devm_clk_get(dev, "secss"); + pdata->clk = devm_clk_get(dev, variant->clk_names[0]); if (IS_ERR(pdata->clk)) { - dev_err(dev, "failed to find secss clock source\n"); + dev_err(dev, "failed to find secss clock %s\n", + variant->clk_names[0]); return -ENOENT; } err = clk_prepare_enable(pdata->clk); if (err < 0) { - dev_err(dev, "Enabling SSS clk failed, err %d\n", err); + dev_err(dev, "Enabling clock %s failed, err %d\n", + variant->clk_names[0], err); return err; } + if (variant->clk_names[1]) { + pdata->pclk = devm_clk_get(dev, variant->clk_names[1]); + if (IS_ERR(pdata->pclk)) { + dev_err(dev, "failed to find clock %s\n", + variant->clk_names[1]); + err = -ENOENT; + goto err_clk; + } + + err = clk_prepare_enable(pdata->pclk); + if (err < 0) { + dev_err(dev, "Enabling clock %s failed, err %d\n", + variant->clk_names[0], err); + goto err_clk; + } + } else { + pdata->pclk = NULL; + } + spin_lock_init(&pdata->lock); spin_lock_init(&pdata->hash_lock); @@ -2295,8 +2331,11 @@ static int s5p_aes_probe(struct platform_device *pdev) tasklet_kill(&pdata->tasklet); err_irq: - clk_disable_unprepare(pdata->clk); + if (pdata->pclk) + clk_disable_unprepare(pdata->pclk); +err_clk: + clk_disable_unprepare(pdata->clk); s5p_dev = NULL; return err; @@ -2323,6 +2362,9 @@ static int s5p_aes_remove(struct platform_device *pdev) pdata->use_hash = false; } + if (pdata->pclk) + clk_disable_unprepare(pdata->pclk); + clk_disable_unprepare(pdata->clk); s5p_dev = NULL; -- 2.20.0