Skip to content

Fix BDW machine drivers load issue with SOF - #1484

Merged
plbossart merged 1 commit into
thesofproject:topic/sof-devfrom
xiulipan:pr/fixbdwmach
Jan 7, 2020
Merged

plbossart merged 1 commit into
thesofproject:topic/sof-devfrom
xiulipan:pr/fixbdwmach

Conversation

@xiulipan

@xiulipan xiulipan commented Nov 14, 2019 •

Copy link
Copy Markdown

SND_SOC_DAILINK_DEF will crete structure, if reuse the same dummy structure
for cpu dai and platform. snd_soc_fixup_dai_links_platform_name will not only
overwrite the platform name but also the CPU DAI name.
Fix the issue by create a sperate dummyplatform for dummy platform.

Wake on voice is not supported for SOF on BDW, so ignore the dai.

@plbossart plbossart left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand the issue here.
I managed to do playback in the past on Broadwell/Samus without this change?

Comment thread sound/soc/intel/boards/broadwell.c Outdated
SND_SOC_DAILINK_REG(ssp0_pin, codec, platform),
#else
SND_SOC_DAILINK_REG(dummy, codec, dummy),
#endif

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this needed?
we've managed to make things work in the past without this change.
What is the problem and what are you fixing here?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@plbossart The old one what to map to a dummy BE, but we only have a dummy BE with nocodec support.
Now nocodec is default disabled with HDA link enabled, so the change is required.

Or we should add dummy BE to SOF BDW platform drvier.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xiulipan with the nocodec machine drv, we dont use the dummy CPU DAI, we actually use the ones defined in the dai_drv[]. We use dummy dai only for the codec dai.

Anyway, how does it work with the broadwell legacy driver with the dummy CPU DAI? We never register the dummy codec DAI in SOF. So why isnt the dummy CPU DAI already registered too?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure, but from the test and log, it says

[  217.561885] broadwell-audio broadwell-audio: info: override BE DAI link Codec
[  217.561898] broadwell-audio broadwell-audio: ASoC: CPU DAI snd-soc-dummy-dai not registered
[  218.048635] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG

And we do have something in nocodec

links[i].codecs->dai_name = "snd-soc-dummy-dai";
links[i].codecs->name = "snd-soc-dummy";

@ranj063

ranj063 commented Nov 15, 2019

Copy link
Copy Markdown
Collaborator

@xiulipan are you missing virtual widgets maybe?

@xiulipan

Copy link
Copy Markdown
Author

@ranj063 I tried to add virtual widgets, but it will not solved the map issue here. It will still show error "SSP0 CODEC IN/OUT" do not have sink/source. I think the map to this codec related widgets is in the SST tplg. As we have our own tplg for this mapping, so I think it maybe easier to remove the map for this.

@ranj063

ranj063 commented Nov 15, 2019 •

Copy link
Copy Markdown
Collaborator

@xiulipan can you please post the full error log?

@xiulipan

Copy link
Copy Markdown
Author

@ranj063

original states/without fix for BE dai link
[  217.547039] sof-audio-acpi INT3438:00: booting DSP firmware
[  217.547769] sof-audio-acpi INT3438:00: ipc rx: 0x70000000: FW_READY
[  217.547771] sof-audio-acpi INT3438:00: ipc: DSP is ready 0x70000000 offset 0x9e000
[  217.547795] sof-audio-acpi INT3438:00: Firmware info: version 1:1:0-143c9
[  217.547796] sof-audio-acpi INT3438:00: Firmware: ABI 3:11:0 Kernel ABI 3:11:0
[  217.547797] sof-audio-acpi INT3438:00: Firmware debug build 2 on Nov 14 2019-16:15:55 - options:
                GDB: disabled
                lock debug: disabled
                lock vdebug: disabled
[  217.547831] sof-audio-acpi INT3438:00: found ext header type 1 size 0xa0
[  217.547870] sof-audio-acpi INT3438:00:  mailbox upstream 0x9e000 - size 0x400
[  217.547871] sof-audio-acpi INT3438:00:  mailbox downstream 0x9e400 - size 0x400
[  217.547872] sof-audio-acpi INT3438:00:  stream region 0x9ea00 - size 0x200
[  217.547874] sof-audio-acpi INT3438:00: ipc rx done: 0x70000000: FW_READY
[  217.547875] sof-audio-acpi INT3438:00: firmware boot complete
[  217.547890] sof-audio-acpi INT3438:00: generating page table for 000000006cc73005 size 0x10000 pages 16
[  217.547893] sof-audio-acpi INT3438:00: dma_trace_pages: 16
[  217.547896] sof-audio-acpi INT3438:00: stream_tag: 0
[  217.547899] sof-audio-acpi INT3438:00: ipc tx: 0x90030000: GLB_TRACE_MSG
[  217.548253] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x90030000: GLB_TRACE_MSG
[  217.548317] sof-audio-acpi INT3438:00: created machine broadwell-audio
[  217.561885] broadwell-audio broadwell-audio: info: override BE DAI link Codec
[  217.561898] broadwell-audio broadwell-audio: ASoC: CPU DAI snd-soc-dummy-dai not registered
[  218.048635] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG
with fix for BE dai link only
[  768.187905] sof-audio-acpi INT3438:00: booting DSP firmware
[  768.188638] sof-audio-acpi INT3438:00: ipc rx: 0x70000000: FW_READY
[  768.188640] sof-audio-acpi INT3438:00: ipc: DSP is ready 0x70000000 offset 0x9e000
[  768.188663] sof-audio-acpi INT3438:00: Firmware info: version 1:1:0-143c9
[  768.188664] sof-audio-acpi INT3438:00: Firmware: ABI 3:11:0 Kernel ABI 3:11:0
[  768.188666] sof-audio-acpi INT3438:00: Firmware debug build 2 on Nov 14 2019-16:15:55 - options:
                GDB: disabled
                lock debug: disabled
                lock vdebug: disabled
