Commit Graph

1170 Commits

Author SHA1 Message Date
Rander Wang d38c3c3912 topology2: add hda volume pipeline support for ipc4
This is for generic hda machine driver. Dmic is
not included since it is been developing. The gain
module in ipc4 has the function of volume component
in ipc3 and we use it to control volume.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2021-07-30 22:44:31 +01:00
Rander Wang 2ebe36aedd topology2: add volume support for ipc4
Volume is supported by gain module in ipc4. We need
to set curve_type, curve_duration and init_val for
this module.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2021-07-30 22:44:31 +01:00
Rander Wang 884bfdf125 topology2.0: add some basic class definitions
Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
2021-07-30 22:44:31 +01:00
Daniel Baluta 53718867df topology: imx8mp: Add compress decoding pipeline for i.MX8MP with aac/mp3 codecs
Add topology to support compress playback for MP3/AAC
on i.MX8MP with wm8960 codec.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2021-07-29 16:07:28 +03:00
Daniel Baluta 64be6a6578 topology: imx8: Add compress decoding pipeline for i.MX8/i.MX8X with aac/mp3 codecs
Add topology to support compress playback for MP3/AAC on i.MX8/i.MX8X
with wm8960 codec.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2021-07-29 16:07:28 +03:00
Ranjani Sridharan 764a065193 topology1: sof-cavs-nocodec: Add deep buffer playback pipeline
on SSP5 for BXT and SSP0 for all others.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-23 08:34:36 +01:00
Ranjani Sridharan 56d1fe652c topology1: sof-cavs-nocodec: convert all playback pipelines to mixer-based pipelines
Convert all playback pipelines to have a mixer so adding a deep-buffer
pipeline will be simpler.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-23 08:34:36 +01:00
Ranjani Sridharan 808c4512c5 Revert "topology: cavs-nocodec: Add deepbuffer pipeline to SSP0 and SSP2"
This reverts commit a10b5dcf85.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-23 08:34:36 +01:00
Ranjani Sridharan 463c4afd10 Revert "topology1: sof-cavs-nocodec: Add the deep buffer PCMs"
This reverts commit 6516a8c89b.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-23 08:34:36 +01:00
Daniel Baluta 52bc39fe73 topology: i.MX: Add topology to demonstrate EQ component
This enables EQ component with IIR filter for i.MX8QM/i.MX8QXP/i.MX8MP
with wm8960 codec.

Users can try various configurations for EQ parameters using sof-ctl tool:

$  amixer -Dhw:1 controls | grep EQ
numid=44,iface=MIXER,name='EQIIR1.0 eqiir_coef_1'

$ ./sof-ctl -Dhw:1 -n 44 -s sof/tools/ctl/eq_iir_bassboost.txt

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2021-07-22 17:07:23 +01:00
Daniel Baluta 1203a46633 tools: ctl: Fix getopt() stop condition
getopt() returns an int, which in our implementation is assigned to a
char type var.

On some platforms char is unsigned thus making getopt() return value
always > 0.

Use int instead of char here to fix the stop condition for parameter
parsing.

This makes sof-ctl work on ARM platforms.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2021-07-22 17:06:52 +01:00
Bard Liao bb18f62b54 topology2: copier: add ALH type
ALH is a valid type of copier.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-22 17:03:08 +01:00
Seppo Ingalsuo 4c376680f5 Tools: Fix topology1 path in Matlab language scripts
The change for topology1 was missing from various tuning
and testing scripts those access binary blob data from
topology m4 directories.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-21 12:13:36 +01:00
Ranjani Sridharan 6516a8c89b topology1: sof-cavs-nocodec: Add the deep buffer PCMs
We weren't really testing these yet without the PCM devices.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-21 10:23:10 +01:00
Bard Liao f96e25ffcc topology2: add cavs sdw topology
Add sdw topology for headset which includes one playback and one capture
pcms.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-19 13:19:12 +01:00
Bard Liao 4e76df5221 topology2: add ALH DAI class
Add ALH DAI class definition, ALH DAI objects can be
instantiated as:

