mailman.alsa-project.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Sound-open-firmware

Thread Start a new thread
Download
Threads by month
  • ----- 2025 -----
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
sound-open-firmware@alsa-project.org

  • 1572 discussions
[Sound-open-firmware] [PATCH] topology: Allow multiple kcontrols for volume widget
by Ranjani Sridharan 12 Feb '18

12 Feb '18
This patch adds support for multiple kcontrols for the volume widget and adds a mute switch kcontrol to the volume playback pipeline. Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> --- Tested with: Minnowboard Turbot rt5651 SOF master: fad6f2e8490e8a1b21668a783204006e180725b5 SOF-Tool master: 58079d09994c2b243990bd23e5aff481bfd0f6c7 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 6fa721a8b7c6567eea0a2181bf9a3d2a12c31b00 --- --- topology/m4/local.m4 | 21 ++++++++++++++------- topology/sof/pipe-low-latency-capture.m4 | 2 +- topology/sof/pipe-low-latency-playback.m4 | 4 ++-- topology/sof/pipe-pcm-media.m4 | 2 +- topology/sof/pipe-tone.m4 | 2 +- topology/sof/pipe-volume-capture.m4 | 2 +- topology/sof/pipe-volume-playback.m4 | 28 +++++++++++++++++++++++++++- 7 files changed, 47 insertions(+), 14 deletions(-) diff --git a/topology/m4/local.m4 b/topology/m4/local.m4 index ad72a11..02d79a5 100644 --- a/topology/m4/local.m4 +++ b/topology/m4/local.m4 @@ -4,6 +4,13 @@ define(`concat',`$1$2') define(`STR', `"'$1`"') +define(`argn', `ifelse(`$1', 1, ``$2'', + `argn(decr(`$1'), shift(shift($@)))')') + +define(`KCONTROLS', `pushdef(`i', $#) pushdef(`j', `1') KCONTROL_LOOP($@)') +define(`KCONTROL_LOOP', `argn(j,$@) + ifelse(i,`1', `', `define(`i', decr(i)) define(`j', incr(j)) $0($@)')') + dnl create direct DAPM/pipeline link between 2 widgets) define(`dapm', `"$1, , $2"') @@ -143,14 +150,14 @@ define(`W_PCM_CAPTURE', dnl PGA name) define(`N_PGA', `PGA'PIPELINE_ID`.'$1) -dnl W_PGA(name, kcontrol, format, periods_sink, periods_source, preload) +dnl W_PGA(name, format, periods_sink, periods_source, preload, kcontrol0. kcontrol1...etc) define(`W_PGA', -`SectionVendorTuples."'N_PGA($1)`_tuples_w" {' +`pushdef(`args',`eval($#-6)')SectionVendorTuples."'N_PGA($1)`_tuples_w" {' ` tokens "sof_comp_tokens"' ` tuples."word" {' -` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($4) -` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($5) -` SOF_TKN_COMP_PRELOAD_COUNT' STR($6) +` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($3) +` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($4) +` SOF_TKN_COMP_PRELOAD_COUNT' STR($5) ` }' `}' `SectionData."'N_PGA($1)`_data_w" {' @@ -159,7 +166,7 @@ define(`W_PGA', `SectionVendorTuples."'N_PGA($1)`_tuples_str" {' ` tokens "sof_comp_tokens"' ` tuples."string" {' -` SOF_TKN_COMP_FORMAT' STR($3) +` SOF_TKN_COMP_FORMAT' STR($2) ` }' `}' `SectionData."'N_PGA($1)`_data_str" {' @@ -174,7 +181,7 @@ define(`W_PGA', ` "'N_PGA($1)`_data_str"' ` ]' ` mixer [' -` "'$2`"' + $6 ` ]' `}') diff --git a/topology/sof/pipe-low-latency-capture.m4 b/topology/sof/pipe-low-latency-capture.m4 index 0c989a7..2602ebd 100644 --- a/topology/sof/pipe-low-latency-capture.m4 +++ b/topology/sof/pipe-low-latency-capture.m4 @@ -48,7 +48,7 @@ SectionControlMixer.STR(PCM PCM_ID Capture Volume) { W_PCM_CAPTURE(Low Latency Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 0) # "Capture Volume" has 2 sink and source periods for host and DAI ping-pong -W_PGA(0, PCM PCM_ID Capture Volume, PIPELINE_FORMAT, 2, 2, 0) +W_PGA(0, PIPELINE_FORMAT, 2, 2, 0, KCONTROLS("PCM PCM_ID Capture Volume")) # Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, diff --git a/topology/sof/pipe-low-latency-playback.m4 b/topology/sof/pipe-low-latency-playback.m4 index cd04ccf..ebb14ec 100644 --- a/topology/sof/pipe-low-latency-playback.m4 +++ b/topology/sof/pipe-low-latency-playback.m4 @@ -91,10 +91,10 @@ SectionControlMixer.STR(Master Playback Volume) { W_PCM_PLAYBACK(Low Latency Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) # "Playback Volume" has 1 sink period and 2 source periods for host ping-pong -W_PGA(0, PCM PCM_ID Playback Volume, PIPELINE_FORMAT, 1, 2, 1) +W_PGA(0, PIPELINE_FORMAT, 1, 2, 1, KCONTROLS("PCM PCM_ID Playback Volume")) # "Master Playback Volume" has 1 source and 2 sink periods for DAI ping-pong -W_PGA(1, Master Playback Volume, PIPELINE_FORMAT, 2, 1, 1) +W_PGA(1, PIPELINE_FORMAT, 2, 1, 1, KCONTROLS("Master Playback Volume")) # Mixer 0 has 1 sink and source periods. W_MIXER(0, PIPELINE_FORMAT, 1, 1, 1) diff --git a/topology/sof/pipe-pcm-media.m4 b/topology/sof/pipe-pcm-media.m4 index 7bfb35a..526ae35 100644 --- a/topology/sof/pipe-pcm-media.m4 +++ b/topology/sof/pipe-pcm-media.m4 @@ -68,7 +68,7 @@ SectionData."media_src_conf" { W_PCM_PLAYBACK(Media Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) # "Playback Volume" has 2 sink period and 2 source periods for host ping-pong -W_PGA(0, PCM PCM_ID Playback Volume, PIPELINE_FORMAT, 2, 2, 2) +W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, KCONTROLS("PCM PCM_ID Playback Volume")) # "SRC 0" has 2 sink and source periods. W_SRC(0, PIPELINE_FORMAT, 2, 2, media_src_conf, 2) diff --git a/topology/sof/pipe-tone.m4 b/topology/sof/pipe-tone.m4 index ccead10..e04a1b9 100644 --- a/topology/sof/pipe-tone.m4 +++ b/topology/sof/pipe-tone.m4 @@ -50,7 +50,7 @@ SectionControlMixer.STR(Tone Volume PIPELINE_ID) { W_TONE(0, PIPELINE_FORMAT, 2, 0, 0) # "Tone Volume" has 2 sink period and 2 source periods -W_PGA(0, Tone Volume PIPELINE_ID, PIPELINE_FORMAT, 2, 2, 0) +W_PGA(0, PIPELINE_FORMAT, 2, 2, 0, KCONTROLS("Tone Volume PIPELINE_ID")) # Low Latency Buffers W_BUFFER(0,COMP_BUFFER_SIZE(2, diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index 3030907..58e5393 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -47,7 +47,7 @@ SectionControlMixer.STR(Master Capture Volume) { W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) # "Volume" has 2 source and 2 sink periods -W_PGA(0, Master Capture Volume, PIPELINE_FORMAT, 2, 2, 2) +W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, KCONTROLS("Master Capture Volume")) # Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 54bc13d..8aa02fb 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -38,6 +38,32 @@ SectionControlMixer.STR(Master Playback Volume) { tlv "vtlv_m90s3" } +SectionControlMixer.STR(Master Playback Volume Switch) { + + # control belongs to this index group + index STR(PIPELINE_ID) + + # Channel register and shift for Front Left/Right + channel."FL" { + reg "1" + shift "0" + } + channel."FR" { + reg "1" + shift "1" + } + + # control uses bespoke driver get/put/info ID 0 + ops."ctl" { + info "volsw" + get "256" + put "256" + } + + # Volume mute on/off + max "1" + invert "false" +} # # Components and Buffers # @@ -47,7 +73,7 @@ SectionControlMixer.STR(Master Playback Volume) { W_PCM_PLAYBACK(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) # "Volume" has 2 source and 2 sink periods -W_PGA(0, Master Playback Volume, PIPELINE_FORMAT, 2, 2, 2) +W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, KCONTROLS("Master Playback Volume Switch", "Master Playback Volume")) # Playback Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH v2] topology: fix typos in capture pipelines
by Ranjani Sridharan 12 Feb '18