[  768.188700] sof-audio-acpi INT3438:00: found ext header type 1 size 0xa0
[  768.188715] sof-audio-acpi INT3438:00:  mailbox upstream 0x9e000 - size 0x400
[  768.188716] sof-audio-acpi INT3438:00:  mailbox downstream 0x9e400 - size 0x400
[  768.188717] sof-audio-acpi INT3438:00:  stream region 0x9ea00 - size 0x200
[  768.188719] sof-audio-acpi INT3438:00: ipc rx done: 0x70000000: FW_READY
[  768.188726] sof-audio-acpi INT3438:00: firmware boot complete
[  768.188740] sof-audio-acpi INT3438:00: generating page table for 0000000061985e98 size 0x10000 pages 16
[  768.188741] sof-audio-acpi INT3438:00: dma_trace_pages: 16
[  768.188743] sof-audio-acpi INT3438:00: stream_tag: 0
[  768.188746] sof-audio-acpi INT3438:00: ipc tx: 0x90030000: GLB_TRACE_MSG
[  768.189094] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x90030000: GLB_TRACE_MSG
[  768.189147] sof-audio-acpi INT3438:00: created machine broadwell-audio
[  768.202943] broadwell-audio broadwell-audio: info: override BE DAI link Codec
[  768.202986] sof-audio-acpi INT3438:00: loading topology:intel/sof-tplg/sof-bdw-rt286.tplg
[  768.203029] sof-audio-acpi INT3438:00: Topology: ABI 3:11:0 Kernel ABI 3:11:0
[  768.203032] sof-audio-acpi INT3438:00: tplg: ready widget id 0 pipe 1 type 23 name : PCM0P stream Low Latency Playback 0
[  768.203034] sof-audio-acpi INT3438:00: loaded host PCM0P
[  768.203036] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 0
[  768.203039] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203157] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203161] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 1 PCM 0 Playback Volume
[  768.203166] sof-audio-acpi INT3438:00: tplg: load kcontrol index 1 chans 2
[  768.203168] sof-audio-acpi INT3438:00: tplg: ready widget id 1 pipe 1 type 6 name : PGA1.0 stream none
[  768.203170] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.203173] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203303] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203308] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 1 Master Playback Volume
[  768.203322] sof-audio-acpi INT3438:00: tplg: load kcontrol index 2 chans 2
[  768.203324] sof-audio-acpi INT3438:00: tplg: ready widget id 2 pipe 1 type 6 name : PGA1.1 stream none
[  768.203326] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.203329] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203412] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203414] sof-audio-acpi INT3438:00: tplg: ready widget id 3 pipe 1 type 4 name : MIXER1.0 stream none
[  768.203415] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.203417] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203487] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203489] sof-audio-acpi INT3438:00: tplg: ready widget id 4 pipe 1 type 31 name : BUF1.0 stream none
[  768.203490] sof-audio-acpi INT3438:00: buffer BUF1.0: size 768 caps 0x61
[  768.203492] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203575] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203577] sof-audio-acpi INT3438:00: tplg: ready widget id 5 pipe 1 type 31 name : BUF1.1 stream none
[  768.203578] sof-audio-acpi INT3438:00: buffer BUF1.1: size 768 caps 0x41
[  768.203580] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203661] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203663] sof-audio-acpi INT3438:00: tplg: ready widget id 6 pipe 1 type 31 name : BUF1.2 stream none
[  768.203664] sof-audio-acpi INT3438:00: buffer BUF1.2: size 768 caps 0x41
[  768.203666] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203748] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203749] sof-audio-acpi INT3438:00: tplg: ready widget id 7 pipe 1 type 31 name : BUF1.3 stream none
[  768.203750] sof-audio-acpi INT3438:00: buffer BUF1.3: size 768 caps 0x61
[  768.203752] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203814] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.203816] sof-audio-acpi INT3438:00: tplg: ready widget id 8 pipe 1 type 27 name : SSP0.OUT stream Codec
[  768.203818] sof-audio-acpi INT3438:00: dai SSP0.OUT: type 1 index 0
[  768.203819] sof-audio-acpi INT3438:00:  config: periods snk 0 src 2 fmt 1
[  768.203821] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203884] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.203886] sof-audio-acpi INT3438:00: tplg: connected widget SSP0.OUT -> DAI link Codec
[  768.203890] sof-audio-acpi INT3438:00: tplg: ready widget id 9 pipe 1 type 32 name : PIPELINE.1.SSP0.OUT stream SSP0.OUT
[  768.203893] sof-audio-acpi INT3438:00: tplg: pipeline id 1 comp 9 scheduling comp id 8
[  768.203896] sof-audio-acpi INT3438:00: pipeline PIPELINE.1.SSP0.OUT: period 1000 pri 0 mips 5000 core 0 frames 0
[  768.203899] sof-audio-acpi INT3438:00: ipc tx: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  768.203946] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  768.203949] sof-audio-acpi INT3438:00: ipc tx: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  768.203979] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  768.203984] sof-audio-acpi INT3438:00: tplg: ready widget id 10 pipe 2 type 24 name : PCM0C stream Low Latency Capture 0
[  768.203986] sof-audio-acpi INT3438:00: loaded host PCM0C
[  768.203987] sof-audio-acpi INT3438:00:  config: periods snk 0 src 2 fmt 0
[  768.203991] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204053] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204057] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 2 PCM 0 Capture Volume
[  768.204063] sof-audio-acpi INT3438:00: tplg: load kcontrol index 11 chans 2
[  768.204065] sof-audio-acpi INT3438:00: tplg: ready widget id 11 pipe 2 type 6 name : PGA2.0 stream none
[  768.204068] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.204072] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204134] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204137] sof-audio-acpi INT3438:00: tplg: ready widget id 12 pipe 2 type 31 name : BUF2.0 stream none
[  768.204139] sof-audio-acpi INT3438:00: buffer BUF2.0: size 768 caps 0x61
[  768.204142] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204214] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204217] sof-audio-acpi INT3438:00: tplg: ready widget id 13 pipe 2 type 31 name : BUF2.1 stream none
[  768.204220] sof-audio-acpi INT3438:00: buffer BUF2.1: size 768 caps 0x61
[  768.204222] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204287] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204291] sof-audio-acpi INT3438:00: tplg: ready widget id 14 pipe 2 type 28 name : SSP0.IN stream Codec
[  768.204293] sof-audio-acpi INT3438:00: dai SSP0.IN: type 1 index 0
[  768.204295] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 1
[  768.204298] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204359] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204361] sof-audio-acpi INT3438:00: tplg: connected widget SSP0.IN -> DAI link Codec
[  768.204365] sof-audio-acpi INT3438:00: tplg: ready widget id 15 pipe 2 type 32 name : PIPELINE.2.SSP0.IN stream SSP0.IN
[  768.204367] sof-audio-acpi INT3438:00: tplg: pipeline id 2 comp 15 scheduling comp id 14
[  768.204369] sof-audio-acpi INT3438:00: pipeline PIPELINE.2.SSP0.IN: period 1000 pri 0 mips 5000 core 0 frames 0
[  768.204372] sof-audio-acpi INT3438:00: ipc tx: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  768.204416] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  768.204419] sof-audio-acpi INT3438:00: ipc tx: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  768.204448] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  768.204451] sof-audio-acpi INT3438:00: tplg: ready widget id 16 pipe 3 type 23 name : PCM1P stream Media Playback 1
[  768.204453] sof-audio-acpi INT3438:00: loaded host PCM1P
[  768.204455] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 0
[  768.204458] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204518] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204521] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 3 PCM 1 Playback Volume
[  768.204526] sof-audio-acpi INT3438:00: tplg: load kcontrol index 17 chans 2
[  768.204529] sof-audio-acpi INT3438:00: tplg: ready widget id 17 pipe 3 type 6 name : PGA3.0 stream none
[  768.204531] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.204535] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204598] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204602] sof-audio-acpi INT3438:00: tplg: ready widget id 18 pipe 3 type 34 name : SRC3.0 stream none
[  768.204605] sof-audio-acpi INT3438:00: src SRC3.0: source rate 0 sink rate 48000
[  768.204606] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  768.204610] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204666] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  768.204669] sof-audio-acpi INT3438:00: tplg: ready widget id 19 pipe 3 type 31 name : BUF3.0 stream none
[  768.204672] sof-audio-acpi INT3438:00: buffer BUF3.0: size 6144 caps 0x61
[  768.204674] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204858] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.204864] sof-audio-acpi INT3438:00: tplg: ready widget id 20 pipe 3 type 31 name : BUF3.1 stream none
[  768.204867] sof-audio-acpi INT3438:00: buffer BUF3.1: size 6144 caps 0x41
[  768.204871] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.205056] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.205060] sof-audio-acpi INT3438:00: tplg: ready widget id 21 pipe 3 type 31 name : BUF3.2 stream none
[  768.205062] sof-audio-acpi INT3438:00: buffer BUF3.2: size 6144 caps 0x41
[  768.205064] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.205256] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  768.205259] sof-audio-acpi INT3438:00: tplg: ready widget id 22 pipe 3 type 32 name : PIPELINE.3. stream none
[  768.205261] sof-audio-acpi INT3438:00: error: widget PIPELINE.3. refers to non existent widget
[  768.205265] sof-audio-acpi INT3438:00: error: DSP failed to add widget id 0 type 32 name : PIPELINE.3. stream none reply 0
[  768.205268] sof-audio-acpi INT3438:00: ASoC: failed to load widget PIPELINE.3.
[  768.205275] sof-audio-acpi INT3438:00: error: tplg component load failed -22
[  768.205280] sof-audio-acpi INT3438:00: error: failed to load DSP topology -22
[  768.205282] sof-audio-acpi INT3438:00: ASoC: failed to probe component -22
[  768.205292] broadwell-audio broadwell-audio: ASoC: failed to instantiate card -22
[  768.205319] broadwell-audio: probe of broadwell-audio failed with error -22
[  768.689474] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG
[  768.689482] sof-audio-acpi INT3438:00: ipc rx done: 0x90020000: GLB_TRACE_MSG

