diff options
Diffstat (limited to 'drivers/fpga/zynq-fpga.c')
| -rw-r--r-- | drivers/fpga/zynq-fpga.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/fpga/zynq-fpga.c b/drivers/fpga/zynq-fpga.c index 70b15b303471..3110e00121ca 100644 --- a/drivers/fpga/zynq-fpga.c +++ b/drivers/fpga/zynq-fpga.c @@ -558,6 +558,7 @@ static int zynq_fpga_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct zynq_fpga_priv *priv; +	struct fpga_manager *mgr;  	struct resource *res;  	int err; @@ -613,10 +614,17 @@ static int zynq_fpga_probe(struct platform_device *pdev)  	clk_disable(priv->clk); -	err = fpga_mgr_register(dev, "Xilinx Zynq FPGA Manager", -				&zynq_fpga_ops, priv); +	mgr = fpga_mgr_create(dev, "Xilinx Zynq FPGA Manager", +			      &zynq_fpga_ops, priv); +	if (!mgr) +		return -ENOMEM; + +	platform_set_drvdata(pdev, mgr); + +	err = fpga_mgr_register(mgr);  	if (err) {  		dev_err(dev, "unable to register FPGA manager\n"); +		fpga_mgr_free(mgr);  		clk_unprepare(priv->clk);  		return err;  	} @@ -632,7 +640,7 @@ static int zynq_fpga_remove(struct platform_device *pdev)  	mgr = platform_get_drvdata(pdev);  	priv = mgr->priv; -	fpga_mgr_unregister(&pdev->dev); +	fpga_mgr_unregister(mgr);  	clk_unprepare(priv->clk);  | 