Object.Dai.ALH."N" {
 	direction		"capture" # playback or capture
 	dai_name		"SDW0-Capture"
 	id 			2
 	Object.hw_config."2" {
 	}
}

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-19 13:19:12 +01:00
Pierre-Louis Bossart d1abc88153 topology: add development version for Volteer tests
Add support for reuse of sof-tgl-rt711-rt1308 on Google Volteer. This
is not intended for production but removes both hotwording and
smart-amp support - this simpler topology is intended for
SoundWire/DMIC tests only.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-07-19 09:40:52 +01:00
Pierre-Louis Bossart f3840a70c3 topology1: tweak sof-tgl-rt711-rt1308 to test on Google Volteer
The topologies used for sof-tgl-rt711-rt1308 and
sof-tgl-max98357a-rt5682 are almost equivalent.

Conditionally add support for the amplifier reference dailink and BT
offload, so that this topology can be used as is on Google
Volteer. This will help root-cause suspend/resume issues we see only
on TGL_RVP_SDW

Related kernel PR: https://github.com/thesofproject/linux/pull/3006

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-07-19 09:40:52 +01:00
Seppo Ingalsuo 0fa9f7d892 Topology: Updated TDFB related topology files with beam controls
This patch contains updates to add beam on/off and direction controls.
The common m4 tasks to add controls are placed to include files
tdfb_controls.m4, tdfb_defines.m4, tdfb_undefines.m4.

The single beam examples are replaced by blobs with 0, +/-30, and +/-90
degree angled beams. The Arrays are 50m, 68mm spaced for typical
notebook microphones. The 28mm example is for four microphones. A four
microphones for notebook with microphones at 0, 36, 146, and 182mm
line locations.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo bd6db82eeb Tools: Tune: TDFB: Do not include plot figures to saved .mat files
This saves disk space from unnecessary data.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo a5fc4a643f Tools: Tune: Update TDFB topology include files location
Topologies 1.0 location has been changed. This update allows the
tool to create the files into correct path.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo b9a14709bf Tools: Tune: Add option for delay-and-sum to beamformer design
The delay-and-sum beamformer has highest white noise gain (WNG)
performance. It's good id suppressing microphone self noise. The
beam is steered with pure delay adjust in the all-pass filter
bank. Default type is still super directive. Use DSB or SDB
as beamformer type to select.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo deb7849f76 Tools: Fixes to TDFB tune and test scripts
Matlab does not support isfile(), so another command is used to
check if a file exists. The new way works both in Octave and Matlab.

The bf_defaults.m is fixed to properly initialize empty strings
to cell arrays. It's needed with minimal command like usage
as shown in SOF Docs examples.

In bf_design.m the num_filters determination is moved after array
helpers because other than line and circle do not use mic_n parameter.
The bug resulted to zero num_filters.

In bf_merge.m the unused bf3 and bf4 are removed.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo 46d52efdd8 Tools: Tune: Add multiple angles and beam off settings add to TDFB blob
This patch essentially adds support for steer_az/steer_el to be
vector instead of scalar. The beam off preset is added by default
automatically for N-channel in N-channel out configurations. Microphone
(x,y,z) coordinates are passed in to blob for direction of arrival
reporting.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo 92ddb0d137 Tools: Tune: Fix beamformer rotate and diffuse simulation data generate
This patch fixes the incorrect delaying of simulation input signal to
microphones. Instead of delaying the old code advanced the input the
more the larger the input is. E.g. It caused the tests for line arrays
to show a mirrored beam pattern.

The num_filters is replaced by mic_n (microphones count). It is the
correct count to use here though usually filters count is the same.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo 53c7ea6dd1 Tools: Tune: Add frequency response and group delay plots
The plots help to understand beamformer channel filters characteristic.
Frequency response is usually all-pass type and group delays match
the delays need to time-align the waveforms from steer angle.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo 064285e19c Tools: Tune: Center the beamformer impulse responses
This patch improves the beamformer performance (vs. tap count) by
shifting the extract window location for IFFT output by mean of
all impulse responses center. Previously the first filter was centered
and other filters were more towards start or end of impulse response.
The change helps to cope with smaller filter length with larger size
arrays with steer angles those spread the impulse response further
away time-wise from each other.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Seppo Ingalsuo 9faf7e4e44 Testbench: Fix for multiple controls parsing for process components
This patch prevents topology parse failure when there are multiple
controls, e.g. enum controls.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-07-14 15:59:24 +01:00
Rander Wang ab387b9bfc topology2: use correct key word for contraint attribute
Signed-off-by: Rander Wang <rander.wang@intel.com>
2021-07-14 15:32:17 +01:00
Rander Wang b42798bc6a topolog2: add dai setting for cavs-nocodec
The change is based on dai setting in copier

