Hi Jerome,
On 31.07.2020 14:06, Jerome Brunet wrote:
Commit b73287f0b074 ("ASoC: soc-pcm: dpcm: fix playback/capture checks") changed the meaning of dpcm_playback/dpcm_capture and now requires the CPU DAI BE to aligned with those flags.
This broke all Amlogic cards with uni-directional backends (All gx and most axg cards).
While I'm still confused as to how this change is an improvement, those cards can't remain broken forever. Hopefully, next time an API change is done like that, all the users will be updated as part of the change, and not left to fend for themselves.
Fixes: b73287f0b074 ("ASoC: soc-pcm: dpcm: fix playback/capture checks") Signed-off-by: Jerome Brunet jbrunet@baylibre.com
This patch landed finally in v5.9-rc1. I've noticed it causes a following warning on Hardkernel's Odroid N2 board (arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtb):
meson-drm ff900000.vpu: [drm] fb0: mesondrmfb frame buffer device ------------[ cut here ]------------ WARNING: CPU: 3 PID: 66 at sound/soc/soc-core.c:817 snd_soc_find_dai+0xe4/0xf0 Modules linked in: dw_hdmi_i2s_audio dw_hdmi_cec meson_gxl realtek dwmac_generic crct10dif_ce snd_soc_meson_axg_sound_card snd_soc_meson_card_utils rc_odroid pwm_meson meson_ir snd_soc_meson_g12a_toacodec snd_soc_meson_axg_tdmout rtc_meson_vrtc snd_soc_meson_g12a_tohdmitx snd_soc_meson_codec_glue mdio_mux_meson_g12a snd_soc_meson_axg_tdmin dwmac_meson8b stmmac_platform reset_meson_audio_arb snd_soc_meson_axg_frddr axg_audio snd_soc_meson_axg_toddr sclk_div clk_phase meson_rng stmmac rng_core meson_dw_hdmi snd_soc_meson_axg_fifo meson_drm meson_canvas mdio_xpcs dw_hdmi snd_soc_meson_t9015 display_connector nvmem_meson_efuse snd_soc_meson_axg_tdm_interface snd_soc_meson_axg_tdm_formatter snd_soc_simple_amplifier CPU: 3 PID: 66 Comm: kworker/3:1 Not tainted 5.9.0-rc1 #1527 Hardware name: Hardkernel ODROID-N2 (DT) Workqueue: events deferred_probe_work_func pstate: 60000005 (nZCv daif -PAN -UAO BTYPE=--) pc : snd_soc_find_dai+0xe4/0xf0 lr : snd_soc_find_dai+0xe0/0xf0 ... Call trace: snd_soc_find_dai+0xe4/0xf0 snd_soc_dai_link_set_capabilities+0x68/0x160 axg_card_add_link+0x188/0x5c4 [snd_soc_meson_axg_sound_card] meson_card_probe+0x1e0/0x960 [snd_soc_meson_card_utils] platform_drv_probe+0x50/0xa8 really_probe+0x110/0x400 driver_probe_device+0x54/0xb8 __device_attach_driver+0x90/0xc0 bus_for_each_drv+0x70/0xc8 __device_attach+0xec/0x150 device_initial_probe+0x10/0x18 bus_probe_device+0x94/0xa0 deferred_probe_work_func+0x70/0xa8 process_one_work+0x2a8/0x718 worker_thread+0x48/0x460 kthread+0x134/0x160 ret_from_fork+0x10/0x1c irq event stamp: 269690 hardirqs last enabled at (269689): [<ffff800010f6048c>] _raw_spin_unlock_irqrestore+0x7c/0x98 hardirqs last disabled at (269690): [<ffff800010025a68>] do_debug_exception+0x140/0x26c softirqs last enabled at (269318): [<ffff800010001654>] efi_header_end+0x654/0x6d4 softirqs last disabled at (269313): [<ffff80001008929c>] irq_exit+0x16c/0x178 ---[ end trace 56a3ea4fa00c37c8 ]--- ... axg-sound-card sound: ASoC: no DMI vendor name!
The warning is repeated 10 times.
The bisect between v5.8-rc1 and v5.9-rc1 points to the commit c8f7dbdbaa15 ("Merge remote-tracking branch 'asoc/for-5.8' into asoc-linus"), which introduced a branch with this patch.
The commit with this patch is applied on the earlier kernel release (da3f23fde9d7 "ASoC: meson: cards: deal dpcm flag change" on top of v5.7-rc1) worked fine, so it looks that there is an interference with something merged later.
If I revert this patch on top of v5.9-rc1 or current linux-next, the warning is gone. Let me know how I can help debugging this issue.
Best regards