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

  • 4 participants
  • 1576 discussions
[Sound-open-firmware] [PATCH] host: verify number of period > 0
by Liam Girdwood 13 Dec '17

13 Dec '17
Check number of periods is > 0 other wise return an error and emit some trace. Signed-off-by: Liam Girdwood <liam.r.girdwood(a)linux.intel.com> --- src/audio/host.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/audio/host.c b/src/audio/host.c index b731dd6..8f09952 100644 --- a/src/audio/host.c +++ b/src/audio/host.c @@ -412,6 +412,12 @@ static int host_params(struct comp_dev *dev) hd->period_count = cconfig->periods_source; } + /* validate period count */ + if (hd->period_count == 0) { + trace_host_error("eS0"); + return -EINVAL; + } + /* calculate period size based on config */ hd->period_bytes = dev->frames * comp_frame_bytes(dev); if (hd->period_bytes == 0) { -- 2.14.1
1 0
0 0
[Sound-open-firmware] [PATCH v2] Increase timeout of DMA trace work re-scheduling if local buffer is half full.
by yan.wang@linux.intel.com 13 Dec '17

13 Dec '17
From: Yan Wang <yan.wang(a)linux.intel.com> The timeout of work_reschedule_default() cannot be too short to finish work queue rescheduling. Otherwise, the work will be rescheduled wrong into the next timer loop. Also change macro name of DMA trace time interval for reading easily. Signed-off-by: Yan Wang <yan.wang(a)linux.intel.com> --- src/lib/dma-trace.c | 9 +++++---- src/platform/baytrail/include/platform/platform.h | 8 +++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/dma-trace.c b/src/lib/dma-trace.c index 2a5b1a6..a147219 100644 --- a/src/lib/dma-trace.c +++ b/src/lib/dma-trace.c @@ -54,7 +54,7 @@ static uint64_t trace_work(void *data, uint64_t delay) /* any data to copy ? */ if (avail == 0) - return DMA_TRACE_US; + return DMA_TRACE_PERIOD; /* DMA trace copying is working */ d->copy_in_progress = 1; @@ -112,7 +112,7 @@ out: spin_unlock_irq(&d->lock, flags); /* reschedule the trace copying work */ - return DMA_TRACE_US; + return DMA_TRACE_PERIOD; } int dma_trace_init(struct dma_trace_data *d) @@ -182,7 +182,7 @@ int dma_trace_enable(struct dma_trace_data *d) } d->enabled = 1; - work_schedule_default(&d->dmat_work, DMA_TRACE_US); + work_schedule_default(&d->dmat_work, DMA_TRACE_PERIOD); return 0; } @@ -247,7 +247,8 @@ void dtrace_event(const char *e, uint32_t length) /* schedule copy now if buffer > 50% full */ if (trace_data->enabled && buffer->avail >= (DMA_TRACE_LOCAL_SIZE / 2)) - work_reschedule_default(&trace_data->dmat_work, 100); + work_reschedule_default(&trace_data->dmat_work, + DMA_TRACE_RESCHEDULE_TIME); } void dtrace_event_atomic(const char *e, uint32_t length) diff --git a/src/platform/baytrail/include/platform/platform.h b/src/platform/baytrail/include/platform/platform.h index 4d63f7b..72174f3 100644 --- a/src/platform/baytrail/include/platform/platform.h +++ b/src/platform/baytrail/include/platform/platform.h @@ -80,7 +80,13 @@ struct reef; #define DMA_TRACE_LOCAL_SIZE HOST_PAGE_SIZE /* the interval of DMA trace copying */ -#define DMA_TRACE_US 500000 +#define DMA_TRACE_PERIOD 500000 + +/* + * the interval of reschedule DMA trace copying in special case like half + * fullness of local DMA trace buffer + */ +#define DMA_TRACE_RESCHEDULE_TIME 5000 /* DMAC used for trace DMA */ #define PLATFORM_TRACE_DMAC DMA_ID_DMAC0 -- 2.7.4
2 1
0 0
[Sound-open-firmware] [PATCH] topology: test: Add simple component test generator.
by Liam Girdwood 13 Dec '17

