Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1724acfd authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Simon Horman
Browse files

sh-pfc: Use devm_kzalloc()



Replace probe-time kmalloc()/kzalloc() calls with devm_kzalloc() and get
rid of the corresponding kfree() calls.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent c6193eac
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -33,9 +33,6 @@ static void pfc_iounmap(struct sh_pfc *pfc)
	for (k = 0; k < pfc->pdata->num_resources; k++)
		if (pfc->window[k].virt)
			iounmap(pfc->window[k].virt);

	kfree(pfc->window);
	pfc->window = NULL;
}

static int pfc_ioremap(struct sh_pfc *pfc)
@@ -46,10 +43,10 @@ static int pfc_ioremap(struct sh_pfc *pfc)
	if (!pfc->pdata->num_resources)
		return 0;

	pfc->window = kzalloc(pfc->pdata->num_resources * sizeof(*pfc->window),
			      GFP_NOWAIT);
	pfc->window = devm_kzalloc(pfc->dev, pfc->pdata->num_resources *
				   sizeof(*pfc->window), GFP_NOWAIT);
	if (!pfc->window)
		goto err1;
		return -ENOMEM;

	for (k = 0; k < pfc->pdata->num_resources; k++) {
		res = pfc->pdata->resource + k;
@@ -58,16 +55,13 @@ static int pfc_ioremap(struct sh_pfc *pfc)
		pfc->window[k].size = resource_size(res);
		pfc->window[k].virt = ioremap_nocache(res->start,
							 resource_size(res));
		if (!pfc->window[k].virt)
			goto err2;
		if (!pfc->window[k].virt) {
			pfc_iounmap(pfc);
			return -ENOMEM;
		}
	}

	return 0;

err2:
	pfc_iounmap(pfc);
err1:
	return -1;
}

static void __iomem *pfc_phys_to_virt(struct sh_pfc *pfc,
+3 −5
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@

#define pr_fmt(fmt) KBUILD_MODNAME " gpio: " fmt

#include <linux/device.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <linux/slab.h>
@@ -143,7 +144,7 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
	struct sh_pfc_chip *chip;
	int ret;

	chip = kzalloc(sizeof(struct sh_pfc_chip), GFP_KERNEL);
	chip = devm_kzalloc(pfc->dev, sizeof(*chip), GFP_KERNEL);
	if (unlikely(!chip))
		return -ENOMEM;

@@ -152,10 +153,8 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
	sh_pfc_gpio_setup(chip);

	ret = gpiochip_add(&chip->gpio_chip);
	if (unlikely(ret < 0)) {
		kfree(chip);
	if (unlikely(ret < 0))
		return ret;
	}

	pfc->gpio = chip;

@@ -175,7 +174,6 @@ int sh_pfc_unregister_gpiochip(struct sh_pfc *pfc)
	if (unlikely(ret < 0))
		return ret;

	kfree(chip);
	pfc->gpio = NULL;
	return 0;
}
+9 −22
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#define DRV_NAME "sh-pfc"
#define pr_fmt(fmt) KBUILD_MODNAME " pinctrl: " fmt

#include <linux/device.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/sh_pfc.h>
@@ -357,7 +358,7 @@ static int sh_pfc_map_gpios(struct sh_pfc *pfc, struct sh_pfc_pinctrl *pmx)

	pmx->nr_pads = pfc->pdata->last_gpio - pfc->pdata->first_gpio + 1;

	pmx->pads = kmalloc(sizeof(struct pinctrl_pin_desc) * pmx->nr_pads,
	pmx->pads = devm_kzalloc(pfc->dev, sizeof(*pmx->pads) * pmx->nr_pads,
				 GFP_KERNEL);
	if (unlikely(!pmx->pads)) {
		pmx->nr_pads = 0;
@@ -399,8 +400,8 @@ static int sh_pfc_map_functions(struct sh_pfc *pfc, struct sh_pfc_pinctrl *pmx)
	unsigned long flags;
	int i, fn;

	pmx->functions = kzalloc(pmx->nr_functions * sizeof(void *),
				 GFP_KERNEL);
	pmx->functions = devm_kzalloc(pfc->dev, pmx->nr_functions *
				      sizeof(*pmx->functions), GFP_KERNEL);
	if (unlikely(!pmx->functions))
		return -ENOMEM;

@@ -423,7 +424,7 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
	struct sh_pfc_pinctrl *pmx;
	int ret;

	pmx = kzalloc(sizeof(struct sh_pfc_pinctrl), GFP_KERNEL);
	pmx = devm_kzalloc(pfc->dev, sizeof(*pmx), GFP_KERNEL);
	if (unlikely(!pmx))
		return -ENOMEM;

@@ -438,13 +439,11 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)

	ret = sh_pfc_map_functions(pfc, pmx);
	if (unlikely(ret != 0))
		goto free_pads;
		return ret;

	pmx->pctl = pinctrl_register(&sh_pfc_pinctrl_desc, pfc->dev, pmx);
	if (IS_ERR(pmx->pctl)) {
		ret = PTR_ERR(pmx->pctl);
		goto free_functions;
	}
	if (IS_ERR(pmx->pctl))
		return PTR_ERR(pmx->pctl);

	sh_pfc_gpio_range.npins = pfc->pdata->last_gpio
				- pfc->pdata->first_gpio + 1;
@@ -454,14 +453,6 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
	pinctrl_add_gpio_range(pmx->pctl, &sh_pfc_gpio_range);

	return 0;

free_functions:
	kfree(pmx->functions);
free_pads:
	kfree(pmx->pads);
	kfree(pmx);

	return ret;
}

int sh_pfc_unregister_pinctrl(struct sh_pfc *pfc)
@@ -470,10 +461,6 @@ int sh_pfc_unregister_pinctrl(struct sh_pfc *pfc)

	pinctrl_unregister(pmx->pctl);

	kfree(pmx->functions);
	kfree(pmx->pads);
	kfree(pmx);

	pfc->pinctrl = NULL;
	return 0;
}