Signed-off-by: Rander Wang <rander.wang@intel.com>
2021-07-14 15:32:17 +01:00
Rander Wang 3a894af0ce topolog2: add dai token support in copier
Copier widget may be used as a dai component in ipc4 path,
so we need to add dai token in copier, including dai_index,
dai_type and direction. They are optional attributes and can
be set only for dai type. We don't reuse copier_type for dai
since copier type may be host or just copy module.

Signed-off-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Tested-by: Bard Liao <bard.liao@intel.com>
2021-07-14 15:32:17 +01:00
Ranjani Sridharan a10b5dcf85 topology: cavs-nocodec: Add deepbuffer pipeline to SSP0 and SSP2
Add a deepbuffer pipelines connected to the the mixer-dai
pipeline for SSP0 and SSP2. The pipeline deadlines are left at
1ms for now and will be changed later after the mixer pipelines
are validated.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-07-13 16:00:11 +01:00
Chao Song 5374da8c89 topology2: Add cavs nocodec topology
Only a playback pipeline and a capture pipeline
on SSP0 are added.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 95cc4613ce topology2: Add cavs passthrough-capture pipeline
Add class definition for cavs passthrough-capture
pipeline, and it can be instantiated as:

    Object.Pipeline.passthrough-capture."N" {
	format		"s16le"
	period		1000
	time_domain	"timer"
	channels	2
	rate		48000
    }

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song e8c71e458d topology2: Add cavs passthrough-playback pipeline
Add class definition for cavs passthrough-playback
pipeline, and it can be instantiated as:

    Object.Pipeline.passthrough-playback."N" {
	format		"s16le"
	period		1000
	time_domain	"timer"
	channels	2
	rate		48000
    }

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 2e1d2ecabb topology2: Add HW Config class
Add class definition for HW Config, HW Config object
can be instantiated as:

  Object.Base.hw_config."NAME" {
	id		0
	mclk_freq	24000000
	bclk_freq	4800000
	tdm_slot_width	25
    }

where NAME is the unique instance name for the hw_config
object within the same alsaconf node, for example, SSP0.

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 17902fcbf0 topology2: Add SSP DAI class
Add SSP DAI class definition, SSP DAI objects can be
instantiated as:

Object.Dai.SSP."N" {
    direction		"duplex"
    dai_name		"NoCodec-0"
    id 			0
    quirks		"lbm_mode"
    sample_bits		24
    Object.hw_config."0" {
	    mclk_freq	24000000
	    bclk_freq	4800000
	    tdm_slot_width	25
    }
    Object.dai."playback" {
	    period_source_count	2
	    period_sink_count	0
    }
    Object.dai."capture" {
	    period_source_count	0
	    period_sink_count	2
    }
}

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 3d184df6bf topology2: Add manifest class
Add class definition for manifest.

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 4be5a29275 topology2: Add FE DAI class
Add FE DAI class definition, the FE DAI object can be
instantiated as:

    Object.Base.fe_dai."NAME" {
	id  0
    }

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 256bc69f31 topology2: Add pcm capabilities class
Add pcm capabilities class definition, pcm
capabilities object can be instantiated as:

    Object.PCM.pcm_caps."DIRECTION" {
	name	    "Headset"
	direction   "playback"
	formats	    "S32_LE,S24_LE,S16_LE"
	rate_min	48000
	rate_max	48000
	channels_min	2
	channels_max	2
	periods_min	2
    }

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song ae80d3b8af topology2: add PCM class
Add class definition for pcm, pcm object
can be instantiated as:
    Object.PCM.pcm."N" {
	id		2
	pcm_name	"Headset"
	direction	"playback"
    }

