From patchwork Mon Apr 3 15:12:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 9659737 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.web.codeaurora.org (Postfix) with ESMTP id 86B456032D for ; Mon, 3 Apr 2017 15:13:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 78875283F4 for ; Mon, 3 Apr 2017 15:13:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6D26128455; Mon, 3 Apr 2017 15:13:27 +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=-6.9 required=2.0 tests=BAYES_00,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 A3B22283F4 for ; Mon, 3 Apr 2017 15:13:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751633AbdDCPNZ (ORCPT ); Mon, 3 Apr 2017 11:13:25 -0400 Received: from mail-by2nam01on0081.outbound.protection.outlook.com ([104.47.34.81]:41952 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752076AbdDCPNY (ORCPT ); Mon, 3 Apr 2017 11:13:24 -0400 Received: from DM2PR03CA0052.namprd03.prod.outlook.com (10.141.96.51) by BN1PR03MB283.namprd03.prod.outlook.com (10.255.200.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Mon, 3 Apr 2017 15:13:22 +0000 Received: from BY2FFO11FD014.protection.gbl (2a01:111:f400:7c0c::126) by DM2PR03CA0052.outlook.office365.com (2a01:111:e400:2428::51) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10 via Frontend Transport; Mon, 3 Apr 2017 15:13:22 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD014.mail.protection.outlook.com (10.1.14.76) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1005.5 via Frontend Transport; Mon, 3 Apr 2017 15:13:21 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.77.120]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v33FDHPR016754; Mon, 3 Apr 2017 08:13:18 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu , Rob Herring , Russell King CC: "David S. Miller" , , Dan Douglass , Ruchika Gupta Subject: [PATCH] crypto: caam - fix JR platform device subsequent (re)creations Date: Mon, 3 Apr 2017 18:12:04 +0300 Message-ID: <20170403151204.27488-1-horia.geanta@nxp.com> X-Mailer: git-send-email 2.12.0.264.gd6db3f216544 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131357060015625500; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39840400002)(39380400002)(39860400002)(39450400003)(39410400002)(39400400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(2906002)(85426001)(2870700001)(36756003)(77096006)(54906002)(8656002)(104016004)(1076002)(53936002)(47776003)(356003)(189998001)(5660300001)(86362001)(8676002)(50226002)(38730400002)(8936002)(50466002)(106466001)(4326008)(105606002)(81166006)(33646002)(5820100001)(23676002)(305945005)(2950100002)(76176999)(50986999)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR03MB283; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD014; 1:XcOwaHYVXcWGj+nDZs2C9Tw+hbKDWRMemaObP/8A5WzCaaIRO+ipD3j1jMZcPtKfuWmnymxChpingqQ95pUStO3o8d5SzqewxZtJOCaz2wTLXqzq/JT6ojaXrVfFgxmyzhCYSHqf2HPaj0ktbvq9THgxnZJCYISzSTCci90bQZvighPwDHl04QU58KYlTTIc0Mi6pvbaMAXqaeAcgYJQ5F0R3NZRt8tq9QqtIlj00sndwXtowiH6tHTmdg6Z+sbe7Th+ylDDJFQ/G7rPmLJyNAGRfT/k7Zb3C2bX5q9PjZPkWlXANi43UEPTmwFi/BdPfjBfl/VT5oqSZXfVLUJtpL5+qI78jgwrWip87nrYFd8/m0FJUhyYO4OeSWfDr1jsSnYVnfafnwx+VzFyxmAsmXaMSgWxXzt7cCqwX/NNkGGVLppgKPhJYofSeVU+7MME8fknM64mDfquZrlyVaz/OgsBurabcmPc6fFdOirR/wPMJtAMA8N7nG2wMTIyq77s4LhJJmfT00XXH801kBnWj3fMxiUFS5uyjjr07J5PMrKSJlgX8RvVQhAvDOOtUObqmW3wtjEJJV5vpcKmMJV1awY/PlTZVSnjVZm/0HX+yvMSXc7pHIQHSKLy7GVJvmifz+KaWeenV3rZhU0Rx8iAmpeuDUQLgdowCHKIwveV8G9BoYtnKcYh+4ZiljugImtA/TVao49TZOcC5LSYcgMX2E+YSUJpWGIr3mLTFWc/jp8= X-MS-Office365-Filtering-Correlation-Id: 32149a86-6c43-40b9-951c-08d47aa3f76f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030255075)(201703131430075)(201703131517081); SRVR:BN1PR03MB283; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB283; 3:+5dabYW4SgxUhu2HN0WFqr2++AxaYCoO+0YO4FHyuL4YL/hH79sE3pYH8q6Jg0QZGSnofywa3xJbndbIt+dVuznXzkaIcEkmcE6dRRw6yI6O6YRgFOX6sIoUUB18dKzT2iUgM6brzuL7PSiu3lBG/ef+4R+9Qq/MXaLc8O5iX3BLF71L3Ckhamp6tgvK6az8aY6tigRMITvNCHQfiVwnRZuBPiwMWLoqV0GSU2V55YZ6VRGZb6wjdiHMdNhiKK/MdnLZ+2Nf8sG1xUVy57uVoFz90MFtsEShFAQYqGND+nuKT9DYoTeq8jFrE9Og99xco938L+qQFMFD8dyJBHMZ9NeLESvCCV5rJAliSzlP+VplJUybp84j3PQwtERZXCZ63VVUj4J1B2BN49GVp424P95lliXrVsBA8l3qo01L00FYoHaYaSGVOIH5+MssY2Yvf0ty5oauztTOI6vEILNSag==; 25:p2fm5SF/72ONcfgUuuUhqDW8zkXhl+1f8ILDy9tg1GbY8iBe5+JwkwuimDKa2afUBJLEiKBWMzI6ugkA4gQOZuKdL2jYZhjJdRCq8gv03cNxCRImgtTjumku3/smcvr2IKcbXt1/t8uekeCvyCzNMYFPtAIMtwQ2R6c66aPv1lGy5ujDND+aHcJlRJUAUSeoXL4PKwW4WsxUd91ochvgNSYuJm7719fBJ2SV79EGvVSvwLpB4O/pR9d9Q1SpQQtzDgsBbvAZt58ir+2bi350kTE4d81ZI1hV+WyvJshKZTdtPBt3g55/FNwwdcSnYe+SnGIiE/von3ETcWVsttvSb2/PdxrsuVCKtd3HPnzyjxDj0O4rFg3SejxDGqSHSmKOqFlM64UuIg8GdYPLXLJpI4aXnl+LmwdIwic9SON5Gt2MqO3eoHEgBjqO8Gqasd95zez+jyqeJue+9fQ bufguZA== X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB283; 31:7zXpfCIgEyC/HQQ+HiFFYOsSv5ZawZFxDQvIRkIjtjE59JmtKROSwN7WxmGOVEAviWHZvVjZeuTpLQz6+AkdyDFSUJjiOzjVawmXmNaGAzK0tByJ8f7sNnsEYkPslTIY7uXYyHhcOk8369ajGgqfGFNyYY7eI4aLa87uXPIgTa4Hnl41VSsoU5FzoVnfDI5DWOQ6b8BDBuaPfJF95WTcvYSLMq2+MNhh+f6Qwi3TdfUJQ/ANjRYh9Edxg72nrJQLnRNcIVjnM/lMtQPdQWGs+P82zi1faX4TOMKBS8B4paY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(8121501046)(13015025)(13017025)(5005006)(13024025)(13018025)(13023025)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123561025)(20161123556025)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259075)(20161123565025); SRVR:BN1PR03MB283; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR03MB283; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB283; 4:c1c3icYtw3a/09nScqcinFJToMk9z0AjNvkS9670+Hs2pOxVmdPt2ZWk8gnx3TZd937Insf9LGVbEuwaqAW44IWPsXCi7/018TnU8z4tl0NwQYKhN0ZUandvYz76JCzwQYaO9MVI9al0AjMkny/6K+DPige/mlQTHxGKsghFBjLqsmopUgLrGd9I6snx79w6HPYu5t4tlkeAzPpQk8sZ1sKI/KXLlGtFe1JbCe1QrOxNF0EwyEdaxFXlRxcnETBcn4Lw9EUwRsvqyqXIZp09DW1a47u+bLxs2vQx8zjrrdbBP7J8kLbZLpWYob6bS8+jGWhcBBlhT7LvQHT8Wxyl7iPzpWIfEzPfEaJeJTYxAYOcwzcrAzV2VrYXrEYa94jFPi/B+A0zjP1jy4CApmB3ulF0ZLeKafU5tXF9YlzO/GsM3FMf9fWfLMJYS5i281ufDe2WmyxCq7HCE+oqXrIy2+F5Z4hKCDI6NFGVie2rn5X96sksKNBnif6MlhoOH9MnjXFXSZYxZuj7WlioTmPiDVk9XNQORzsmWei2IjmICud6UGG/cVyCP7P5SOeb/zL+fB50zWFo/Ua2xdBF1OROoQi5fwRkkdC6JDFsGO5wdurjvLNHDu9Pc7lXF+IihkSX30gU551yLME4keVj1V1yNCDVW0Ulvv+U0utk2HUtpIdanTeD/iRPkqxuGl+MF1Oczulggi1jDpd2DZC1qBn5jX7dQvTn0UJufUzaDizeKsu/oYvgwO95RHSw+iSzBhwZ84g9Y9vjvf7+WKP/nKiu0aljqR9rvfZZ85jbszmkZcY+VeBCCgI9ayC3j8uNf6K1UxTVwLq7NeqeTIDnbv1Sovhmv/NnBqLpvWqmqhaan/HKmROJdNGmMHnstABKTfuvpt9Qwz7ZzOa77lteipFGcg== X-Forefront-PRVS: 0266491E90 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjFQUjAzTUIyODM7MjM6YTJTY2VDOEF2WWkva3U4cDhHa3JUV0VBbGNN?= =?utf-8?B?TzErM0packZnQkJEdGN5MlZMbFgzbmFLMUNUUlFiY0JrNFVMYzJRdmtRNWYr?= =?utf-8?B?QVpsS2NiVElXM0lxRFFyMkpIR1duL0s3R3dERndIMXljMlZMMkVzQmtOci9X?= =?utf-8?B?OEhGVk1Lay96TXZoci9kQnFrUnBGSHM3YUR5UlZTc3ZFSHBlZXQ2WXd2QVFk?= =?utf-8?B?N2JISEpYSi9kWVV5MzcvRnR0aXFCK3FNNHJwZ0ZaZVphSExINnFiZU5PeDMx?= =?utf-8?B?eWpKSkc1TWlPZTdsdHM2cW1zcktaSzNuaFBhNVNML0dIbm9SM1lOd0libHNs?= =?utf-8?B?YTNXeC81OVR2ZDdycHBkQzNHWkFPVmtlZ0dsUkN4YW8zckFHb21XTVovVHlv?= =?utf-8?B?UkNiNEpkaEZFNk0vRUc4bnVPZUlDNngveUt1OE5YdjJ4NnYxcmdRS2lKRkxI?= =?utf-8?B?RU9RYzlqbWVKMTlseExnRHJ5S0ZXbkllN2kxZDlnREhoVHQ0M1JzUUlXeHov?= =?utf-8?B?cU0zeCtxWlo1YzJ4b1NNUk1aWFgyVzhJUTdkSXFEenRRVnh2Z0dWQlRUZ0gy?= =?utf-8?B?STIzODNLT2RNWUFtcnI3WW15amxoOW5hUjBCVU4wM3d1S3BYVWQwcDhZRENv?= =?utf-8?B?dkxTdGtDUGNrUUxmak5zMkRRcWZHOFlOazUyVHRHbGx2VTRzWi9nUEhsbzNM?= =?utf-8?B?YkJHWStmemlDUDh0VFlZUE9xRUZONUMxeDhZOFNwRFg2RmdUblNoWnVIcVd3?= =?utf-8?B?ZEZ3alI1NDUzaVhtWmpNaHpsNWplWUZ3c1JZYmcxaWQ5TitLSzVkYWRMbjBF?= =?utf-8?B?Qmk0MXVhWHlzMFlKRWwvL3JQSDVWSEtKakFEWmt5T1ZnUjlHMDhTMU54Umwv?= =?utf-8?B?Ri9RT2krNjhvendtU3BYSzlkKy92LzZLSnczK3BnNVdCZkxWUmd4RW9XSmYx?= =?utf-8?B?bXRiclZsbklqbTJlMXMwaEQwUVd2S3hqVnJRTVdRTWk3aHZxNW9WMVlGTkpt?= =?utf-8?B?cUtqSGtUaFRaRGk4TmtuUzE2S09sMDF0cXMzWFZhVGFOM2hBWnB3MUFXUFcv?= =?utf-8?B?ZlpWQmZCZEZQQnpJb3R0a1VMZDRNNTdwWFR4eEpYTWh3Y2NVRW4xMHNVemRH?= =?utf-8?B?d0p2WE5iYVYxbEwxN3czRUExNU1nR0RaNEdhNjZ5TDZqZUozY0QvcE9BVld6?= =?utf-8?B?U0NBMk5VRml5aDRnbmk0ZzZkaFp1ejFJVS9sbE9FN1ArOWpiMXFzNmpyZndq?= =?utf-8?B?M245WW9QQkJ0aVN3M2xhVEJzK2pZRDZueGppTkJUMmhDOGROeTFvSUw2QWVU?= =?utf-8?B?SnVQa3l5QUVUSEl0dXBzSnhWU2hYU0lieDcvUkcya1UzbSttOWNkUTZNcEtB?= =?utf-8?B?NFVQNWhKajJPNDlBUXpWbEw1cGF5K3JSbnRYd0xMUkt5Sk54Y3VkazZTb2xY?= =?utf-8?B?a2ZjdC9lZFQ4dE1qaDRLK01SRnBjek5FNnJmbUp4NlpmbnVNS3BFRVQxbFRp?= =?utf-8?B?eFNvcVdlZ3RZNGdXQjBsREVtaGVTVldNejU4WW1NNHBsdmFuSXpvaSsvejdx?= =?utf-8?Q?QNyEPnYvFROEFiXOrWvSZ6+mPx0lUqANf63IbU3LDKc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB283; 6:9MXCRbt/lLDVb7v9UG2S166BSSRqzAYxSVf9SjYriduOx8ebdKc58SuXrCb+SoLmujl92z48TUTRGt6Odi8ATWpyTV+DX55wjs2N0VdiPJKMl7rQefEkmkqRZn+4s2ha6m0btENKwbkaZuG23dbsrso+n9jnKQW0/eVcZnpw/7/Lt8a8yYhY+6OzwLUB7H6+hV4IVhXyA10/lSBwz2Qgss5ftDz5fNrgT5h6McDz3UyYC29LCuyrCguGgGHucrGG5MFaMs1bVEljVh6Z311gteddYuSebJk2q/B7d2X4zXa89HCOVhmGTf2bEg0URwPWMPfjYF+s46e2ixg3NVpTg2aJDPe5ig1V8L25ygaGVPtx1He1rnOTkn/RxyycjoqW7y7bwXOhDrMadrd5GosIaQ==; 5:dV6svVi+mgD9h/LvWanepp4GQgtafAZY4tA5aw/QnEhPGxMGds+Lb1gRmSBzxLEaPk5amFeQSU+JGwayvTxBOtaCzW9AzEeq92bGGHroEj0OTDfHGzn8q+3WC2s2+debtukUAK97zODRaHthMkQcRDuZU/2GyqCq4Z88SW3XVruWcsEkmq31B/ekqfl0ycHL; 24:Llm7leniHeXJpNtAjniT4Vk77qDvlk5wW2DYXbVnSFRlOuDgT9L5a4DPO+GhE+kVq98dYU7RNXCkXYJLQgcnuTrF4F3gCpHRikJv/KjmCEg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB283; 7:hqTJ1+hbmrwmPYZfutmCetFnaCrG4qGXTFKfyg+QSJL+Nuq+WpF2IBqUMIgGssVOvGvT3kbbAOqncuJSFFTNJiB9vPiOBTX3z84lqIfxuq+eje1gGlpb3crlLwyV6HCEwsXBTF6nboj2iumhMMtRsfOknMMrQACD5SqmKr9J+zJWv/xk8uHX+dfMBKRfZGYvobD37RqWhEJtgjbQtPIFm1D5z58UVDSyO0uzjy7nQK0rHyn5hnmSCgAbf2CKY27aonn7D/p66p1K5XKzKatbGNbKVErhb7I3mUpdBSWDtFZr/BO7E4R/xegFhnKAowOQ+SjLuLAKDSQLN2LDS1yfJQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2017 15:13:21.3285 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR03MB283 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 The way Job Ring platform devices are created and released does not allow for multiple create-release cycles. JR0 Platform device creation error JR0 Platform device creation error caam 2100000.caam: no queues configured, terminating caam: probe of 2100000.caam failed with error -12 The reason is that platform devices are created for each job ring: for_each_available_child_of_node(nprop, np) if (of_device_is_compatible(np, "fsl,sec-v4.0-job-ring") || of_device_is_compatible(np, "fsl,sec4.0-job-ring")) { ctrlpriv->jrpdev[ring] = of_platform_device_create(np, NULL, dev); which sets OF_POPULATED on the device node, but then it cleans these up: /* Remove platform devices for JobRs */ for (ring = 0; ring < ctrlpriv->total_jobrs; ring++) { if (ctrlpriv->jrpdev[ring]) of_device_unregister(ctrlpriv->jrpdev[ring]); } which leaves OF_POPULATED set. Use of_platform_populate / of_platform_depopulate instead. This allows for a bit of driver clean-up, jrpdev is no longer needed. Logic changes a bit too: -exit in case of_platform_populate fails, since currently even QI backend depends on JR; true, we no longer support the case when "some" of the JR DT nodes are incorrect -when cleaning up, caam_remove() would also depopulate RTIC in case it would have been populated somewhere else - not the case for now Fixes: 313ea293e9c4d ("crypto: caam - Add Platform driver for Job Ring") Reported-by: Russell King Suggested-by: Rob Herring Signed-off-by: Horia Geantă Acked-by: Rob Herring --- Not sending this directly to -stable, since it does not apply cleanly. drivers/crypto/caam/ctrl.c | 64 ++++++++++++++------------------------------ drivers/crypto/caam/intern.h | 1 - 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index b3a94d5eff26..f7792a99469a 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -305,15 +305,13 @@ static int caam_remove(struct platform_device *pdev) struct device *ctrldev; struct caam_drv_private *ctrlpriv; struct caam_ctrl __iomem *ctrl; - int ring; ctrldev = &pdev->dev; ctrlpriv = dev_get_drvdata(ctrldev); ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl; - /* Remove platform devices for JobRs */ - for (ring = 0; ring < ctrlpriv->total_jobrs; ring++) - of_device_unregister(ctrlpriv->jrpdev[ring]); + /* Remove platform devices under the crypto node */ + of_platform_depopulate(ctrldev); #ifdef CONFIG_CAAM_QI if (ctrlpriv->qidev) @@ -410,10 +408,21 @@ int caam_get_era(void) } EXPORT_SYMBOL(caam_get_era); +static const struct of_device_id caam_match[] = { + { + .compatible = "fsl,sec-v4.0", + }, + { + .compatible = "fsl,sec4.0", + }, + {}, +}; +MODULE_DEVICE_TABLE(of, caam_match); + /* Probe routine for CAAM top (controller) level */ static int caam_probe(struct platform_device *pdev) { - int ret, ring, ridx, rspec, gen_sk, ent_delay = RTSDCTL_ENT_DLY_MIN; + int ret, ring, gen_sk, ent_delay = RTSDCTL_ENT_DLY_MIN; u64 caam_id; struct device *dev; struct device_node *nprop, *np; @@ -589,21 +598,9 @@ static int caam_probe(struct platform_device *pdev) goto iounmap_ctrl; } - /* - * Detect and enable JobRs - * First, find out how many ring spec'ed, allocate references - * for all, then go probe each one. - */ - rspec = 0; - for_each_available_child_of_node(nprop, np) - if (of_device_is_compatible(np, "fsl,sec-v4.0-job-ring") || - of_device_is_compatible(np, "fsl,sec4.0-job-ring")) - rspec++; - - ctrlpriv->jrpdev = devm_kcalloc(&pdev->dev, rspec, - sizeof(*ctrlpriv->jrpdev), GFP_KERNEL); - if (ctrlpriv->jrpdev == NULL) { - ret = -ENOMEM; + ret = of_platform_populate(nprop, caam_match, NULL, dev); + if (ret) { + dev_err(dev, "JR platform devices creation error\n"); goto iounmap_ctrl; } @@ -618,29 +615,19 @@ static int caam_probe(struct platform_device *pdev) ctrlpriv->dfs_root = debugfs_create_dir(dev_name(dev), NULL); ctrlpriv->ctl = debugfs_create_dir("ctl", ctrlpriv->dfs_root); #endif + ring = 0; - ridx = 0; - ctrlpriv->total_jobrs = 0; for_each_available_child_of_node(nprop, np) if (of_device_is_compatible(np, "fsl,sec-v4.0-job-ring") || of_device_is_compatible(np, "fsl,sec4.0-job-ring")) { - ctrlpriv->jrpdev[ring] = - of_platform_device_create(np, NULL, dev); - if (!ctrlpriv->jrpdev[ring]) { - pr_warn("JR physical index %d: Platform device creation error\n", - ridx); - ridx++; - continue; - } ctrlpriv->jr[ring] = (struct caam_job_ring __iomem __force *) ((__force uint8_t *)ctrl + - (ridx + JR_BLOCK_NUMBER) * + (ring + JR_BLOCK_NUMBER) * BLOCK_OFFSET ); ctrlpriv->total_jobrs++; ring++; - ridx++; - } + } /* Check to see if QI present. If so, enable */ ctrlpriv->qi_present = @@ -849,17 +836,6 @@ static int caam_probe(struct platform_device *pdev) return ret; } -static struct of_device_id caam_match[] = { - { - .compatible = "fsl,sec-v4.0", - }, - { - .compatible = "fsl,sec4.0", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, caam_match); - static struct platform_driver caam_driver = { .driver = { .name = "caam", diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index c334df638ff6..85b6c5835b8f 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -66,7 +66,6 @@ struct caam_drv_private_jr { struct caam_drv_private { struct device *dev; - struct platform_device **jrpdev; /* Alloc'ed array per sub-device */ #ifdef CONFIG_CAAM_QI struct device *qidev; #endif