with fix for BE dai link and https://github.com/thesofproject/sof/pull/2095
[  485.085870] sof-audio-acpi INT3438:00: booting DSP firmware
[  485.086585] sof-audio-acpi INT3438:00: ipc rx: 0x70000000: FW_READY
[  485.086587] sof-audio-acpi INT3438:00: ipc: DSP is ready 0x70000000 offset 0x9e000
[  485.086610] sof-audio-acpi INT3438:00: Firmware info: version 1:1:0-143c9
[  485.086611] sof-audio-acpi INT3438:00: Firmware: ABI 3:11:0 Kernel ABI 3:11:0
[  485.086612] sof-audio-acpi INT3438:00: Firmware debug build 2 on Nov 14 2019-16:15:55 - options:
                GDB: disabled
                lock debug: disabled
                lock vdebug: disabled
[  485.086647] sof-audio-acpi INT3438:00: found ext header type 1 size 0xa0
[  485.086661] sof-audio-acpi INT3438:00:  mailbox upstream 0x9e000 - size 0x400
[  485.086662] sof-audio-acpi INT3438:00:  mailbox downstream 0x9e400 - size 0x400
[  485.086663] sof-audio-acpi INT3438:00:  stream region 0x9ea00 - size 0x200
[  485.086665] sof-audio-acpi INT3438:00: ipc rx done: 0x70000000: FW_READY
[  485.086668] sof-audio-acpi INT3438:00: firmware boot complete
[  485.086685] sof-audio-acpi INT3438:00: generating page table for 00000000c8db03a0 size 0x10000 pages 16
[  485.086688] sof-audio-acpi INT3438:00: dma_trace_pages: 16
[  485.086692] sof-audio-acpi INT3438:00: stream_tag: 0
[  485.086696] sof-audio-acpi INT3438:00: ipc tx: 0x90030000: GLB_TRACE_MSG
[  485.087017] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x90030000: GLB_TRACE_MSG
[  485.087073] sof-audio-acpi INT3438:00: created machine broadwell-audio
[  485.101857] broadwell-audio broadwell-audio: info: override BE DAI link Codec
[  485.101897] sof-audio-acpi INT3438:00: loading topology:intel/sof-tplg/sof-bdw-rt286.tplg
[  485.101926] sof-audio-acpi INT3438:00: Topology: ABI 3:11:0 Kernel ABI 3:11:0
[  485.101930] sof-audio-acpi INT3438:00: tplg: ready widget id 0 pipe 1 type 23 name : PCM0P stream Low Latency Playback 0
[  485.101932] sof-audio-acpi INT3438:00: loaded host PCM0P
[  485.101933] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 0
[  485.101937] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102016] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102020] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 1 PCM 0 Playback Volume
[  485.102024] sof-audio-acpi INT3438:00: tplg: load kcontrol index 1 chans 2
[  485.102026] sof-audio-acpi INT3438:00: tplg: ready widget id 1 pipe 1 type 6 name : PGA1.0 stream none
[  485.102027] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.102030] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102105] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102107] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 1 Master Playback Volume
[  485.102110] sof-audio-acpi INT3438:00: tplg: load kcontrol index 2 chans 2
[  485.102111] sof-audio-acpi INT3438:00: tplg: ready widget id 2 pipe 1 type 6 name : PGA1.1 stream none
[  485.102112] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.102115] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102223] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102302] sof-audio-acpi INT3438:00: tplg: ready widget id 3 pipe 1 type 4 name : MIXER1.0 stream none
[  485.102387] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.102390] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102480] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.102482] sof-audio-acpi INT3438:00: tplg: ready widget id 4 pipe 1 type 31 name : BUF1.0 stream none
[  485.102483] sof-audio-acpi INT3438:00: buffer BUF1.0: size 768 caps 0x61
[  485.102485] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102547] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102550] sof-audio-acpi INT3438:00: tplg: ready widget id 5 pipe 1 type 31 name : BUF1.1 stream none
[  485.102552] sof-audio-acpi INT3438:00: buffer BUF1.1: size 768 caps 0x41
[  485.102553] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102670] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102671] sof-audio-acpi INT3438:00: tplg: ready widget id 6 pipe 1 type 31 name : BUF1.2 stream none
[  485.102748] sof-audio-acpi INT3438:00: buffer BUF1.2: size 768 caps 0x41
[  485.102749] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102929] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.102931] sof-audio-acpi INT3438:00: tplg: ready widget id 7 pipe 1 type 31 name : BUF1.3 stream none
[  485.102932] sof-audio-acpi INT3438:00: buffer BUF1.3: size 768 caps 0x61
[  485.103010] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103082] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103087] sof-audio-acpi INT3438:00: tplg: ready widget id 8 pipe 1 type 27 name : SSP0.OUT stream Codec
[  485.103090] sof-audio-acpi INT3438:00: dai SSP0.OUT: type 1 index 0
[  485.103091] sof-audio-acpi INT3438:00:  config: periods snk 0 src 2 fmt 1
[  485.103094] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103190] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103191] sof-audio-acpi INT3438:00: tplg: connected widget SSP0.OUT -> DAI link Codec
[  485.103193] sof-audio-acpi INT3438:00: tplg: ready widget id 9 pipe 1 type 32 name : PIPELINE.1.SSP0.OUT stream SSP0.OUT
[  485.103194] sof-audio-acpi INT3438:00: tplg: pipeline id 1 comp 9 scheduling comp id 8
[  485.103196] sof-audio-acpi INT3438:00: pipeline PIPELINE.1.SSP0.OUT: period 1000 pri 0 mips 5000 core 0 frames 0
[  485.103198] sof-audio-acpi INT3438:00: ipc tx: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.103239] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.103241] sof-audio-acpi INT3438:00: ipc tx: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.103269] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.103271] sof-audio-acpi INT3438:00: tplg: ready widget id 10 pipe 1 type 0 name : SSP0 RT286 IN stream none
[  485.103273] sof-audio-acpi INT3438:00: warning: widget type 0 name SSP0 RT286 IN not handled
[  485.103275] sof-audio-acpi INT3438:00: tplg: ready widget id 11 pipe 2 type 24 name : PCM0C stream Low Latency Capture 0
[  485.103276] sof-audio-acpi INT3438:00: loaded host PCM0C
[  485.103277] sof-audio-acpi INT3438:00:  config: periods snk 0 src 2 fmt 0
[  485.103281] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103339] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103342] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 2 PCM 0 Capture Volume
[  485.103346] sof-audio-acpi INT3438:00: tplg: load kcontrol index 12 chans 2
[  485.103348] sof-audio-acpi INT3438:00: tplg: ready widget id 12 pipe 2 type 6 name : PGA2.0 stream none
[  485.103349] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.103351] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103414] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103416] sof-audio-acpi INT3438:00: tplg: ready widget id 13 pipe 2 type 31 name : BUF2.0 stream none
[  485.103418] sof-audio-acpi INT3438:00: buffer BUF2.0: size 768 caps 0x61
[  485.103420] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103482] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103484] sof-audio-acpi INT3438:00: tplg: ready widget id 14 pipe 2 type 31 name : BUF2.1 stream none
[  485.103486] sof-audio-acpi INT3438:00: buffer BUF2.1: size 768 caps 0x61
[  485.103488] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103551] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.103553] sof-audio-acpi INT3438:00: tplg: ready widget id 15 pipe 2 type 28 name : SSP0.IN stream Codec
[  485.103555] sof-audio-acpi INT3438:00: dai SSP0.IN: type 1 index 0
[  485.103556] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 1
[  485.103559] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103619] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.103620] sof-audio-acpi INT3438:00: tplg: connected widget SSP0.IN -> DAI link Codec
[  485.103623] sof-audio-acpi INT3438:00: tplg: ready widget id 16 pipe 2 type 32 name : PIPELINE.2.SSP0.IN stream SSP0.IN
[  485.103624] sof-audio-acpi INT3438:00: tplg: pipeline id 2 comp 16 scheduling comp id 15
[  485.103626] sof-audio-acpi INT3438:00: pipeline PIPELINE.2.SSP0.IN: period 1000 pri 0 mips 5000 core 0 frames 0
[  485.103627] sof-audio-acpi INT3438:00: ipc tx: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.103671] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.103768] sof-audio-acpi INT3438:00: ipc tx: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.103769] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.103936] sof-audio-acpi INT3438:00: tplg: ready widget id 17 pipe 2 type 1 name : SSP0 RT286 OUT stream none
[  485.103937] sof-audio-acpi INT3438:00: warning: widget type 1 name SSP0 RT286 OUT not handled
[  485.103941] sof-audio-acpi INT3438:00: tplg: ready widget id 18 pipe 3 type 23 name : PCM1P stream Media Playback 1
[  485.103942] sof-audio-acpi INT3438:00: loaded host PCM1P
[  485.103943] sof-audio-acpi INT3438:00:  config: periods snk 2 src 0 fmt 0
[  485.103947] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104048] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104137] sof-audio-acpi INT3438:00: tplg: load control type 1 name : 3 PCM 1 Playback Volume
[  485.104216] sof-audio-acpi INT3438:00: tplg: load kcontrol index 19 chans 2
[  485.104218] sof-audio-acpi INT3438:00: tplg: ready widget id 19 pipe 3 type 6 name : PGA3.0 stream none
[  485.104219] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.104221] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104283] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104285] sof-audio-acpi INT3438:00: tplg: ready widget id 20 pipe 3 type 34 name : SRC3.0 stream none
[  485.104287] sof-audio-acpi INT3438:00: src SRC3.0: source rate 0 sink rate 48000
[  485.104288] sof-audio-acpi INT3438:00:  config: periods snk 2 src 2 fmt 2
[  485.104291] sof-audio-acpi INT3438:00: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104345] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[  485.104347] sof-audio-acpi INT3438:00: tplg: ready widget id 21 pipe 3 type 31 name : BUF3.0 stream none
[  485.104348] sof-audio-acpi INT3438:00: buffer BUF3.0: size 3072 caps 0x61
[  485.104350] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.104536] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.104537] sof-audio-acpi INT3438:00: tplg: ready widget id 22 pipe 3 type 31 name : BUF3.1 stream none
[  485.104538] sof-audio-acpi INT3438:00: buffer BUF3.1: size 3072 caps 0x41
[  485.104622] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.104803] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.104804] sof-audio-acpi INT3438:00: tplg: ready widget id 23 pipe 3 type 31 name : BUF3.2 stream none
[  485.104805] sof-audio-acpi INT3438:00: buffer BUF3.2: size 3072 caps 0x41
[  485.104888] sof-audio-acpi INT3438:00: ipc tx: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.105000] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30200000: GLB_TPLG_MSG: BUFFER_NEW
[  485.105003] sof-audio-acpi INT3438:00: tplg: ready widget id 24 pipe 3 type 32 name : PIPELINE.3.SSP0.OUT stream SSP0.OUT
[  485.105006] sof-audio-acpi INT3438:00: tplg: pipeline id 3 comp 24 scheduling comp id 8
[  485.105008] sof-audio-acpi INT3438:00: pipeline PIPELINE.3.SSP0.OUT: period 1000 pri 0 mips 100000 core 0 frames 0
[  485.105010] sof-audio-acpi INT3438:00: ipc tx: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.105074] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30100000: GLB_TPLG_MSG: PIPE_NEW
[  485.105077] sof-audio-acpi INT3438:00: ipc tx: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.105117] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x40070000: GLB_PM_MSG: CORE_ENABLE
[  485.105121] sof-audio-acpi INT3438:00: tplg: load pcm Low Latency 0
[  485.105145] sof-audio-acpi INT3438:00: tplg: load pcm Media Playback 1
[  485.105159] sof-audio-acpi INT3438:00: sink BUF1.0 control none source PCM0P
[  485.105163] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105209] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105212] sof-audio-acpi INT3438:00: sink PGA1.0 control none source BUF1.0
[  485.105215] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105258] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105261] sof-audio-acpi INT3438:00: sink BUF1.1 control none source PGA1.0
[  485.105265] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105330] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105409] sof-audio-acpi INT3438:00: sink MIXER1.0 control none source BUF1.1
[  485.105411] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105508] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105510] sof-audio-acpi INT3438:00: sink BUF1.2 control none source MIXER1.0
[  485.105512] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105600] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105602] sof-audio-acpi INT3438:00: sink PGA1.1 control none source BUF1.2
[  485.105604] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105637] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105639] sof-audio-acpi INT3438:00: sink BUF1.3 control none source PGA1.1
[  485.105641] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105673] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105676] sof-audio-acpi INT3438:00: sink PCM0C control none source BUF2.1
[  485.105678] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105718] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105720] sof-audio-acpi INT3438:00: sink BUF2.1 control none source PGA2.0
[  485.105721] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105755] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.105926] sof-audio-acpi INT3438:00: sink PGA2.0 control none source BUF2.0
[  485.106012] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106107] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106192] sof-audio-acpi INT3438:00: sink SSP0.OUT control none source BUF1.3
[  485.106194] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106285] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106287] sof-audio-acpi INT3438:00: sink BUF2.0 control none source SSP0.IN
[  485.106288] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106323] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106326] sof-audio-acpi INT3438:00: sink BUF3.0 control none source PCM1P
[  485.106328] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106362] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106364] sof-audio-acpi INT3438:00: sink PGA3.0 control none source BUF3.0
[  485.106366] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106400] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106402] sof-audio-acpi INT3438:00: sink BUF3.1 control none source PGA3.0
[  485.106404] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106513] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106514] sof-audio-acpi INT3438:00: sink SRC3.0 control none source BUF3.1
[  485.106604] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106605] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106689] sof-audio-acpi INT3438:00: sink BUF3.2 control none source SRC3.0
[  485.106690] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106781] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106783] sof-audio-acpi INT3438:00: sink MIXER1.0 control none source BUF3.2
[  485.106871] sof-audio-acpi INT3438:00: ipc tx: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106965] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30030000: GLB_TPLG_MSG: COMP_CONNECT
[  485.106971] sof-audio-acpi INT3438:00: tplg: 1 hw_configs found, default id: 0!
[  485.106974] sof-audio-acpi INT3438:00: tplg: config SSP0 fmt 0x4001 mclk 24000000 bclk 2400000 fclk 48000 width (24)25 slots 2 mclk id 0 quirks 0
[  485.106978] sof-audio-acpi INT3438:00: ipc tx: 0x80010000: GLB_DAI_MSG: CONFIG
[  485.107042] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x80010000: GLB_DAI_MSG: CONFIG
[  485.107044] sof-audio-acpi INT3438:00: ASoC: Parent card not yet available, widget card binding deferred
[  485.107046] sof-audio-acpi INT3438:00: tplg: complete pipeline PIPELINE.3.SSP0.OUT id 24
[  485.107047] sof-audio-acpi INT3438:00: ipc tx: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107140] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107141] sof-audio-acpi INT3438:00: tplg: complete pipeline PIPELINE.2.SSP0.IN id 16
[  485.107143] sof-audio-acpi INT3438:00: ipc tx: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107417] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107418] sof-audio-acpi INT3438:00: tplg: complete pipeline PIPELINE.1.SSP0.OUT id 9
[  485.107419] sof-audio-acpi INT3438:00: ipc tx: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107424] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG
[  485.107434] sof-audio-acpi INT3438:00: ipc rx done: 0x90020000: GLB_TRACE_MSG
[  485.107528] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x30130000: GLB_TPLG_MSG: PIPE_COMPLETE
[  485.107635] sof-audio-acpi INT3438:00: ipc tx: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107637] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107640] sof-audio-acpi INT3438:00: ipc tx: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107707] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107712] sof-audio-acpi INT3438:00: ipc tx: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107779] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107782] sof-audio-acpi INT3438:00: ipc tx: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.107851] sof-audio-acpi INT3438:00: ipc tx succeeded: 0x50020000: GLB_COMP_MSG: GET_VALUE
[  485.108619] rt286 i2c-INT343A:00: ASoC: sink widget DMIC1 overwritten
[  485.108625] rt286 i2c-INT343A:00: ASoC: source widget DMIC1 overwritten
[  485.111123] broadwell-audio broadwell-audio: rt286-aif1 <-> ssp0-port mapping ok
[  485.111293] sof-audio-acpi INT3438:00: creating new PCM Low Latency
[  485.111294] sof-audio-acpi INT3438:00: spcm: allocate Low Latency Playback 0 playback DMA buffer size 0x10000 max 0x10000
[  485.111307] sof-audio-acpi INT3438:00: spcm: allocate Low Latency Capture 0 capture DMA buffer size 0x10000 max 0x10000
[  485.111315] broadwell-audio broadwell-audio: snd-soc-dummy-dai <-> Low Latency 0 mapping ok
[  485.111322] sof-audio-acpi INT3438:00: creating new PCM Media Playback 1
[  485.111323] sof-audio-acpi INT3438:00: spcm: allocate Media Playback 1 playback DMA buffer size 0x800000 max 0x800000
[  485.112484] broadwell-audio broadwell-audio: snd-soc-dummy-dai <-> Media Playback 1 mapping ok
[  485.112512] broadwell-audio broadwell-audio: ASoC: no sink widget found for SSP0 CODEC IN
[  485.112514] broadwell-audio broadwell-audio: ASoC: Failed to add route AIF1 Capture -> direct -> SSP0 CODEC IN
[  485.112517] broadwell-audio broadwell-audio: ASoC: no source widget found for SSP0 CODEC OUT
[  485.112518] broadwell-audio broadwell-audio: ASoC: Failed to add route SSP0 CODEC OUT -> direct -> AIF1 Playback
[  485.607447] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG
[  485.607456] sof-audio-acpi INT3438:00: ipc rx done: 0x90020000: GLB_TRACE_MSG
[  486.107472] sof-audio-acpi INT3438:00: ipc rx: 0x90020000: GLB_TRACE_MSG
[  486.107483] sof-audio-acpi INT3438:00: ipc rx done: 0x90020000: GLB_TRACE_MSG

