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
65{65{
66 struct dma_async_tx_descriptor *desc;66 struct dma_async_tx_descriptor *desc;
67 enum dma_status status;67 enum dma_status status;
68 int ret;
68 69
69 desc = dmaengine_prep_dma_memcpy(chan, dst_addr, src_addr, size,70 desc = dmaengine_prep_dma_memcpy(chan, dst_addr, src_addr, size,
70 DMA_CTRL_ACK);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 catpt_updatel_shim(cdev, HMDC,78 catpt_updatel_shim(cdev, HMDC,
78 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id),79 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id),
79 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id));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 status = dma_wait_for_async_tx(desc);88 status = dma_wait_for_async_tx(desc);
89 ret = (status == DMA_COMPLETE) ? 0 : -EPROTO;
90
91clear_hdda:
82 /* regardless of status, disable access to HOST memory in demand mode */92 /* regardless of status, disable access to HOST memory in demand mode */
83 catpt_updatel_shim(cdev, HMDC,93 catpt_updatel_shim(cdev, HMDC,
84 CATPT_HMDC_HDDA(CATPT_DMA_DEVID, chan->chan_id), 0);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
89int catpt_dma_memcpy_todsp(struct catpt_dev *cdev, struct dma_chan *chan,99int 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
259static int catpt_dai_startup(struct snd_pcm_substream *substream,259static int catpt_dai_startup(struct snd_pcm_substream *substream,
260 struct snd_soc_dai *dai)260 struct snd_soc_dai *dai)
261{261{
262 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
263 struct catpt_stream_template *template;262 struct catpt_stream_template *template;
264 struct catpt_stream_runtime *stream;263 struct catpt_stream_runtime *stream;
264 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
265 struct resource *res;265 struct resource *res;
266 int ret;266 int ret;
267 267
@@ -306,8 +306,8 @@ err_pgtbl: · 38 unmodified lines
306static void catpt_dai_shutdown(struct snd_pcm_substream *substream,306static void catpt_dai_shutdown(struct snd_pcm_substream *substream,
307 struct snd_soc_dai *dai)307 struct snd_soc_dai *dai)
308{308{
309 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
310 struct catpt_stream_runtime *stream;309 struct catpt_stream_runtime *stream;
310 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
311 311
312 stream = snd_soc_dai_get_dma_data(dai, substream);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
329static int catpt_dai_apply_usettings(struct snd_soc_dai *dai,329static int catpt_dai_apply_usettings(struct snd_soc_dai *dai,
330 struct catpt_stream_runtime *stream)330 struct catpt_stream_runtime *stream)
331{331{
332 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
333 struct snd_soc_component *component = dai->component;332 struct snd_soc_component *component = dai->component;
334 struct snd_kcontrol *pos;333 struct snd_kcontrol *pos;
334 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
335 const char *name;335 const char *name;
336 int ret;336 int ret;
337 u32 id = stream->info.stream_hw_id;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 struct snd_pcm_hw_params *params,374 struct snd_pcm_hw_params *params,
375 struct snd_soc_dai *dai)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 struct catpt_stream_runtime *stream;379 struct catpt_stream_runtime *stream;
379 struct catpt_audio_format afmt;380 struct catpt_audio_format afmt;
380 struct catpt_ring_info rinfo;381 struct catpt_ring_info rinfo;
381 struct snd_pcm_runtime *rtm = substream->runtime;382 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
382 struct snd_dma_buffer *dmab;
383 int ret;383 int ret;
384 384
385 stream = snd_soc_dai_get_dma_data(dai, substream);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
427static int catpt_dai_hw_free(struct snd_pcm_substream *substream,427static int catpt_dai_hw_free(struct snd_pcm_substream *substream,
428 struct snd_soc_dai *dai)428 struct snd_soc_dai *dai)
429{429{
430 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
431 struct catpt_stream_runtime *stream;430 struct catpt_stream_runtime *stream;
431 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
432 432
433 stream = snd_soc_dai_get_dma_data(dai, substream);433 stream = snd_soc_dai_get_dma_data(dai, substream);
434 if (!stream->allocated)434 if (!stream->allocated)
@@ -444,8 +444,8 @@ static int catpt_dai_hw_free(struct snd_pcm_substream *substream, · 9 unmodified lines
444static int catpt_dai_prepare(struct snd_pcm_substream *substream,444static int catpt_dai_prepare(struct snd_pcm_substream *substream,
445 struct snd_soc_dai *dai)445 struct snd_soc_dai *dai)
446{446{
447 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
448 struct catpt_stream_runtime *stream;447 struct catpt_stream_runtime *stream;
448 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
449 int ret;449 int ret;
450 450
451 stream = snd_soc_dai_get_dma_data(dai, substream);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
467static int catpt_dai_trigger(struct snd_pcm_substream *substream, int cmd,467static int catpt_dai_trigger(struct snd_pcm_substream *substream, int cmd,
468 struct snd_soc_dai *dai)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 struct snd_pcm_runtime *runtime = substream->runtime;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 snd_pcm_uframes_t pos;473 snd_pcm_uframes_t pos;
474 int ret;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 struct snd_soc_pcm_runtime *rtm = substream->private_data;596 struct snd_soc_pcm_runtime *rtm = substream->private_data;
597 597
598 if (rtm->dai_link->no_pcm)598 if (!rtm->dai_link->no_pcm)
599 return 0;599 snd_soc_set_runtime_hwparams(substream, &catpt_pcm_hardware);
600 snd_soc_set_runtime_hwparams(substream, &catpt_pcm_hardware);
601 return 0;600 return 0;
602}601}
603 602
@@ -605,10 +604,10 @@ static snd_pcm_uframes_t · 1 unmodified line
605catpt_component_pointer(struct snd_soc_component *component,604catpt_component_pointer(struct snd_soc_component *component,
606 struct snd_pcm_substream *substream)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 struct snd_soc_pcm_runtime *rtm = substream->private_data;607 struct snd_soc_pcm_runtime *rtm = substream->private_data;
611 struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtm, 0);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 u32 pos;611 u32 pos;
613 612
614 if (rtm->dai_link->no_pcm)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 struct snd_soc_dai *dai)632 struct snd_soc_dai *dai)
634{633{
635 struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtm, 0);634 struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtm, 0);
636 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
637 struct catpt_ssp_device_format devfmt;635 struct catpt_ssp_device_format devfmt;
636 struct catpt_dev *cdev = dev_get_drvdata(dai->dev);
638 int ret;637 int ret;
639 638
640 devfmt.iface = dai->driver->id;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 struct snd_soc_component *component =894 struct snd_soc_component *component =
896 snd_soc_kcontrol_component(kcontrol);895 snd_soc_kcontrol_component(kcontrol);
897 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
898 struct catpt_stream_runtime *stream;896 struct catpt_stream_runtime *stream;
897 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
899 long *ctlvol = (long *)kcontrol->private_value;898 long *ctlvol = (long *)kcontrol->private_value;
900 u32 dspvol;899 u32 dspvol;
901 int i;900 int i;
@@ -926,8 +925,8 @@ static int catpt_stream_volume_put(struct snd_kcontrol *kcontrol, · 24 unmodified lines
926{925{
927 struct snd_soc_component *component =926 struct snd_soc_component *component =
928 snd_soc_kcontrol_component(kcontrol);927 snd_soc_kcontrol_component(kcontrol);
929 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
930 struct catpt_stream_runtime *stream;928 struct catpt_stream_runtime *stream;
929 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
931 long *ctlvol = (long *)kcontrol->private_value;930 long *ctlvol = (long *)kcontrol->private_value;
932 int ret, i;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 struct snd_soc_component *component =1002 struct snd_soc_component *component =
1004 snd_soc_kcontrol_component(kcontrol);1003 snd_soc_kcontrol_component(kcontrol);
1005 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
1006 struct catpt_stream_runtime *stream;1004 struct catpt_stream_runtime *stream;
1005 struct catpt_dev *cdev = dev_get_drvdata(component->dev);
1007 bool mute;1006 bool mute;
1008 int ret;1007 int ret;
1009 1008

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