diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2021-08-12 20:06:40 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2021-08-12 20:06:40 +0300 |
commit | 59cd4f435ee972b8fb87d50ea36d76929aabf3a3 (patch) | |
tree | 87113654ebfe626e76d63e3410c2bc1ba7fe148a /sound/soc/kirkwood/kirkwood-dma.c | |
parent | 1746f4db513563bb22e0ba0c419d0c90912dfae1 (diff) | |
parent | d07149aba2ef423eae94a9cc2a6365d0cdf6fd51 (diff) | |
download | linux-59cd4f435ee972b8fb87d50ea36d76929aabf3a3.tar.xz |
Merge tag 'sound-5.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"This seems to be a usual bump in the middle, containing lots of
pending ASoC fixes:
- Yet another PCM mmap regression fix
- Fix for ASoC DAPM prefix handling
- Various cs42l42 codec fixes
- PCM buffer reference fixes in a few ASoC drivers
- Fixes for ASoC SOF, AMD, tlv320, WM
- HD-audio quirks"
* tag 'sound-5.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (32 commits)
ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 650 G8 Notebook PC
ALSA: pcm: Fix mmap breakage without explicit buffer setup
ALSA: hda: Add quirk for ASUS Flow x13
ASoC: cs42l42: Fix mono playback
ASoC: cs42l42: Constrain sample rate to prevent illegal SCLK
ASoC: cs42l42: Fix LRCLK frame start edge
ASoC: cs42l42: PLL must be running when changing MCLK_SRC_SEL
ASoC: cs42l42: Remove duplicate control for WNF filter frequency
ASoC: cs42l42: Fix inversion of ADC Notch Switch control
ASoC: SOF: Intel: hda-ipc: fix reply size checking
ASoC: SOF: Intel: Kconfig: fix SoundWire dependencies
ASoC: amd: Fix reference to PCM buffer address
ASoC: nau8824: Fix open coded prefix handling
ASoC: kirkwood: Fix reference to PCM buffer address
ASoC: uniphier: Fix reference to PCM buffer address
ASoC: xilinx: Fix reference to PCM buffer address
ASoC: intel: atom: Fix reference to PCM buffer address
ASoC: cs42l42: Fix bclk calculation for mono
ASoC: cs42l42: Don't allow SND_SOC_DAIFMT_LEFT_J
ASoC: cs42l42: Correct definition of ADC Volume control
...
Diffstat (limited to 'sound/soc/kirkwood/kirkwood-dma.c')
-rw-r--r-- | sound/soc/kirkwood/kirkwood-dma.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/sound/soc/kirkwood/kirkwood-dma.c b/sound/soc/kirkwood/kirkwood-dma.c index c2a5933bfcfc..700a18561a94 100644 --- a/sound/soc/kirkwood/kirkwood-dma.c +++ b/sound/soc/kirkwood/kirkwood-dma.c @@ -104,8 +104,6 @@ static int kirkwood_dma_open(struct snd_soc_component *component, int err; struct snd_pcm_runtime *runtime = substream->runtime; struct kirkwood_dma_data *priv = kirkwood_priv(substream); - const struct mbus_dram_target_info *dram; - unsigned long addr; snd_soc_set_runtime_hwparams(substream, &kirkwood_dma_snd_hw); @@ -142,20 +140,14 @@ static int kirkwood_dma_open(struct snd_soc_component *component, writel((unsigned int)-1, priv->io + KIRKWOOD_ERR_MASK); } - dram = mv_mbus_dram_info(); - addr = substream->dma_buffer.addr; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (priv->substream_play) return -EBUSY; priv->substream_play = substream; - kirkwood_dma_conf_mbus_windows(priv->io, - KIRKWOOD_PLAYBACK_WIN, addr, dram); } else { if (priv->substream_rec) return -EBUSY; priv->substream_rec = substream; - kirkwood_dma_conf_mbus_windows(priv->io, - KIRKWOOD_RECORD_WIN, addr, dram); } return 0; @@ -182,6 +174,23 @@ static int kirkwood_dma_close(struct snd_soc_component *component, return 0; } +static int kirkwood_dma_hw_params(struct snd_soc_component *component, + struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct kirkwood_dma_data *priv = kirkwood_priv(substream); + const struct mbus_dram_target_info *dram = mv_mbus_dram_info(); + unsigned long addr = substream->runtime->dma_addr; + + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + kirkwood_dma_conf_mbus_windows(priv->io, + KIRKWOOD_PLAYBACK_WIN, addr, dram); + else + kirkwood_dma_conf_mbus_windows(priv->io, + KIRKWOOD_RECORD_WIN, addr, dram); + return 0; +} + static int kirkwood_dma_prepare(struct snd_soc_component *component, struct snd_pcm_substream *substream) { @@ -246,6 +255,7 @@ const struct snd_soc_component_driver kirkwood_soc_component = { .name = DRV_NAME, .open = kirkwood_dma_open, .close = kirkwood_dma_close, + .hw_params = kirkwood_dma_hw_params, .prepare = kirkwood_dma_prepare, .pointer = kirkwood_dma_pointer, .pcm_construct = kirkwood_dma_new, |