@ranj063

ranj063 commented Nov 15, 2019

Copy link
Copy Markdown
Collaborator

@xiulipan what does "with fix for BE Dai link" mean? Sorry I am not following it at all.

The last log shows this:
[ 485.112512] broadwell-audio broadwell-audio: ASoC: no sink widget found for SSP0 CODEC IN
[ 485.112514] broadwell-audio broadwell-audio: ASoC: Failed to add route AIF1 Capture -> direct -> SSP0 CODEC IN
[ 485.112517] broadwell-audio broadwell-audio: ASoC: no source widget found for SSP0 CODEC OUT
[ 485.112518] broadwell-audio broadwell-audio: ASoC: Failed to add route SSP0 CODEC OUT -> direct -> AIF1 Playback

This should be fixed with adding virtual widgets for "SSP0 CODEC IN" and "SSP0 CODEC OUT" in tplg

@xiulipan

Copy link
Copy Markdown
Author

@ranj063

fix for BE Dai link
means this part code.

#if IS_ENABLED(CONFIG_SND_SOC_SOF_BROADWELL)
		SND_SOC_DAILINK_REG(ssp0_pin, codec, platform),
#else
		SND_SOC_DAILINK_REG(dummy, codec, dummy),
#endif

I tried to add the

diff --git a/tools/topology/sof-bdw-codec.m4 b/tools/topology/sof-bdw-codec.m4
index 902774f87208..8639464743c1 100644
--- a/tools/topology/sof-bdw-codec.m4
+++ b/tools/topology/sof-bdw-codec.m4
@@ -96,3 +96,6 @@ DAI_CONFIG(SSP, 0, 0, Codec,
                      SSP_CLOCK(fsync, 48000, codec_slave),
                      SSP_TDM(2, 25, 3, 3),
                      SSP_CONFIG_DATA(SSP, 0, 24)))