Signed-off-by: Ranjani Sridharan <ranjani.sidharan@linux.intel.com>
Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Chao Song 6053a4ffef topology2: add copier class
Add class definition for copier widget, it can be
instantiated as:
    Object.Widget.copier."N" {
	copier_type	"host"
	cpc	100000
    }

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-07-09 12:02:01 +01:00
Iris Wu be3dff2780 topology1: sof-tgl-nocodec-ci: use volume capture for PCM0
capture

S32_LE without PGA is not supported in alsabat, switch to use
pipe-volume-capture and unblock the CI alsabat test case.

Signed-off-by: Iris Wu <xiaoyun.wu@intel.com>
2021-07-08 22:28:44 +01:00
Pierre-Louis Bossart 019c1505b1 topology: cavs-nocodec: use s24le for DAIs for all platforms
The use of s32le did not expose any problems on APL, but alsa-bat was
previously reported as failing on JSL. Now that this test was extended
to CML_NOCODEC, we see the same issue. Manual tests with s24le show no
issues.

Let's just use s24le across the board and move on.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-07-06 18:28:21 +01:00
Brent Lu ad7f0e52b8 topology: sof-glk-da7219/cs42l42: enable bclk control
Enable the bclk clock control for SSP2.

Note that this impacts existing GLK-based chromebooks as well as newer
hardware.

Signed-off-by: Brent Lu <brent.lu@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-06 17:12:30 +01:00
Bard Liao fffa38db2a topology: sof-cavs-nocodec: enable MCLK/BCLK early start
Set clks_control to (SOF_DAI_INTEL_SSP_CLKCTRL_MCLK_ES |
SOF_DAI_INTEL_SSP_CLKCTRL_BCLK_ES) to enable MCLK/BCLK early start
feature.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-06 17:12:30 +01:00
Brent Lu 16878e387e topology: ssp: mclk/bclk clock control
Define the SSP_CC_MCLK/BCLK_ES bit to be used in SSP_CONFIG_DATA macro
to enable mclk/bclk on hw_params and disable malk/bclk on hw_free.

Signed-off-by: Brent Lu <brent.lu@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2021-07-06 17:12:30 +01:00
Pierre-Louis Bossart a0f789dfc6 topology: cavs-nocodec: temporarily fix jsl-nocodec issues with s24le
For some reason s32le does not work for DAI definitions on JSL-NOCODEC
platforms. alsa-bat tests fail, but they work fine on APL, CNL,
TGL. This is likely to be an ICL platform issue. The root cause is
still TBD

Use s24le for now to unlock Intel daily tests.
All other platforms remain with s32le.

BugLink: https://github.com/thesofproject/sof/issues/4427
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-07-01 13:31:57 -05:00
Zhang Keqiao 130bffa6a9 topology: add tgl-h nocodec topology build
add the TGL-H nocodec topology for zephyr test.

Signed-off-by: Zhang Keqiao <keqiao.zhang@intel.com>
2021-06-29 22:51:10 +01:00
Brent Lu 8c863f43af topology: sof-glk-cs42l42: using 24-bit sample depth on SSP2
Changing sample depth of SSP2 to 24 bits for better dynamic range.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2021-06-29 22:41:08 +01:00
Liam Girdwood eb7add5135 testbench: add a option for specifying the number of copy() iterations
All the user to specify the number of copies.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-29 11:05:58 +01:00
Liam Girdwood b8d6760600 testbench: fix crash when file has no . extension
Testbench crashed when a in/out file has not . extension. Fix this.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-29 11:05:58 +01:00
Liam Girdwood 305223a1f6 testbench: free components and pipeline after test results.
Move the comp free to after the results and free the pipeline.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-29 11:05:58 +01:00
Liam Girdwood 777c0008c1 testbench: add more helpful output for options parsing.
Lets be more helpful to the user.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-29 11:05:58 +01:00
Liam Girdwood bc10ba8b76 testbench: squash some valgrind warnings.
Buffer and params not initialised to zero like the other IPC structures
used by testbench. Fix this.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-29 11:05:58 +01:00
Pierre-Louis Bossart 2d70f100c7 topology: use cAVS nocodec support for APL/GLK
Move the existing sof-apl-nocodec to the development folder, in case
SOF CI still wants to use it.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart b5b0b2c4f2 topology: use same file for all cavs 1.8+ nocodec topologies
The beginning of the end of insanity?

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart fdd8ec03b5 topology: sof-cnl-nocodec: prepare for different multicore configurations
Not all devices have 4 cores, some only have 2 and even APL/GLK is
currently limited to a single core.