12 Feb '18
This patch fixes typos in the capture pipelines to avoid confusion. Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> --- topology/sof/pipe-dai-capture.m4 | 2 +- topology/sof/pipe-src-capture.m4 | 4 ++-- topology/sof/pipe-volume-capture.m4 | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/topology/sof/pipe-dai-capture.m4 b/topology/sof/pipe-dai-capture.m4 index ab63efd..e69991e 100644 --- a/topology/sof/pipe-dai-capture.m4 +++ b/topology/sof/pipe-dai-capture.m4 @@ -1,4 +1,4 @@ -# DAI Playback connector +# DAI Capture connector # Include topology builder include(`local.m4') diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4 index c843a6c..dc55dd2 100644 --- a/topology/sof/pipe-src-capture.m4 +++ b/topology/sof/pipe-src-capture.m4 @@ -12,7 +12,7 @@ include(`local.m4') # Components and Buffers # -# Host "Passthrough Playback" PCM uses pipeline DMAC and channel +# Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 4 sink and 0 source periods W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) @@ -35,7 +35,7 @@ SectionData."media_src_conf" { # "SRC" has 4 source and 4 sink periods W_SRC(0, PIPELINE_FORMAT, 4, 4, media_src_conf, 2) -# Playback Buffers +# Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(4, COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) W_BUFFER(1, COMP_BUFFER_SIZE(4, diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index 8532aa3..3030907 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -44,12 +44,12 @@ SectionControlMixer.STR(Master Capture Volume) { # Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 0 sink and 2 source periods -W_PCM_CAPTURE(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) +W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) # "Volume" has 2 source and 2 sink periods W_PGA(0, Master Capture Volume, PIPELINE_FORMAT, 2, 2, 2) -# Playback Buffers +# Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) W_BUFFER(1, COMP_BUFFER_SIZE(2, -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH 1/2] ASoc: SOF: Add memory window for all platform
by Xiuli Pan 12 Feb '18

