aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/fpga/of-fpga-region.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/fpga/of-fpga-region.c')
-rw-r--r--drivers/fpga/of-fpga-region.c28
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, &region->dev); 423 of_platform_populate(np, fpga_region_of_match, NULL, &region->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
430eprobe_free:
431 fpga_region_free(region);
446eprobe_mgr_put: 432eprobe_mgr_put:
447 fpga_mgr_put(mgr); 433 fpga_mgr_put(mgr);
448 return ret; 434 return ret;