[alsa-devel] [PATCH 1/5] ASoC: dwc: Allocate resources with devm_ioremap_resource
Prepare for the introduction of device-tree support by re-ordering some of the allocations and using devm_iomap_resource to simplify IO mapping.
Signed-off-by: Andrew Jackson Andrew.Jackson@arm.com --- sound/soc/dwc/designware_i2s.c | 46 ++++++++++++++++----------------------- 1 files changed, 19 insertions(+), 27 deletions(-)
diff --git a/sound/soc/dwc/designware_i2s.c b/sound/soc/dwc/designware_i2s.c index e961388..08f0229 100644 --- a/sound/soc/dwc/designware_i2s.c +++ b/sound/soc/dwc/designware_i2s.c @@ -338,31 +338,34 @@ static int dw_i2s_probe(struct platform_device *pdev) return -EINVAL; }
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(&pdev->dev, "no i2s resource defined\n"); - return -ENODEV; - } - - if (!devm_request_mem_region(&pdev->dev, res->start, - resource_size(res), pdev->name)) { - dev_err(&pdev->dev, "i2s region already claimed\n"); - return -EBUSY; - } - dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); if (!dev) { dev_warn(&pdev->dev, "kzalloc fail\n"); return -ENOMEM; }
- dev->i2s_base = devm_ioremap(&pdev->dev, res->start, - resource_size(res)); - if (!dev->i2s_base) { - dev_err(&pdev->dev, "ioremap fail for i2s_region\n"); + dw_i2s_dai = devm_kzalloc(&pdev->dev, sizeof(*dw_i2s_dai), GFP_KERNEL); + if (!dw_i2s_dai) { + dev_err(&pdev->dev, "mem allocation failed for dai driver\n"); return -ENOMEM; }
+ dw_i2s_dai->ops = &dw_i2s_dai_ops; + dw_i2s_dai->suspend = dw_i2s_suspend; + dw_i2s_dai->resume = dw_i2s_resume; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { + dev_err(&pdev->dev, "no i2s resource defined\n"); + return -ENODEV; + } + + dev->i2s_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(dev->i2s_base)) { + dev_err(&pdev->dev, "ioremap fail for i2s_region\n"); + return PTR_ERR(dev->i2s_base); + } + cap = pdata->cap; dev->capability = cap; dev->i2s_clk_cfg = pdata->i2s_clk_cfg; @@ -388,13 +391,6 @@ static int dw_i2s_probe(struct platform_device *pdev) if (ret < 0) goto err_clk_put;
- dw_i2s_dai = devm_kzalloc(&pdev->dev, sizeof(*dw_i2s_dai), GFP_KERNEL); - if (!dw_i2s_dai) { - dev_err(&pdev->dev, "mem allocation failed for dai driver\n"); - ret = -ENOMEM; - goto err_clk_disable; - } - if (cap & DWC_I2S_PLAY) { dev_dbg(&pdev->dev, " designware: play supported\n"); dw_i2s_dai->playback.channels_min = MIN_CHANNEL_NUM; @@ -411,10 +407,6 @@ static int dw_i2s_probe(struct platform_device *pdev) dw_i2s_dai->capture.rates = pdata->snd_rates; }
- dw_i2s_dai->ops = &dw_i2s_dai_ops; - dw_i2s_dai->suspend = dw_i2s_suspend; - dw_i2s_dai->resume = dw_i2s_resume; - dev->dev = &pdev->dev; dev_set_drvdata(&pdev->dev, dev); ret = snd_soc_register_component(&pdev->dev, &dw_i2s_component,
On 12/03/2014 05:38 PM, Andrew Jackson wrote: [,,,[
- dw_i2s_dai = devm_kzalloc(&pdev->dev, sizeof(*dw_i2s_dai), GFP_KERNEL);
- if (!dw_i2s_dai) {
dev_err(&pdev->dev, "mem allocation failed for dai driver\n");
All the memory alloc functions already print a error message.
return -ENOMEM;
}
- dw_i2s_dai->ops = &dw_i2s_dai_ops;
- dw_i2s_dai->suspend = dw_i2s_suspend;
- dw_i2s_dai->resume = dw_i2s_resume;
This seems to be separate from the devm_ioremap_resource() change.
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
You don't actually have to check it devm_ioremap_resource does this for you.
dev_err(&pdev->dev, "no i2s resource defined\n");
return -ENODEV;
- }
- dev->i2s_base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(dev->i2s_base)) {
dev_err(&pdev->dev, "ioremap fail for i2s_region\n");
Same here devm_ioremap_resource() will already print a appropriate error message.
return PTR_ERR(dev->i2s_base);
- }
On 12/03/14 16:44, Lars-Peter Clausen wrote:
On 12/03/2014 05:38 PM, Andrew Jackson wrote: [,,,[
- dw_i2s_dai = devm_kzalloc(&pdev->dev, sizeof(*dw_i2s_dai), GFP_KERNEL);
- if (!dw_i2s_dai) {
dev_err(&pdev->dev, "mem allocation failed for dai driver\n");
All the memory alloc functions already print a error message.
I will remove the error message(s).
return -ENOMEM;
}
- dw_i2s_dai->ops = &dw_i2s_dai_ops;
- dw_i2s_dai->suspend = dw_i2s_suspend;
- dw_i2s_dai->resume = dw_i2s_resume;
This seems to be separate from the devm_ioremap_resource() change.
It seemed reasonable to assign these known values to the dw_i2s_dai as soon as it had been allocated. Would you prefer this in a separate patch?
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
You don't actually have to check it devm_ioremap_resource does this for you.
Oh, thanks, paranoia was taking over.
dev_err(&pdev->dev, "no i2s resource defined\n");
return -ENODEV;
- }
- dev->i2s_base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(dev->i2s_base)) {
dev_err(&pdev->dev, "ioremap fail for i2s_region\n");
Same here devm_ioremap_resource() will already print a appropriate error message.
return PTR_ERR(dev->i2s_base);
- }
On Wed, Dec 03, 2014 at 04:38:46PM +0000, Andrew Jackson wrote:
Prepare for the introduction of device-tree support by re-ordering some of the allocations and using devm_iomap_resource to simplify IO mapping.
Applied, thanks.
On 12/03/14 18:26, Mark Brown wrote:
On Wed, Dec 03, 2014 at 04:38:46PM +0000, Andrew Jackson wrote:
Prepare for the introduction of device-tree support by re-ordering some of the allocations and using devm_iomap_resource to simplify IO mapping.
Applied, thanks.
Lars-Peter Clausen had some comments on this patch so I was intending to resubmit it. Would you prefer that I submit a patch to my original?
Andrew
On Thu, Dec 04, 2014 at 09:05:01AM +0000, Andrew Jackson wrote:
Lars-Peter Clausen had some comments on this patch so I was intending to resubmit it. Would you prefer that I submit a patch to my original?
Incremental patches, same as is standard for upstream. Please also fix your mail client to word wrap within paragraphs so your mails are readable.
participants (3)
-
Andrew Jackson
-
Lars-Peter Clausen
-
Mark Brown