diff --git a/app/boards/imx8mp_evk_mimx8ml8_adsp.conf b/app/boards/imx8mp_evk_mimx8ml8_adsp.conf index f1ed34f8dc99..da9e56d759a4 100644 --- a/app/boards/imx8mp_evk_mimx8ml8_adsp.conf +++ b/app/boards/imx8mp_evk_mimx8ml8_adsp.conf @@ -4,6 +4,7 @@ CONFIG_FORMAT_CONVERT_HIFI3=n CONFIG_KPB_FORCE_COPY_TYPE_NORMAL=n CONFIG_DMA=y CONFIG_DMA_NXP_SDMA=y +CONFIG_DAI_NXP_MICFIL=y CONFIG_TRACE=n CONFIG_SHARED_INTERRUPTS=y CONFIG_ZEPHYR_NATIVE_DRIVERS=y diff --git a/app/boards/imx8mp_evk_mimx8ml8_adsp.overlay b/app/boards/imx8mp_evk_mimx8ml8_adsp.overlay index c977fb8410e9..6748b621985a 100644 --- a/app/boards/imx8mp_evk_mimx8ml8_adsp.overlay +++ b/app/boards/imx8mp_evk_mimx8ml8_adsp.overlay @@ -23,3 +23,7 @@ rx-sync-mode = <1>; status = "okay"; }; + +&micfil { + status = "okay"; +}; diff --git a/src/audio/dai-zephyr.c b/src/audio/dai-zephyr.c index c43d2f87332f..5ca6db25ab10 100644 --- a/src/audio/dai-zephyr.c +++ b/src/audio/dai-zephyr.c @@ -181,6 +181,10 @@ int dai_set_config(struct dai *dai, struct ipc_config_dai *common_config, cfg.type = DAI_IMX_ESAI; cfg_params = &sof_cfg->esai; break; + case SOF_DAI_IMX_MICFIL: + cfg.type = DAI_IMX_MICFIL; + cfg_params = &sof_cfg->micfil; + break; default: return -EINVAL; } @@ -708,6 +712,7 @@ static int dai_get_dma_slot(struct dai_data *dd, struct comp_dev *dev, uint32_t switch (cfg.type) { case DAI_IMX_SAI: case DAI_IMX_ESAI: + case DAI_IMX_MICFIL: *slot = (hs & GENMASK(15, 8)) >> 8; break; default: diff --git a/src/ipc/ipc3/dai.c b/src/ipc/ipc3/dai.c index a32d80392962..17b12aeefc26 100644 --- a/src/ipc/ipc3/dai.c +++ b/src/ipc/ipc3/dai.c @@ -73,6 +73,10 @@ int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void case SOF_DAI_IMX_MICFIL: channel = dai_get_handshake(dd->dai, dai->direction, dd->stream_id); +/* TODO: remove ifdef when transitioning to native drivers is complete on all NXP platforms */ +#ifdef CONFIG_ZEPHYR_NATIVE_DRIVERS + channel = channel & GENMASK(7, 0); +#endif break; case SOF_DAI_AMD_BT: channel = dai_get_handshake(dd->dai, dai->direction, diff --git a/src/lib/dai.c b/src/lib/dai.c index d778bfc40235..87d3351ecb57 100644 --- a/src/lib/dai.c +++ b/src/lib/dai.c @@ -149,6 +149,9 @@ const struct device *zephyr_dev[] = { #if CONFIG_DAI_NXP_ESAI DT_FOREACH_STATUS_OKAY(nxp_dai_esai, GET_DEVICE_LIST) #endif +#if CONFIG_DAI_NXP_MICFIL + DT_FOREACH_STATUS_OKAY(nxp_dai_micfil, GET_DEVICE_LIST) +#endif }; /* convert sof_ipc_dai_type to Zephyr dai_type */ @@ -175,10 +178,11 @@ static int sof_dai_type_to_zephyr(uint32_t type) return DAI_AMD_DMIC; case SOF_DAI_MEDIATEK_AFE: return DAI_MEDIATEK_AFE; + case SOF_DAI_IMX_MICFIL: + return DAI_IMX_MICFIL; case SOF_DAI_AMD_HS: case SOF_DAI_AMD_SP_VIRTUAL: case SOF_DAI_AMD_HS_VIRTUAL: - case SOF_DAI_IMX_MICFIL: case SOF_DAI_AMD_SW_AUDIO: return -ENOTSUP; default: diff --git a/tools/topology/topology1/sof-imx8mp-micfil.m4 b/tools/topology/topology1/sof-imx8mp-micfil.m4 index f8bf88bb5335..ccbc060fddc5 100644 --- a/tools/topology/topology1/sof-imx8mp-micfil.m4 +++ b/tools/topology/topology1/sof-imx8mp-micfil.m4 @@ -20,11 +20,11 @@ include(`platform/imx/imx8.m4') # Capture pipeline 3 on PCM 1 using max 4 channels of s32le. PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, 1, 0, 4, s32le, - 2000, 0, 0, + 1000, 0, 0, 48000, 48000, 48000) DAI_ADD(sof/pipe-dai-capture.m4, 1, MICFIL, 2, micfil-dmic-hifi, -PIPELINE_SINK_1, 2, s32le, 2000, 0, 0, SCHEDULE_TIME_DOMAIN_DMA) +PIPELINE_SINK_1, 2, s32le, 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) dnl DAI_CONFIG(type, dai_index, link_id, name, acpdmic_config) DAI_CONFIG(MICFIL, 0, 0, micfil-dmic-hifi, diff --git a/west.yml b/west.yml index 6fd718c542ea..5e57d91b742b 100644 --- a/west.yml +++ b/west.yml @@ -43,7 +43,7 @@ manifest: - name: zephyr repo-path: zephyr - revision: 42701fdb27298d20b4040cea5cde375b72c27cfc + revision: aaa119d75729410ae70fc8ba188634c23214f804 remote: zephyrproject # Import some projects listed in zephyr/west.yml@revision