diff options
| author | Alan Tull <atull@kernel.org> | 2018-05-16 18:49:57 -0500 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-05-25 18:23:56 +0200 | 
| commit | 9f368977b4589e2fe0b9d3a4cbaf11ff6a58ecf5 (patch) | |
| tree | 7b2e8d00ea068aa78dc308bb9d7c8cd4d55017bf /drivers/fpga/of-fpga-region.c | |
| parent | 371cd1b1fdabb33603340559049e46dfeae45b1e (diff) | |
| download | blackbird-op-linux-9f368977b4589e2fe0b9d3a4cbaf11ff6a58ecf5.tar.gz blackbird-op-linux-9f368977b4589e2fe0b9d3a4cbaf11ff6a58ecf5.zip  | |
fpga: region: change api, add fpga_region_create/free
Add fpga_region_create/free API functions.
Change fpga_region_register to take FPGA region struct as the only
parameter.  Change fpga_region_unregister to return void.
  struct fpga_region *fpga_region_create(struct device *dev,
                        struct fpga_manager *mgr,
                        int (*get_bridges)(struct fpga_region *));
  void fpga_region_free(struct fpga_region *region);
  int fpga_region_register(struct fpga_region *region);
  void fpga_region_unregister(struct fpga_region *region);
Remove groups storage from struct fpga_region, it's not
needed.  Callers can just "region->dev.groups = groups;"
after calling fpga_region_create.
Update the drivers that call fpga_region_register with the new API.
Signed-off-by: Alan Tull <atull@kernel.org>
Signed-off-by: Moritz Fischer <mdf@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fpga/of-fpga-region.c')
| -rw-r--r-- | drivers/fpga/of-fpga-region.c | 13 | 
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/fpga/of-fpga-region.c b/drivers/fpga/of-fpga-region.c index 35e7e8c4a0cb..9d681a1c5738 100644 --- a/drivers/fpga/of-fpga-region.c +++ b/drivers/fpga/of-fpga-region.c @@ -422,20 +422,15 @@ static int of_fpga_region_probe(struct platform_device *pdev)  	if (IS_ERR(mgr))  		return -EPROBE_DEFER; -	region = devm_kzalloc(dev, sizeof(*region), GFP_KERNEL); +	region = fpga_region_create(dev, mgr, of_fpga_region_get_bridges);  	if (!region) {  		ret = -ENOMEM;  		goto eprobe_mgr_put;  	} -	region->mgr = mgr; - -	/* Specify how to get bridges for this type of region. */ -	region->get_bridges = of_fpga_region_get_bridges; - -	ret = fpga_region_register(dev, region); +	ret = fpga_region_register(region);  	if (ret) -		goto eprobe_mgr_put; +		goto eprobe_free;  	of_platform_populate(np, fpga_region_of_match, NULL, ®ion->dev);  	dev_set_drvdata(dev, region); @@ -444,6 +439,8 @@ static int of_fpga_region_probe(struct platform_device *pdev)  	return 0; +eprobe_free: +	fpga_region_free(region);  eprobe_mgr_put:  	fpga_mgr_put(mgr);  	return ret;  | 

