diff options
Diffstat (limited to 'drivers/fpga/ts73xx-fpga.c')
| -rw-r--r-- | drivers/fpga/ts73xx-fpga.c | 20 | 
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/fpga/ts73xx-fpga.c b/drivers/fpga/ts73xx-fpga.c index f6a96b42e2ca..08efd1895b1b 100644 --- a/drivers/fpga/ts73xx-fpga.c +++ b/drivers/fpga/ts73xx-fpga.c @@ -116,7 +116,9 @@ static int ts73xx_fpga_probe(struct platform_device *pdev)  {  	struct device *kdev = &pdev->dev;  	struct ts73xx_fpga_priv *priv; +	struct fpga_manager *mgr;  	struct resource *res; +	int ret;  	priv = devm_kzalloc(kdev, sizeof(*priv), GFP_KERNEL);  	if (!priv) @@ -131,13 +133,25 @@ static int ts73xx_fpga_probe(struct platform_device *pdev)  		return PTR_ERR(priv->io_base);  	} -	return fpga_mgr_register(kdev, "TS-73xx FPGA Manager", -				 &ts73xx_fpga_ops, priv); +	mgr = fpga_mgr_create(kdev, "TS-73xx FPGA Manager", +			      &ts73xx_fpga_ops, priv); +	if (!mgr) +		return -ENOMEM; + +	platform_set_drvdata(pdev, mgr); + +	ret = fpga_mgr_register(mgr); +	if (ret) +		fpga_mgr_free(mgr); + +	return ret;  }  static int ts73xx_fpga_remove(struct platform_device *pdev)  { -	fpga_mgr_unregister(&pdev->dev); +	struct fpga_manager *mgr = platform_get_drvdata(pdev); + +	fpga_mgr_unregister(mgr);  	return 0;  }  |