12 Feb '18
From: Pan Xiuli <xiuli.pan(a)linux.intel.com> Add memory window handler for BYT, HSW and BDW. Signed-off-by: Pan Xiuli <xiuli.pan(a)linux.intel.com> --- Test with: Mininow max rt5651 SOF master: 5e60d064dbf9a5ab518cfa6fe79612bb49eee57a SOF-Tool master: 57be4f5b8c96ba5839598046be4b4543ce8cf63b https://github.com/plbossart/sound/tree/topic/sof-v4.14: 6fa721a8b7c6567eea0a2181bf9a3d2a12c31b00 --- sound/soc/sof/hw-apl.c | 15 ++++++--- sound/soc/sof/hw-bdw.c | 85 +++++++++++++++++++++++++++++++++++++++++++------ sound/soc/sof/hw-byt.c | 86 +++++++++++++++++++++++++++++++++++++++++++------- sound/soc/sof/hw-hsw.c | 85 +++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 236 insertions(+), 35 deletions(-) diff --git a/sound/soc/sof/hw-apl.c b/sound/soc/sof/hw-apl.c index 9100ae8..27e5704 100644 --- a/sound/soc/sof/hw-apl.c +++ b/sound/soc/sof/hw-apl.c @@ -1020,9 +1020,14 @@ static int apl_prepare(struct snd_sof_dev *sdev, unsigned int format, static void apl_get_windows(struct snd_sof_dev *sdev) { struct sof_ipc_window_elem *elem; + u32 outbox_offset = 0; + u32 stream_offset = 0; + u32 inbox_offset = 0; + u32 outbox_size = 0; + u32 stream_size = 0; + u32 inbox_size = 0; int i; - u32 inbox_offset = 0, outbox_offset = 0; - u32 inbox_size = 0, outbox_size = 0; + if (sdev->info_window == NULL) return; @@ -1061,9 +1066,11 @@ static void apl_get_windows(struct snd_sof_dev *sdev) elem->size, "debug"); break; case SOF_IPC_REGION_STREAM: + stream_offset = + elem->offset + SRAM_WINDOW_OFFSET(elem->id); + stream_size = elem->size; snd_sof_debugfs_create_item(sdev, - sdev->bar[APL_DSP_BAR] + elem->offset + - SRAM_WINDOW_OFFSET(elem->id), + sdev->bar[APL_DSP_BAR] + stream_offset, elem->size, "stream"); break; case SOF_IPC_REGION_REGS: diff --git a/sound/soc/sof/hw-bdw.c b/sound/soc/sof/hw-bdw.c index cb59eb0..c51dba2 100644 --- a/sound/soc/sof/hw-bdw.c +++ b/sound/soc/sof/hw-bdw.c @@ -63,7 +63,6 @@ static const struct snd_sof_debugfs_map bdw_debugfs[] = { {"iram", BDW_DSP_BAR, IRAM_OFFSET, BDW_IRAM_SIZE}, {"dram", BDW_DSP_BAR, DRAM_OFFSET, BDW_DRAM_SIZE}, {"shim", BDW_DSP_BAR, SHIM_OFFSET, SHIM_SIZE}, - {"mbox", BDW_DSP_BAR, MBOX_OFFSET, MBOX_SIZE}, }; /* @@ -359,6 +358,75 @@ static irqreturn_t bdw_irq_thread(int irq, void *context) /* * IPC Firmware ready. */ +static void bdw_get_windows(struct snd_sof_dev *sdev) +{ + struct sof_ipc_window_elem *elem; + u32 outbox_offset = 0; + u32 stream_offset = 0; + u32 inbox_offset = 0; + u32 outbox_size = 0; + u32 stream_size = 0; + u32 inbox_size = 0; + int i; + + if (sdev->info_window == NULL) + return; + + for (i = 0; i < sdev->info_window->num_windows; i++) { + + elem = &sdev->info_window->window[i]; + + switch (elem->type) { + case SOF_IPC_REGION_UPBOX: + inbox_offset = elem->offset + MBOX_OFFSET; + inbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + inbox_offset, + elem->size, "inbox"); + break; + case SOF_IPC_REGION_DOWNBOX: + outbox_offset = elem->offset + MBOX_OFFSET; + outbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + outbox_offset, + elem->size, "outbox"); + break; + case SOF_IPC_REGION_TRACE: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "etrace"); + break; + case SOF_IPC_REGION_DEBUG: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "debug"); + break; + case SOF_IPC_REGION_STREAM: + stream_offset = elem->offset + MBOX_OFFSET; + stream_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + stream_offset, + elem->size, "stream"); + break; + case SOF_IPC_REGION_REGS: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BDW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "regs"); + break; + default: + break; + } + } + + snd_sof_dsp_mailbox_init(sdev, inbox_offset, inbox_size, + outbox_offset, outbox_size); + + dev_dbg(sdev->dev, " mailbox upstream 0x%x - size 0x%x\n", + inbox_offset, inbox_size); + dev_dbg(sdev->dev, " mailbox downstream 0x%x - size 0x%x\n", + outbox_offset, outbox_size); +} + static int bdw_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) { struct sof_ipc_fw_ready *fw_ready = &sdev->fw_ready; @@ -374,18 +442,15 @@ static int bdw_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) /* copy data from the DSP FW ready offset */ bdw_block_read(sdev, offset, fw_ready, sizeof(*fw_ready)); - snd_sof_dsp_mailbox_init(sdev, fw_ready->dspbox_offset, - fw_ready->dspbox_size, fw_ready->hostbox_offset, - fw_ready->hostbox_size); - - dev_dbg(sdev->dev, " mailbox DSP initiated 0x%x - size 0x%x\n", - fw_ready->dspbox_offset, fw_ready->dspbox_size); - dev_dbg(sdev->dev, " mailbox Host initiated 0x%x - size 0x%x\n", - fw_ready->hostbox_offset, fw_ready->hostbox_size); - dev_info(sdev->dev, " Firmware info: version %d:%d-%s build %d on %s:%s\n", v->major, v->minor, v->tag, v->build, v->date, v->time); + /* now check for extended data */ + snd_sof_fw_parse_ext_data(sdev, + MBOX_OFFSET + sizeof(struct sof_ipc_fw_ready)); + + bdw_get_windows(sdev); + return 0; } diff --git a/sound/soc/sof/hw-byt.c b/sound/soc/sof/hw-byt.c index fab5c06..d36a0f6 100644 --- a/sound/soc/sof/hw-byt.c +++ b/sound/soc/sof/hw-byt.c @@ -74,7 +74,6 @@ static const struct snd_sof_debugfs_map byt_debugfs[] = { {"iram", BYT_DSP_BAR, IRAM_OFFSET, IRAM_SIZE}, {"dram", BYT_DSP_BAR, DRAM_OFFSET, DRAM_SIZE}, {"shim", BYT_DSP_BAR, SHIM_OFFSET, SHIM_SIZE}, - {"mbox", BYT_DSP_BAR, MBOX_OFFSET, MBOX_SIZE}, }; static const struct snd_sof_debugfs_map cht_debugfs[] = { @@ -90,7 +89,6 @@ static const struct snd_sof_debugfs_map cht_debugfs[] = { {"iram", BYT_DSP_BAR, IRAM_OFFSET, IRAM_SIZE}, {"dram", BYT_DSP_BAR, DRAM_OFFSET, DRAM_SIZE}, {"shim", BYT_DSP_BAR, SHIM_OFFSET, SHIM_SIZE}, - {"mbox", BYT_DSP_BAR, MBOX_OFFSET, MBOX_SIZE}, }; static void byt_dump(struct snd_sof_dev *sdev, u32 flags) @@ -202,6 +200,75 @@ static void byt_block_read(struct snd_sof_dev *sdev, u32 offset, void *dest, /* * IPC Firmware ready. */ +static void byt_get_windows(struct snd_sof_dev *sdev) +{ + struct sof_ipc_window_elem *elem; + u32 outbox_offset = 0; + u32 stream_offset = 0; + u32 inbox_offset = 0; + u32 outbox_size = 0; + u32 stream_size = 0; + u32 inbox_size = 0; + int i; + + if (sdev->info_window == NULL) + return; + + for (i = 0; i < sdev->info_window->num_windows; i++) { + + elem = &sdev->info_window->window[i]; + + switch (elem->type) { + case SOF_IPC_REGION_UPBOX: + inbox_offset = elem->offset + MBOX_OFFSET; + inbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + inbox_offset, + elem->size, "inbox"); + break; + case SOF_IPC_REGION_DOWNBOX: + outbox_offset = elem->offset + MBOX_OFFSET; + outbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + outbox_offset, + elem->size, "outbox"); + break; + case SOF_IPC_REGION_TRACE: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "etrace"); + break; + case SOF_IPC_REGION_DEBUG: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "debug"); + break; + case SOF_IPC_REGION_STREAM: + stream_offset = elem->offset + MBOX_OFFSET; + stream_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + stream_offset, + elem->size, "stream"); + break; + case SOF_IPC_REGION_REGS: + snd_sof_debugfs_create_item(sdev, + sdev->bar[BYT_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "regs"); + break; + default: + break; + } + } + + snd_sof_dsp_mailbox_init(sdev, inbox_offset, inbox_size, + outbox_offset, outbox_size); + + dev_dbg(sdev->dev, " mailbox upstream 0x%x - size 0x%x\n", + inbox_offset, inbox_size); + dev_dbg(sdev->dev, " mailbox downstream 0x%x - size 0x%x\n", + outbox_offset, outbox_size); +} + static int byt_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) { struct sof_ipc_fw_ready *fw_ready = &sdev->fw_ready; @@ -217,18 +284,15 @@ static int byt_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) /* copy data from the DSP FW ready offset */ byt_block_read(sdev, offset, fw_ready, sizeof(*fw_ready)); - snd_sof_dsp_mailbox_init(sdev, fw_ready->dspbox_offset, - fw_ready->dspbox_size, fw_ready->hostbox_offset, - fw_ready->hostbox_size); - - dev_dbg(sdev->dev, " mailbox DSP initiated 0x%x - size 0x%x\n", - fw_ready->dspbox_offset, fw_ready->dspbox_size); - dev_dbg(sdev->dev, " mailbox Host initiated 0x%x - size 0x%x\n", - fw_ready->hostbox_offset, fw_ready->hostbox_size); - dev_info(sdev->dev, " Firmware info: version %d:%d-%s build %d on %s:%s\n", v->major, v->minor, v->tag, v->build, v->date, v->time); + /* now check for extended data */ + snd_sof_fw_parse_ext_data(sdev, + MBOX_OFFSET + sizeof(struct sof_ipc_fw_ready)); + + byt_get_windows(sdev); + return 0; } diff --git a/sound/soc/sof/hw-hsw.c b/sound/soc/sof/hw-hsw.c index f7cafdc..615411c 100644 --- a/sound/soc/sof/hw-hsw.c +++ b/sound/soc/sof/hw-hsw.c @@ -65,7 +65,6 @@ static const struct snd_sof_debugfs_map hsw_debugfs[] = { {"iram", HSW_DSP_BAR, IRAM_OFFSET, HSW_IRAM_SIZE}, {"dram", HSW_DSP_BAR, DRAM_OFFSET, HSW_DRAM_SIZE}, {"shim", HSW_DSP_BAR, SHIM_OFFSET, SHIM_SIZE}, - {"mbox", HSW_DSP_BAR, MBOX_OFFSET, MBOX_SIZE}, }; /* @@ -384,6 +383,75 @@ static irqreturn_t hsw_irq_thread(int irq, void *context) /* * IPC Firmware ready. */ +static void hsw_get_windows(struct snd_sof_dev *sdev) +{ + struct sof_ipc_window_elem *elem; + u32 outbox_offset = 0; + u32 stream_offset = 0; + u32 inbox_offset = 0; + u32 outbox_size = 0; + u32 stream_size = 0; + u32 inbox_size = 0; + int i; + + if (sdev->info_window == NULL) + return; + + for (i = 0; i < sdev->info_window->num_windows; i++) { + + elem = &sdev->info_window->window[i]; + + switch (elem->type) { + case SOF_IPC_REGION_UPBOX: + inbox_offset = elem->offset + MBOX_OFFSET; + inbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + inbox_offset, + elem->size, "inbox"); + break; + case SOF_IPC_REGION_DOWNBOX: + outbox_offset = elem->offset + MBOX_OFFSET; + outbox_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + outbox_offset, + elem->size, "outbox"); + break; + case SOF_IPC_REGION_TRACE: + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "etrace"); + break; + case SOF_IPC_REGION_DEBUG: + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "debug"); + break; + case SOF_IPC_REGION_STREAM: + stream_offset = elem->offset + MBOX_OFFSET; + stream_size = elem->size; + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + stream_offset, + elem->size, "stream"); + break; + case SOF_IPC_REGION_REGS: + snd_sof_debugfs_create_item(sdev, + sdev->bar[HSW_DSP_BAR] + elem->offset + + MBOX_OFFSET, elem->size, "regs"); + break; + default: + break; + } + } + + snd_sof_dsp_mailbox_init(sdev, inbox_offset, inbox_size, + outbox_offset, outbox_size); + + dev_dbg(sdev->dev, " mailbox upstream 0x%x - size 0x%x\n", + inbox_offset, inbox_size); + dev_dbg(sdev->dev, " mailbox downstream 0x%x - size 0x%x\n", + outbox_offset, outbox_size); +} + static int hsw_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) { struct sof_ipc_fw_ready *fw_ready = &sdev->fw_ready; @@ -399,18 +467,15 @@ static int hsw_fw_ready(struct snd_sof_dev *sdev, u32 msg_id) /* copy data from the DSP FW ready offset */ hsw_block_read(sdev, offset, fw_ready, sizeof(*fw_ready)); - snd_sof_dsp_mailbox_init(sdev, fw_ready->dspbox_offset, - fw_ready->dspbox_size, fw_ready->hostbox_offset, - fw_ready->hostbox_size); - - dev_dbg(sdev->dev, " mailbox DSP initiated 0x%x - size 0x%x\n", - fw_ready->dspbox_offset, fw_ready->dspbox_size); - dev_dbg(sdev->dev, " mailbox Host initiated 0x%x - size 0x%x\n", - fw_ready->hostbox_offset, fw_ready->hostbox_size); - dev_info(sdev->dev, " Firmware info: version %d:%d-%s build %d on %s:%s\n", v->major, v->minor, v->tag, v->build, v->date, v->time); + /* now check for extended data */ + snd_sof_fw_parse_ext_data(sdev, + MBOX_OFFSET + sizeof(struct sof_ipc_fw_ready)); + + hsw_get_windows(sdev); + return 0; } -- 2.7.4
1 1
0 0
[Sound-open-firmware] [PATCH] topology: m4: add default_hw_conf_id
by Xiuli Pan 12 Feb '18

