mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-13 14:14:37 +00:00
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:
parent
6ff33f3902
commit
1ff68f5590
1 changed files with 24 additions and 61 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue