diff options
Diffstat (limited to 'drivers/fpga/of-fpga-region.c')
-rw-r--r-- | drivers/fpga/of-fpga-region.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/fpga/of-fpga-region.c b/drivers/fpga/of-fpga-region.c index 119ff75522f1..35fabb8083fb 100644 --- a/drivers/fpga/of-fpga-region.c +++ b/drivers/fpga/of-fpga-region.c | |||
@@ -1,22 +1,10 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
1 | /* | 2 | /* |
2 | * FPGA Region - Device Tree support for FPGA programming under Linux | 3 | * FPGA Region - Device Tree support for FPGA programming under Linux |
3 | * | 4 | * |
4 | * Copyright (C) 2013-2016 Altera Corporation | 5 | * Copyright (C) 2013-2016 Altera Corporation |
5 | * Copyright (C) 2017 Intel Corporation | 6 | * Copyright (C) 2017 Intel Corporation |
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms and conditions of the GNU General Public License, | ||
9 | * version 2, as published by the Free Software Foundation. | ||
10 | * | ||
11 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
14 | * more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License along with | ||
17 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
18 | */ | 7 | */ |
19 | |||
20 | #include <linux/fpga/fpga-bridge.h> | 8 | #include <linux/fpga/fpga-bridge.h> |
21 | #include <linux/fpga/fpga-mgr.h> | 9 | #include <linux/fpga/fpga-mgr.h> |
22 | #include <linux/fpga/fpga-region.h> | 10 | #include <linux/fpga/fpga-region.h> |
@@ -422,27 +410,25 @@ static int of_fpga_region_probe(struct platform_device *pdev) | |||
422 | if (IS_ERR(mgr)) | 410 | if (IS_ERR(mgr)) |
423 | return -EPROBE_DEFER; | 411 | return -EPROBE_DEFER; |
424 | 412 | ||
425 | region = devm_kzalloc(dev, sizeof(*region), GFP_KERNEL); | 413 | region = fpga_region_create(dev, mgr, of_fpga_region_get_bridges); |
426 | if (!region) { | 414 | if (!region) { |
427 | ret = -ENOMEM; | 415 | ret = -ENOMEM; |
428 | goto eprobe_mgr_put; | 416 | goto eprobe_mgr_put; |
429 | } | 417 | } |
430 | 418 | ||
431 | region->mgr = mgr; | 419 | ret = fpga_region_register(region); |
432 | |||
433 | /* Specify how to get bridges for this type of region. */ | ||
434 | region->get_bridges = of_fpga_region_get_bridges; | ||
435 | |||
436 | ret = fpga_region_register(dev, region); | ||
437 | if (ret) | 420 | if (ret) |
438 | goto eprobe_mgr_put; | 421 | goto eprobe_free; |
439 | 422 | ||
440 | of_platform_populate(np, fpga_region_of_match, NULL, ®ion->dev); | 423 | of_platform_populate(np, fpga_region_of_match, NULL, ®ion->dev); |
424 | dev_set_drvdata(dev, region); | ||
441 | 425 | ||
442 | dev_info(dev, "FPGA Region probed\n"); | 426 | dev_info(dev, "FPGA Region probed\n"); |
443 | 427 | ||
444 | return 0; | 428 | return 0; |
445 | 429 | ||
430 | eprobe_free: | ||
431 | fpga_region_free(region); | ||
446 | eprobe_mgr_put: | 432 | eprobe_mgr_put: |
447 | fpga_mgr_put(mgr); | 433 | fpga_mgr_put(mgr); |
448 | return ret; | 434 | return ret; |