13 Dec '17
Move testing pipelines into a test directory and reuse test scaffolding so that they can be used to test multiple components on multiple target with multiples configs. Test topology scafolding are now pre-processed using a script to generate the ALSA conf format with the various changes for each test case. Signed-off-by: Liam Girdwood <liam.r.girdwood(a)linux.intel.com> --- .gitignore | 1 + configure.ac | 1 + topology/Makefile.am | 11 +-- topology/sof/pipe-src-capture.m4 | 96 ++++++++++++++++++++++ ...hrough-src-playback.m4 => pipe-src-playback.m4} | 23 ++---- ...rough-vol-capture.m4 => pipe-volume-capture.m4} | 0 ...ugh-vol-playback.m4 => pipe-volume-playback.m4} | 0 .../test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 | 51 ------------ .../test-passthrough-16bit-48k-ssp2-nocodec.m4 | 84 ------------------- topology/test-passthrough-16bit-48k-ssp2.m4 | 51 ------------ topology/test-passthrough-24bit-48k-src-ssp2.m4 | 51 ------------ .../test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 | 51 ------------ .../test-passthrough-24bit-48k-ssp2-nocodec.m4 | 51 ------------ topology/test-passthrough-24bit-48k-ssp2.m4 | 51 ------------ topology/test-passthrough-24bit-48k-vol-ssp2.m4 | 83 ------------------- topology/test/Makefile.am | 20 +++++ topology/test/test-src-ssp.m4 | 90 ++++++++++++++++++++ topology/test/test-ssp.m4 | 90 ++++++++++++++++++++ topology/test/tplg-build.sh | 67 +++++++++++++++ 19 files changed, 373 insertions(+), 499 deletions(-) create mode 100644 topology/sof/pipe-src-capture.m4 rename topology/sof/{pipe-passthrough-src-playback.m4 => pipe-src-playback.m4} (85%) rename topology/sof/{pipe-passthrough-vol-capture.m4 => pipe-volume-capture.m4} (100%) rename topology/sof/{pipe-passthrough-vol-playback.m4 => pipe-volume-playback.m4} (100%) delete mode 100644 topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 delete mode 100644 topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 delete mode 100644 topology/test-passthrough-16bit-48k-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-src-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-vol-ssp2.m4 create mode 100644 topology/test/Makefile.am create mode 100644 topology/test/test-src-ssp.m4 create mode 100644 topology/test/test-ssp.m4 create mode 100755 topology/test/tplg-build.sh diff --git a/.gitignore b/.gitignore index bc827b4..023e264 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ rmbox/rmbox rwav/rwav *.tplg topology/*.conf +topology/test/*.conf diff --git a/configure.ac b/configure.ac index 87c7519..1b4f59b 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,7 @@ AC_OUTPUT([ rimage/Makefile rmbox/Makefile topology/Makefile + topology/test/Makefile ]) echo " diff --git a/topology/Makefile.am b/topology/Makefile.am index 77c146f..3cbc5e6 100644 --- a/topology/Makefile.am +++ b/topology/Makefile.am @@ -3,6 +3,8 @@ # Dependencies # +SUBDIRS = test + DEPS = \ dsps/*.m4 \ common/*.m4 \ @@ -25,14 +27,7 @@ MACHINES = \ reef-byt-rt5645.tplg \ reef-byt-rt5651.tplg \ reef-byt-da7212.tplg \ - reef-hsw-rt5640.tplg \ - test-passthrough-16bit-48k-ssp2-nocodec.tplg \ - test-passthrough-24bit-48k-ssp2-nocodec.tplg \ - test-passthrough-24bit-48k-ssp2.tplg \ - test-passthrough-24bit-48k-ssp2-SSP2-Codec.tplg \ - test-passthrough-16bit-48k-ssp2-SSP2-Codec.tplg \ - test-passthrough-24bit-48k-vol-ssp2.tplg \ - test-passthrough-24bit-48k-src-ssp2.tplg + reef-hsw-rt5640.tplg # Uncomment the following line if you want to debug conf files .PRECIOUS: %.conf diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4 new file mode 100644 index 0000000..ca2980a --- /dev/null +++ b/topology/sof/pipe-src-capture.m4 @@ -0,0 +1,96 @@ +# Low Latency Passthrough with volume Pipeline and PCM +# +# Pipeline Endpoints for connection are :- +# +# host PCM_P --> SRC --> sink DAI0 + +# Include topology builder +include(`local.m4') + + +# +# Components and Buffers +# + +# Host "Passthrough Playback" PCM uses pipeline DMAC and channel +# with 4 sink and 0 source periods +W_PCM_PLAYBACK(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) + +# +# SRC Configuration +# + +SectionVendorTuples."media_src_tokens" { + tokens "sof_src_tokens" + + tuples."word" { + SOF_TKN_SRC_RATE_OUT "48000" + } +} + +SectionData."media_src_conf" { + tuples "media_src_tokens" +} + +# "SRC" has 4 source and 4 sink periods +W_SRC(0, PIPELINE_FORMAT, 4, 4, media_src_conf, 2) + +# Playback Buffers +W_BUFFER(0, COMP_BUFFER_SIZE(4, + COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) +W_BUFFER(1, COMP_BUFFER_SIZE(4, + COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) + +# +# DAI definitions +# +W_DAI_IN(DAI_TYPE, DAI_INDEX, DAI_FORMAT, 0, DAI_PERIODS, + DAI_PERIODS, dai0c_plat_conf) + +# +# DAI pipeline +# +W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, + SCHEDULE_CORE, 0, pipe_dai_schedule_plat) + +# +# Pipeline Graph +# +# host PCM_P --> B0 --> SRC 0 --> B1 --> sink DAI0 + +SectionGraph."pipe-pass-src-capture-PIPELINE_ID" { + index STR(PIPELINE_ID) + + lines [ + dapm(Passthrough Capture PCM_ID, N_PCMC) + dapm(N_PCMC, N_BUFFER(0)) + dapm(N_BUFFER(0), N_SRC(0)) + dapm(N_SRC(0), N_BUFFER(1)) + ] +} + +# +# Pipeline Source and Sinks +# +indir(`define', concat(`PIPELINE_SINK_', PIPELINE_ID), N_BUFFER(1)) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Capture PCM_ID) + +# +# PCM Configuration +# + +SectionPCMCapabilities.STR(Passthrough Capture PCM_ID) { + + formats "S32_LE,S24_LE,S16_LE" + rate_min "8000" + rate_max "96000" + channels_min "2" + channels_max "4" + periods_min "2" + periods_max "16" + period_size_min "192" + period_size_max "16384" + buffer_size_min "65536" + buffer_size_max "65536" +} + diff --git a/topology/sof/pipe-passthrough-src-playback.m4 b/topology/sof/pipe-src-playback.m4 similarity index 85% rename from topology/sof/pipe-passthrough-src-playback.m4 rename to topology/sof/pipe-src-playback.m4 index b8fae58..d037543 100644 --- a/topology/sof/pipe-passthrough-src-playback.m4 +++ b/topology/sof/pipe-src-playback.m4 @@ -66,10 +66,14 @@ SectionGraph."pipe-pass-src-playback-PIPELINE_ID" { dapm(N_BUFFER(0), N_PCMP) dapm(N_SRC(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_SRC(0)) - dapm(N_DAI_OUT, N_BUFFER(1)) ] } +# +# Pipeline Source and Sinks +# +indir(`define', concat(`PIPELINE_SOURCE_', PIPELINE_ID), N_BUFFER(1)) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Playback PCM_ID) # # PCM Configuration @@ -90,20 +94,3 @@ SectionPCMCapabilities.STR(Passthrough Playback PCM_ID) { buffer_size_max "65536" } -# PCM Passthrough Playback -SectionPCM.STR(PCM PCM_ID) { - - index STR(PIPELINE_ID) - - # used for binding to the PCM - id STR(PCM_ID) - - dai.STR(Passthrough Playback PCM_ID) { - id STR(PCM_ID) - } - - pcm."playback" { - - capabilities STR(Passthrough Playback PCM_ID) - } -} diff --git a/topology/sof/pipe-passthrough-vol-capture.m4 b/topology/sof/pipe-volume-capture.m4 similarity index 100% rename from topology/sof/pipe-passthrough-vol-capture.m4 rename to topology/sof/pipe-volume-capture.m4 diff --git a/topology/sof/pipe-passthrough-vol-playback.m4 b/topology/sof/pipe-volume-playback.m4 similarity index 100% rename from topology/sof/pipe-passthrough-vol-playback.m4 rename to topology/sof/pipe-volume-playback.m4 diff --git a/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 b/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 deleted file mode 100644 index e930416..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `SSP2-Codec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 b/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 deleted file mode 100644 index 76bd75b..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 +++ /dev/null @@ -1,84 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `NoCodec') - -# -# Define the pipeline -# -# PCM0 <---> SSP2 -# - -# Passthrough 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-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - - -# Passthrough playback 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 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-capture.m4, - 2, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# DAI configuration -# -# SSP port 2 is our only pipeline DAI -# - -# playback DAI is SSP2 using 2 periods -# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-playback.m4, - 1, SSP, 2, - PIPELINE_SOURCE_1, 2, s16le, - 48, 1000, 0, 0) - -# capture DAI is SSP2 using 2 periods -# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-capture.m4, - 2, SSP, 2, - PIPELINE_SINK_2, 2, s16le, - 48, 1000, 0, 0) - -# PCM Passthrough -PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 16bit I2S using 20bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-16bit-48k-ssp2.m4 b/topology/test-passthrough-16bit-48k-ssp2.m4 deleted file mode 100644 index 7bf4aaf..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s16le. -# 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-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 16bit I2S using 20bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-src-ssp2.m4 b/topology/test-passthrough-24bit-48k-src-ssp2.m4 deleted file mode 100644 index 61c06e1..0000000 --- a/topology/test-passthrough-24bit-48k-src-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ---> volume ---> SSP2 -# - -# 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-passthrough-src-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 24, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 2400000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 25, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 b/topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 deleted file mode 100644 index 7e481d3..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `SSP2-Codec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 24, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 2400000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 25, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 b/topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 deleted file mode 100644 index e0a3d4f..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `NoCodec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 24, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 2400000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 25, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-ssp2.m4 b/topology/test-passthrough-24bit-48k-ssp2.m4 deleted file mode 100644 index ca3261d..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 24, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 2400000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 25, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-vol-ssp2.m4 b/topology/test-passthrough-24bit-48k-vol-ssp2.m4 deleted file mode 100644 index 89775a7..0000000 --- a/topology/test-passthrough-24bit-48k-vol-ssp2.m4 +++ /dev/null @@ -1,83 +0,0 @@ -# -# Topology for pass through pipeline -# - -# Include topology builder -include(`local.m4') -include(`build.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Baytrail DSP configuration -include(`dsps/byt.m4') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 <---> volume <---> SSP2 -# - -# 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-passthrough-vol-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, 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 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-vol-capture.m4, - 2, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# DAI configuration -# -# SSP port 2 is our only pipeline DAI -# - -# playback DAI is SSP2 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, 2, - PIPELINE_SOURCE_1, 2, s24le, - 48, 1000, 0, 0) - -# capture DAI is SSP2 using 2 periods -# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-capture.m4, - 2, SSP, 2, - PIPELINE_SINK_2, 2, s24le, - 48, 1000, 0, 0) - -# PCM Passthrough -PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 24, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 2400000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 25, 3, 3)) diff --git a/topology/test/Makefile.am b/topology/test/Makefile.am new file mode 100644 index 0000000..7da075d --- /dev/null +++ b/topology/test/Makefile.am @@ -0,0 +1,20 @@ + +# +# Dependencies +# + +DEPS = \ + ../dsps/*.m4 \ + ../common/*.m4 \ + ../m4/*.m4 \ + ../sof/*.m4 + +# Uncomment the following line if you want to debug conf files +.PRECIOUS: %.conf + +all : *.m4 ${DEPS} + ./tplg-build.sh + +clean: + rm -f *.conf + rm -f *.tplg diff --git a/topology/test/test-src-ssp.m4 b/topology/test/test-src-ssp.m4 new file mode 100644 index 0000000..318bd74 --- /dev/null +++ b/topology/test/test-src-ssp.m4 @@ -0,0 +1,90 @@ +# +# Topology for pass through pipeline +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Baytrail DSP configuration +include(`dsps/byt.m4') + +# +# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! +# +# TEST_PIPE_NAME - Pipe name +# TEST_DAI_LINK_NAME - BE DAI link name e.g. "NoCodec" +# TEST_SSP_PORT - SSP port number e.g. 2 +# TEST_SSP_FORMAT - SSP data format e.g s16le +# TEST_PIPE_FORMAT - Pipeline format e.g. s16le +# TEST_SSP_BCLK - SSP BCLK in Hz +# TEST_SSP_PHY_BITS - SSP physical slot size +# TEST_SSP_DATA_BITS - SSP data slot size +# + +# +# Define the pipeline +# +# PCM0 <--> SRC <--> SSP TEST_SSP_PORT +# + +# Passthrough 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-TEST_PIPE_NAME-playback.m4, + 1, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + + +# Passthrough playback 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 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, + 2, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + +# +# DAI configuration +# +# SSP port TEST_SSP_PORT is our only pipeline DAI +# + +# playback DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SOURCE_1, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# capture DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SINK_2, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# PCM Passthrough +PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +# Clocks masters wrt codec +# +# TEST_SSP_DATA_BITS bit I2S using TEST_SSP_PHY_BITS bit sample conatiner on SSP TEST_SSP_PORT +# +DAI_CONFIG(SSP, TEST_SSP_PORT, TEST_DAI_LINK_NAME, I2S, TEST_SSP_DATA_BITS, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, TEST_SSP_BCLK, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, TEST_SSP_PHY_BITS, 3, 3)) diff --git a/topology/test/test-ssp.m4 b/topology/test/test-ssp.m4 new file mode 100644 index 0000000..42f3876 --- /dev/null +++ b/topology/test/test-ssp.m4 @@ -0,0 +1,90 @@ +# +# Topology for pass through pipeline +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Baytrail DSP configuration +include(`dsps/byt.m4') + +# +# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! +# +# TEST_PIPE_NAME - Pipe name +# TEST_DAI_LINK_NAME - BE DAI link name e.g. "NoCodec" +# TEST_SSP_PORT - SSP port number e.g. 2 +# TEST_SSP_FORMAT - SSP data format e.g s16le +# TEST_PIPE_FORMAT - Pipeline format e.g. s16le +# TEST_SSP_BCLK - SSP BCLK in Hz +# TEST_SSP_PHY_BITS - SSP physical slot size +# TEST_SSP_DATA_BITS - SSP data slot size +# + +# +# Define the pipeline +# +# PCM0 <---> SSP TEST_SSP_PORT +# + +# Passthrough 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-TEST_PIPE_NAME-playback.m4, + 1, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + + +# Passthrough playback 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 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, + 2, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + +# +# DAI configuration +# +# SSP port TEST_SSP_PORT is our only pipeline DAI +# + +# playback DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SOURCE_1, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# capture DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SINK_2, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# PCM Passthrough +PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +# Clocks masters wrt codec +# +# TEST_SSP_DATA_BITS bit I2S using TEST_SSP_PHY_BITS bit sample conatiner on SSP TEST_SSP_PORT +# +DAI_CONFIG(SSP, TEST_SSP_PORT, TEST_DAI_LINK_NAME, I2S, TEST_SSP_DATA_BITS, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, TEST_SSP_BCLK, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, TEST_SSP_PHY_BITS, 3, 3)) diff --git a/topology/test/tplg-build.sh b/topology/test/tplg-build.sh new file mode 100755 index 0000000..2aa751f --- /dev/null +++ b/topology/test/tplg-build.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# Utility script to pre-process and compile topology sources into topology test +# binaries. Currently supports simple PCM <-> component <-> SSP style tests +# using simple_test() + +# fail immediately on any errors +set -e + +# M4 preprocessor flags +M4_FLAGS="-I ../ -I ../m4" + +# Simple component test cases +# can be used on components with 1 sink and 1 source. +SIMPLE_TESTS=(test-ssp test-src-ssp) + +# process m4 simple tests - +# simple_test(name, pipe_name, be_name, format, dai_id, dai_format, dai_phy_bits, dai_data_bits dai_bclk) +# 1) name - test filename suffix +# 2) pipe_name - test component pipeline filename in sof/ +# 3) be_name - BE DAI link name in machine driver, used for matching +# 4) format - PCM sample format +# 5) dai_id - SSP port number +# 6) dai_format - SSP sample format +# 7) dai_phy_bits - SSP physical number of BLKCs per slot/channel +# 8) dai_data_bits - SSP number of valid daat bits per slot/channel +# 9) dai_bclk - SSP BCLK in HZ +# +function simple_test { + for i in ${SIMPLE_TESTS[@]} + do + TFILE="$i$5-$4-48k-$1" + echo "M4 pre-processing test $i -> ${TFILE}" + m4 ${M4_FLAGS} \ + -DTEST_PIPE_NAME="$2" \ + -DTEST_DAI_LINK_NAME="$3" \ + -DTEST_SSP_PORT=$5 \ + -DTEST_SSP_FORMAT=$6 \ + -DTEST_PIPE_FORMAT=$4 \ + -DTEST_SSP_BCLK=$9 \ + -DTEST_SSP_PHY_BITS=$7 \ + -DTEST_SSP_DATA_BITS=$8 \ + $i.m4 > ${TFILE}.conf + echo "Compiling test $i -> ${TFILE}.tplg" + alsatplg -v 1 -c ${TFILE}.conf -o ${TFILE}.tplg + done +} + +# Pre-process the simple tests +simple_test nocodec passthrough "NoCodec" s16le 2 s16le 20 16 1920000 +simple_test nocodec passthrough "NoCodec" s24le 2 s24le 25 24 2400000 +simple_test nocodec volume "NoCodec" s16le 2 s16le 20 16 1920000 +simple_test nocodec volume "NoCodec" s24le 2 s24le 25 24 2400000 +simple_test nocodec volume "NoCodec" s16le 2 s24le 25 24 2400000 + +simple_test codec passthrough "SSP2-Codec" s16le 2 s16le 20 16 1920000 +simple_test codec passthrough "SSP2-Codec" s24le 2 s24le 25 24 2400000 +simple_test codec volume "SSP2-Codec" s16le 2 s16le 20 16 1920000 +simple_test codec volume "SSP2-Codec" s24le 2 s24le 25 24 2400000 +simple_test codec volume "SSP2-Codec" s16le 2 s24le 25 24 2400000 + +simple_test baytrail passthrough "Baytrail Audio" s16le 2 s16le 20 16 1920000 +simple_test baytrail passthrough "Baytrail Audio" s24le 2 s24le 25 24 2400000 +simple_test baytrail volume "Baytrail Audio" s16le 2 s16le 20 16 1920000 +simple_test baytrail volume "Baytrail Audio" s24le 2 s24le 25 24 2400000 +simple_test baytrail volume "Baytrail Audio" s16le 2 s24le 25 24 2400000 + -- 2.14.1
1 0
0 0
[Sound-open-firmware] [PATCH] topology: fix 2 typos for capture pipeline
by Keyon Jie 13 Dec '17

13 Dec '17
1. Widget N_PCMC type should be "aif_in", not "aif_out". 2. Widget W_DAI_IN data should be "N_DAI_IN", not "N_DAI_OUT". Signed-off-by: Xiuli Pan <xiuli.pan(a)intel.com> Signed-off-by: Keyon Jie <yang.jie(a)linux.intel.com> --- topology/m4/local.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topology/m4/local.m4 b/topology/m4/local.m4 index da20e1c..08425ed 100644 --- a/topology/m4/local.m4 +++ b/topology/m4/local.m4 @@ -131,7 +131,7 @@ define(`W_PCM_CAPTURE', `}' `SectionWidget."'N_PCMC`" {' ` index "'PIPELINE_ID`"' -` type "aif_out"' +` type "aif_in"' ` no_pm "true"' ` stream_name "'$1`"' ` data [' @@ -358,7 +358,7 @@ define(`W_DAI_IN', ` "'N_DAI_IN($2)`_data_w"' ` "'N_DAI_IN($2)`_data_w_comp"' ` "'N_DAI_IN($2)`_data_str"' -` "'N_DAI_OUT($2)`_data_comp_str"' +` "'N_DAI_IN($2)`_data_comp_str"' ` "'$7`"' ` ]' `}') -- 2.11.0
1 0
0 0
[Sound-open-firmware] [PATCH] volume: pass format change to downstream components.
by Pierre-Louis Bossart 13 Dec '17

13 Dec '17
The volume component can change the sink data format depending on sink component/pipeline topology configuration. This change is set locally, but not to the host params that are passed downstream. Fix this so that downstream components can check params match their topology configuration. Tested with test-passthrough-48k-vol-ssp2 and reef-byt-rt5651 topology files. Note that there are quite a few underflows likely added by recent changes, more work needed to identify what goes on. (first fix for prepare() from Liam, additional update for the params() case by Pierre) Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com> Signed-off-by: Liam Girdwood <liam.r.girdwood(a)linux.intel.com> --- src/audio/volume.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/audio/volume.c b/src/audio/volume.c index 5ae1cce..572c88e 100644 --- a/src/audio/volume.c +++ b/src/audio/volume.c @@ -408,8 +408,13 @@ static void volume_free(struct comp_dev *dev) */ static int volume_params(struct comp_dev *dev) { + struct comp_data *cd = comp_get_drvdata(dev); + trace_volume("par"); + /* rewrite params format for all downstream */ + dev->params.frame_fmt = cd->sink_format; + return 0; } @@ -656,6 +661,8 @@ static int volume_prepare(struct comp_dev *dev) comp_frame_bytes(sinkb->sink); break; } + /* rewrite params format for all downstream */ + dev->params.frame_fmt = cd->sink_format; dev->frame_bytes = cd->sink_period_bytes / dev->frames; -- 2.14.1
2 1
0 0
[Sound-open-firmware] [PATCH] Increase timeout of DMA trace work re-scheduling if local buffer is half full.
by yan.wang@linux.intel.com 12 Dec '17