+
+VIRTUAL_WIDGET(SSP0 CODEC IN, out_drv, 1)
+VIRTUAL_WIDGET(SSP0 CODEC OUT, out_drv, 1)

but still got

[13283.429606] broadwell-audio broadwell-audio: ASoC: no sink widget found for SSP0 CODEC IN
[13283.429611] broadwell-audio broadwell-audio: ASoC: Failed to add route AIF1 Capture -> direct -> SSP0 CODEC IN
[13283.429614] broadwell-audio broadwell-audio: ASoC: no source widget found for SSP0 CODEC OUT
[13283.429616] broadwell-audio broadwell-audio: ASoC: Failed to add route SSP0 CODEC OUT -> direct -> AIF1 Playback

@xiulipan

Copy link
Copy Markdown
Author

@ranj063 I redo some test and found I was fooled by m4. It expend the SSP0 CODEC IN to SSP0 RT286 IN in my case. I update the PR and I will also update the tplg PR.

@plbossart plbossart added the Unclear No agreement on problem statement and resolution label Dec 7, 2019
@plbossart

Copy link
Copy Markdown
Member

@xiulipan is this PR current or abandoned? I can't figure out what this is about?

@xiulipan

xiulipan commented Dec 9, 2019

Copy link
Copy Markdown
Author

