ASoC: sh: siu_dai: Convert to use resource managed APIs

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Axel Lin 2015-09-01 21:11:10 +08:00 committed by Mark Brown
parent 6ff33f3902
commit 1ff68f5590

View file

@ -738,7 +738,7 @@ static int siu_probe(struct platform_device *pdev)
struct siu_info *info; struct siu_info *info;
int ret; int ret;
info = kmalloc(sizeof(*info), GFP_KERNEL); info = devm_kmalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
if (!info) if (!info)
return -ENOMEM; return -ENOMEM;
siu_i2s_data = info; siu_i2s_data = info;
@ -746,7 +746,7 @@ static int siu_probe(struct platform_device *pdev)
ret = request_firmware(&fw_entry, "siu_spb.bin", &pdev->dev); ret = request_firmware(&fw_entry, "siu_spb.bin", &pdev->dev);
if (ret) if (ret)
goto ereqfw; return ret;
/* /*
* Loaded firmware is "const" - read only, but we have to modify it in * Loaded firmware is "const" - read only, but we have to modify it in
@ -757,89 +757,52 @@ static int siu_probe(struct platform_device *pdev)
release_firmware(fw_entry); release_firmware(fw_entry);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) { if (!res)
ret = -ENODEV; return -ENODEV;
goto egetres;
}
region = request_mem_region(res->start, resource_size(res), region = devm_request_mem_region(&pdev->dev, res->start,
pdev->name); resource_size(res), pdev->name);
if (!region) { if (!region) {
dev_err(&pdev->dev, "SIU region already claimed\n"); dev_err(&pdev->dev, "SIU region already claimed\n");
ret = -EBUSY; return -EBUSY;
goto ereqmemreg;
} }
ret = -ENOMEM; info->pram = devm_ioremap(&pdev->dev, res->start, PRAM_SIZE);
info->pram = ioremap(res->start, PRAM_SIZE);
if (!info->pram) if (!info->pram)
goto emappram; return -ENOMEM;
info->xram = ioremap(res->start + XRAM_OFFSET, XRAM_SIZE); info->xram = devm_ioremap(&pdev->dev, res->start + XRAM_OFFSET,
XRAM_SIZE);
if (!info->xram) if (!info->xram)
goto emapxram; return -ENOMEM;
info->yram = ioremap(res->start + YRAM_OFFSET, YRAM_SIZE); info->yram = devm_ioremap(&pdev->dev, res->start + YRAM_OFFSET,
YRAM_SIZE);
if (!info->yram) if (!info->yram)
goto emapyram; return -ENOMEM;
info->reg = ioremap(res->start + REG_OFFSET, resource_size(res) - info->reg = devm_ioremap(&pdev->dev, res->start + REG_OFFSET,
REG_OFFSET); resource_size(res) - REG_OFFSET);
if (!info->reg) if (!info->reg)
goto emapreg; return -ENOMEM;
dev_set_drvdata(&pdev->dev, info); dev_set_drvdata(&pdev->dev, info);
/* register using ARRAY version so we can keep dai name */ /* register using ARRAY version so we can keep dai name */
ret = snd_soc_register_component(&pdev->dev, &siu_i2s_component, ret = devm_snd_soc_register_component(&pdev->dev, &siu_i2s_component,
&siu_i2s_dai, 1); &siu_i2s_dai, 1);
if (ret < 0) if (ret < 0)
goto edaiinit; return ret;
ret = snd_soc_register_platform(&pdev->dev, &siu_platform); ret = devm_snd_soc_register_platform(&pdev->dev, &siu_platform);
if (ret < 0) if (ret < 0)
goto esocregp; return ret;
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
return ret; return 0;
esocregp:
snd_soc_unregister_component(&pdev->dev);
edaiinit:
iounmap(info->reg);
emapreg:
iounmap(info->yram);
emapyram:
iounmap(info->xram);
emapxram:
iounmap(info->pram);
emappram:
release_mem_region(res->start, resource_size(res));
ereqmemreg:
egetres:
ereqfw:
kfree(info);
return ret;
} }
static int siu_remove(struct platform_device *pdev) static int siu_remove(struct platform_device *pdev)
{ {
struct siu_info *info = dev_get_drvdata(&pdev->dev);
struct resource *res;
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
snd_soc_unregister_platform(&pdev->dev);
snd_soc_unregister_component(&pdev->dev);
iounmap(info->reg);
iounmap(info->yram);
iounmap(info->xram);
iounmap(info->pram);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res)
release_mem_region(res->start, resource_size(res));
kfree(info);
return 0; return 0;
} }