12 Dec '17
From: Yan Wang <yan.wang(a)linux.intel.com> The timeout of work_reschedule_default() cannot be too short to finish work queue rescheduling. Otherwise, the work will be rescheduled wrong into the next timer loop. Signed-off-by: Yan Wang <yan.wang(a)linux.intel.com> --- src/lib/dma-trace.c | 2 +- src/platform/baytrail/include/platform/platform.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/dma-trace.c b/src/lib/dma-trace.c index 2a5b1a6..e61ac30 100644 --- a/src/lib/dma-trace.c +++ b/src/lib/dma-trace.c @@ -247,7 +247,7 @@ void dtrace_event(const char *e, uint32_t length) /* schedule copy now if buffer > 50% full */ if (trace_data->enabled && buffer->avail >= (DMA_TRACE_LOCAL_SIZE / 2)) - work_reschedule_default(&trace_data->dmat_work, 100); + work_reschedule_default(&trace_data->dmat_work, DMA_TRACE_NOW_US); } void dtrace_event_atomic(const char *e, uint32_t length) diff --git a/src/platform/baytrail/include/platform/platform.h b/src/platform/baytrail/include/platform/platform.h index 4d63f7b..4559288 100644 --- a/src/platform/baytrail/include/platform/platform.h +++ b/src/platform/baytrail/include/platform/platform.h @@ -82,6 +82,12 @@ struct reef; /* the interval of DMA trace copying */ #define DMA_TRACE_US 500000 +/* + * the interval of start DMA trace copying in special case like half fullness + * of local DMA trace buffer + */ +#define DMA_TRACE_NOW_US 5000 + /* DMAC used for trace DMA */ #define PLATFORM_TRACE_DMAC DMA_ID_DMAC0 -- 2.7.4
2 1
0 0
[Sound-open-firmware] [PATCH] byt-ipc: add msg back to empty_list for next use
by Keyon Jie 12 Dec '17