For now we still use a single core for all topologies, we will enable
multi-core in a follow-up patch.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart 4050ff6c31 topology: intel-generic-dmic: add macro for DMIC_CORE_ID
Add macros to quickly enable multi-core with DMICs

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart c952c048b2 topology: sof-cnl-nocodec: change SSP index for APL
Prepare for use on APL to use SSP0,1, 5, all other platforms use SSP0,1,2

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart ac8df75466 topology: sof-cnl-nocodec: make SSP clocks parameters
use platform name to infer root clocks

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart ab3663f468 topology: sof-cnl-nocodec: use s32le
No idea what we add artificial limitations on formats

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart 556c114f47 topology: sof-cnl-nocodec: add macros for SSP cores
Prepare for reuse across all platforms. For now this still uses
single-core.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart d1bce3d8fc topology: sof-cnl-nocodec: use DMIC macros
Remove all the hard-coding and use macros.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart a379cc3751 topology: CMakelist: disable DYNAMIC pipelines for nocodec topologies
We first want to enable the simplified topologies, then multi-core
then dynamic pipelines. The latter two cases will be handled in
follow-up patches.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Pierre-Louis Bossart f07cf8ea1f topology: CMakelists: group nocodec together
Prepare for use of common file

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-25 11:18:28 -05:00
Gongjun Song bc1497a742 Topology: Add sof-tgl-rt711-4ch topology
There is no rt1308 on the TGL-H-RVP platform, need to add a topology
file with only rt711 to enable soundwire on the TGL-H-RVP platform.

The patch of enable soundwire on the TGL-H-RVP platform has been
merged into the thesofproject/linux.

Signed-off-by: Gongjun Song <gongjun.song@intel.com>
2021-06-23 15:06:35 +01:00
Ranjani Sridharan 86c9a037e2 topology: utils: remove DAPM routes for virtual widgets
Remove the addition of DAPM routes for virtual widgets.
These are not needed for suppressing errors with legacy
machine drivers. Just adding the virtual widget is enough.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-21 16:46:39 +01:00
Pierre-Louis Bossart 97bfb24d70 topology: sof-cnl-nocodec: use different core for each DAI
The UpExtreme HAT connector with the SoundWire,
I2S, DMIC mixed mode exposes the following pins

DMIC_DATA0: input: HAT PIN 8
DMIC_CLK: output: HAT PIN 26

IS2_MCLK: output: HAT PIN 16

I2S1_SCLK: output: HAT PIN 32
I2S1_SFRM: output: HAT PIN 10
I2S1_TXD: output: HAT PIN 24
I2S1_RXD: input: HAT PIN 18

Let's use core3 for DMIC, core2 for SSP0, core1 for SSP1 and core0 for
SSP2.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2021-06-18 11:17:21 +01:00
Ranjani Sridharan 7668b39b07 topology2: Add pipeline classes
Add some pipeline classes for volume playback/capture, passthrough
capture and eq capture.
Each of these classes include the pipeline widget objects, connections
between pipeline widgets and pipeline attribute definitions

For ex: A volume playback pipeline can be instanted as follows:
Object.Pipeline.pipeline-volume-playback."2" {
	channels	2
	rate		48000
	index		5
	format		"s32le"
}

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-18 11:10:05 +01:00
Ranjani Sridharan c0bee428ae topology: prepare for Topology2.0
In preparation for Topology2.0, move the current topology files
to the topology1 folder and once the 1.0 topologies are
built copy them to the /sof/tools/build-tools/topology folder.

