]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/fpga/altera-ps-spi.c
Merge tag 'gfs2-4.19.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2...
[linux.git] / drivers / fpga / altera-ps-spi.c
index 06d212a3d49dd6ebdba471aa1814759ff828d1aa..24b25c62603665aee105e394121110c59f65ad91 100644 (file)
@@ -238,6 +238,8 @@ static int altera_ps_probe(struct spi_device *spi)
 {
        struct altera_ps_conf *conf;
        const struct of_device_id *of_id;
+       struct fpga_manager *mgr;
+       int ret;
 
        conf = devm_kzalloc(&spi->dev, sizeof(*conf), GFP_KERNEL);
        if (!conf)
@@ -273,13 +275,25 @@ static int altera_ps_probe(struct spi_device *spi)
        snprintf(conf->mgr_name, sizeof(conf->mgr_name), "%s %s",
                 dev_driver_string(&spi->dev), dev_name(&spi->dev));
 
-       return fpga_mgr_register(&spi->dev, conf->mgr_name,
-                                &altera_ps_ops, conf);
+       mgr = fpga_mgr_create(&spi->dev, conf->mgr_name,
+                             &altera_ps_ops, conf);
+       if (!mgr)
+               return -ENOMEM;
+
+       spi_set_drvdata(spi, mgr);
+
+       ret = fpga_mgr_register(mgr);
+       if (ret)
+               fpga_mgr_free(mgr);
+
+       return ret;
 }
 
 static int altera_ps_remove(struct spi_device *spi)
 {
-       fpga_mgr_unregister(&spi->dev);
+       struct fpga_manager *mgr = spi_get_drvdata(spi);
+
+       fpga_mgr_unregister(mgr);
 
        return 0;
 }