fpga: manager: change api, don't use drvdata
[linux-2.6-block.git] / drivers / fpga / zynq-fpga.c
index 70b15b3034714c9b059cae0c33a9ede494de99df..3110e00121ca0fa6aa80fc29b6c9e1a1f5290e3d 100644 (file)
@@ -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);