When Topology2.0 topologies come along, they will be built into
the topology2 folder and the 2.0 binaries will be copied over
the 1.0 binaries.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-17 22:17:30 +01:00
Pin-chih Lin e91001af67 topology: Add DRC_EQ def for adopting DRC/EQ pipeline
For speaker pipeline, we want to deploy DRC/EQ for partial TGL device
like Eldrid. The definition flag DRC_EQ is added to make the choice of
adopting the playback pipeline with DRC/EQ.

Signed-off-by: Pin-chih Lin <johnylin@google.com>
2021-06-17 11:43:45 -07:00
Viorel Suman 195774bce6 topology: imx8: kwd: use s32le format instead of s16le
Use s32le format instead of s16le.

Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
2021-06-17 09:49:22 +01:00
Ranjani Sridharan 3018193d3a topology: eq pipelines: remove duplicate SectionData
Remove the duplicate SectionData when multiple EQ's use the
same filter coefficients. There is no change in the topology
binary generated with just one SectionData instead of multiple
ones.

But this will help clean up the conf file so that converting to
topology2.0 will become easier as the name tells me which
coefficients to include.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-16 22:16:47 +01:00
Ranjani Sridharan 55f6116bbf topology2: Add pipeline widget class definition
The pipeline widget can be instantiated within a pipeline class as:
	Object.Widget.pipeline."N" {
		index		1
		time_domain	"timer"
		period		1000
	}

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-16 21:51:03 +01:00
Ranjani Sridharan 855cdd9301 topology2: Add class for DAPM route
Add a route class that will be used for creating DAPM routes
between widgets. A route can be between 2 widgets or between a
widget and pipeline endpoint as follows:
	Object.Base.route."N" {
		source	"dai.SSP.1.dai.capture"
		sink	"buffer.0.1"
	}

	Object.Base.route."N" {
		source	"buffer.2.1"
		sink	"pga.2.0"
	}

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-16 21:51:03 +01:00
Ranjani Sridharan a996be5031 topology2: pga: Add mixer controls
Add the volume and switch mixer control objects for the
PGA class. The mixers will be added to the PGA widget
if the pga widget is instantiated with names for each
of the mixers as follows:

Object.Widget.pga.0 {
	Object.Control.mixer.1 {
		name	"1 Master Capture Volume"
	}
	Object.Control.mixer.2 {
                name   "Capture Switch"
        }
}

If the name is only provided for one of the controls, only
that control will be added to the widget when building topology.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-16 21:51:03 +01:00
Ranjani Sridharan 0027521536 topology2: Add mixer control class
Add the class definition for a mixer control.
A mixer control can be instantiated as follows:
	Object.Control.mixer."0" {
		Object.Base.channel."fr" {
			shift	0
		}
		Object.Base.channel."fl" {}

		Object.Base.tlv."vtlv_m64s2" {
			Object.scale."0" {
				mute	1
			}
		}

		Object.ops."ctl" {
			info	"volsw"
			get	256
			put	256
		}
	}

Also add the other commonly used class definitions that
will be used to instantiate the mixer object such as,
channel, TLV, ops, scale etc.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-16 21:51:03 +01:00
Curtis Malainey a29806d9c7 topology: remove default google hotword
hotword is not public and therefore should not be on by default

Signed-off-by: Curtis Malainey <curtis@malainey.com>
2021-06-16 21:09:50 +01:00
Chao Song 9c50fff928 topology2: add asrc class
Add the class definition for ASRC widget, it can be
instantiated as follows:
	Object.Widget.asrc."N" {
		period_sink_count	2
		period_source_count	2
		format			"s24le"
		rate_out		48000
		asynchronous_mode	1
		operation_mode		0
	}

Where N is the unique instance number for asrc widget
within the same alsaconf node.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-06-15 12:43:12 +01:00
Chao Song d3f3c50205 topology2: add src class
Add the class definition for SRC widget, it can be
instantiated as follows:
	Object.Widget.src."N" {
		period_sink_count	2
		period_source_count	2
		format			"s24le"
		rate_out		48000
	}

Where N is the unique instance number for src widget
within the same alsaconf node.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2021-06-15 12:43:12 +01:00
Ranjani Sridharan a68b1af80d topology2: Add pga class
Add the class definition for PGA widget. It can be
instantiated as follows:
        Object.Widget.pga."N" {
                format	     s24le
                index        0
		period_sink_count 2
		period_source_count 2
        }

