Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[linux-2.6-microblaze.git] / drivers / spi / spi-npcm-fiu.c
index 341f7cf..b62471a 100644 (file)
@@ -677,9 +677,9 @@ static int npcm_fiu_probe(struct platform_device *pdev)
        struct npcm_fiu_spi *fiu;
        void __iomem *regbase;
        struct resource *res;
-       int id;
+       int id, ret;
 
-       ctrl = spi_alloc_master(dev, sizeof(*fiu));
+       ctrl = devm_spi_alloc_master(dev, sizeof(*fiu));
        if (!ctrl)
                return -ENOMEM;
 
@@ -735,7 +735,11 @@ static int npcm_fiu_probe(struct platform_device *pdev)
        ctrl->num_chipselect = fiu->info->max_cs;
        ctrl->dev.of_node = dev->of_node;
 
-       return devm_spi_register_master(dev, ctrl);
+       ret = devm_spi_register_master(dev, ctrl);
+       if (ret)
+               clk_disable_unprepare(fiu->clk);
+
+       return ret;
 }
 
 static int npcm_fiu_remove(struct platform_device *pdev)