@plbossart I will make add an update to this PR and the tplg PR.

The basic idea here is that in the BDW machine driver, we need SND_SOC_DAILINK_REG(ssp0_pin, codec, platform), instead of SND_SOC_DAILINK_REG(dummy, codec, dummy), for the BE dai name and platform name. As we have remove the dummy support for SOF (It used to be nocodec, but we disable nocodec by default now.)

@plbossart

Copy link
Copy Markdown
Member

@plbossart I will make add an update to this PR and the tplg PR.

The basic idea here is that in the BDW machine driver, we need SND_SOC_DAILINK_REG(ssp0_pin, codec, platform), instead of SND_SOC_DAILINK_REG(dummy, codec, dummy), for the BE dai name and platform name. As we have remove the dummy support for SOF (It used to be nocodec, but we disable nocodec by default now.)

?? the bdw-rt6777 does not need any change of this nature, why would we need it for this machine driver?

@xiulipan

Copy link
Copy Markdown
Author

@plbossart But I will get some error messages:

[  217.548317] sof-audio-acpi INT3438:00: created machine broadwell-audio
[  217.561885] broadwell-audio broadwell-audio: info: override BE DAI link Codec
[  217.561898] broadwell-audio broadwell-audio: ASoC: CPU DAI snd-soc-dummy-dai not registered

It says about we do not have CPU DAI snd-soc-dummy-dai. So my fix here is to change it to CPU DAI ssp0-port from our bdw.c

Could you give some advice about the fixing? @ranj063 @kv2019i @bardliao

/* Broadwell DAIs */
static struct snd_soc_dai_driver bdw_dai[] = {
{
.name = "ssp0-port",
},
{
.name = "ssp1-port",
},
};

PS: I believe in the past we will have no such issue, as sof-nocodec will have some map like this. But as we have disable nocodec support by default now. I think there is no such DAI now.

@bardliao

Copy link
Copy Markdown
Collaborator

@xiulipan The dummy cpu and dai should be defined on soc-utils.c. Could you check why "ASoC: CPU DAI snd-soc-dummy-dai not registered"?

@xiulipan

Copy link
Copy Markdown
Author

@plbossart Test with an BDW RT5677 with latset sof-dev with kconfig-sof-default.sh
It also shows some issues. Indeed I missed patch for the bdw-rt5677 machine driver

[    2.061916] bdw-rt5677 bdw-rt5677: info: override BE DAI link Codec DSP
[    2.061920] bdw-rt5677 bdw-rt5677: info: override BE DAI link Codec
[    2.061950] bdw-rt5677 bdw-rt5677: ASoC: CPU DAI spi-RT5677AA:00 not registered

It seems we need to handle these WoV thing for BDW RT5677?

/* Wake on voice interface */
SND_SOC_DAILINK_DEFS(dsp,
DAILINK_COMP_ARRAY(COMP_CPU("spi-RT5677AA:00")),
DAILINK_COMP_ARRAY(COMP_CODEC("i2c-RT5677CE:00", "rt5677-dspbuffer")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("spi-RT5677AA:00")));

/* Non-DPCM links */
{
.name = "Codec DSP",
.stream_name = "Wake on Voice",
.ops = &bdw_rt5677_dsp_ops,
SND_SOC_DAILINK_REG(dsp),
},

@xiulipan

Copy link
Copy Markdown
Author

