diff options
Diffstat (limited to 'drivers/fpga/altera-freeze-bridge.c')
-rw-r--r-- | drivers/fpga/altera-freeze-bridge.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/drivers/fpga/altera-freeze-bridge.c b/drivers/fpga/altera-freeze-bridge.c index 6159cfcf78a2..ffd586c48ecf 100644 --- a/drivers/fpga/altera-freeze-bridge.c +++ b/drivers/fpga/altera-freeze-bridge.c | |||
@@ -1,19 +1,8 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
1 | /* | 2 | /* |
2 | * FPGA Freeze Bridge Controller | 3 | * FPGA Freeze Bridge Controller |
3 | * | 4 | * |
4 | * Copyright (C) 2016 Altera Corporation. All rights reserved. | 5 | * Copyright (C) 2016 Altera Corporation. All rights reserved. |
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms and conditions of the GNU General Public License, | ||
8 | * version 2, as published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
13 | * more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License along with | ||
16 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | 6 | */ |
18 | #include <linux/delay.h> | 7 | #include <linux/delay.h> |
19 | #include <linux/io.h> | 8 | #include <linux/io.h> |
@@ -221,8 +210,10 @@ static int altera_freeze_br_probe(struct platform_device *pdev) | |||
221 | struct device_node *np = pdev->dev.of_node; | 210 | struct device_node *np = pdev->dev.of_node; |
222 | void __iomem *base_addr; | 211 | void __iomem *base_addr; |
223 | struct altera_freeze_br_data *priv; | 212 | struct altera_freeze_br_data *priv; |
213 | struct fpga_bridge *br; | ||
224 | struct resource *res; | 214 | struct resource *res; |
225 | u32 status, revision; | 215 | u32 status, revision; |
216 | int ret; | ||
226 | 217 | ||
227 | if (!np) | 218 | if (!np) |
228 | return -ENODEV; | 219 | return -ENODEV; |
@@ -254,13 +245,27 @@ static int altera_freeze_br_probe(struct platform_device *pdev) | |||
254 | 245 | ||
255 | priv->base_addr = base_addr; | 246 | priv->base_addr = base_addr; |
256 | 247 | ||
257 | return fpga_bridge_register(dev, FREEZE_BRIDGE_NAME, | 248 | br = fpga_bridge_create(dev, FREEZE_BRIDGE_NAME, |
258 | &altera_freeze_br_br_ops, priv); | 249 | &altera_freeze_br_br_ops, priv); |
250 | if (!br) | ||
251 | return -ENOMEM; | ||
252 | |||
253 | platform_set_drvdata(pdev, br); | ||
254 | |||
255 | ret = fpga_bridge_register(br); | ||
256 | if (ret) { | ||
257 | fpga_bridge_free(br); | ||
258 | return ret; | ||
259 | } | ||
260 | |||
261 | return 0; | ||
259 | } | 262 | } |
260 | 263 | ||
261 | static int altera_freeze_br_remove(struct platform_device *pdev) | 264 | static int altera_freeze_br_remove(struct platform_device *pdev) |
262 | { | 265 | { |
263 | fpga_bridge_unregister(&pdev->dev); | 266 | struct fpga_bridge *br = platform_get_drvdata(pdev); |
267 | |||
268 | fpga_bridge_unregister(br); | ||
264 | 269 | ||
265 | return 0; | 270 | return 0; |
266 | } | 271 | } |