From 6ec0a632502c3e641438165738ee4359308fc1c5 Mon Sep 17 00:00:00 2001 From: Brent Lu Date: Thu, 15 Apr 2021 10:10:33 +0800 Subject: [PATCH] topology: sof-glk-da7219: add support for cs42l42 Add support for cs42l42 running on GLK boards. We add a 10 ms BCLK delay to the SSP_CONFIG_DATA of SSP2 since the codec PLL is locking on BCLK. Without the delay, there could be noise on TX path. Signed-off-by: Brent Lu --- tools/topology/CMakeLists.txt | 3 ++- tools/topology/development/CMakeLists.txt | 2 +- tools/topology/sof-glk-da7219.m4 | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/topology/CMakeLists.txt b/tools/topology/CMakeLists.txt index 237ff0988860..1b8a2cdc7723 100644 --- a/tools/topology/CMakeLists.txt +++ b/tools/topology/CMakeLists.txt @@ -74,7 +74,8 @@ set(TPLGS "sof-glk-da7219-kwd\;sof-glk-da7219-kwd\;-DPLATFORM=glk" "sof-glk-da7219-kwd\;sof-cml-da7219-max98357a\;-DPLATFORM=cml" "sof-glk-da7219-kwd\;sof-cml-da7219-max98390\;-DCODEC=MAX98390\;-DPLATFORM=cml" - "sof-glk-da7219\;sof-glk-da7219" + "sof-glk-da7219\;sof-glk-da7219\;-DHEADPHONE=da7219" + "sof-glk-da7219\;sof-glk-cs42l42\;-DHEADPHONE=cs42l42" "sof-glk-rt5682\;sof-glk-rt5682" "sof-icl-nocodec\;sof-icl-nocodec\;-DPLATFORM=icl" "sof-icl-nocodec\;sof-jsl-nocodec\;-DPLATFORM=jsl" diff --git a/tools/topology/development/CMakeLists.txt b/tools/topology/development/CMakeLists.txt index 26da8032b5da..3f7f65274d22 100644 --- a/tools/topology/development/CMakeLists.txt +++ b/tools/topology/development/CMakeLists.txt @@ -29,7 +29,7 @@ set(TPLGS_UP "sof-cml-rt5682\;sof-cml-eq-fir-loud-rt5682\;-DPLATFORM=cml\;-DHSEARPROC=eq-iir-volume\;-DPIPELINE_FILTER1=eq_iir_coef_loudness.m4\;-DHSMICPROC=eq-fir-volume\;-DPIPELINE_FILTER2=eq_fir_coef_loudness.m4\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" "sof-cml-rt5682\;sof-cml-eq-fir-rt5682\;-DPLATFORM=cml\;-DHSMICPROC=eq-fir-volume\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" "sof-cml-rt5682\;sof-cml-eq-iir-rt5682\;-DPLATFORM=cml\;-DHSEARPROC=eq-iir-volume\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" - "sof-glk-da7219\;sof-glk-eq-da7219\;-DDMICPROC=eq-iir-volume" + "sof-glk-da7219\;sof-glk-eq-da7219\;-DHEADPHONE=da7219\;-DDMICPROC=eq-iir-volume" "sof-hda-generic\;sof-hda-generic-tdfb_50mm-2ch\;-DCHANNELS=2\;-DHSPROC=volume\;-DDMIC16KPROC=tdfb-eq-iir-volume\;-DDMIC16KPROC_FILTER1=tdfb/coef_line2_50mm_pm10deg_16khz.m4\;-DDMICPROC=tdfb-eq-iir-volume\;-DDMICPROC_FILTER1=tdfb/coef_line2_50mm_pm10deg_48khz.m4\;-DDMICPROC_FILTER2=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER2=eq_iir_coef_highpass_40hz_20db_16khz.m4" ) diff --git a/tools/topology/sof-glk-da7219.m4 b/tools/topology/sof-glk-da7219.m4 index a0a067bf6651..e170de3b7c09 100644 --- a/tools/topology/sof-glk-da7219.m4 +++ b/tools/topology/sof-glk-da7219.m4 @@ -1,5 +1,6 @@ # -# Topology for GeminiLake with Dialog7219. +# Topology for GeminiLake with Dialog Semiconductor DA7219 or +# Cirrus Logic CS42L42 # # Include topology builder @@ -23,7 +24,7 @@ include(`platform/intel/dmic.m4') # Define the pipelines # # PCM0 ----> volume (pipe 1) -----> SSP1 (speaker - maxim98357a, BE link 0) -# PCM1 <---> volume (pipe 2,3) <----> SSP2 (headset - da7219, BE link 1) +`# PCM1 <---> volume (pipe 2,3) <----> SSP2 (headset - 'HEADPHONE`, BE link 1)' `# PCM99 <---- 'DMICPROC` <---- DMIC0 (dmic capture, BE link 2)' # PCM5 ----> volume (pipe 5) -----> iDisp1 (HDMI/DP playback, BE link 3) # PCM6 ----> Volume (pipe 6) -----> iDisp2 (HDMI/DP playback, BE link 4) @@ -169,6 +170,7 @@ DAI_CONFIG(SSP, 1, 0, SSP1-Codec, SSP_TDM(2, 16, 3, 3), SSP_CONFIG_DATA(SSP, 1, 16, 1))) +ifelse(HEADPHONE, `da7219', ` #SSP 2 (ID: 1) with 19.2 MHz mclk with MCLK_ID 1, 1.92 MHz bclk DAI_CONFIG(SSP, 2, 1, SSP2-Codec, SSP_CONFIG(I2S, SSP_CLOCK(mclk, 19200000, codec_mclk_in), @@ -176,6 +178,15 @@ DAI_CONFIG(SSP, 2, 1, SSP2-Codec, SSP_CLOCK(fsync, 48000, codec_slave), SSP_TDM(2, 20, 3, 3), SSP_CONFIG_DATA(SSP, 2, 16, 1))) +', HEADPHONE, `cs42l42', ` +#SSP 2 (ID: 1) with 19.2 MHz mclk with MCLK_ID 1 (unused), 3.072 MHz bclk, no quirk, 10 ms BCLK delay +DAI_CONFIG(SSP, 2, 1, SSP2-Codec, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 19200000, codec_mclk_in), + SSP_CLOCK(bclk, 3072000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 32, 3, 3), + SSP_CONFIG_DATA(SSP, 2, 16, 1, 0, 10))) +', ) # dmic01 (id: 2) DAI_CONFIG(DMIC, 0, 2, dmic01,