@bardliao @plbossart I dump the names for the dai in soc.

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 062653ab03a3..97a82de767ef 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -899,9 +899,13 @@ struct snd_soc_dai *snd_soc_find_dai(
 
        /* Find CPU DAI from registered DAIs */
        for_each_component(component) {
+               dev_info(component->dev, "PXL: dlc name %s, component name %s\n",
+                        dlc->name, component->name);
                if (!snd_soc_is_matching_component(dlc, component))
                        continue;
                for_each_component_dais(component, dai) {
+                       dev_info(component->dev, "PXL: dlc dai_name %s, component dai_name %s\n",
+                        dlc->dai_name, dai->name);
                        if (dlc->dai_name && strcmp(dai->name, dlc->dai_name)
                            && (!dai->driver->name
                                || strcmp(dai->driver->name, dlc->dai_name)))
[ 1338.965094] bdw-rt5677 bdw-rt5677: ASoC: binding Codec
[ 1338.965114] rt5677 i2c-RT5677CE:00: PXL: dlc name INT3438:00, component name i2c-RT5677CE:00
[ 1338.965116] sof-audio-acpi INT3438:00: PXL: dlc name INT3438:00, component name INT3438:00
[ 1338.965117] sof-audio-acpi INT3438:00: PXL: dlc dai_name snd-soc-dummy-dai, component dai_name ssp0-port
[ 1338.965119] sof-audio-acpi INT3438:00: PXL: dlc dai_name snd-soc-dummy-dai, component dai_name ssp1-port
[ 1338.965121] snd-soc-dummy snd-soc-dummy: PXL: dlc name INT3438:00, component name snd-soc-dummy
[ 1338.965122] snd-soc-dummy snd-soc-dummy: PXL: dlc name INT3438:00, component name snd-soc-dummy
[ 1338.965123] bdw-rt5677 bdw-rt5677: ASoC: CPU DAI snd-soc-dummy-dai not registered

I think we will still the fix to set the right dai name for SOF in the machine drivers when work with SOF.

@xiulipan

Copy link
Copy Markdown
Author

@plbossart @bardliao It seems there is snd-soc-dummy-dai in component snd-soc-dummy.
But the machine driver wants to find some snd-soc-dummy-dai in component INT3438:00.

So if we want to use SOF as platform driver, we need to change the dai-name to match what we have in SOF platform driver.

This PR test with thesofproject/sof#2188 and thesofproject/sof#2095 on both bdw-rt5677 and bdw-rt286.

@fredoh9 can you help to check if the sound output on bdw-rt5677 is good?

@ranj063

ranj063 commented Dec 12, 2019

Copy link
Copy Markdown
Collaborator

@xiulipan I have a suspicion there was an error in the patch 3f6c2a2. I believe the right fix for this issue might be:

diff --git a/sound/soc/intel/boards/bdw-rt5677.c b/sound/soc/intel/boards/bdw-rt5677.c
index 2af8e5a62da8..322f514788ef 100644
--- a/sound/soc/intel/boards/bdw-rt5677.c
+++ b/sound/soc/intel/boards/bdw-rt5677.c
@@ -286,6 +286,9 @@ static int bdw_rt5677_init(struct snd_soc_pcm_runtime *rtd)
 SND_SOC_DAILINK_DEF(dummy,
        DAILINK_COMP_ARRAY(COMP_DUMMY()));
 
+SND_SOC_DAILINK_DEF(dummy_platform,
+       DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
+
 SND_SOC_DAILINK_DEF(fe,
        DAILINK_COMP_ARRAY(COMP_CPU("System Pin")));
 
@@ -342,7 +345,7 @@ static struct snd_soc_dai_link bdw_rt5677_dais[] = {
                .dpcm_playback = 1,
                .dpcm_capture = 1,
                .init = bdw_rt5677_init,
-               SND_SOC_DAILINK_REG(dummy, be, dummy),
+               SND_SOC_DAILINK_REG(dummy, be, dummy_platform),
        },
 };

@ranj063

ranj063 commented Dec 12, 2019

Copy link
Copy Markdown
Collaborator

@xiulipan I have a suspicion there was an error in the patch 3f6c2a2. I believe the right fix for this issue might be:

@xiulipan hmm this isnt the right fix after all. But you know what I am not sure why the dummy comp isnt working. Take a look at this new machine drv from Curtis. This has very similar dai link definitions too:
https://mailman.alsa-project.org/pipermail/alsa-devel/2019-December/159435.html

@ranj063

ranj063 commented Dec 12, 2019 •

Copy link
Copy Markdown
Collaborator

@xiulipan I have a suspicion there was an error in the patch 3f6c2a2. I believe the right fix for this issue might be:

@xiulipan hmm this isnt the right fix after all. But you know what I am not sure why the dummy comp isnt working. Take a look at this new machine drv from Curtis. This has very similar dai link definitions too:
https://mailman.alsa-project.org/pipermail/alsa-devel/2019-December/159435.html

@xiulipan could you please give my patch above a try anyway and see what happens? Actually a better change would just be:

diff --git a/sound/soc/intel/boards/bdw-rt5677.c b/sound/soc/intel/boards/bdw-rt5677.c
index 2af8e5a62da8..3ac49cf0f6a1 100644
--- a/sound/soc/intel/boards/bdw-rt5677.c
+++ b/sound/soc/intel/boards/bdw-rt5677.c
@@ -342,7 +342,7 @@ static struct snd_soc_dai_link bdw_rt5677_dais[] = {
                .dpcm_playback = 1,
                .dpcm_capture = 1,
                .init = bdw_rt5677_init,
-               SND_SOC_DAILINK_REG(dummy, be, dummy),
+               SND_SOC_DAILINK_REG(dummy, be, platform),
        },
 };

@ranj063

ranj063 commented Dec 13, 2019 •

Copy link
Copy Markdown
Collaborator
diff --git a/sound/soc/intel/boards/bdw-rt5677.c b/sound/soc/intel/boards/bdw-rt5677.c
index 2af8e5a62da8..3ac49cf0f6a1 100644
--- a/sound/soc/intel/boards/bdw-rt5677.c
+++ b/sound/soc/intel/boards/bdw-rt5677.c
@@ -342,7 +342,7 @@ static struct snd_soc_dai_link bdw_rt5677_dais[] = {
                .dpcm_playback = 1,
                .dpcm_capture = 1,
                .init = bdw_rt5677_init,
-               SND_SOC_DAILINK_REG(dummy, be, dummy),
+               SND_SOC_DAILINK_REG(dummy, be, platform),
        },
 };

@xiulipan So the right fix for the BDW machine drv probe problem is as above and @cujomalainey has helped me verify it with the legacy SST driver as well. Here's the rationale for it:

" With the introduction of snd_soc_fixup_dai_links_platform_name() to override the platform name, the CPU and platform components for the DAI links cannot be the same anymore. In the case of the bdw-rt5677 driver, using the same dummy component for the CPU and platform components results in the CPU component's name also getting overridden by the platform name set by the SOF driver. This results in DAI link binding failure because of the component name mismatch when searching for the snd-soc-dummy-dai CPU DAI. In order to prevent this, change the platform component so that it is different from the CPU component. This change has also been tested to work with the legacy driver"

@plbossart let me know what you think of this.

@cujomalainey

Copy link
Copy Markdown

In this case it was tested on the bdw-rt5650 driver, but I can also test on the 5677 if needed

@xiulipan

Copy link
Copy Markdown
Author

@ranj063 @bardliao I have confirmed the issue here. It seems we have the same structure for the struct snd_soc_dai_link_component *cpus; and struct snd_soc_dai_link_component *platforms; even through we just want them to have same names. We need to avoid reuse SND_SOC_DAILINK_REG between cpu dai and platform.

[ 4047.486351] broadwell-audio broadwell-audio: PXL: fixup Codec from snd-soc-dummy to INT3438:00
[ 4047.486354] broadwell-audio broadwell-audio: PXL: after fixup Codec platform ptr 000000009365e317 cpu ptr 000000009365e317
[ 4047.486356] broadwell-audio broadwell-audio: PXL: after fixup Codec platform name INT3438:00 cpu name INT3438:00

So I have some try like following:

diff --git a/sound/soc/intel/boards/broadwell.c b/sound/soc/intel/boards/broadwell.c
index db7e1e87156d..d98ef549e9ad 100644
--- a/sound/soc/intel/boards/broadwell.c
+++ b/sound/soc/intel/boards/broadwell.c
@@ -158,6 +158,9 @@ SND_SOC_DAILINK_DEF(loopback,
 SND_SOC_DAILINK_DEF(dummy,
        DAILINK_COMP_ARRAY(COMP_DUMMY()));
 
+SND_SOC_DAILINK_DEF(dummyplatform,
+       DAILINK_COMP_ARRAY(COMP_DUMMY()));
+
 SND_SOC_DAILINK_DEF(platform,
        DAILINK_COMP_ARRAY(COMP_PLATFORM("haswell-pcm-audio")));
 
@@ -218,7 +221,7 @@ static struct snd_soc_dai_link broadwell_rt286_dais[] = {
                .ops = &broadwell_rt286_ops,
                .dpcm_playback = 1,
                .dpcm_capture = 1,
-               SND_SOC_DAILINK_REG(dummy, codec, dummy),
+               SND_SOC_DAILINK_REG(dummy, codec, dummyplatform),
        },
 };

Now the fix up will not influence the CPU anymore

[ 4504.919534] broadwell-audio broadwell-audio: PXL: fixup Codec from snd-soc-dummy to INT3438:00
[ 4504.919537] broadwell-audio broadwell-audio: PXL: after fixup Codec platform ptr 000000009365e317 cpu ptr 000000006940239d
[ 4504.919539] broadwell-audio broadwell-audio: PXL: after fixup Codec platform name INT3438:00 cpu name snd-soc-dummy

So I think we need to add some warning to mention this issue when use SND_SOC_DAILINK_REG otherwise even you do not use the dummy but same SND_SOC_DAILINK_DEF in cpus and platforms, it will still be overwritten by the platform name fixup again.

@morimoto Could you take a look about our analysis about this issue to see if we need to add any patch to the SND_SOC_DAILINK_* macros to avoid issues happen when use SND_SOC_DAILINK_REG(dummy, codec, dummy), in 3f6c2a2 4c3db47 77b365b

or we just should not use same dai_link for cpu and platform from the beginning.

@ranj063

ranj063 commented Dec 13, 2019

Copy link
Copy Markdown
Collaborator

@morimoto Could you take a look about our analysis about this issue to see if we need to add any patch to the SND_SOC_DAILINK_* macros to avoid issues happen when use SND_SOC_DAILINK_REG(dummy, codec, dummy), in 3f6c2a2 4c3db47 77b365b

@xiulipan like I mentioned in my comment, they do have to be different comps. Having just one macro for COMP_DUMMY() and using the same everywhere will lead to conflicts we're seeing. @morimoto could you please confirm this?

@ranj063

ranj063 commented Dec 16, 2019

Copy link
Copy Markdown
Collaborator

@ranj063 Reuse the macro COMP_DUMMY() is OK. But you need to have different SND_SOC_DAILINK_DEF like below:

+SND_SOC_DAILINK_DEF(dummyplatform,
+       DAILINK_COMP_ARRAY(COMP_DUMMY()));
+

@xiulipan thats good. Do you mind updating the PR?

@plbossart plbossart left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comments below @xiulipan

Comment thread sound/soc/intel/boards/bdw-rt5677.c Outdated
.ops = &bdw_rt5677_dsp_ops,
SND_SOC_DAILINK_REG(dsp),
},
#endif

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is wrong I believe. @cujomalainey please correct me if I am smoking.
the WakeOnVoice is handled by the rt5677 codec IIRC, so there's no reason why it should be commented out.
However we need to check that the FE override does not prevent this from working.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@plbossart the problem is this is a non-DPCM link and we do not override it at all with SOF. This was one of the questions @dbaluta was asking as well.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's good if it's not overridden!

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xiulipan care to explain why we need to comment this out?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only dependency on the platform is a DAPM link to force the I2S clk. If SOF can provide that clock then WoV should work fine with SOF as the audio bypasses the DSP on a SPI link.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cujomalainey can you elaborate here? I don't remember what the expectation is for clocks here, and quite frankly whether we use SOF or not the hardware is the same, so there's not really any magic we can do...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RT5677 needs the I2S MCLK running in order to drive its DSP. Locally we have 0d2135e reverted (the same patch that causes DMA boot issues on samus and DSP crashes on buddy.) By reverting it, the kernel allows the bdw DSP to suspend and leave the MCLK running so everything is fine for us.

