History

ASoC: Intel: catpt: Dma-transfer fix and couple

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

Mark Brown committed 4 years ago

Commit c50384d2 parents be1d03e a62a0292 files · +30 −21Browse files

Unified · Split

2 files
  1. sound/soc/intel/catpt/dsp.c +12 −2
  2. sound/soc/intel/catpt/pcm.c +18 −19
sound/soc/intel/catpt/dsp.c+12−2
@@ -65,6 +65,7 @@ static int catpt_dma_memcpy(struct catpt_dev *cdev, struct dma_chan *chan, · 64 unmodified lines
6565 {
6666 struct dma_async_tx_descriptor *desc;
6767 enum dma_status status;
68+ int ret;
6869
6970 desc = dmaengine_prep_dma_memcpy(chan, dst_addr, src_addr, size,
7071 DMA_CTRL_ACK);
@@ -77,13 +78,22 @@ static int catpt_dma_memcpy(struct catpt_dev *cdev, struct dma_chan *chan, · 6 unmodified lines
7778 catpt_updatel_shim(cdev, HMDC,
7879 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id),
7980 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+
8188 status = dma_wait_for_async_tx(desc);
89+ ret = (status == DMA_COMPLETE) ? 0 : -EPROTO;
90+
91+clear_hdda:
8292 /* regardless of status, disable access to HOST memory in demand mode */
8393 catpt_updatel_shim(cdev, HMDC,
8494 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id), 0);
8595
86− return (status == DMA_COMPLETE) ? 0 : -EPROTO;
96+ return ret;
8797 }
8898
8999 int catpt_dma_memcpy_todsp(struct catpt_dev *cdev, struct dma_chan *chan,
sound/soc/intel/catpt/pcm.c+18−19
@@ -259,9 +259,9 @@ static enum catpt_channel_config catpt_get_channel_config(u32 num_channels) · 258 unmodified lines
259259 static int catpt_dai_startup(struct snd_pcm_substream *substream,
260260 struct snd_soc_dai *dai)
261261 {
262− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
263262 struct catpt_stream_template *template;
264263 struct catpt_stream_runtime *stream;
264+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
265265 struct resource *res;
266266 int ret;
267267
@@ -306,8 +306,8 @@ err_pgtbl: · 38 unmodified lines
306306 static void catpt_dai_shutdown(struct snd_pcm_substream *substream,
307307 struct snd_soc_dai *dai)
308308 {
309− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
310309 struct catpt_stream_runtime *stream;
310+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
311311
312312 stream = snd_soc_dai_get_dma_data(dai, substream);
313313
@@ -329,9 +329,9 @@ static int catpt_set_dspvol(struct catpt_dev *cdev, u8 stream_id, long *ctlvol); · 15 unmodified lines
329329 static int catpt_dai_apply_usettings(struct snd_soc_dai *dai,
330330 struct catpt_stream_runtime *stream)
331331 {
332− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
333332 struct snd_soc_component *component = dai->component;
334333 struct snd_kcontrol *pos;
334+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
335335 const char *name;
336336 int ret;
337337 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
374374 struct snd_pcm_hw_params *params,
375375 struct snd_soc_dai *dai)
376376 {
377− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
377+ struct snd_pcm_runtime *rtm = substream->runtime;
378+ struct snd_dma_buffer *dmab;
378379 struct catpt_stream_runtime *stream;
379380 struct catpt_audio_format afmt;
380381 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);
383383 int ret;
384384
385385 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
427427 static int catpt_dai_hw_free(struct snd_pcm_substream *substream,
428428 struct snd_soc_dai *dai)
429429 {
430− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
431430 struct catpt_stream_runtime *stream;
431+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
432432
433433 stream = snd_soc_dai_get_dma_data(dai, substream);
434434 if (!stream->allocated)
@@ -444,8 +444,8 @@ static int catpt_dai_hw_free(struct snd_pcm_substream *substream, · 9 unmodified lines
444444 static int catpt_dai_prepare(struct snd_pcm_substream *substream,
445445 struct snd_soc_dai *dai)
446446 {
447− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
448447 struct catpt_stream_runtime *stream;
448+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
449449 int ret;
450450
451451 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
467467 static int catpt_dai_trigger(struct snd_pcm_substream *substream, int cmd,
468468 struct snd_soc_dai *dai)
469469 {
470− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
471− struct catpt_stream_runtime *stream;
472470 struct snd_pcm_runtime *runtime = substream->runtime;
471+ struct catpt_stream_runtime *stream;
472+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
473473 snd_pcm_uframes_t pos;
474474 int ret;
475475
@@ -595,9 +595,8 @@ static int catpt_component_open(struct snd_soc_component *component, · 119 unmodified lines
595595 {
596596 struct snd_soc_pcm_runtime *rtm = substream->private_data;
597597
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);
601600 return 0;
602601 }
603602
@@ -605,10 +604,10 @@ static snd_pcm_uframes_t · 1 unmodified line
605604 catpt_component_pointer(struct snd_soc_component *component,
606605 struct snd_pcm_substream *substream)
607606 {
608− struct catpt_dev *cdev = dev_get_drvdata(component->dev);
609− struct catpt_stream_runtime *stream;
610607 struct snd_soc_pcm_runtime *rtm = substream->private_data;
611608 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);
612611 u32 pos;
613612
614613 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
633632 struct snd_soc_dai *dai)
634633 {
635634 struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtm, 0);
636− struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
637635 struct catpt_ssp_device_format devfmt;
636+ struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
638637 int ret;
639638
640639 devfmt.iface = dai->driver->id;
@@ -894,8 +893,8 @@ static int catpt_stream_volume_get(struct snd_kcontrol *kcontrol, · 253 unmodified lines
894893 {
895894 struct snd_soc_component *component =
896895 snd_soc_kcontrol_component(kcontrol);
897− struct catpt_dev *cdev = dev_get_drvdata(component->dev);
898896 struct catpt_stream_runtime *stream;
897+ struct catpt_dev *cdev = dev_get_drvdata(component->dev);
899898 long *ctlvol = (long *)kcontrol->private_value;
900899 u32 dspvol;
901900 int i;
@@ -926,8 +925,8 @@ static int catpt_stream_volume_put(struct snd_kcontrol *kcontrol, · 24 unmodified lines
926925 {
927926 struct snd_soc_component *component =
928927 snd_soc_kcontrol_component(kcontrol);
929− struct catpt_dev *cdev = dev_get_drvdata(component->dev);
930928 struct catpt_stream_runtime *stream;
929+ struct catpt_dev *cdev = dev_get_drvdata(component->dev);
931930 long *ctlvol = (long *)kcontrol->private_value;
932931 int ret, i;
933932
@@ -1002,8 +1001,8 @@ static int catpt_loopback_switch_put(struct snd_kcontrol *kcontrol, · 68 unmodified lines
10021001 {
10031002 struct snd_soc_component *component =
10041003 snd_soc_kcontrol_component(kcontrol);
1005− struct catpt_dev *cdev = dev_get_drvdata(component->dev);
10061004 struct catpt_stream_runtime *stream;
1005+ struct catpt_dev *cdev = dev_get_drvdata(component->dev);
10071006 bool mute;
10081007 int ret;
10091008

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t