From patchwork Tue Feb 20 08:42:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shubhrajyoti Datta X-Patchwork-Id: 10229555 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 A11CC602B1 for ; Tue, 20 Feb 2018 08:36:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9034A28560 for ; Tue, 20 Feb 2018 08:36:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8040A28563; Tue, 20 Feb 2018 08:36:33 +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.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 6466A28533 for ; Tue, 20 Feb 2018 08:36:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750884AbeBTIgb (ORCPT ); Tue, 20 Feb 2018 03:36:31 -0500 Received: from mail-co1nam03on0042.outbound.protection.outlook.com ([104.47.40.42]:33376 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750703AbeBTIga (ORCPT ); Tue, 20 Feb 2018 03:36:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=zrLiO0W5UZHkAF8eQJXovs6G+iuu2ij8cvUYP5juOjc=; b=C56mTJNB9Akp+GSHjj6S2yqUnv7VXd9xazSuWTas1q69e9afmnIAsQYC8qEez2f3Bu8u6dNFD75pYhGNsM3dmiOe+/7DmP6ImgQjdQYmFdDzvybQEZogSPPjOB39pHxHwFZn8EB/MGdTnPwjZXF78E2H29T/+8sUSuS5CSgh0oU= Received: from SN4PR0201CA0072.namprd02.prod.outlook.com (2603:10b6:803:20::34) by DM2PR02MB1340.namprd02.prod.outlook.com (2a01:111:e400:50c8::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Tue, 20 Feb 2018 08:36:27 +0000 Received: from CY1NAM02FT012.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::205) by SN4PR0201CA0072.outlook.office365.com (2603:10b6:803:20::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.506.18 via Frontend Transport; Tue, 20 Feb 2018 08:36:27 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT012.mail.protection.outlook.com (10.152.75.158) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.506.19 via Frontend Transport; Tue, 20 Feb 2018 08:36:26 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:45738 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1eo3PW-0006Kv-Bh; Tue, 20 Feb 2018 00:36:26 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eo3PW-0007nb-Ab; Tue, 20 Feb 2018 00:36:26 -0800 Received: from xsj-pvapsmtp01 (mailhost.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w1K8aIj9003368; Tue, 20 Feb 2018 00:36:18 -0800 Received: from [172.23.37.106] (helo=xhdshubhraj40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eo3PM-0007lr-T5; Tue, 20 Feb 2018 00:36:17 -0800 From: Shubhrajyoti Datta To: CC: , , , , , , , Shubhrajyoti Datta Subject: [PATCH 2/2] fpga: reset bridge: Add the reset bridge Date: Tue, 20 Feb 2018 14:12:51 +0530 Message-ID: <1519116171-7182-2-git-send-email-shubhrajyoti.datta@xilinx.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: <1519116171-7182-1-git-send-email-shubhrajyoti.datta@xilinx.com> References: <1519116171-7182-1-git-send-email-shubhrajyoti.datta@xilinx.com> X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(39860400002)(39380400002)(376002)(346002)(2980300002)(438002)(199004)(189003)(77096007)(6666003)(26005)(575784001)(6916009)(2950100002)(186003)(336011)(63266004)(5660300001)(2906002)(4326008)(39060400002)(59450400001)(36386004)(8676002)(5890100001)(2351001)(106466001)(50226002)(9786002)(8936002)(50466002)(8746002)(48376002)(76176011)(81166006)(47776003)(81156014)(7696005)(51416003)(356003)(305945005)(106002)(36756003)(54906003)(316002)(107886003)(478600001)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR02MB1340; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:xapps1.xilinx.com,unknown-60-100.xilinx.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT012; 1:WUpf5zlePnzw16kO/RUAhPpLj4VMy7R/qQa6/Nxe/jcxnp8tgb6pAD0AUS/JFcn3LNEt8raR59aGaDzvCpeD8Va4rOpWEZNjZ1adDbq7hlgSZOoETBvBh47h+9dS01Or MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: acd6130f-bd77-47cd-5076-08d5783d0885 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:DM2PR02MB1340; X-Microsoft-Exchange-Diagnostics: 1; DM2PR02MB1340; 3:p1Lrr8L1LFSwSvl7fXYwDOwxEcBd+cD8nNUM1auC+cds5mSlfgJAr67XAEiSAZInUSsHAAyGWzHAcOwhVEN4O6SyGWAyHiGJC3PCHPFsZaiHmfdLUfLSDCkeONPYaNcornjkdHJfQ1A2y9HThaVU7yMuwlVUdM+FE2a1BTSiJHYH3V+FY/soO8u8M48QQhcWaCUNl4e9ZvOZJWPF+UU8omjq/EeP3Q0vUV0WEoZrwBhaUxwaqeoAB8/ztp8bce2RQ15+vS3nQWu/9m2gxAwg0KjQzfH2Niu6OjiYXApwDsTNouc1nLOQLlBCMmSIUUZcBm7oLhrHoK5pLLTf+MslYtwNcbbsJCSRbhNXrOLt1+A=; 25:ApRjg57DfkHU4pQdxrXn19BK5px7N46gSPbdsxM7nAMj9sD0n+b6NXddi9WKPYsDKcUpXsU1G3nLfpwKM89ZLx2qVEf1FueVzbhxTs23Nm1N6SIeDP9B8Ij8nBY739qwV96GAEt3t3Ep1rrsHfr+NNpZPQoI8In+CEEQyUR3fCQPhsYc1Et8WqT9LKzS95k/Q9pJmRgIWpM1EUn5Ss5y4Kxuza1MOetLOzFymdpYpRFC81V6uAG//wKDz4L/jaJn3O3vUog+2p7z3Y9A0q8VkY5EGEsfrtSSAl1Tx/Wow+0zzxU8HIzDFOlXCBTjiqZNd9HR3ZtYCqk6mvOyrvCaMA== X-MS-TrafficTypeDiagnostic: DM2PR02MB1340: X-Microsoft-Exchange-Diagnostics: 1; DM2PR02MB1340; 31:UgY5lClE8p0SgHeCbtbD0LyCWQpNBvaeERo5EO2Saw5T12RJuxaC2q8G98vx2WX501WkBRbmmr5fZMq6/HgtdhiygoLmSne1iaI8v3EJ1xXmnePwFUQn6U6AKPZ5ErCIb7RWybOreNqeR30Axjazm/gzgdTxkFbOEuq45q9DxVH+3DbQpGQtD3+k6YUAj0U4zebhFQFPpGWm9CGWyLFjm8GgNDfUqhF0rGHA8dU+hrE=; 20:SeMaFZMJePOln4yqrUb4HWeVcM0fdrpxI3BZMjhCxOIYTkgFtjwG/Bzs+gB0DVqC24Iwa/qud4tE9so1HmZOSXcxZpCF84wTPDms8Nem6D39k2S/WQj8x3ZQPhD3UcPfp9nlGY2CsgVVhZr4517/W2n73hSJNR0cO63NvhRkOsH4rku1UF+auJuF1dLPGhw8AfM+SVC60BQmChksoQkw/412RGkTor1Z+s7i08WWlfTlvIzXHfw0AXo8WG5nYUZvsUzQ9w//WJtepJKAPv/oUw9ggIPK9ZXuuBUvnFqnhkQHEDvqkvVwHMXf7aadV1grOL8LujDWIoIpIwnlJi2MJQygCw5h8S/RFCGJaCH5Pa0EcBfQ5oh/h+TFag8CIov+1IE3kQVpHwmczqUDtxREebqOcx1blcnnhuidmZlI1GQAEpxDCbykIXqi4PQBvVCD7Q0ASCl+Rp0nMwNz7ofkvL6Hr99b4WVuOKrzDBOsifj2OhOgjymyC42Mm4p3Jk4E X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93004095)(3231101)(944501161)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:DM2PR02MB1340; BCL:0; PCL:0; RULEID:; SRVR:DM2PR02MB1340; X-Microsoft-Exchange-Diagnostics: 1; DM2PR02MB1340; 4:FM+NHpu0ql+1DrfrmmduRt3cjrPbqmv5fjHtDVrq8TBVlPbgwkyaW69Rvrehy6ZTYDG506TD+iwevGjaJjRD1uPhYYZjEAUno+mkQc/Etw0jh9Qspsflw2VyMEYUS04iL6214h1Aax3YJMIqRv5e/j3dEBSE5CSoxwYP8rlJ3TK1sm8k59tA8PqfqMdGWc6d1dWfyoo2hZqZxI+9MM+s/3S3NTRVaAxjOfaoCg27kY7rz+/ANQNI7JkpyCk4RsVnVk33BsXAe0Axs0Llqf1sHu9Bi5/ENFJvZbJbaTOv74ULeu6hVynOlOVjgRvDN3eA X-Forefront-PRVS: 05891FB07F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR02MB1340; 23:uDVfMpz0jLLvMjcP3pvRrVWbgIeTY6a3YT7t8kfql?= =?us-ascii?Q?8pHOPnazR/qcxP1XPaWGpevArqcU55r6h+CEtQibnNkvMTSJdTps2oxV/u0+?= =?us-ascii?Q?BoBNSqmbM3CK/7/Kk02UeJgOYaiUf/hTtxKjar/qchQxBhdD56lGwihmGxur?= =?us-ascii?Q?QmP0OYqkQ8UmpIp4Hl5CwkaOqPuBKa5CWsH/76222FZW7ighEqL1T1/ArL39?= =?us-ascii?Q?q6C1F/lnBujpWGmSHIS95wPnyNte+25IruQxMxVNeTRBpQKqpoEqnXNA7REW?= =?us-ascii?Q?rz8gpjkcgPxAGsYtVk4ncj5ZTdw8MQqD4a1fHJ5P2pCvplPpOiGQMIihUwIz?= =?us-ascii?Q?ljYUlNvW7Or6+QMzRDwwnoE3cNxAlaGoMzAgFf2LsOMLgZycEAsFmsKfcQW8?= =?us-ascii?Q?W73+WT7+GukV+7L+nZnD00/unkTTpSCqOPaWUGmpmFXW1cJtFyEV2+ljffGB?= =?us-ascii?Q?LrFWwK2HBD0ac1+sJRd57RlboxX8EzAInA4aJegrM8+qt23IF1LT2FAJD/KU?= =?us-ascii?Q?eQDhVVB9ruOCWo3y+jNpdlbxR0wDJYPXg23grnX3l6YlqYk1xn1nAxuyGE9R?= =?us-ascii?Q?dAhKpLJjt56rdjBJObi6is+NwsWVEPdyGhry3dExIr+eVVX62QDKVfe+m5EJ?= =?us-ascii?Q?VGhPg15SmKteVh3DduLg96bArxzf7/PdQo7Dp/JLY3a6djbrLSgCqpbm/OY5?= =?us-ascii?Q?wcfH03qhD7IpTlfUrgGnq1hDwdATSg7DPDrOhAKQmTPSeSLf7R91tiR46OI2?= =?us-ascii?Q?NzPtIBWjMj25qz8LcLPBOsptxkgkyqVvFOaLr1AUQ0nShGOb9xtYesmB2WbO?= =?us-ascii?Q?49zGSOqR1M1FoIenzIFbr+zQfvC0m0f9qh7npcf6N2K9I41TCnNWrWZUIKOy?= =?us-ascii?Q?A/m317J/bdFKeksj6wfmKre7BjKgj4xcpo8EeOo6QBPFl2DZwYjF2XrCUrZG?= =?us-ascii?Q?8ZBrp5SP69qpftwjU1bvL6xEsIXrjpyNM0MAwJPohq1fOZ7qhP6HH+EHRkEE?= =?us-ascii?Q?MRE8RaO7y89WkSLIM13+F15STNm1qjikfpx3sMuByUIDdGSd8A3+VqbKICod?= =?us-ascii?Q?Bl7RY53qnFI105tzSV4kXVwzS2x6bxxxSReEZt2pb+6by4GtUizHjpdBKPyZ?= =?us-ascii?Q?/EauCiHKwzInZvMpZKC3enATaYW8IwHd1u4+tfMIKnwi6Rl1XJDIi5ZRWVzt?= =?us-ascii?Q?IHU3+QxyC+lU7U=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR02MB1340; 6:HL4rFVsNphCo4Bbg/8C5PrdITZpadlLimz68gtuaWkkWNGbgsz9bxD3HlgMNMhkxsqOtuP8ZBiulCanBjL9JsKfpY1/CBIVDPJK5AQbxWbsdvE87APCqG5tU9IKcfWnBsxw3Jy28zQ7KEQ2Ne2kzn4BgqYPN+097GWkEx4X9+EtIN61OGpYinrqY1CevM7nof5VoVrchffJvrMxLilgOYWmo1PdP5RALEwmQs6s8kdMwdN48n4axQ1Ol8EvQJKzAYDI58d0O9wknvzYX2PMI47BB2WCbG3i2rtWeZ5OlikceTUsAtAL9UXrptMWIk0wfIYsGPqi8U+wS87n5Ty+x8E0h0VcRuesCY4B9jVDsu1g=; 5:TlptDo2EAcK+XNO4H+BwJ/rtcUKA+63s831r+Z8QGhphvD/nPWQQt1iE3MKH1BHK8JE+gWXx47sHZhfEt/OtTDizDGTS4qOoRCGk74R0ce7TYGNMAZoaDPCn0BnxG6kXjNpQYqhnlJ2yRpc9OV8J2fSTcEdXpQzwrIGaDqaS+DU=; 24:Nw9PNaPuevR1TEe9s6EM21IuxOTFAyUCX2nsJ6xXwXzGJXeiKuQ5wL2x35XYOaCiE19t4laGUyE4eLK7ttsYsAlQBelwRcj9JLfocytkqMo=; 7:Hv1GDTOt1LZhOY50PNcAIJrJAcWKbQ/fkNYTtlgKo8SDEI9BKlWRkMYAeD9mIScWNUYcqD8+b736n89rifn0w0TJEUKJpqhxNzedyuM4Lx+F6XdJvFx2OWVdjGpmKc2TGHtZnwvTJtbCmWJ4w3cr2V20aRrPQZBmFDWU2a4+W/viRcB+GcXj8o29UAtxysgmUJVyAsOVkvfTHXLivsSQP2LAu2JfaZu+YaWyOZThvmc+JlOnLYfSLusZPTb0VLwR SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2018 08:36:26.9867 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: acd6130f-bd77-47cd-5076-08d5783d0885 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR02MB1340 Sender: linux-fpga-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fpga@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Adds the reset bridge. After the bitstream load the reset bridge helps in reseting the programable logic. The reset lines depends on the design. Signed-off-by: Shubhrajyoti Datta --- drivers/fpga/Kconfig | 8 ++++ drivers/fpga/Makefile | 1 + drivers/fpga/xilinx-rst-bridge.c | 100 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 drivers/fpga/xilinx-rst-bridge.c -- 2.1.1 This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately. -- To unsubscribe from this list: send the line "unsubscribe linux-fpga" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index ad5448f..752a907 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -117,4 +117,12 @@ config XILINX_PR_DECOUPLER region of the FPGA from the busses while that region is being reprogrammed during partial reconfig. +config XILINX_RST_BRIDGE + tristate "Xilinx Reset bridge" + depends on FPGA_BRIDGE + help + Say Y to enable drivers for Xilinx Reset bridge. + After writing the bitstream there has to be a reset. + The reset lines are design specific. + endif # FPGA diff --git a/drivers/fpga/Makefile b/drivers/fpga/Makefile index f98dcf1..c1b0d13 100644 --- a/drivers/fpga/Makefile +++ b/drivers/fpga/Makefile @@ -23,6 +23,7 @@ obj-$(CONFIG_FPGA_BRIDGE) += fpga-bridge.o obj-$(CONFIG_SOCFPGA_FPGA_BRIDGE) += altera-hps2fpga.o altera-fpga2sdram.o obj-$(CONFIG_ALTERA_FREEZE_BRIDGE) += altera-freeze-bridge.o obj-$(CONFIG_XILINX_PR_DECOUPLER) += xilinx-pr-decoupler.o +obj-$(CONFIG_FPGA_MGR_ZYNQMP_FPGA) += xilinx-rst-bridge.o # High Level Interfaces obj-$(CONFIG_FPGA_REGION) += fpga-region.o diff --git a/drivers/fpga/xilinx-rst-bridge.c b/drivers/fpga/xilinx-rst-bridge.c new file mode 100644 index 0000000..8062283 --- /dev/null +++ b/drivers/fpga/xilinx-rst-bridge.c @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Xilinx FPGA reset bridge. + * Copyright (c) 2018 Xilinx Inc. + * + */ + +#include +#include +#include +#include +#include + +struct xlnx_rst_bridge_priv { + struct device *dev; + bool enable; +}; + +static int xlnx_rst_bridge_enable_set(struct fpga_bridge *bridge, bool enable) +{ + struct xlnx_rst_bridge_priv *priv = bridge->priv; + struct device *dev = priv->dev; + struct reset_control *rstc; + int ret = 0; + + if (enable) { + rstc = of_reset_control_array_get(dev->of_node, false, false); + if (IS_ERR(rstc)) + return PTR_ERR(rstc); + + ret = reset_control_reset(rstc); + + reset_control_put(rstc); + + if (ret) + dev_err(dev, "Reset failed\n"); + } else { + dev_dbg(dev, "Bridge disabled\n"); + } + + if (!ret) + priv->enable = enable; + + return ret; +} + +static int xlnx_rst_bridge_enable_show(struct fpga_bridge *bridge) +{ + struct xlnx_rst_bridge_priv *priv = bridge->priv; + + return priv->enable; +} + +static struct fpga_bridge_ops xlnx_rst_bridge_ops = { + .enable_set = xlnx_rst_bridge_enable_set, + .enable_show = xlnx_rst_bridge_enable_show, +}; + +static int xlnx_rst_bridge_probe(struct platform_device *pdev) +{ + struct xlnx_rst_bridge_priv *priv; + struct device *dev = &pdev->dev; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->dev = dev; + + return fpga_bridge_register(dev, "xlnx_rst_bridge", + &xlnx_rst_bridge_ops, priv); +} + +static int xlnx_rst_bridge_remove(struct platform_device *pdev) +{ + fpga_bridge_unregister(&pdev->dev); + + return 0; +} + +static const struct of_device_id xlnx_rst_bridge_of_match[] = { + { .compatible = "xlnx,rst-bridge", }, + {}, +}; +MODULE_DEVICE_TABLE(of, xlnx_rst_bridge_of_match); + +static struct platform_driver xlnx_rst_bridge_driver = { + .probe = xlnx_rst_bridge_probe, + .remove = xlnx_rst_bridge_remove, + .driver = { + .name = "xlnx_rst_bridge", + .of_match_table = of_match_ptr(xlnx_rst_bridge_of_match), + }, +}; + +module_platform_driver(xlnx_rst_bridge_driver); + +MODULE_DESCRIPTION("Xilinx reset Bridge"); +MODULE_AUTHOR("Shubhrajyoti Datta "); +MODULE_LICENSE("GPL v2");