Loading include/sound/sof/dai-imx.h +7 −0 Original line number Diff line number Diff line Loading @@ -51,4 +51,11 @@ struct sof_ipc_dai_sai_params { uint16_t tdm_slot_width; uint16_t reserved2; /* alignment */ } __packed; /* MICFIL Configuration Request - SOF_IPC_DAI_MICFIL_CONFIG */ struct sof_ipc_dai_micfil_params { uint32_t pdm_rate; uint32_t pdm_ch; } __packed; #endif include/sound/sof/dai.h +2 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ enum sof_ipc_dai_type { SOF_DAI_AMD_HS, /**< Amd HS */ SOF_DAI_AMD_SP_VIRTUAL, /**< AMD ACP SP VIRTUAL */ SOF_DAI_AMD_HS_VIRTUAL, /**< AMD ACP HS VIRTUAL */ SOF_DAI_IMX_MICFIL, /** < i.MX MICFIL PDM */ }; /* general purpose DAI configuration */ Loading Loading @@ -117,6 +118,7 @@ struct sof_ipc_dai_config { struct sof_ipc_dai_acpdmic_params acpdmic; struct sof_ipc_dai_acp_params acphs; struct sof_ipc_dai_mtk_afe_params afe; struct sof_ipc_dai_micfil_params micfil; }; } __packed; Loading include/uapi/sound/sof/tokens.h +4 −0 Original line number Diff line number Diff line Loading @@ -213,4 +213,8 @@ #define SOF_TKN_AMD_ACPI2S_CH 1701 #define SOF_TKN_AMD_ACPI2S_TDM_MODE 1702 /* MICFIL PDM */ #define SOF_TKN_IMX_MICFIL_RATE 2000 #define SOF_TKN_IMX_MICFIL_CH 2001 #endif sound/soc/sof/imx/imx8m.c +7 −0 Original line number Diff line number Diff line Loading @@ -313,6 +313,13 @@ static struct snd_soc_dai_driver imx8m_dai[] = { .channels_max = 32, }, }, { .name = "micfil", .capture = { .channels_min = 1, .channels_max = 8, }, }, }; static int imx8m_dsp_set_power_state(struct snd_sof_dev *sdev, Loading sound/soc/sof/ipc3-pcm.c +11 −0 Original line number Diff line number Diff line Loading @@ -384,6 +384,17 @@ static int sof_ipc3_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, dev_dbg(component->dev, "AMD_DMIC channels_min: %d channels_max: %d\n", channels->min, channels->max); break; case SOF_DAI_IMX_MICFIL: rate->min = private->dai_config->micfil.pdm_rate; rate->max = private->dai_config->micfil.pdm_rate; channels->min = private->dai_config->micfil.pdm_ch; channels->max = private->dai_config->micfil.pdm_ch; dev_dbg(component->dev, "MICFIL PDM rate_min: %d rate_max: %d\n", rate->min, rate->max); dev_dbg(component->dev, "MICFIL PDM channels_min: %d channels_max: %d\n", channels->min, channels->max); break; default: dev_err(component->dev, "Invalid DAI type %d\n", private->dai_config->type); break; Loading Loading
include/sound/sof/dai-imx.h +7 −0 Original line number Diff line number Diff line Loading @@ -51,4 +51,11 @@ struct sof_ipc_dai_sai_params { uint16_t tdm_slot_width; uint16_t reserved2; /* alignment */ } __packed; /* MICFIL Configuration Request - SOF_IPC_DAI_MICFIL_CONFIG */ struct sof_ipc_dai_micfil_params { uint32_t pdm_rate; uint32_t pdm_ch; } __packed; #endif
include/sound/sof/dai.h +2 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ enum sof_ipc_dai_type { SOF_DAI_AMD_HS, /**< Amd HS */ SOF_DAI_AMD_SP_VIRTUAL, /**< AMD ACP SP VIRTUAL */ SOF_DAI_AMD_HS_VIRTUAL, /**< AMD ACP HS VIRTUAL */ SOF_DAI_IMX_MICFIL, /** < i.MX MICFIL PDM */ }; /* general purpose DAI configuration */ Loading Loading @@ -117,6 +118,7 @@ struct sof_ipc_dai_config { struct sof_ipc_dai_acpdmic_params acpdmic; struct sof_ipc_dai_acp_params acphs; struct sof_ipc_dai_mtk_afe_params afe; struct sof_ipc_dai_micfil_params micfil; }; } __packed; Loading
include/uapi/sound/sof/tokens.h +4 −0 Original line number Diff line number Diff line Loading @@ -213,4 +213,8 @@ #define SOF_TKN_AMD_ACPI2S_CH 1701 #define SOF_TKN_AMD_ACPI2S_TDM_MODE 1702 /* MICFIL PDM */ #define SOF_TKN_IMX_MICFIL_RATE 2000 #define SOF_TKN_IMX_MICFIL_CH 2001 #endif
sound/soc/sof/imx/imx8m.c +7 −0 Original line number Diff line number Diff line Loading @@ -313,6 +313,13 @@ static struct snd_soc_dai_driver imx8m_dai[] = { .channels_max = 32, }, }, { .name = "micfil", .capture = { .channels_min = 1, .channels_max = 8, }, }, }; static int imx8m_dsp_set_power_state(struct snd_sof_dev *sdev, Loading
sound/soc/sof/ipc3-pcm.c +11 −0 Original line number Diff line number Diff line Loading @@ -384,6 +384,17 @@ static int sof_ipc3_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, dev_dbg(component->dev, "AMD_DMIC channels_min: %d channels_max: %d\n", channels->min, channels->max); break; case SOF_DAI_IMX_MICFIL: rate->min = private->dai_config->micfil.pdm_rate; rate->max = private->dai_config->micfil.pdm_rate; channels->min = private->dai_config->micfil.pdm_ch; channels->max = private->dai_config->micfil.pdm_ch; dev_dbg(component->dev, "MICFIL PDM rate_min: %d rate_max: %d\n", rate->min, rate->max); dev_dbg(component->dev, "MICFIL PDM channels_min: %d channels_max: %d\n", channels->min, channels->max); break; default: dev_err(component->dev, "Invalid DAI type %d\n", private->dai_config->type); break; Loading