Where N is the unique instance number for pga widget in the same
alsaconf node.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-14 18:51:12 +01:00
Ranjani Sridharan d720725840 topology2: Add buffer class
Add the definition for the buffer class. A buffer object
can be instantiated as follows:
Object.Widget.buffer."N" {
	index	0
	periods	2
	caps	"host"
}

where 'N' is a unique instance number for the buffer object within
the same alsaconf node.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-14 18:51:12 +01:00
Ranjani Sridharan 4d830c908c topology2: Add DAI widget class
Add the class definition for DAI widgets. A DAI widget
can be instantiated as follows:
Object.Widget.dai."playback" {
	type			SSP
	index			"1"
	period_sink_count	"2"
	period_source_count	"0"
	widget_type		"dai_in"
}

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-14 18:51:12 +01:00
Ranjani Sridharan 9ef233de48 topology2: Introduction to Topology2.0
About
    -----

    This is a high level keyword extension on top of the existing ALSA
    conf topology format designed to:

    1) Simplify the ALSA conf topology definitions by providing high level
       "classes" so topology designers need to write less config for common
       object definitions.

    2) Allow simple reuse of objects. Define once and reuse (like M4) with
       the ability to alter objects configuration attributes from defaults.

    3) Allow data type and value verification. This is not done today and
       frequently crops up in FW bug reports.

    Common Topology Classes
    -----------------------

    Topology today has some common classes that are often reused throughout
    with slightly altered configurations. i.e. widgets (components),
    pipelines, dais and controls.

    This PR introduces the high level concept of reusable "class" like
    definition for a AIF_IN/AIF_OUT type object that can be used to create
    topology objects.

    Common Topology Attributes
    --------------------------
    Topology defines a lot of attributes per object with different types
    and constraints. Today there is no easy way to validate type or
    constraints and this can lead to many hard to find problems in FW at
    runtime.

    A new keyword "DefineAttribute" has been added to define attribute
    type, size, min value, max value, enum_values. This then allows
    alsatplg to validate each topology object attribute.

    Topology Classes define the list of attributes that they use and
    whether the attribute is mandatory, can be overridden by parent users
    or is immutable. This also helps alsatplg emit the appropriate errors
    for attribute misuse.

    Common Topology Arguments
    -------------------------

    Arguments are used to pass essential data needed for instantiating an
    object particularly needed for the object name. A new keyword
    "DefineArgument" has been added to define the arguments. The order in
    which the arguments are defined determines the name for the widget.
    For example, in the case of the host widget, the name would be
    constructed as "host.1.playback" where "1" is the pipeline_id argument
    value and "playback" is the direction argument value.

    Attribute Inheritance:
    ----------------------
    One of the key features of Topology2.0 is howthe attribute values are
    propagated from a parent object to a child object. This is accomplished
    by adding attributes/arguments with the same name for a parent and an
    object. By doing so, when creating a child object, the value for the
    common attribute is populated from the parent. If the value is provided
    in the child object instance, then it overrides the value coming from
    the parent.

    ALSA Conf Parser
    ----------------

    All the changes being proposed and discussed here must be 100%
    compliant with the ALSA conf parser. i.e. no syntax changes or
    changes to semantics for any existing keyword.

    It's intended that there will be NO changes to the ALSA conf parser
    (unless new keywords require this ?) and all topology building
    changes will be in the alsatplg compiler.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-14 18:51:12 +01:00
Pin-chih Lin 6515df852e topology: fix name mismatch of EQIIR control bytes
The name of CONTROLBYTES_PRIV should be aligned as mentioned in
sof/pipe-drc-eq-volume-demux-playback.m4#48.

Signed-off-by: Pin-chih Lin <johnylin@google.com>
2021-06-14 17:11:13 +01:00
Ben Zhang 6dd44d5b4c comp: Add initial Google hotword detector
Add a new component that uses the Google hotword library
to do keyword detection. The language model needs to be
set using the byte control from userspace before running
the detector.

1. Put the hotword library at $SOF_REPO/third_party_libraries/
hotword_dsp_api.h
libhifi3_google_hotword_dsp_api.a (TGL)
libcometlake_google_hotword_dsp_api.a (CML)