If we don't have that clock bad things start to happen very quickly. All I2C writes silently fail is one example and the registers read back garbage values (usually 0xBEEF).

@plbossart plbossart Dec 17, 2019 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MCLK is not controlled by the DSP, did you mean SCLK or BCLK?

I read rt5677 and thought CHT/BSW.
For Broadwell I don't think we play with the audio PLL and change the MCLK in the SOF driver. The code you are referring to is only used by the legacy, and no one knows what the issue might be...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope I mean MCLK. It is controlled by the DSP kernel driver, at least that is where it is in SST builds.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cujomalainey @plbossart I will test with this FE kept and see if we can find the link there.
Then I think we can decided if we need to keep this here.

Comment thread sound/soc/intel/boards/bdw-rt5677.c Resolved
@plbossart plbossart added BDW Applies to Broadwell platform and removed Unclear No agreement on problem statement and resolution labels Dec 17, 2019
@xiulipan

Copy link
Copy Markdown
Author

update, blocked by new regression thesofproject/sof#2227
Will update the PR and test result later.

@xiulipan xiulipan changed the title ASoC: Intel: fix BDW machine driver load issue with SOF Fix BDW machine drivers load issue with SOF Dec 20, 2019
@xiulipan

Copy link
Copy Markdown
Author

@plbossart @ranj063 Update the patch.
@cujomalainey Test with rt5677 and find the rt5677-spi could not be probed. Also test with SST driver on the device. The machine driver can also not be loaded. I think the WoV feature may need some other effect to enable. So I disable the WoV feature to let SOF probe.

Logs for the codec dai load, no spi-RT5677AA:00 loaded from codec driver snd_soc_rt5677_spi

[ 1594.885960] snd-soc-dummy snd-soc-dummy: ASoC: dynamically register DAI snd-soc-dummy
[ 1594.885963] snd-soc-dummy snd-soc-dummy: ASoC: Registered DAI 'snd-soc-dummy-dai'
[ 1603.562987] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.562992] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-aif1'
[ 1603.562995] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.562997] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-aif2'
[ 1603.562999] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.563003] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-aif3'
[ 1603.563006] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.563009] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-aif4'
[ 1603.563011] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.563013] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-slimbus'
[ 1603.563015] rt5677 i2c-RT5677CE:00: ASoC: dynamically register DAI i2c-RT5677CE:00
[ 1603.563018] rt5677 i2c-RT5677CE:00: ASoC: Registered DAI 'rt5677-dspbuffer'

@ranj063 ranj063 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typos in commit message "crete" "sperate"

@plbossart

plbossart commented Dec 20, 2019 via email

Copy link
Copy Markdown
Member

@cujomalainey

Copy link
Copy Markdown

Is CONFIG_SPI enabled?

@plbossart

Copy link
Copy Markdown
Member

Is CONFIG_SPI enabled?

should be, we have all this enabled in the base-defconfig:

base-defconfig:# SPI
base-defconfig:CONFIG_SPI=y
base-defconfig:# CONFIG_SPI_DEBUG is not set
base-defconfig:CONFIG_SPI_MASTER=y
base-defconfig:CONFIG_REGMAP_SPI=y
base-defconfig:CONFIG_SPI_DESIGNWARE=m
base-defconfig:CONFIG_SPI_DW_PCI=m
base-defconfig:CONFIG_SPI_DW_MID_DMA=y
base-defconfig:CONFIG_SPI_DW_MMIO=m
base-defconfig:# CONFIG_MMC_SPI is not set
base-defconfig:# CONFIG_SND_SPI is not set

@cujomalainey

cujomalainey commented Dec 21, 2019 •

Copy link
Copy Markdown

Ah, i didn't realize there was a CONFIG_SND_SOC_RT5677_SPI, that is probably the issue. I will send a patch to #ifdef that link out when I get back from vacation. Apologies.

The legacy driver uses dummy cpu_dai and platform, SOF requires actual
values to bind.

Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
@plbossart

ghost commented Jan 7, 2020

Copy link
Copy Markdown
Member

@xiulipan can you clarify for me what the status is on BDW/rt5640? Do you get clear sound on capture and playback? Do you have a UCM file?

@plbossart

ghost commented Jan 7, 2020

Copy link
Copy Markdown
Member

@xiulipan can you clarify for me what the status is on BDW/rt5640? Do you get clear sound on capture and playback? Do you have a UCM file?

also @lgirdwood do you have a Broadwell XPS on your side to test this out?

@lgirdwood

ghost commented Jan 7, 2020

Copy link
Copy Markdown
Member

@plbossart I do, will start charging it (version with funky BIOS where you need to enabled DSP in BIOS and boot Linux twice before DSP is really enabled by BIOS).

@plbossart
plbossart merged commit 19a221f into thesofproject:topic/sof-dev Jan 7, 2020
@xiulipan

ghost commented Jan 8, 2020

Copy link
Copy Markdown
Author

@plbossart I only test on a BDW rt286.
I will try to add bdw into CI from now.

@plbossart

ghost commented Jan 8, 2020

Copy link
Copy Markdown
Member

@plbossart I only test on a BDW rt286.
I will try to add bdw into CI from now.

right, yes it's haswell that has rt5640.
we'd need a UCM file for the RT286 case, same as what I tried with bdw-rt5677 so that pulseaudio works out of the box. let's not use alsa-conf/state...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BDW Applies to Broadwell platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants