[alsa-devel] [PATCH v3 0/3] conf: topology: Add the conf for SKL-rt286
This series adds SKL-i2c conf for simple PCM topology graph
Changes in v3:
- remove bin blobs, now they are generated in install step - hook the tool compilation to alsa-lib and run it on install - add u8 in alsa type_compat.h
Shreyas NC (3): conf: topology: Add Skylake i2s conf Add u8 in type_compat.h conf: topology: Generate Private data binary blobs
configure.ac | 2 + include/sound/type_compat.h | 2 + src/conf/topology/Makefile.am | 2 +- src/conf/topology/sklrt286/Makefile.am | 11 + src/conf/topology/sklrt286/data/Makefile.am | 6 + src/conf/topology/sklrt286/data/pvt.c | 1815 ++++++++++++++++++++ src/conf/topology/sklrt286/data/pvt_data.c | 90 + src/conf/topology/sklrt286/data/pvt_local.h | 9 + .../topology/sklrt286/data/skl-tplg-interface.h | 232 +++ src/conf/topology/sklrt286/skl_i2s.conf | 342 ++++ 10 files changed, 2510 insertions(+), 1 deletion(-) create mode 100644 src/conf/topology/sklrt286/Makefile.am create mode 100644 src/conf/topology/sklrt286/data/Makefile.am create mode 100644 src/conf/topology/sklrt286/data/pvt.c create mode 100644 src/conf/topology/sklrt286/data/pvt_data.c create mode 100644 src/conf/topology/sklrt286/data/pvt_local.h create mode 100644 src/conf/topology/sklrt286/data/skl-tplg-interface.h create mode 100644 src/conf/topology/sklrt286/skl_i2s.conf
From: Shreyas NC shreyas.nc@intel.com
The Skylake topology configuration for simple topology graph is provided. This exposes the PCM capabilities of the DSP.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Subhransu S. Prusty subhransu.s.prusty@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com --- configure.ac | 1 + src/conf/topology/Makefile.am | 2 +- src/conf/topology/sklrt286/Makefile.am | 11 + src/conf/topology/sklrt286/skl_i2s.conf | 342 ++++++++++++++++++++++++++++++++ 4 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 src/conf/topology/sklrt286/Makefile.am create mode 100644 src/conf/topology/sklrt286/skl_i2s.conf
diff --git a/configure.ac b/configure.ac index c265ec9e159b..1bf75e6d9c2b 100644 --- a/configure.ac +++ b/configure.ac @@ -661,6 +661,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/topology/Makefile \ src/conf/topology/broadwell/Makefile \ modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ + src/conf/topology/sklrt286/Makefile \ alsalisp/Makefile aserver/Makefile \ test/Makefile test/lsb/Makefile \ utils/Makefile utils/alsa-lib.spec utils/alsa.pc) diff --git a/src/conf/topology/Makefile.am b/src/conf/topology/Makefile.am index f56a96c651e5..cbdb7cf07c97 100644 --- a/src/conf/topology/Makefile.am +++ b/src/conf/topology/Makefile.am @@ -1 +1 @@ -SUBDIRS=broadwell +SUBDIRS=broadwell sklrt286 diff --git a/src/conf/topology/sklrt286/Makefile.am b/src/conf/topology/sklrt286/Makefile.am new file mode 100644 index 000000000000..f10d12fa0f73 --- /dev/null +++ b/src/conf/topology/sklrt286/Makefile.am @@ -0,0 +1,11 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +SUBDIRS = data +sklrt286dir = $(alsaconfigdir)/topology/sklrt286 +sklrt286_DATA = skl_i2s.conf +EXTRA_DIST = sklrt286_DATA +install-data-hook: + cp -p media0_in-cpr-0.bin media0_in-mi.bin media0_out-mo.bin media0_out-cpr-6.bin codec0_out-mo.bin codec0_out-cpr-4.bin codec1_out-mo.bin codec1_out-cpr-5.bin codec0_in-cpr-1.bin codec0_in-mi.bin dmic01_hifi_in-cpr-3.bin dmic01_hifi_in-mi.bin hdmi1_pt_out-cpr-7.bin hdmi1_pt_out-cpr-8.bin hdmi2_pt_out-cpr-9.bin hdmi2_pt_out-cpr-10.bin hdmi3_pt_out-cpr-11.bin hdmi3_pt_out-cpr-12.bin $(sklrt286dir) +clean-local: clean-local-check +.PHONY: clean-local-check +clean-local-check: + -rm -rf *.bin \ No newline at end of file diff --git a/src/conf/topology/sklrt286/skl_i2s.conf b/src/conf/topology/sklrt286/skl_i2s.conf new file mode 100644 index 000000000000..6da224fb4d2b --- /dev/null +++ b/src/conf/topology/sklrt286/skl_i2s.conf @@ -0,0 +1,342 @@ +SectionData."media0_in cpr 0" { + file "sklrt286/media0_in-cpr-0.bin" +} +SectionData."media0_in mi" { + file "sklrt286/media0_in-mi.bin" +} +SectionData."media0_out mo" { + file "sklrt286/media0_out-mo.bin" +} +SectionData."media0_out cpr 6" { + file "sklrt286/media0_out-cpr-6.bin" +} +SectionData."codec0_out mo" { + file "sklrt286/codec0_out-mo.bin" +} +SectionData."codec0_out cpr 4" { + file "sklrt286/codec0_out-cpr-4.bin" +} +SectionData."codec1_out mo" { + file "sklrt286/codec1_out-mo.bin" +} +SectionData."codec1_out cpr 5" { + file "sklrt286/codec1_out-cpr-5.bin" +} +SectionData."codec0_in cpr 1" { + file "sklrt286/codec0_in-cpr-1.bin" +} +SectionData."codec0_in mi" { + file "sklrt286/codec0_in-mi.bin" +} +SectionData."dmic01_hifi_in cpr 3" { + file "sklrt286/dmic01_hifi_in-cpr-3.bin" +} +SectionData."dmic01_hifi_in mi" { + file "sklrt286/dmic01_hifi_in-mi.bin" +} +SectionData."hdmi1_pt_out cpr 7" { + file "sklrt286/hdmi1_pt_out-cpr-7.bin" +} +SectionData."hdmi1_pt_out cpr 8" { + file "sklrt286/hdmi1_pt_out-cpr-8.bin" +} +SectionData."hdmi2_pt_out cpr 9" { + file "sklrt286/hdmi2_pt_out-cpr-9.bin" +} +SectionData."hdmi2_pt_out cpr 10" { + file "sklrt286/hdmi2_pt_out-cpr-10.bin" +} +SectionData."hdmi3_pt_out cpr 11" { + file "sklrt286/hdmi3_pt_out-cpr-11.bin" +} +SectionData."hdmi3_pt_out cpr 12" { + file "sklrt286/hdmi3_pt_out-cpr-12.bin" +} + +SectionControlMixer."media0_in mi Switch" { + index"1" + invert "false" + max "1" + min"0" + no_pm "true" + channel."fl" { + reg "-1" + shift "0" + } + channel."fr" { + reg "-1" + shift "0" + } + ops."ctl" { + get "64" + put "64" + info "64" + } +} +SectionControlMixer."codec0_in mi Switch" { + index"1" + invert "false" + max "1" + min"0" + no_pm "true" + channel."fl" { + reg "-1" + shift "0" + } + channel."fr" { + reg "-1" + shift "0" + } + ops."ctl" { + get "64" + put "64" + info "64" + } +} +SectionControlMixer."dmic01_hifi_in mi Switch" { + index"1" + invert "false" + max "1" + min"0" + no_pm "true" + channel."fl" { + reg "-1" + shift "0" + } + channel."fr" { + reg "-1" + shift "0" + } + ops."ctl" { + get "64" + put "64" + info "64" + } +} + + +SectionWidget."media0_in cpr 0" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "media0_in cpr 0" +} +SectionWidget."media0_in mi" { + index"1" + type"pga" + no_pm "true" + event_type "4" + event_flags "9" + subseq "10" + data "media0_in mi" +} +SectionWidget."media0_out mo" { + index"1" + type"mixer" + no_pm "true" + event_type "1" + event_flags "15" + subseq "10" + data "media0_out mo" + mixer [ + "media0_in mi Switch" + "codec0_in mi Switch" + "dmic01_hifi_in mi Switch" + ] +} +SectionWidget."media0_out cpr 6" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "media0_out cpr 6" +} +SectionWidget."codec0_out mo" { + index"1" + type"mixer" + no_pm "true" + event_type "1" + event_flags "15" + subseq "10" + data "codec0_out mo" + mixer [ + "media0_in mi Switch" + "codec0_in mi Switch" + "dmic01_hifi_in mi Switch" + ] +} +SectionWidget."codec0_out cpr 4" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "codec0_out cpr 4" +} +SectionWidget."codec0_out" { + index"1" + type"aif_out" + no_pm "true" +} +SectionWidget."codec1_out mo" { + index"1" + type"mixer" + no_pm "true" + event_type "1" + event_flags "15" + subseq "10" + data "codec1_out mo" + mixer [ + "media0_in mi Switch" + "codec0_in mi Switch" + "dmic01_hifi_in mi Switch" + ] +} +SectionWidget."codec1_out cpr 5" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "codec1_out cpr 5" +} +SectionWidget."codec1_out" { + index"1" + type"aif_out" + no_pm "true" +} +SectionWidget."codec0_in cpr 1" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "codec0_in cpr 1" +} +SectionWidget."codec0_in mi" { + index"1" + type"pga" + no_pm "true" + event_type "4" + event_flags "9" + subseq "10" + data "codec0_in mi" +} +SectionWidget."codec0_in" { + index"1" + type"aif_in" + no_pm "true" +} +SectionWidget."dmic01_hifi_in cpr 3" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "dmic01_hifi_in cpr 3" +} +SectionWidget."dmic01_hifi_in mi" { + index"1" + type"pga" + no_pm "true" + event_type "4" + event_flags "9" + subseq "10" + data "dmic01_hifi_in mi" +} +SectionWidget."dmic01_hifi" { + index"1" + type"aif_in" + no_pm "true" +} +SectionWidget."hdmi1_pt_out cpr 7" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "hdmi1_pt_out cpr 7" +} +SectionWidget."hdmi1_pt_out cpr 8" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "hdmi1_pt_out cpr 8" +} +SectionWidget."iDisp1_out" { + index"1" + type"aif_out" + no_pm "true" +} +SectionWidget."hdmi2_pt_out cpr 9" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "hdmi2_pt_out cpr 9" +} +SectionWidget."hdmi2_pt_out cpr 10" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "hdmi2_pt_out cpr 10" +} +SectionWidget."iDisp2_out" { + index"1" + type"aif_out" + no_pm "true" +} +SectionWidget."hdmi3_pt_out cpr 11" { + index"1" + type"mixer" + no_pm "true" + event_type "3" + event_flags "9" + data "hdmi3_pt_out cpr 11" +} +SectionWidget."hdmi3_pt_out cpr 12" { + index"1" + type"pga" + no_pm "true" + event_type "4" + data "hdmi3_pt_out cpr 12" +} +SectionGraph."Pipeline 1 Graph" { + index"1" + lines [ + "media0_in mi, , media0_in cpr 0" + "media0_in cpr 0, , System Playback" + "media0_out mo, media0_in mi Switch, media0_in mi" + "media0_out mo, codec0_in mi Switch, codec0_in mi" + "media0_out mo, dmic01_hifi_in mi Switch, dmic01_hifi_in mi" + "media0_out cpr 6, , media0_out mo" + "System Capture, , media0_out cpr 6" + "codec0_out mo, media0_in mi Switch, media0_in mi" + "codec0_out mo, codec0_in mi Switch, codec0_in mi" + "codec0_out mo, dmic01_hifi_in mi Switch, dmic01_hifi_in mi" + "codec0_out cpr 4, , codec0_out mo" + "codec0_out, , codec0_out cpr 4" + "codec1_out mo, media0_in mi Switch, media0_in mi" + "codec1_out mo, codec0_in mi Switch, codec0_in mi" + "codec1_out mo, dmic01_hifi_in mi Switch, dmic01_hifi_in mi" + "codec1_out cpr 5, , codec1_out mo" + "codec1_out, , codec1_out cpr 5" + "codec0_in mi, , codec0_in cpr 1" + "codec0_in cpr 1, , codec0_in" + "dmic01_hifi_in mi, , dmic01_hifi_in cpr 3" + "dmic01_hifi_in cpr 3, , dmic01_hifi" + "hdmi1_pt_out cpr 8, , hdmi1_pt_out cpr 7" + "hdmi1_pt_out cpr 7, , HDMI1 Playback" + "iDisp1_out, , hdmi1_pt_out cpr 8" + "hdmi2_pt_out cpr 10, , hdmi2_pt_out cpr 9" + "hdmi2_pt_out cpr 9, , HDMI2 Playback" + "iDisp2_out, , hdmi2_pt_out cpr 10" + "hdmi3_pt_out cpr 12, , hdmi3_pt_out cpr 11" + "hdmi3_pt_out cpr 11, , HDMI3 Playback" + "iDisp1_out, , hdmi3_pt_out cpr 12" + ] +} +
On Thu, 21 Apr 2016 08:27:36 +0200, Vinod Koul wrote:
From: Shreyas NC shreyas.nc@intel.com
The Skylake topology configuration for simple topology graph is provided. This exposes the PCM capabilities of the DSP.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Subhransu S. Prusty subhransu.s.prusty@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
configure.ac | 1 + src/conf/topology/Makefile.am | 2 +- src/conf/topology/sklrt286/Makefile.am | 11 + src/conf/topology/sklrt286/skl_i2s.conf | 342 ++++++++++++++++++++++++++++++++ 4 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 src/conf/topology/sklrt286/Makefile.am create mode 100644 src/conf/topology/sklrt286/skl_i2s.conf
diff --git a/configure.ac b/configure.ac index c265ec9e159b..1bf75e6d9c2b 100644 --- a/configure.ac +++ b/configure.ac @@ -661,6 +661,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/topology/Makefile \ src/conf/topology/broadwell/Makefile \ modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \
alsalisp/Makefile aserver/Makefile \ test/Makefile test/lsb/Makefile \ utils/Makefile utils/alsa-lib.spec utils/alsa.pc)src/conf/topology/sklrt286/Makefile \
diff --git a/src/conf/topology/Makefile.am b/src/conf/topology/Makefile.am index f56a96c651e5..cbdb7cf07c97 100644 --- a/src/conf/topology/Makefile.am +++ b/src/conf/topology/Makefile.am @@ -1 +1 @@ -SUBDIRS=broadwell +SUBDIRS=broadwell sklrt286 diff --git a/src/conf/topology/sklrt286/Makefile.am b/src/conf/topology/sklrt286/Makefile.am new file mode 100644 index 000000000000..f10d12fa0f73 --- /dev/null +++ b/src/conf/topology/sklrt286/Makefile.am @@ -0,0 +1,11 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +SUBDIRS = data +sklrt286dir = $(alsaconfigdir)/topology/sklrt286 +sklrt286_DATA = skl_i2s.conf +EXTRA_DIST = sklrt286_DATA
Isn't it $(sklrt286_DATA)?
+install-data-hook:
- cp -p media0_in-cpr-0.bin media0_in-mi.bin media0_out-mo.bin media0_out-cpr-6.bin codec0_out-mo.bin codec0_out-cpr-4.bin codec1_out-mo.bin codec1_out-cpr-5.bin codec0_in-cpr-1.bin codec0_in-mi.bin dmic01_hifi_in-cpr-3.bin dmic01_hifi_in-mi.bin hdmi1_pt_out-cpr-7.bin hdmi1_pt_out-cpr-8.bin hdmi2_pt_out-cpr-9.bin hdmi2_pt_out-cpr-10.bin hdmi3_pt_out-cpr-11.bin hdmi3_pt_out-cpr-12.bin $(sklrt286dir)
I guess these bin files aren't present or generated in this patch? This would break bisection.
thanks,
Takashi
On Thu, Apr 21, 2016 at 09:22:09AM +0200, Takashi Iwai wrote:
+++ b/src/conf/topology/sklrt286/Makefile.am @@ -0,0 +1,11 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +SUBDIRS = data +sklrt286dir = $(alsaconfigdir)/topology/sklrt286 +sklrt286_DATA = skl_i2s.conf +EXTRA_DIST = sklrt286_DATA
Isn't it $(sklrt286_DATA)?
Yes, will fix
+install-data-hook:
- cp -p media0_in-cpr-0.bin media0_in-mi.bin media0_out-mo.bin media0_out-cpr-6.bin codec0_out-mo.bin codec0_out-cpr-4.bin codec1_out-mo.bin codec1_out-cpr-5.bin codec0_in-cpr-1.bin codec0_in-mi.bin dmic01_hifi_in-cpr-3.bin dmic01_hifi_in-mi.bin hdmi1_pt_out-cpr-7.bin hdmi1_pt_out-cpr-8.bin hdmi2_pt_out-cpr-9.bin hdmi2_pt_out-cpr-10.bin hdmi3_pt_out-cpr-11.bin hdmi3_pt_out-cpr-12.bin $(sklrt286dir)
I guess these bin files aren't present or generated in this patch? This would break bisection.
Okay, will move this to second one
From: Shreyas NC shreyas.nc@intel.com
Skylake headers use u8 data types which were not present in type_compat so add them.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com --- include/sound/type_compat.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/include/sound/type_compat.h b/include/sound/type_compat.h index eec86e4bc41e..e973ff3139e2 100644 --- a/include/sound/type_compat.h +++ b/include/sound/type_compat.h @@ -32,9 +32,11 @@ typedef int32_t __s32; #define __le64 __u64 #define __le32 __u32 #define __le16 __u16 +#define __le8 __u8 #define __be64 __u64 #define __be32 __u32 #define __be16 __u16 +#define __be8 __u8 #endif /* DOC_HIDDEN */
#endif /* __TYPE_COMPAT_H */
From: Shreyas NC shreyas.nc@intel.com
The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com --- configure.ac | 1 + src/conf/topology/sklrt286/data/Makefile.am | 6 + src/conf/topology/sklrt286/data/pvt.c | 1815 ++++++++++++++++++++ src/conf/topology/sklrt286/data/pvt_data.c | 90 + src/conf/topology/sklrt286/data/pvt_local.h | 9 + .../topology/sklrt286/data/skl-tplg-interface.h | 232 +++ 6 files changed, 2153 insertions(+) create mode 100644 src/conf/topology/sklrt286/data/Makefile.am create mode 100644 src/conf/topology/sklrt286/data/pvt.c create mode 100644 src/conf/topology/sklrt286/data/pvt_data.c create mode 100644 src/conf/topology/sklrt286/data/pvt_local.h create mode 100644 src/conf/topology/sklrt286/data/skl-tplg-interface.h
diff --git a/configure.ac b/configure.ac index 1bf75e6d9c2b..28fcd24a883d 100644 --- a/configure.ac +++ b/configure.ac @@ -661,6 +661,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/topology/Makefile \ src/conf/topology/broadwell/Makefile \ modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ + src/conf/topology/sklrt286/data/Makefile \ src/conf/topology/sklrt286/Makefile \ alsalisp/Makefile aserver/Makefile \ test/Makefile test/lsb/Makefile \ diff --git a/src/conf/topology/sklrt286/data/Makefile.am b/src/conf/topology/sklrt286/data/Makefile.am new file mode 100644 index 000000000000..1eb9b2e13b78 --- /dev/null +++ b/src/conf/topology/sklrt286/data/Makefile.am @@ -0,0 +1,6 @@ +noinst_PROGRAMS = pvt_data +pvt_data_SOURCES = pvt_data.c +AM_CPPFLAGS = \ + -Wall -I$(top_srcdir)/include +install-exec-local: + ./pvt_data diff --git a/src/conf/topology/sklrt286/data/pvt.c b/src/conf/topology/sklrt286/data/pvt.c new file mode 100644 index 000000000000..3447e3e0226b --- /dev/null +++ b/src/conf/topology/sklrt286/data/pvt.c @@ -0,0 +1,1815 @@ +/* +* Copyright(c) 2014-2016 Intel Corporation +* All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2 of the License, or (at your option) any later version. + +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* Authors: Shreyas Nc shreyas.nc@intel.com +* +*/ +#include "pvt_local.h" + +struct skl_dfw_module_mod dfw_wrap[] = { +{ +.name = "media0_in cpr 0", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 0, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 5, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 1, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "media0_in mi", +.skl_dfw_mod = { + .uuid = {178, 110, 101, 57, 113, 59, 73, 64, 141, 63, 249, 44, 213, 196, 60, 9}, + .module_id = 1, + .instance_id = 0, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 1, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "media0_out mo", +.skl_dfw_mod = { + .uuid = {90, 80, 86, 60, 215, 36, 143, 65, 189, 220, 193, 245, 163, 172, 42, 224}, + .module_id = 2, + .instance_id = 2, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 8, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 2, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "media0_out cpr 6", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 6, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 0, + .dev_type = 5, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 2, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec0_out mo", +.skl_dfw_mod = { + .uuid = {90, 80, 86, 60, 215, 36, 143, 65, 189, 220, 193, 245, 163, 172, 42, 224}, + .module_id = 2, + .instance_id = 0, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 8, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 3, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x4, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec0_out cpr 4", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 4, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = 0, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 2, + .dev_type = 2, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 3, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x4, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec1_out mo", +.skl_dfw_mod = { + .uuid = {90, 80, 86, 60, 215, 36, 143, 65, 189, 220, 193, 245, 163, 172, 42, 224}, + .module_id = 2, + .instance_id = 1, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 8, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 4, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec1_out cpr 5", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 5, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = 0, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 2, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 2, + .dev_type = 2, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 4, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec0_in cpr 1", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 1, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = 0, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 2, + .dev_type = 2, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 5, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "codec0_in mi", +.skl_dfw_mod = { + .uuid = {178, 110, 101, 57, 113, 59, 73, 64, 141, 63, 249, 44, 213, 196, 60, 9}, + .module_id = 1, + .instance_id = 1, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 5, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "dmic01_hifi_in cpr 3", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 3, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = 0, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 2, + .dev_type = 1, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 4, + .converter = 4, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 6, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "dmic01_hifi_in mi", +.skl_dfw_mod = { + .uuid = {178, 110, 101, 57, 113, 59, 73, 64, 141, 63, 249, 44, 213, 196, 60, 9}, + .module_id = 1, + .instance_id = 3, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 1, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 0, + .conn_type = 0, + .dev_type = 6, + .hw_conn_type = 2, + .rsvd2 = 0, + .params_fixup = 0, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 6, + .pipe_priority = 0, + .conn_type = 2, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi1_pt_out cpr 7", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 7, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 5, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 7, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi1_pt_out cpr 8", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 8, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 4, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 7, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi2_pt_out cpr 9", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 9, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 5, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 8, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi2_pt_out cpr 10", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 10, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 4, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 8, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi3_pt_out cpr 11", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 11, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 5, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 9, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 32, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, +{ +.name = "hdmi3_pt_out cpr 12", +.skl_dfw_mod = { + .uuid = {131, 12, 160, 155, 18, 202, 131, 74, 148, 60, 31, 162, 232, 47, 157, 218}, + .module_id = 3, + .instance_id = 12, + .max_mcps = 0x186a0, + .mem_pages = 0x1, + .obs = 384, + .ibs = 384, + .vbus_id = -1, + .max_in_queue = 1, + .max_out_queue = 2, + .time_slot = 0, + .core_id = 0, + .rsvd1 = 0, + .module_type = 1, + .conn_type = 1, + .dev_type = 4, + .hw_conn_type = 1, + .rsvd2 = 0, + .params_fixup = 7, + .converter = 0, + .input_pin_type = 0, + .output_pin_type = 0, + .is_dynamic_in_pin = 1, + .is_dynamic_out_pin = 1, + .is_loadable = 0, + .rsvd3 = 0, + .pipe = { + .pipe_id = 9, + .pipe_priority = 0, + .conn_type = 1, + .rsvd = 0, + .memory_pages = 0x2, + }, + .in_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .out_fmt = { + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + { + .channels = 2, + .freq = 48000, + .bit_depth = 32, + .valid_bit_depth = 24, + .ch_cfg = 1, + .interleaving_style = 0, + .sample_type = 0, + .ch_map = 0xffffff10, + }, + }, + .in_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + }, + .out_pin = { + { + .module_id = 0, + .instance_id = 0, + }, + { + .module_id = 0, + .instance_id = 0, + }, + }, + }, +}, + }; diff --git a/src/conf/topology/sklrt286/data/pvt_data.c b/src/conf/topology/sklrt286/data/pvt_data.c new file mode 100644 index 000000000000..dd55c3a38b3b --- /dev/null +++ b/src/conf/topology/sklrt286/data/pvt_data.c @@ -0,0 +1,90 @@ +/* + * Copyright(c) 2014-2016 Intel Corporation + * All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * Authors: Shreyas Nc shreyas.nc@intel.com + * + */ +#include "pvt.c" +#include "stdio.h" +#include "fcntl.h" +#include <local.h> +#include <limits.h> +#include <stdint.h> +#include <linux/types.h> +#include "global.h" +#include "list.h" + +#include <sound/asound.h> +#include <sound/asoc.h> + +int replace_space(char *path, char *newpath) +{ + char buffer[52]; + char *p; + + strcpy(buffer, path); + + while ((p = strchr(buffer, ' '))) + p[0] = '-'; + + strcpy(newpath, buffer); + return 0; +} + +/* + * The private data structures are written into a + * binary blob. These contain module private data + * information + */ +int main(void) +{ + unsigned int i; + FILE *fd; + char path[128]; + char new_path[128]; + struct snd_soc_tplg_private *priv = NULL; + + memset(path, 0, sizeof(path)); + memset(new_path, 0, sizeof(new_path)); + + priv = calloc(1, sizeof(dfw_wrap) + sizeof(uint32_t)); + + for (i = 0; i < ARRAY_SIZE(dfw_wrap); i++) { + strcat(path, "../"); + strcat(path, dfw_wrap[i].name); + strcat(path, ".bin"); + + replace_space(path, new_path); + + priv->size = (uint32_t)sizeof(dfw_wrap[i].skl_dfw_mod); + + memcpy(priv->data, &dfw_wrap[i].skl_dfw_mod, + priv->size); + + fd = fopen(new_path, "wb"); + + if (fd == NULL) + return -ENOENT; + + if (fwrite(priv->data, priv->size, 1, fd) != 1) { + fclose(fd); + return -1; + } + + memset(path, 0, sizeof(path)); + } + + free(priv); + return 0; +} diff --git a/src/conf/topology/sklrt286/data/pvt_local.h b/src/conf/topology/sklrt286/data/pvt_local.h new file mode 100644 index 000000000000..5edf7bd71ce9 --- /dev/null +++ b/src/conf/topology/sklrt286/data/pvt_local.h @@ -0,0 +1,9 @@ +#include <stdio.h> +#include "skl-tplg-interface.h" + +struct skl_dfw_module_mod { + char name[100]; + struct skl_dfw_module skl_dfw_mod; +}; + + diff --git a/src/conf/topology/sklrt286/data/skl-tplg-interface.h b/src/conf/topology/sklrt286/data/skl-tplg-interface.h new file mode 100644 index 000000000000..c78e937ea968 --- /dev/null +++ b/src/conf/topology/sklrt286/data/skl-tplg-interface.h @@ -0,0 +1,232 @@ +/* + * skl-tplg-interface.h - Intel DSP FW private data interface + * + * Copyright (C) 2015 Intel Corp + * Author: Jeeja KP jeeja.kp@intel.com + * Nilofer, Samreen samreen.nilofer@intel.com + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as version 2, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +#ifndef __HDA_TPLG_INTERFACE_H__ +#define __HDA_TPLG_INTERFACE_H__ + +#include <sound/type_compat.h> +/* + * Default types range from 0~12. type can range from 0 to 0xff + * SST types start at higher to avoid any overlapping in future + */ +#define SKL_CONTROL_TYPE_BYTE_TLV 0x100 + +#define HDA_SST_CFG_MAX 900 /* size of copier cfg*/ +#define MAX_IN_QUEUE 8 +#define MAX_OUT_QUEUE 8 + +#define SKL_UUID_STR_SZ 40 +/* Event types goes here */ +/* Reserve event type 0 for no event handlers */ +enum skl_event_types { + SKL_EVENT_NONE = 0, + SKL_MIXER_EVENT, + SKL_MUX_EVENT, + SKL_VMIXER_EVENT, + SKL_PGA_EVENT +}; + +/** + * enum skl_ch_cfg - channel configuration + * + * @SKL_CH_CFG_MONO: One channel only + * @SKL_CH_CFG_STEREO: L & R + * @SKL_CH_CFG_2_1: L, R & LFE + * @SKL_CH_CFG_3_0: L, C & R + * @SKL_CH_CFG_3_1: L, C, R & LFE + * @SKL_CH_CFG_QUATRO: L, R, Ls & Rs + * @SKL_CH_CFG_4_0: L, C, R & Cs + * @SKL_CH_CFG_5_0: L, C, R, Ls & Rs + * @SKL_CH_CFG_5_1: L, C, R, Ls, Rs & LFE + * @SKL_CH_CFG_DUAL_MONO: One channel replicated in two + * @SKL_CH_CFG_I2S_DUAL_STEREO_0: Stereo(L,R) in 4 slots, 1st stream:[ L, R, -, - ] + * @SKL_CH_CFG_I2S_DUAL_STEREO_1: Stereo(L,R) in 4 slots, 2nd stream:[ -, -, L, R ] + * @SKL_CH_CFG_INVALID: Invalid + */ +enum skl_ch_cfg { + SKL_CH_CFG_MONO = 0, + SKL_CH_CFG_STEREO = 1, + SKL_CH_CFG_2_1 = 2, + SKL_CH_CFG_3_0 = 3, + SKL_CH_CFG_3_1 = 4, + SKL_CH_CFG_QUATRO = 5, + SKL_CH_CFG_4_0 = 6, + SKL_CH_CFG_5_0 = 7, + SKL_CH_CFG_5_1 = 8, + SKL_CH_CFG_DUAL_MONO = 9, + SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10, + SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11, + SKL_CH_CFG_4_CHANNEL = 12, + SKL_CH_CFG_INVALID +}; + +enum skl_module_type { + SKL_MODULE_TYPE_MIXER = 0, + SKL_MODULE_TYPE_COPIER, + SKL_MODULE_TYPE_UPDWMIX, + SKL_MODULE_TYPE_SRCINT, + SKL_MODULE_TYPE_ALGO, + SKL_MODULE_TYPE_BASE_OUTFMT +}; + +enum skl_core_affinity { + SKL_AFFINITY_CORE_0 = 0, + SKL_AFFINITY_CORE_1, + SKL_AFFINITY_CORE_MAX +}; + +enum skl_pipe_conn_type { + SKL_PIPE_CONN_TYPE_NONE = 0, + SKL_PIPE_CONN_TYPE_FE, + SKL_PIPE_CONN_TYPE_BE +}; + +enum skl_hw_conn_type { + SKL_CONN_NONE = 0, + SKL_CONN_SOURCE = 1, + SKL_CONN_SINK = 2 +}; + +enum skl_dev_type { + SKL_DEVICE_BT = 0x0, + SKL_DEVICE_DMIC = 0x1, + SKL_DEVICE_I2S = 0x2, + SKL_DEVICE_SLIMBUS = 0x3, + SKL_DEVICE_HDALINK = 0x4, + SKL_DEVICE_HDAHOST = 0x5, + SKL_DEVICE_NONE +}; + +/** + * enum skl_interleaving - interleaving style + * + * @SKL_INTERLEAVING_PER_CHANNEL: [s1_ch1...s1_chN,...,sM_ch1...sM_chN] + * @SKL_INTERLEAVING_PER_SAMPLE: [s1_ch1...sM_ch1,...,s1_chN...sM_chN] + */ +enum skl_interleaving { + SKL_INTERLEAVING_PER_CHANNEL = 0, + SKL_INTERLEAVING_PER_SAMPLE = 1, +}; + +enum skl_sample_type { + SKL_SAMPLE_TYPE_INT_MSB = 0, + SKL_SAMPLE_TYPE_INT_LSB = 1, + SKL_SAMPLE_TYPE_INT_SIGNED = 2, + SKL_SAMPLE_TYPE_INT_UNSIGNED = 3, + SKL_SAMPLE_TYPE_FLOAT = 4 +}; + +enum module_pin_type { + /* All pins of the module takes same PCM inputs or outputs + * e.g. mixout + */ + SKL_PIN_TYPE_HOMOGENEOUS, + /* All pins of the module takes different PCM inputs or outputs + * e.g mux + */ + SKL_PIN_TYPE_HETEROGENEOUS, +}; + +enum skl_module_param_type { + SKL_PARAM_DEFAULT = 0, + SKL_PARAM_INIT, + SKL_PARAM_SET, + SKL_PARAM_BIND +}; + +struct skl_dfw_module_pin { + __le16 module_id; + __le16 instance_id; +} __attribute__((packed)); + +struct skl_dfw_module_fmt { + __le32 channels; + __le32 freq; + __le32 bit_depth; + __le32 valid_bit_depth; + __le32 ch_cfg; + __le32 interleaving_style; + __le32 sample_type; + __le32 ch_map; +} __attribute__((packed)); + +struct skl_dfw_module_caps { + __le32 set_params:2; + __le32 rsvd:30; + __le32 param_id; + __le32 caps_size; + __le32 caps[HDA_SST_CFG_MAX]; +}; + +struct skl_dfw_pipe { + __le8 pipe_id; + __le8 pipe_priority; + __le16 conn_type:4; + __le16 rsvd:4; + __le16 memory_pages:8; +} __attribute__((packed)); + +struct skl_dfw_module { + __le8 uuid[16]; + + __le16 module_id; + __le16 instance_id; + __le32 max_mcps; + __le32 mem_pages; + __le32 obs; + __le32 ibs; + __le32 vbus_id; + + __le32 max_in_queue:8; + __le32 max_out_queue:8; + __le32 time_slot:8; + __le32 core_id:4; + __le32 rsvd1:4; + + __le32 module_type:8; + __le32 conn_type:4; + __le32 dev_type:4; + __le32 hw_conn_type:4; + __le32 rsvd2:12; + + __le32 params_fixup:8; + __le32 converter:8; + __le32 input_pin_type:1; + __le32 output_pin_type:1; + __le32 is_dynamic_in_pin:1; + __le32 is_dynamic_out_pin:1; + __le32 is_loadable:1; + __le32 rsvd3:11; + + struct skl_dfw_pipe pipe; + struct skl_dfw_module_fmt in_fmt[MAX_IN_QUEUE]; + struct skl_dfw_module_fmt out_fmt[MAX_OUT_QUEUE]; + struct skl_dfw_module_pin in_pin[MAX_IN_QUEUE]; + struct skl_dfw_module_pin out_pin[MAX_OUT_QUEUE]; + struct skl_dfw_module_caps caps; +} __attribute__((packed)); + +struct skl_dfw_algo_data { + __le32 set_params:2; + __le32 rsvd:30; + __le32 param_id; + __le32 max; + char params[0]; +} __attribute__((packed)); + +#endif
On Thu, 21 Apr 2016 08:27:38 +0200, Vinod Koul wrote:
From: Shreyas NC shreyas.nc@intel.com
The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
What if this program is executed on big endian system?
Takashi
On Thu, Apr 21, 2016 at 09:23:25AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:38 +0200, Vinod Koul wrote:
From: Shreyas NC shreyas.nc@intel.com
The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
What if this program is executed on big endian system?
So we made the data structure m,emebers as __lexx shouldn't that take care of this, or we can say, we don't support BE systems.
Am not sure if someone running BE system will be intrested in Intel aDSP :D
On Thu, 21 Apr 2016 12:56:54 +0200, Vinod Koul wrote:
On Thu, Apr 21, 2016 at 09:23:25AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:38 +0200, Vinod Koul wrote:
From: Shreyas NC shreyas.nc@intel.com
The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
What if this program is executed on big endian system?
So we made the data structure m,emebers as __lexx shouldn't that take care of this, or we can say, we don't support BE systems.
Am not sure if someone running BE system will be intrested in Intel aDSP :D
It's not about whether it runs on a BE system. The most likely problem is about the package build.
The firmware sub-package is usually handled as a noarch one that is used commonly among all architectures. If you generate a different data per architecture and write to the same file, it results in the inconsistent package, since the firmware generated by a BE host may be used for LE machine.
So, this needs a bit more consideration. If we don't provide the firmware binary but only rely on the file creation at build time, it won't get the complete set depending on the running machine.
Maybe we should add the binary files in addition to the f/w generation code in case anyone needs to modify the data.
Takashi
On Thu, Apr 21, 2016 at 01:00:26PM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 12:56:54 +0200, Vinod Koul wrote:
On Thu, Apr 21, 2016 at 09:23:25AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:38 +0200, Vinod Koul wrote:
From: Shreyas NC shreyas.nc@intel.com
The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Vinod Koul vinod.koul@intel.com
What if this program is executed on big endian system?
So we made the data structure m,emebers as __lexx shouldn't that take care of this, or we can say, we don't support BE systems.
Am not sure if someone running BE system will be intrested in Intel aDSP :D
It's not about whether it runs on a BE system. The most likely problem is about the package build.
The firmware sub-package is usually handled as a noarch one that is used commonly among all architectures. If you generate a different data per architecture and write to the same file, it results in the inconsistent package, since the firmware generated by a BE host may be used for LE machine.
So, this needs a bit more consideration. If we don't provide the firmware binary but only rely on the file creation at build time, it won't get the complete set depending on the running machine.
Maybe we should add the binary files in addition to the f/w generation code in case anyone needs to modify the data.
Yes anyway based on other discussion we will add precompiled files as well to this, so default binary data is present. And we should generate only if someone modifies, will modify this
Thanks
On Thu, 21 Apr 2016 08:27:35 +0200, Vinod Koul wrote:
This series adds SKL-i2c conf for simple PCM topology graph
Changes in v3:
- remove bin blobs, now they are generated in install step
This isn't good in general. Usually all installed files are generated in the normal make step, and make-install only copies them. There are a few reasons: - Invoking a random program as root is a security risk. - This may create a file by root in the working directory, and either it's not always possible (e.g. on NFS) or it may be left undeletable after make install.
thanks,
Takashi
- hook the tool compilation to alsa-lib and run it on install
- add u8 in alsa type_compat.h
Shreyas NC (3): conf: topology: Add Skylake i2s conf Add u8 in type_compat.h conf: topology: Generate Private data binary blobs
configure.ac | 2 + include/sound/type_compat.h | 2 + src/conf/topology/Makefile.am | 2 +- src/conf/topology/sklrt286/Makefile.am | 11 + src/conf/topology/sklrt286/data/Makefile.am | 6 + src/conf/topology/sklrt286/data/pvt.c | 1815 ++++++++++++++++++++ src/conf/topology/sklrt286/data/pvt_data.c | 90 + src/conf/topology/sklrt286/data/pvt_local.h | 9 + .../topology/sklrt286/data/skl-tplg-interface.h | 232 +++ src/conf/topology/sklrt286/skl_i2s.conf | 342 ++++ 10 files changed, 2510 insertions(+), 1 deletion(-) create mode 100644 src/conf/topology/sklrt286/Makefile.am create mode 100644 src/conf/topology/sklrt286/data/Makefile.am create mode 100644 src/conf/topology/sklrt286/data/pvt.c create mode 100644 src/conf/topology/sklrt286/data/pvt_data.c create mode 100644 src/conf/topology/sklrt286/data/pvt_local.h create mode 100644 src/conf/topology/sklrt286/data/skl-tplg-interface.h create mode 100644 src/conf/topology/sklrt286/skl_i2s.conf
-- 1.9.1
On Thu, Apr 21, 2016 at 09:19:56AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:35 +0200, Vinod Koul wrote:
This series adds SKL-i2c conf for simple PCM topology graph
Changes in v3:
- remove bin blobs, now they are generated in install step
This isn't good in general. Usually all installed files are generated in the normal make step, and make-install only copies them. There are a few reasons:
- Invoking a random program as root is a security risk.
- This may create a file by root in the working directory, and either it's not always possible (e.g. on NFS) or it may be left undeletable after make install.
Right, that is good point indeed.
So what is your suggestion then?
Thanks
On Thu, 21 Apr 2016 12:53:04 +0200, Vinod Koul wrote:
On Thu, Apr 21, 2016 at 09:19:56AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:35 +0200, Vinod Koul wrote:
This series adds SKL-i2c conf for simple PCM topology graph
Changes in v3:
- remove bin blobs, now they are generated in install step
This isn't good in general. Usually all installed files are generated in the normal make step, and make-install only copies them. There are a few reasons:
- Invoking a random program as root is a security risk.
- This may create a file by root in the working directory, and either it's not always possible (e.g. on NFS) or it may be left undeletable after make install.
Right, that is good point indeed.
So what is your suggestion then?
Just put the normal make rule and generate it at the normal make step (only when needed).
Takashi
On Thu, Apr 21, 2016 at 01:02:33PM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 12:53:04 +0200, Vinod Koul wrote:
On Thu, Apr 21, 2016 at 09:19:56AM +0200, Takashi Iwai wrote:
On Thu, 21 Apr 2016 08:27:35 +0200, Vinod Koul wrote:
This series adds SKL-i2c conf for simple PCM topology graph
Changes in v3:
- remove bin blobs, now they are generated in install step
This isn't good in general. Usually all installed files are generated in the normal make step, and make-install only copies them. There are a few reasons:
- Invoking a random program as root is a security risk.
- This may create a file by root in the working directory, and either it's not always possible (e.g. on NFS) or it may be left undeletable after make install.
Right, that is good point indeed.
So what is your suggestion then?
Just put the normal make rule and generate it at the normal make step (only when needed).
Okay, thanks will send updated patchset
participants (2)
-
Takashi Iwai
-
Vinod Koul