12 Feb '18
From: Pan Xiuli <xiuli.pan(a)linux.intel.com> Add default_hw_conf_id to set the default_hw_config_id value in ASOC and then we can set the dai config. Signed-off-by: Pan Xiuli <xiuli.pan(a)linux.intel.com> --- Test with: Mininow max rt5651 SOF master: 019637ab250daa53c15da0a0a98c54f1c58d8ca3 SOF-Tool master: 33e4b0cc6f6a44e3e7ee849c04c515a5537242c7 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 6fa721a8b7c6567eea0a2181bf9a3d2a12c31b00 Should work with ASOC patch: ASOC: topology: Fix hw_config setting for DAI --- topology/m4/local.m4 | 1 + 1 file changed, 1 insertion(+) diff --git a/topology/m4/local.m4 b/topology/m4/local.m4 index ad72a11..bb4a183 100644 --- a/topology/m4/local.m4 +++ b/topology/m4/local.m4 @@ -453,6 +453,7 @@ define(`DAI_CONFIG', `' `SectionBE."'$3`" {' ` index "0"' +` default_hw_conf_id "'$2`"' `' ` hw_configs [' ` "'$1$2`"' -- 2.7.4
1 0
0 0
[Sound-open-firmware] [PATCH] volume: fix logic for volume mute/unmute
by Ranjani Sridharan 10 Feb '18

10 Feb '18
This patch fixes the volume mute/unmute logic in volume to handle cases when volume is already muted/unmuted Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> --- Tested with: Minnowboard Turbot rt5651 SOF master: 1edc69c7c0af4808764590990d37076da80c8627 SOF-Tool master: 57be4f5b8c96ba5839598046be4b4543ce8cf63b https://github.com/plbossart/sound/tree/topic/sof-v4.14: 6fa721a8b7c6567eea0a2181bf9a3d2a12c31b00 --- --- src/audio/volume.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/audio/volume.c b/src/audio/volume.c index 3b3e2aa..8e54607 100644 --- a/src/audio/volume.c +++ b/src/audio/volume.c @@ -440,7 +440,9 @@ static inline void volume_set_chan_mute(struct comp_dev *dev, int chan) { struct comp_data *cd = comp_get_drvdata(dev); - cd->mvolume[chan] = cd->volume[chan]; + /* Check if not muted already */ + if (cd->volume[chan] != 0) + cd->mvolume[chan] = cd->volume[chan]; cd->tvolume[chan] = 0; } @@ -448,7 +450,9 @@ static inline void volume_set_chan_unmute(struct comp_dev *dev, int chan) { struct comp_data *cd = comp_get_drvdata(dev); - cd->tvolume[chan] = cd->mvolume[chan]; + /* Check if muted */ + if (cd->volume[chan] == 0) + cd->tvolume[chan] = cd->mvolume[chan]; } static int volume_ctrl_set_cmd(struct comp_dev *dev, struct sof_ipc_ctrl_data *cdata) @@ -521,7 +525,7 @@ static int volume_ctrl_get_cmd(struct comp_dev *dev, struct sof_ipc_ctrl_data *c return -EINVAL; } - if (cdata->cmd == SOF_CTRL_CMD_VOLUME) { + if (cdata->cmd == SOF_CTRL_CMD_VOLUME || SOF_CTRL_CMD_SWITCH) { trace_volume("vgt"); trace_value(cdata->comp_id); for (j = 0; j < cdata->num_elems; j++) { -- 2.14.1
1 0
0 0
[Sound-open-firmware] [PATCH_V2] GPDMA: refine GPDMA on CNL
by Rander Wang 09 Feb '18

09 Feb '18
All GPDMA share the same irq on cannonlake, this is different with appololake.The change is:probe GPDMA array when initilized, set the array to the irq function; check the interrupt status of GPDMA array in irq function, process the correct GPDMA that produces interrupt. --- V2: refine it to build for other platform. kernel:Pierre`s branch rimage:embargo-1.0 fw:master Signed-off-by: Rander Wang <rander.wang(a)intel.com> --- src/drivers/dw-dma.c | 43 ++++++++++++++++------ src/platform/cannonlake/dma.c | 2 +- .../cannonlake/include/platform/platform.h | 1 + src/platform/cannonlake/platform.c | 14 ++----- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/drivers/dw-dma.c b/src/drivers/dw-dma.c index 7a1805e..d6e05b9 100644 --- a/src/drivers/dw-dma.c +++ b/src/drivers/dw-dma.c @@ -1001,7 +1001,7 @@ static int dw_dma_probe(struct dma *dma) static void dw_dma_irq_handler(void *data) { struct dma *dma = (struct dma *)data; - struct dma_pdata *p = dma_get_drvdata(dma); + struct dma_pdata *p = NULL; struct dma_sg_elem next; uint32_t status_tfr = 0; uint32_t status_block = 0; @@ -1013,11 +1013,21 @@ static void dw_dma_irq_handler(void *data) int i; status_intr = dw_read(dma, DW_INTR_STATUS); - if (!status_intr) + if (!status_intr) { +#ifdef CONFIG_CANNONLAKE + dma++; + status_intr = dw_read(dma, DW_INTR_STATUS); + if (!status_intr) + trace_dma_error("eI0"); +#else trace_dma_error("eI0"); +#endif + } tracev_dma("DIr"); + p = dma_get_drvdata(dma); + /* get the source of our IRQ. */ status_block = dw_read(dma, DW_STATUS_BLOCK); status_tfr = dw_read(dma, DW_STATUS_TFR); @@ -1100,21 +1110,30 @@ static void dw_dma_irq_handler(void *data) static int dw_dma_probe(struct dma *dma) { struct dma_pdata *dw_pdata; + struct dma *dmac = dma; int i; +#ifdef CONFIG_CANNONLAKE + int j; - /* allocate private data */ - dw_pdata = rzalloc(RZONE_SYS, RFLAGS_NONE, sizeof(*dw_pdata)); - dma_set_drvdata(dma, dw_pdata); + for (j = 0; j < MAX_GPDMA_COUNT; j++) +#endif + { + /* allocate private data */ + dw_pdata = rzalloc(RZONE_SYS, RFLAGS_NONE, sizeof(*dw_pdata)); + dma_set_drvdata(dmac, dw_pdata); - spinlock_init(&dma->lock); + spinlock_init(&dmac->lock); - dw_dma_setup(dma); + dw_dma_setup(dmac); - /* init work */ - for (i = 0; i < DW_MAX_CHAN; i++) { - dw_pdata->chan[i].dma = dma; - dw_pdata->chan[i].channel = i; - dw_pdata->chan[i].status = COMP_STATE_INIT; + /* init work */ + for (i = 0; i < DW_MAX_CHAN; i++) { + dw_pdata->chan[i].dma = dmac; + dw_pdata->chan[i].channel = i; + dw_pdata->chan[i].status = COMP_STATE_INIT; + } + + dmac++; } /* register our IRQ handler */ diff --git a/src/platform/cannonlake/dma.c b/src/platform/cannonlake/dma.c index 45bdee3..beac6cf 100644 --- a/src/platform/cannonlake/dma.c +++ b/src/platform/cannonlake/dma.c @@ -124,7 +124,7 @@ static struct dma dma[] = { .id = DMA_GP_LP_DMAC1, .base = LP_GP_DMA_BASE(1), .channels = 8, - .irq = IRQ_EXT_LP_GPDMA1_LVL4(0, 0), + .irq = IRQ_EXT_LP_GPDMA0_LVL5(0, 0), .drv_plat_data = &dmac1, }, .ops = &dw_dma_ops, diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h index 00e0069..f29af95 100644 --- a/src/platform/cannonlake/include/platform/platform.h +++ b/src/platform/cannonlake/include/platform/platform.h @@ -40,6 +40,7 @@ struct reef; #define PLATFORM_SSP_COUNT 3 +#define MAX_GPDMA_COUNT 2 /* Host page size */ #define HOST_PAGE_SIZE 4096 diff --git a/src/platform/cannonlake/platform.c b/src/platform/cannonlake/platform.c index 729364f..f387109 100644 --- a/src/platform/cannonlake/platform.c +++ b/src/platform/cannonlake/platform.c @@ -196,8 +196,7 @@ static struct timer platform_ext_timer = { int platform_init(struct reef *reef) { - struct dma *dmac0; - struct dma *dmac1; + struct dma *dmac; struct dai *ssp; int i; @@ -249,15 +248,10 @@ int platform_init(struct reef *reef) /* init DMACs */ trace_point(TRACE_BOOT_PLATFORM_DMA); - dmac0 = dma_get(DMA_GP_LP_DMAC0); - if (dmac0 == NULL) + dmac = dma_get(DMA_GP_LP_DMAC0); + if (!dmac) return -ENODEV; - dma_probe(dmac0); - - dmac1 = dma_get(DMA_GP_LP_DMAC1); - if (dmac1 == NULL) - return -ENODEV; - dma_probe(dmac1); + dma_probe(dmac); /* init SSP ports */ trace_point(TRACE_BOOT_PLATFORM_SSP); -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH] topology: add toplogy for CNL with RT274 codec
by Rander Wang 09 Feb '18

09 Feb '18
Support playback and capture with volume control at 48KHZ, 24Bit, TDM4 but only 2 channel valid Signed-off-by: Rander Wang <rander.wang(a)intel.com> --- topology/reef-cnl-rt274.m4 | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 topology/reef-cnl-rt274.m4 diff --git a/topology/reef-cnl-rt274.m4 b/topology/reef-cnl-rt274.m4 new file mode 100644 index 0000000..67aab04 --- /dev/null +++ b/topology/reef-cnl-rt274.m4 @@ -0,0 +1,70 @@ +# +# Topology for generic Cannonlake board with RT274 +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Apollolake DSP configuration +include(`dsps/bxt.m4') + +# +# Define the pipelines +# +# PCM0 ----> volume -----> volume ----> SSP0 +# +# PCM1 <---- Volume <---- SSP0 +# + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data +PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4, + 1, 0, 2, s24le, + 48, 1000, 0, 0, 0, 1, SSP, 0, s24le, 2) + +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 2 for PCM audio capture data +PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4, + 2, 0, 2, s24le, + 48, 1000, 0, 0, 0, 1, SSP, 0, s24le, 2) + +# +# DAI configuration +# +# SSP port 0 is our only pipeline DAI +# + +# playback DAI is SSP0 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 0, + PIPELINE_SOURCE_1, 2, s24le, + 48, 1000, 0, 0) + +# capture DAI is SSP0 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 2, SSP, 0, + PIPELINE_SINK_2, 2, s24le, + 48, 1000, 0, 0) + +# PCM Low Latency +PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +DAI_CONFIG(SSP, 0, SSP0-Codec, DSP_B, 24, + DAI_CLOCK(mclk, 24000000, slave), + DAI_CLOCK(bclk, 4800000, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(4, 25, 3, 3)) -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH] ipc: return msg to empty list
by Liam Girdwood 08 Feb '18

08 Feb '18
From: Rander Wang <rander.wang(a)intel.com> DSP and host communicate each other with msg. It would exhausted without return and make ipc failed --- src/ipc/apl-ipc.c | 2 +- src/ipc/byt-ipc.c | 2 ++ src/ipc/cnl-ipc.c | 2 ++ src/ipc/hsw-ipc.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ipc/apl-ipc.c b/src/ipc/apl-ipc.c index c779062..1332639 100644 --- a/src/ipc/apl-ipc.c +++ b/src/ipc/apl-ipc.c @@ -168,7 +168,7 @@ void ipc_platform_send_msg(struct ipc *ipc) ipc_write(IPC_DIPCIE, 0); ipc_write(IPC_DIPCI, 0x80000000 | msg->header); -list_item_append(&msg->list, &ipc->empty_list); + list_item_append(&msg->list, &ipc->empty_list); out: spin_unlock_irq(&ipc->lock, flags); diff --git a/src/ipc/byt-ipc.c b/src/ipc/byt-ipc.c index 8897bb9..e7c1d78 100644 --- a/src/ipc/byt-ipc.c +++ b/src/ipc/byt-ipc.c @@ -194,6 +194,8 @@ void ipc_platform_send_msg(struct ipc *ipc) shim_write(SHIM_IPCDL, msg->header); shim_write(SHIM_IPCDH, SHIM_IPCDH_BUSY); + list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } diff --git a/src/ipc/cnl-ipc.c b/src/ipc/cnl-ipc.c index cd5e825..5ccc345 100644 --- a/src/ipc/cnl-ipc.c +++ b/src/ipc/cnl-ipc.c @@ -168,6 +168,8 @@ void ipc_platform_send_msg(struct ipc *ipc) ipc_write(IPC_DIPCIDD, 0); ipc_write(IPC_DIPCIDR, 0x80000000 | msg->header); + list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } diff --git a/src/ipc/hsw-ipc.c b/src/ipc/hsw-ipc.c index 4a16f41..7a1dd72 100644 --- a/src/ipc/hsw-ipc.c +++ b/src/ipc/hsw-ipc.c @@ -184,6 +184,8 @@ void ipc_platform_send_msg(struct ipc *ipc) /* now interrupt host to tell it we have message sent */ shim_write(SHIM_IPCD, msg->header | SHIM_IPCD_BUSY); + list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } -- 2.14.1
1 0
0 0
[Sound-open-firmware] [PATCH] topology: fix typos in capture pipelines
by Ranjani Sridharan 08 Feb '18

08 Feb '18
This patch fixes typos in the capture pipelines to avoid confusion. Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> --- topology/sof/pipe-dai-capture.m4 | 2 +- topology/sof/pipe-src-capture.m4 | 4 ++-- topology/sof/pipe-volume-capture.m4 | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/topology/sof/pipe-dai-capture.m4 b/topology/sof/pipe-dai-capture.m4 index ab63efd..e69991e 100644 --- a/topology/sof/pipe-dai-capture.m4 +++ b/topology/sof/pipe-dai-capture.m4 @@ -1,4 +1,4 @@ -# DAI Playback connector +# DAI Capture connector # Include topology builder include(`local.m4') diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4 index c843a6c..dc55dd2 100644 --- a/topology/sof/pipe-src-capture.m4 +++ b/topology/sof/pipe-src-capture.m4 @@ -12,7 +12,7 @@ include(`local.m4') # Components and Buffers # -# Host "Passthrough Playback" PCM uses pipeline DMAC and channel +# Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 4 sink and 0 source periods W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) @@ -35,7 +35,7 @@ SectionData."media_src_conf" { # "SRC" has 4 source and 4 sink periods W_SRC(0, PIPELINE_FORMAT, 4, 4, media_src_conf, 2) -# Playback Buffers +# Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(4, COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) W_BUFFER(1, COMP_BUFFER_SIZE(4, diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index 96ca6f9..6d7803f 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -44,12 +44,12 @@ SectionControlMixer.STR(Master Capture Volume) { # Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 0 sink and 2 source periods -W_PCM_CAPTURE(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) +W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) # "Volume" has 2 source and 2 sink periods W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, "Master Capture Volume") -# Playback Buffers +# Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) W_BUFFER(1, COMP_BUFFER_SIZE(2, -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH] topology: test: change to use volume topology files for apl at the moment.
by Keyon Jie 08 Feb '18

08 Feb '18
As it doesn't work for pass through at the moment. Signed-off-by: Keyon Jie <yang.jie(a)linux.intel.com> --- topology/test/tplg-build.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/topology/test/tplg-build.sh b/topology/test/tplg-build.sh index d322ce7..047ef6b 100755 --- a/topology/test/tplg-build.sh +++ b/topology/test/tplg-build.sh @@ -70,7 +70,8 @@ simple_test baytrail volume "Baytrail Audio" s24le 2 s24le 25 24 2400000 1920000 simple_test baytrail volume "Baytrail Audio" s16le 2 s24le 25 24 2400000 19200000 simple_test baytrail src "Baytrail Audio" s24le 2 s24le 25 24 2400000 19200000 -simple_test nocodec passthrough "NoCodec" s16le 4 s16le 16 16 1536000 24576000 -simple_test apollolake passthrough "SSP4-Codec" s16le 4 s16le 16 16 1536000 24576000 +# for APL +simple_test nocodec volume "NoCodec" s16le 4 s16le 16 16 1536000 24576000 +simple_test codec volume "SSP4-Codec" s16le 4 s16le 16 16 1536000 24576000 -- 2.11.0
2 1
0 0
  • ← Newer
  • 1
  • ...
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • ...
  • 158
  • Older →

HyperKitty Powered by HyperKitty version 1.3.8.