12 Dec '17
The msg pool will be used up as it was not added back to empty_list, here correct it. Signed-off-by: Keyon Jie <yang.jie(a)linux.intel.com> --- src/ipc/byt-ipc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ipc/byt-ipc.c b/src/ipc/byt-ipc.c index 8897bb9..6716cce 100644 --- a/src/ipc/byt-ipc.c +++ b/src/ipc/byt-ipc.c @@ -194,6 +194,9 @@ void ipc_platform_send_msg(struct ipc *ipc) shim_write(SHIM_IPCDL, msg->header); shim_write(SHIM_IPCDH, SHIM_IPCDH_BUSY); + /* add msg back to empty_list for next use */ + list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } -- 2.11.0
4 3
0 0
[Sound-open-firmware] [PATCH 1/6] topology: Add passthrough capture pipe
by Liam Girdwood 12 Dec '17

12 Dec '17
Signed-off-by: Liam Girdwood <liam.r.girdwood(a)linux.intel.com> --- topology/sof/pipe-passthrough-capture.m4 | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 topology/sof/pipe-passthrough-capture.m4 diff --git a/topology/sof/pipe-passthrough-capture.m4 b/topology/sof/pipe-passthrough-capture.m4 new file mode 100644 index 0000000..2c2a495 --- /dev/null +++ b/topology/sof/pipe-passthrough-capture.m4 @@ -0,0 +1,70 @@ +# Capture Passthrough Pipeline and PCM +# +# Pipeline Endpoints for connection are :- +# +# host PCM_C <-- B0 <-- sink DAI0 + +# Include topology builder +include(`local.m4') + + +# +# Components and Buffers +# + +# Host "Passthrough Capture" PCM uses pipeline DMAC and channel +# with 0 sink and 2 source periods +W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) + +# Capture Buffers +W_BUFFER(0, COMP_BUFFER_SIZE(2, + COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) + +# +# DAI definitions +# +W_DAI_IN(DAI_TYPE, DAI_INDEX, DAI_FORMAT, 0, 2, 2, dai0c_plat_conf) + +# +# DAI pipeline - always use 0 for DAIs +# +W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCHEDULE_CORE, 0, pipe_dai_schedule_plat) + +# +# Pipeline Graph +# +# host PCM_C <-- B0 <-- sink DAI0 + +SectionGraph."pipe-pass-capture-PIPELINE_ID" { + index STR(PIPELINE_ID) + + lines [ + dapm(Passthrough Capture PCM_ID, N_PCMC) + dapm(N_PCMC, N_BUFFER(0)) + ] +} + +# +# Pipeline Source and Sinks +# +indir(`define', concat(`PIPELINE_SINK_', PIPELINE_ID), N_BUFFER(0)) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Capture PCM_ID) + +# +# PCM Configuration +# + +SectionPCMCapabilities.STR(Passthrough Capture PCM_ID) { + + formats "S32_LE,S24_LE,S16_LE" + rate_min "48000" + rate_max "48000" + channels_min "2" + channels_max "4" + periods_min "2" + periods_max "16" + period_size_min "192" + period_size_max "16384" + buffer_size_min "65536" + buffer_size_max "65536" +} -- 2.14.1
1 5
0 0
[Sound-open-firmware] Reef, Minnowboard Max or Asus T100
by Chun-ta Lin 11 Dec '17

