Merge series from Cezary Rojewski <cezary.rojewski@intel.com>: Set is made of one fix for dma-transfer so that result of dmaengine_submit() is tested before moving on, and few cleanups: - two non-impactful, where catpt_component_open() layout gets improved slightly as well as relocation of couple of locals found in PCM-functions so that they look more cohesive - no need to expose catpt-driver board-matching information globally. Most fields are not by it and it's the sole user of haswell_machines table. By having them locally it is clear what is actually being used Cezary Rojewski (5): ASoC: Intel: catpt: Test dmaengine_submit() result before moving on ASoC: Intel: catpt: Reduce size of catpt_component_open() ASoC: Intel: catpt: Streamline locals declaration for PCM-functions ASoC: Intel: catpt: Drop SND_SOC_ACPI_INTEL_MATCH dependency ASoC: Intel: Drop legacy HSW/BDW board-match information include/sound/soc-acpi-intel-match.h | 1 - sound/soc/intel/Kconfig | 2 +- sound/soc/intel/catpt/device.c | 33 +++++++++++++++-- sound/soc/intel/catpt/dsp.c | 14 ++++++- sound/soc/intel/catpt/pcm.c | 37 +++++++++---------- .../common/soc-acpi-intel-hsw-bdw-match.c | 16 -------- 6 files changed, 61 insertions(+), 42 deletions(-) -- 2.25.1
Unified · Split
| @@ -65,6 +65,7 @@ static int catpt_dma_memcpy(struct catpt_dev *cdev, struct dma_chan *chan, · 64 unmodified lines | ||
| 65 | 65 | { |
| 66 | 66 | struct dma_async_tx_descriptor *desc; |
| 67 | 67 | enum dma_status status; |
| 68 | + int ret; | |
| 68 | 69 | |
| 69 | 70 | desc = dmaengine_prep_dma_memcpy(chan, dst_addr, src_addr, size, |
| 70 | 71 | DMA_CTRL_ACK); |
| @@ -77,13 +78,22 @@ static int catpt_dma_memcpy(struct catpt_dev *cdev, struct dma_chan *chan, · 6 unmodified lines | ||
| 77 | 78 | catpt_updatel_shim(cdev, HMDC, |
| 78 | 79 | CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id), |
| 79 | 80 | CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id)); |
| 80 | − dmaengine_submit(desc); | |
| 81 | + | |
| 82 | + ret = dma_submit_error(dmaengine_submit(desc)); | |
| 83 | + if (ret) { | |
| 84 | + dev_err(cdev->dev, "submit tx failed: %d\n", ret); | |
| 85 | + goto clear_hdda; | |
| 86 | + } | |
| 87 | + | |
| 81 | 88 | status = dma_wait_for_async_tx(desc); |
| 89 | + ret = (status == DMA_COMPLETE) ? 0 : -EPROTO; | |
| 90 | + | |
| 91 | +clear_hdda: | |
| 82 | 92 | /* regardless of status, disable access to HOST memory in demand mode */ |
| 83 | 93 | catpt_updatel_shim(cdev, HMDC, |
| 84 | 94 | CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id), 0); |
| 85 | 95 | |
| 86 | − return (status == DMA_COMPLETE) ? 0 : -EPROTO; | |
| 96 | + return ret; | |
| 87 | 97 | } |
| 88 | 98 | |
| 89 | 99 | int catpt_dma_memcpy_todsp(struct catpt_dev *cdev, struct dma_chan *chan, |
| @@ -259,9 +259,9 @@ static enum catpt_channel_config catpt_get_channel_config(u32 num_channels) · 258 unmodified lines | ||
| 259 | 259 | static int catpt_dai_startup(struct snd_pcm_substream *substream, |
| 260 | 260 | struct snd_soc_dai *dai) |
| 261 | 261 | { |
| 262 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 263 | 262 | struct catpt_stream_template *template; |
| 264 | 263 | struct catpt_stream_runtime *stream; |
| 264 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 265 | 265 | struct resource *res; |
| 266 | 266 | int ret; |
| 267 | 267 | |
| @@ -306,8 +306,8 @@ err_pgtbl: · 38 unmodified lines | ||
| 306 | 306 | static void catpt_dai_shutdown(struct snd_pcm_substream *substream, |
| 307 | 307 | struct snd_soc_dai *dai) |
| 308 | 308 | { |
| 309 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 310 | 309 | struct catpt_stream_runtime *stream; |
| 310 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 311 | 311 | |
| 312 | 312 | stream = snd_soc_dai_get_dma_data(dai, substream); |
| 313 | 313 | |
| @@ -329,9 +329,9 @@ static int catpt_set_dspvol(struct catpt_dev *cdev, u8 stream_id, long *ctlvol); · 15 unmodified lines | ||
| 329 | 329 | static int catpt_dai_apply_usettings(struct snd_soc_dai *dai, |
| 330 | 330 | struct catpt_stream_runtime *stream) |
| 331 | 331 | { |
| 332 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 333 | 332 | struct snd_soc_component *component = dai->component; |
| 334 | 333 | struct snd_kcontrol *pos; |
| 334 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 335 | 335 | const char *name; |
| 336 | 336 | int ret; |
| 337 | 337 | u32 id = stream->info.stream_hw_id; |
| @@ -374,12 +374,12 @@ static int catpt_dai_hw_params(struct snd_pcm_substream *substream, · 36 unmodified lines | ||
| 374 | 374 | struct snd_pcm_hw_params *params, |
| 375 | 375 | struct snd_soc_dai *dai) |
| 376 | 376 | { |
| 377 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 377 | + struct snd_pcm_runtime *rtm = substream->runtime; | |
| 378 | + struct snd_dma_buffer *dmab; | |
| 378 | 379 | struct catpt_stream_runtime *stream; |
| 379 | 380 | struct catpt_audio_format afmt; |
| 380 | 381 | struct catpt_ring_info rinfo; |
| 381 | − struct snd_pcm_runtime *rtm = substream->runtime; | |
| 382 | − struct snd_dma_buffer *dmab; | |
| 382 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 383 | 383 | int ret; |
| 384 | 384 | |
| 385 | 385 | stream = snd_soc_dai_get_dma_data(dai, substream); |
| @@ -427,8 +427,8 @@ static int catpt_dai_hw_params(struct snd_pcm_substream *substream, · 41 unmodified lines | ||
| 427 | 427 | static int catpt_dai_hw_free(struct snd_pcm_substream *substream, |
| 428 | 428 | struct snd_soc_dai *dai) |
| 429 | 429 | { |
| 430 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 431 | 430 | struct catpt_stream_runtime *stream; |
| 431 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 432 | 432 | |
| 433 | 433 | stream = snd_soc_dai_get_dma_data(dai, substream); |
| 434 | 434 | if (!stream->allocated) |
| @@ -444,8 +444,8 @@ static int catpt_dai_hw_free(struct snd_pcm_substream *substream, · 9 unmodified lines | ||
| 444 | 444 | static int catpt_dai_prepare(struct snd_pcm_substream *substream, |
| 445 | 445 | struct snd_soc_dai *dai) |
| 446 | 446 | { |
| 447 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 448 | 447 | struct catpt_stream_runtime *stream; |
| 448 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 449 | 449 | int ret; |
| 450 | 450 | |
| 451 | 451 | stream = snd_soc_dai_get_dma_data(dai, substream); |
| @@ -467,9 +467,9 @@ static int catpt_dai_prepare(struct snd_pcm_substream *substream, · 15 unmodified lines | ||
| 467 | 467 | static int catpt_dai_trigger(struct snd_pcm_substream *substream, int cmd, |
| 468 | 468 | struct snd_soc_dai *dai) |
| 469 | 469 | { |
| 470 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 471 | − struct catpt_stream_runtime *stream; | |
| 472 | 470 | struct snd_pcm_runtime *runtime = substream->runtime; |
| 471 | + struct catpt_stream_runtime *stream; | |
| 472 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 473 | 473 | snd_pcm_uframes_t pos; |
| 474 | 474 | int ret; |
| 475 | 475 | |
| @@ -595,9 +595,8 @@ static int catpt_component_open(struct snd_soc_component *component, · 119 unmodified lines | ||
| 595 | 595 | { |
| 596 | 596 | struct snd_soc_pcm_runtime *rtm = substream->private_data; |
| 597 | 597 | |
| 598 | − if (rtm->dai_link->no_pcm) | |
| 599 | − return 0; | |
| 600 | − snd_soc_set_runtime_hwparams(substream, &catpt_pcm_hardware); | |
| 598 | + if (!rtm->dai_link->no_pcm) | |
| 599 | + snd_soc_set_runtime_hwparams(substream, &catpt_pcm_hardware); | |
| 601 | 600 | return 0; |
| 602 | 601 | } |
| 603 | 602 | |
| @@ -605,10 +604,10 @@ static snd_pcm_uframes_t · 1 unmodified line | ||
| 605 | 604 | catpt_component_pointer(struct snd_soc_component *component, |
| 606 | 605 | struct snd_pcm_substream *substream) |
| 607 | 606 | { |
| 608 | − struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 609 | − struct catpt_stream_runtime *stream; | |
| 610 | 607 | struct snd_soc_pcm_runtime *rtm = substream->private_data; |
| 611 | 608 | struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtm, 0); |
| 609 | + struct catpt_stream_runtime *stream; | |
| 610 | + struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 612 | 611 | u32 pos; |
| 613 | 612 | |
| 614 | 613 | if (rtm->dai_link->no_pcm) |
| @@ -633,8 +632,8 @@ static int catpt_dai_pcm_new(struct snd_soc_pcm_runtime *rtm, · 18 unmodified lines | ||
| 633 | 632 | struct snd_soc_dai *dai) |
| 634 | 633 | { |
| 635 | 634 | struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtm, 0); |
| 636 | − struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 637 | 635 | struct catpt_ssp_device_format devfmt; |
| 636 | + struct catpt_dev *cdev = dev_get_drvdata(dai->dev); | |
| 638 | 637 | int ret; |
| 639 | 638 | |
| 640 | 639 | devfmt.iface = dai->driver->id; |
| @@ -894,8 +893,8 @@ static int catpt_stream_volume_get(struct snd_kcontrol *kcontrol, · 253 unmodified lines | ||
| 894 | 893 | { |
| 895 | 894 | struct snd_soc_component *component = |
| 896 | 895 | snd_soc_kcontrol_component(kcontrol); |
| 897 | − struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 898 | 896 | struct catpt_stream_runtime *stream; |
| 897 | + struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 899 | 898 | long *ctlvol = (long *)kcontrol->private_value; |
| 900 | 899 | u32 dspvol; |
| 901 | 900 | int i; |
| @@ -926,8 +925,8 @@ static int catpt_stream_volume_put(struct snd_kcontrol *kcontrol, · 24 unmodified lines | ||
| 926 | 925 | { |
| 927 | 926 | struct snd_soc_component *component = |
| 928 | 927 | snd_soc_kcontrol_component(kcontrol); |
| 929 | − struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 930 | 928 | struct catpt_stream_runtime *stream; |
| 929 | + struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 931 | 930 | long *ctlvol = (long *)kcontrol->private_value; |
| 932 | 931 | int ret, i; |
| 933 | 932 | |
| @@ -1002,8 +1001,8 @@ static int catpt_loopback_switch_put(struct snd_kcontrol *kcontrol, · 68 unmodified lines | ||
| 1002 | 1001 | { |
| 1003 | 1002 | struct snd_soc_component *component = |
| 1004 | 1003 | snd_soc_kcontrol_component(kcontrol); |
| 1005 | − struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 1006 | 1004 | struct catpt_stream_runtime *stream; |
| 1005 | + struct catpt_dev *cdev = dev_get_drvdata(component->dev); | |
| 1007 | 1006 | bool mute; |
| 1008 | 1007 | int ret; |
| 1009 | 1008 | |