2. Build SOF fw and tools with xcc

3. Set language model on DUT:
amixer -c 0 contents | grep Model
      numid=73,iface=MIXER,name='GHD9.0 Hotword Model'
./sof-ctl -n 73 -t 0 -b -r -s x_google/en_all.mmap

4. Open the WoV pcm device
arecord -Dhw:0,8 -M -N -r 16000 -c2 -f s16_le --buffer-size=67200 -vvv
/tmp/wov.wav

5. Say "OK Google" and verify wov.wav

Signed-off-by: Ben Zhang <benzh@chromium.org>
Signed-off-by: Curtis Malainey <cujomalainey@google.com>
2021-06-11 13:53:12 +01:00
fy.tsuo a85e06a380 audio: igo_nr: added active channel selection
Use binary to configure active channel index.

Signed-off-by: fy.tsuo <fy.tsuo@intelli-go.com>
2021-06-11 11:39:45 +01:00
Marc Herbert 73df64444b logger: prefix and pad "task add 0xbe05ba30 <bad uid ptr 0x00000000>"
Before:
 WARN task add 0xbe05ba30 <bad uid ptr 0>

After:
 WARN task add 0xbe05ba30 <bad uid ptr 0x00000000>

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2021-06-10 15:50:21 +01:00
Marc Herbert 448bbc61a7 logger: print INFO and DEBUG prefixes, not just ERROR and WARN
It's not long and more consistent.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2021-06-10 15:50:21 +01:00
Marc Herbert ab643b7655 logger: catch out of bounds e->params[i] access
... when there are too many % characters in format string. Spotted by
routine valgrind run.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2021-06-10 15:50:21 +01:00
Ranjani Sridharan 5b072d97d5 topology: sof-apl-nocodec: revert to static pipelines
Dynamic pipelines will fail with the sof-apl-nocodec topology
due to issues with the memory allocator. Revert back to
use static pipelines until we have a more flexible memory
allocatory available with Zephyr.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-10 12:11:57 +01:00
Keyon Jie 64c5f3a46b topology: sof-tgl-nocodec-ci: fix DMIC16KHz PCM
Correct the wrong PCM name and pipeline number.

Fixes: 7c62a65ac6 ("topology: sof-tgl-nocodec-ci: add dmic16k coverage")
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2021-06-09 23:00:13 +08:00
Brent Lu 5abd8a9ea5 topology: sof-glk-cs42l42: using 2.4MHz bclk
By changing bclk to 2.4MHz, we can use XTAL as clock source and reduce
power consumption.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2021-06-08 21:37:15 +01:00
Keyon Jie 7c62a65ac6 topology: sof-tgl-nocodec-ci: add dmic16k coverage
Add dmic16k to run on Core 0, this will help to cover DMIC dais on
multi-core scenario (dmic 48k on core 2, dmic 16k on core 0).

Also correct the comment w.r.t. DSP cores.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2021-06-08 16:37:24 +01:00
Viorel Suman 58b4aa472a topology: imx8: add kwd component with wm8960 codec
Add KWD topology for imx8: SAI1 and wm8960 codec
used for recording.

Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
2021-06-03 13:49:58 +01:00
Curtis Malainey 89e7983498 probe: fix realloc mishandling
you need to use a temp var always with realloc, otherwise you through
away your pointer to your memory (which is still valid) in the event of
realloc failing.

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2021-06-03 13:32:59 +01:00
Curtis Malainey ead5afa6c2 probe: refactor function to decrease indent
following commit fixes a bug but to do the fix we need to allow
ourselves more room to add ifs, so lets pull out this function

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2021-06-03 13:32:59 +01:00
Seppo Ingalsuo 8cec7d3ef1 Topology: Allow 8 - 192 kHz rates for Media Playback PCM
The pipeline was limited to 48 kHz min and max that is not
useful for running and testing SRC component.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2021-06-03 13:21:35 +01:00
Liam Girdwood 60a6b1330e testbench: improve error messaging on file failures.
Tell the user the error.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2021-06-03 09:31:27 +01:00