11 Dec '17
Hello SOF Gurus, This is Peter from ChromeOS@Google. I'm interested in the project and is trying to reproduce/ understanding from the main page <https://www.alsa-project.org/main/index.php/Firmware>. I noticed that in the instruction, the topic is reef w/ 4.8 kernel version. Since I'm quite a newbie in this area, wondering from a learning perspective, what would be recommended hardware for this purpose ? Will it be a bit more complicated to build / debug it with Reef (like kernel need to sign after build), or ASUS T100 (an Windows platform). Looking forward for reply, itsPeter
4 8
0 0
[Sound-open-firmware] [PATCH] dai: prepare does not need to bzero buffers.
by Liam Girdwood 11 Dec '17

11 Dec '17
Already done by pipeline, but prepare still needs to write back. Signed-off-by: Liam Girdwood <liam.r.girdwood(a)linux.intel.com> --- src/audio/dai.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/audio/dai.c b/src/audio/dai.c index cc61e83..2fbfc5f 100644 --- a/src/audio/dai.c +++ b/src/audio/dai.c @@ -442,15 +442,14 @@ static int dai_prepare(struct comp_dev *dev) return -EINVAL; } - /* writeback buffer contents from cache */ + /* initialise buffers */ if (dev->params.direction == SOF_IPC_STREAM_PLAYBACK) { + + /* write back buffer contents from cache for playback */ dma_buffer = list_first_item(&dev->bsource_list, struct comp_buffer, sink_list); - /* fill playback periods with silence */ - bzero(dma_buffer->r_ptr, dma_buffer->avail); - - dcache_writeback_region(dma_buffer->r_ptr, dma_buffer->avail); + dcache_writeback_region(dma_buffer->addr, dma_buffer->size); } /* dma reconfig not required if XRUN handling */ -- 2.14.1
2 5
0 0
  • ← Newer
  • 1
  • ...
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • ...
  • 158
  • Older →

HyperKitty Powered by HyperKitty version 1.3.8.