diff options
Diffstat (limited to 'sound/soc/sprd/sprd-mcdt.c')
| -rw-r--r-- | sound/soc/sprd/sprd-mcdt.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/sound/soc/sprd/sprd-mcdt.c b/sound/soc/sprd/sprd-mcdt.c index f439e5503a3c..814a1cde1d35 100644 --- a/sound/soc/sprd/sprd-mcdt.c +++ b/sound/soc/sprd/sprd-mcdt.c @@ -866,23 +866,23 @@ EXPORT_SYMBOL_GPL(sprd_mcdt_chan_dma_disable); struct sprd_mcdt_chan *sprd_mcdt_request_chan(u8 channel, enum sprd_mcdt_channel_type type) { - struct sprd_mcdt_chan *temp, *chan = NULL; + struct sprd_mcdt_chan *temp; mutex_lock(&sprd_mcdt_list_mutex); list_for_each_entry(temp, &sprd_mcdt_chan_list, list) { if (temp->type == type && temp->id == channel) { - chan = temp; + list_del_init(&temp->list); break; } } - if (chan) - list_del(&chan->list); + if (list_entry_is_head(temp, &sprd_mcdt_chan_list, list)) + temp = NULL; mutex_unlock(&sprd_mcdt_list_mutex); - return chan; + return temp; } EXPORT_SYMBOL_GPL(sprd_mcdt_request_chan); @@ -949,8 +949,7 @@ static int sprd_mcdt_probe(struct platform_device *pdev) if (!mcdt) return -ENOMEM; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - mcdt->base = devm_ioremap_resource(&pdev->dev, res); + mcdt->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); if (IS_ERR(mcdt->base)) return PTR_ERR(mcdt->base); @@ -974,7 +973,7 @@ static int sprd_mcdt_probe(struct platform_device *pdev) return 0; } -static int sprd_mcdt_remove(struct platform_device *pdev) +static void sprd_mcdt_remove(struct platform_device *pdev) { struct sprd_mcdt_chan *chan, *temp; @@ -984,8 +983,6 @@ static int sprd_mcdt_remove(struct platform_device *pdev) list_del(&chan->list); mutex_unlock(&sprd_mcdt_list_mutex); - - return 0; } static const struct of_device_id sprd_mcdt_of_match[] = { |
