]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mfd/wm831x-core.c
Merge tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6
[karo-tx-linux.git] / drivers / mfd / wm831x-core.c
index 0a2b8d41a7020229223c7dcf5876d2d9cc532b43..f5e54fae8ada924bb029a1afe9a0239f3eb959b3 100644 (file)
@@ -559,6 +559,8 @@ static int wm831x_write(struct wm831x *wm831x, unsigned short reg,
                dev_vdbg(wm831x->dev, "Write %04x to R%d(0x%x)\n",
                         buf[i], reg + i, reg + i);
                ret = regmap_write(wm831x->regmap, reg + i, buf[i]);
+               if (ret != 0)
+                       return ret;
        }
 
        return 0;
@@ -1875,7 +1877,6 @@ err_irq:
 err_regmap:
        mfd_remove_devices(wm831x->dev);
        regmap_exit(wm831x->regmap);
-       kfree(wm831x);
        return ret;
 }
 
@@ -1887,7 +1888,6 @@ void wm831x_device_exit(struct wm831x *wm831x)
                free_irq(wm831x->irq_base + WM831X_IRQ_AUXADC_DATA, wm831x);
        wm831x_irq_exit(wm831x);
        regmap_exit(wm831x->regmap);
-       kfree(wm831x);
 }
 
 int wm831x_device_suspend(struct wm831x *wm831x)