Commit 4edc00ad authored by Ricardo Ribalda Delgado's avatar Ricardo Ribalda Delgado Committed by Boris Brezillon

mtd: maps: gpio-addr-flash: Use devm_* functions

By using devm functions we can make the code cleaner.
Signed-off-by: default avatarRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
parent 6c925b33
...@@ -213,7 +213,7 @@ static int gpio_flash_probe(struct platform_device *pdev) ...@@ -213,7 +213,7 @@ static int gpio_flash_probe(struct platform_device *pdev)
return -EINVAL; return -EINVAL;
arr_size = sizeof(int) * gpios->end; arr_size = sizeof(int) * gpios->end;
state = kzalloc(sizeof(*state) + arr_size, GFP_KERNEL); state = devm_kzalloc(&pdev->dev, sizeof(*state) + arr_size, GFP_KERNEL);
if (!state) if (!state)
return -ENOMEM; return -ENOMEM;
...@@ -234,9 +234,9 @@ static int gpio_flash_probe(struct platform_device *pdev) ...@@ -234,9 +234,9 @@ static int gpio_flash_probe(struct platform_device *pdev)
state->map.copy_to = gf_copy_to; state->map.copy_to = gf_copy_to;
state->map.bankwidth = pdata->width; state->map.bankwidth = pdata->width;
state->map.size = state->win_size * (1 << state->gpio_count); state->map.size = state->win_size * (1 << state->gpio_count);
state->map.virt = ioremap_nocache(memory->start, state->win_size); state->map.virt = devm_ioremap_resource(&pdev->dev, memory);
if (!state->map.virt) if (IS_ERR(state->map.virt))
return -ENOMEM; return PTR_ERR(state->map.virt);
state->map.phys = NO_XIP; state->map.phys = NO_XIP;
state->map.map_priv_1 = (unsigned long)state; state->map.map_priv_1 = (unsigned long)state;
...@@ -245,12 +245,10 @@ static int gpio_flash_probe(struct platform_device *pdev) ...@@ -245,12 +245,10 @@ static int gpio_flash_probe(struct platform_device *pdev)
i = 0; i = 0;
do { do {
if (gpio_request(state->gpio_addrs[i], DRIVER_NAME)) { if (devm_gpio_request(&pdev->dev, state->gpio_addrs[i],
DRIVER_NAME)) {
dev_err(&pdev->dev, "failed to request gpio %d\n", dev_err(&pdev->dev, "failed to request gpio %d\n",
state->gpio_addrs[i]); state->gpio_addrs[i]);
while (i--)
gpio_free(state->gpio_addrs[i]);
kfree(state);
return -EBUSY; return -EBUSY;
} }
gpio_direction_output(state->gpio_addrs[i], 0); gpio_direction_output(state->gpio_addrs[i], 0);
...@@ -259,12 +257,8 @@ static int gpio_flash_probe(struct platform_device *pdev) ...@@ -259,12 +257,8 @@ static int gpio_flash_probe(struct platform_device *pdev)
dev_notice(&pdev->dev, "probing %d-bit flash bus\n", dev_notice(&pdev->dev, "probing %d-bit flash bus\n",
state->map.bankwidth * 8); state->map.bankwidth * 8);
state->mtd = do_map_probe(memory->name, &state->map); state->mtd = do_map_probe(memory->name, &state->map);
if (!state->mtd) { if (!state->mtd)
for (i = 0; i < state->gpio_count; ++i)
gpio_free(state->gpio_addrs[i]);
kfree(state);
return -ENXIO; return -ENXIO;
}
state->mtd->dev.parent = &pdev->dev; state->mtd->dev.parent = &pdev->dev;
mtd_device_parse_register(state->mtd, part_probe_types, NULL, mtd_device_parse_register(state->mtd, part_probe_types, NULL,
...@@ -276,13 +270,9 @@ static int gpio_flash_probe(struct platform_device *pdev) ...@@ -276,13 +270,9 @@ static int gpio_flash_probe(struct platform_device *pdev)
static int gpio_flash_remove(struct platform_device *pdev) static int gpio_flash_remove(struct platform_device *pdev)
{ {
struct async_state *state = platform_get_drvdata(pdev); struct async_state *state = platform_get_drvdata(pdev);
size_t i = 0;
do {
gpio_free(state->gpio_addrs[i]);
} while (++i < state->gpio_count);
mtd_device_unregister(state->mtd); mtd_device_unregister(state->mtd);
map_destroy(state->mtd); map_destroy(state->mtd);
kfree(state);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment