From patchwork Tue Jan 7 11:51:46 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naveen Krishna Chatradhi X-Patchwork-Id: 3447261 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id DACBA9F1C4 for ; Tue, 7 Jan 2014 11:52:49 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C998120115 for ; Tue, 7 Jan 2014 11:52:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7B4222010C for ; Tue, 7 Jan 2014 11:52:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750829AbaAGLwq (ORCPT ); Tue, 7 Jan 2014 06:52:46 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:21919 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751124AbaAGLve (ORCPT ); Tue, 7 Jan 2014 06:51:34 -0500 Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MZ100IO24XWL3C0@mailout4.samsung.com>; Tue, 07 Jan 2014 20:51:32 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.125]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 05.E6.09028.44AEBC25; Tue, 07 Jan 2014 20:51:32 +0900 (KST) X-AuditID: cbfee68e-b7f566d000002344-79-52cbea4496da Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 4D.FE.28157.44AEBC25; Tue, 07 Jan 2014 20:51:32 +0900 (KST) Received: from username-ubuntu.sisodomain.com ([107.108.83.161]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MZ100C9T4XN3120@mmp1.samsung.com>; Tue, 07 Jan 2014 20:51:32 +0900 (KST) From: Naveen Krishna Ch To: linux-crypto@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: linux-kernel@vger.kernel.org, vzapolskiy@gmail.com, herbert@gondor.apana.org.au, naveenkrishna.ch@gmail.com, cpgs@samsung.com, "David S. Miller" Subject: [PATCH 2/5] crypto:s5p-sss: Add device tree and Exynos5 support Date: Tue, 07 Jan 2014 17:21:46 +0530 Message-id: <1389095509-14357-3-git-send-email-ch.naveen@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1389095509-14357-1-git-send-email-ch.naveen@samsung.com> References: <1389095509-14357-1-git-send-email-ch.naveen@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRmVeSWpSXmKPExsWyRsSkVtfl1ekgg0nXpSxeHtK0mHO+hcWi +5WMxf17P5ksLu+aw2Yx4/w+JotF2/4zW5ydc4jJgcNjy8qbTB47Z91l99h2QNWjb8sqRo/P m+QCWKO4bFJSczLLUov07RK4Mt5PWMZccESh4tfqe0wNjJukuhg5OSQETCR+PTzEBmGLSVy4 tx7I5uIQEljKKLHjZSMLTNHzWS8YIRKLGCXWLD3MDuH0M0ns+/6WFaSKTUBfYtn1xYwgtoiA s8Tv5jWsIEXMAusYJV7+nQ22Q1jAQ+LglYNgRSwCqhI/zvaDNfMKuEpcfboUaCoH0DoFiTmT bEDCnAJuEqcPXQQLCwGVHD6SBjJSQmARu8SnZ5fZIMYISHybfIgFolVWYtMBZoijJSUOrrjB MoFReAEjwypG0dSC5ILipPQiI73ixNzi0rx0veT83E2MwFA//e9Z3w7GmwesDzEmA42byCwl mpwPjJW8knhDYzMjC1MTU2Mjc0sz0oSVxHkXPUwKEhJITyxJzU5NLUgtii8qzUktPsTIxMEp 1cDY6LHcbSH7nU1yNgof5UzerF7dcvar1o17IQ/2r8zZztvTEKNVe0LA+/yauVyqWmmf+Hqn Hn/5b/XGJ3OjHdM1bhUL32NtzWaR4sn7MivN3vHM59D+qxevx4iX6yrl3fBL/7nW8J3I3esT X05yum2ao6ZQG9tiffNuYNP9h2dDubx1uxg+5zxTYinOSDTUYi4qTgQAsJs2c4sCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKIsWRmVeSWpSXmKPExsVy+t9jAV2XV6eDDJ5+E7R4eUjTYs75FhaL 7lcyFvfv/WSyuLxrDpvFjPP7mCwWbfvPbHF2ziEmBw6PLStvMnnsnHWX3WPbAVWPvi2rGD0+ b5ILYI1qYLTJSE1MSS1SSM1Lzk/JzEu3VfIOjneONzUzMNQ1tLQwV1LIS8xNtVVy8QnQdcvM AbpESaEsMacUKBSQWFyspG+HaUJoiJuuBUxjhK5vSBBcj5EBGkhYw5jxfsIy5oIjChW/Vt9j amDcJNXFyMkhIWAi8XzWC0YIW0ziwr31bF2MXBxCAosYJdYsPcwO4fQzSez7/pYVpIpNQF9i 2fXFYB0iAs4Sv5vXsIIUMQusY5R4+Xc2G0hCWMBD4uCVg2BFLAKqEj/O9oM18wq4Slx9uhRo KgfQOgWJOZNsQMKcAm4Spw9dBAsLAZUcPpI2gZF3ASPDKkbR1ILkguKk9FwjveLE3OLSvHS9 5PzcTYzgSHomvYNxVYPFIUYBDkYlHt4Xe08FCbEmlhVX5h5ilOBgVhLhZb5xOkiINyWxsiq1 KD++qDQntfgQYzLQTROZpUST84FRnlcSb2hsYm5qbGppYmFiZkmasJI478FW60AhgfTEktTs 1NSC1CKYLUwcnFINjGq6lQwlNwLm3A06UtitnHX+F2djs4TTT45NHQmR1wRPi75IzQlztO/6 GPm3xIJX31ysy7nUKmbzn+rXvTN8n/e/sL8amL2xdv9Cc+FwjcNJs1YnM9v6npmRP3/dOVGr z3vcZxxirOzcPFf1QZ33p4rg64lvPV0rfWXTxB9MKf5Ub7Au6dxJJZbijERDLeai4kQAVchN p+gCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch adds device tree support along with a new compatible string to support Exynos5 SoCs (SSS_VER_5). Also, Documentation under devicetree/bindings added. Signed-off-by: Naveen Krishna Ch CC: Herbert Xu CC: David S. Miller CC: Vladimir Zapolskiy TO: CC: --- .../devicetree/bindings/crypto/samsung-sss.txt | 24 ++++++++++++ drivers/crypto/s5p-sss.c | 40 ++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 Documentation/devicetree/bindings/crypto/samsung-sss.txt diff --git a/Documentation/devicetree/bindings/crypto/samsung-sss.txt b/Documentation/devicetree/bindings/crypto/samsung-sss.txt new file mode 100644 index 0000000..8871a29 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/samsung-sss.txt @@ -0,0 +1,24 @@ +Samsung SoC SSS crypto Module + +Required properties: + +- compatible : Should contain entries for this and backward compatible + SSS versions: + - "samsung,exynos-secss" for S5PV210. + - "samsung,s5p-secss" for Exynos5 series SoCs. + TBD: SSS module on Exynos5 SoCs supports other algorithms, + support for the is yet to be added in the driver. +- reg : Offset and length of the register set for the module +- interrupts : the interrupt-specifier for the SSS module. +- clocks : the required gating clock for the SSS module. +- clock-names : the gating clock name requested in the SSS driver. + +Example: + /* SSS_VER_5 */ + sss: sss { + compatible = "samsung,exynos-secss"; + reg = <0x10830000 0x10000>; + interrupts = <0 112 0>; + clocks = <&clock 471>; + clock-names = "secss"; + }; diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c index dda4551..dcb9fc1 100644 --- a/drivers/crypto/s5p-sss.c +++ b/drivers/crypto/s5p-sss.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -173,10 +174,45 @@ struct s5p_aes_dev { struct crypto_queue queue; bool busy; spinlock_t lock; + + /* To support SSS versions across Samsung SoCs */ + unsigned int version; }; static struct s5p_aes_dev *s5p_dev; +enum sss_version { + SSS_VER_4, /* SSS found on S5PV210 */ + SSS_VER_5, /* SSS found on Exynos5 Series SoCs */ +}; + +static struct platform_device_id s5p_sss_ids[] = { + { + .name = "s5p-secss", + .driver_data = SSS_VER_4, + }, { }, +}; +MODULE_DEVICE_TABLE(platform, s5p_sss_ids); + +static struct of_device_id s5p_sss_dt_match[] = { + { .compatible = "samsung,s5p-secss", .data = (void *)SSS_VER_4 }, + { .compatible = "samsung,exynos-secss", .data = (void *)SSS_VER_5 }, + { }, +}; +MODULE_DEVICE_TABLE(of, s5p_sss_dt_match); + +static inline unsigned int find_s5p_sss_version(struct platform_device *pdev) +{ +#ifdef CONFIG_OF + if (pdev->dev.of_node) { + const struct of_device_id *match; + match = of_match_node(s5p_sss_dt_match, pdev->dev.of_node); + return (unsigned int)match->data; + } +#endif + return platform_get_device_id(pdev)->driver_data; +} + static void s5p_set_dma_indata(struct s5p_aes_dev *dev, struct scatterlist *sg) { SSS_WRITE(dev, FCBRDMAS, sg_dma_address(sg)); @@ -580,6 +616,8 @@ static int s5p_aes_probe(struct platform_device *pdev) resource_size(res), pdev->name)) return -EBUSY; + pdata->version = find_s5p_sss_version(pdev); + pdata->clk = devm_clk_get(dev, "secss"); if (IS_ERR(pdata->clk)) { dev_err(dev, "failed to find secss clock source\n"); @@ -674,9 +712,11 @@ static int s5p_aes_remove(struct platform_device *pdev) static struct platform_driver s5p_aes_crypto = { .probe = s5p_aes_probe, .remove = s5p_aes_remove, + .id_table = s5p_sss_ids, .driver = { .owner = THIS_MODULE, .name = "s5p-secss", + .of_match_table = s5p_sss_dt_match, }, };