]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mfd: htc-i2cpld: Convert to managed resources for allocating memory
authorLee Jones <lee.jones@linaro.org>
Thu, 23 May 2013 15:25:13 +0000 (16:25 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 13 Jun 2013 10:11:43 +0000 (12:11 +0200)
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/htc-i2cpld.c

index 324187c0c124ebbe8127c5bd7526466d8c0e5128..c9dfce6ae0c289229bf895adb92d7a27e440ec8e 100644 (file)
@@ -514,8 +514,8 @@ static int htcpld_setup_chips(struct platform_device *pdev)
 
        /* Setup each chip's output GPIOs */
        htcpld->nchips = pdata->num_chip;
-       htcpld->chip = kzalloc(sizeof(struct htcpld_chip) * htcpld->nchips,
-                              GFP_KERNEL);
+       htcpld->chip = devm_kzalloc(dev, sizeof(struct htcpld_chip) * htcpld->nchips,
+                                   GFP_KERNEL);
        if (!htcpld->chip) {
                dev_warn(dev, "Unable to allocate memory for chips\n");
                return -ENOMEM;
@@ -580,12 +580,11 @@ static int htcpld_core_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       htcpld = kzalloc(sizeof(struct htcpld_data), GFP_KERNEL);
+       htcpld = devm_kzalloc(dev, sizeof(struct htcpld_data), GFP_KERNEL);
        if (!htcpld)
                return -ENOMEM;
 
        /* Find chained irq */
-       ret = -EINVAL;
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res) {
                int flags;
@@ -598,7 +597,7 @@ static int htcpld_core_probe(struct platform_device *pdev)
                                           flags, pdev->name, htcpld);
                if (ret) {
                        dev_warn(dev, "Unable to setup chained irq handler: %d\n", ret);
-                       goto fail;
+                       return ret;
                } else
                        device_init_wakeup(dev, 0);
        }
@@ -609,7 +608,7 @@ static int htcpld_core_probe(struct platform_device *pdev)
        /* Setup the htcpld chips */
        ret = htcpld_setup_chips(pdev);
        if (ret)
-               goto fail;
+               return ret;
 
        /* Request the GPIO(s) for the int reset and set them up */
        if (pdata->int_reset_gpio_hi) {
@@ -644,10 +643,6 @@ static int htcpld_core_probe(struct platform_device *pdev)
 
        dev_info(dev, "Initialized successfully\n");
        return 0;
-
-fail:
-       kfree(htcpld);
-       return ret;
 }
 
 /* The I2C Driver -- used internally */