Merge branch 'exynos-drm-fixes' of git://git.infradead.org/users/kmpark/linux-samsung...
[cascardo/linux.git] / drivers / regulator / wm831x-isink.c
index d3ad3f5..b414e09 100644 (file)
@@ -101,7 +101,7 @@ static int wm831x_isink_set_current(struct regulator_dev *rdev,
 
        for (i = 0; i < ARRAY_SIZE(wm831x_isinkv_values); i++) {
                int val = wm831x_isinkv_values[i];
-               if (min_uA >= val && val <= max_uA) {
+               if (min_uA <= val && val <= max_uA) {
                        ret = wm831x_set_bits(wm831x, isink->reg,
                                              WM831X_CS1_ISEL_MASK, i);
                        return ret;
@@ -162,7 +162,8 @@ static __devinit int wm831x_isink_probe(struct platform_device *pdev)
        if (pdata == NULL || pdata->isink[id] == NULL)
                return -ENODEV;
 
-       isink = kzalloc(sizeof(struct wm831x_isink), GFP_KERNEL);
+       isink = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_isink),
+                            GFP_KERNEL);
        if (isink == NULL) {
                dev_err(&pdev->dev, "Unable to allocate private data\n");
                return -ENOMEM;
@@ -213,7 +214,6 @@ static __devinit int wm831x_isink_probe(struct platform_device *pdev)
 err_regulator:
        regulator_unregister(isink->regulator);
 err:
-       kfree(isink);
        return ret;
 }
 
@@ -226,7 +226,6 @@ static __devexit int wm831x_isink_remove(struct platform_device *pdev)
        free_irq(platform_get_irq(pdev, 0), isink);
 
        regulator_unregister(isink->regulator);
-       kfree(isink);
 
        return 0;
 }