Loading arch/arm/boot/dts/qcom/mdm9607.dtsi +11 −4 Original line number Diff line number Diff line Loading @@ -855,12 +855,13 @@ qcom,auxpcm-interface-mode = "pri_pcm_master", "sec_pcm_master"; asoc-platform = <&pcm0>, <&pcm1>, <&voip>, <&voice>, <&loopback>, <&hostless>, <&afe>, <&routing>, <&pcm_dtmf>, <&host_pcm>; <&pcm_dtmf>, <&host_pcm>, <&compress>; asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1", "msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback", "msm-pcm-hostless", "msm-pcm-afe", "msm-pcm-routing", "msm-pcm-dtmf", "msm-voice-host-pcm"; "msm-pcm-dtmf", "msm-voice-host-pcm", "msm-compress-dsp"; asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&mi2s_prim>, <&mi2s_sec>, <&dtmf_tx>, <&rx_capture_tx>, <&rx_playback_rx>, Loading Loading @@ -911,12 +912,13 @@ qcom,auxpcm-interface-mode = "pri_pcm_master", "sec_pcm_master"; asoc-platform = <&pcm0>, <&pcm1>, <&voip>, <&voice>, <&loopback>, <&hostless>, <&afe>, <&routing>, <&pcm_dtmf>, <&host_pcm>; <&pcm_dtmf>, <&host_pcm>, <&compress>; asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1", "msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback", "msm-pcm-hostless", "msm-pcm-afe", "msm-pcm-routing", "msm-pcm-dtmf", "msm-voice-host-pcm"; "msm-pcm-dtmf", "msm-voice-host-pcm", "msm-compress-dsp"; asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&mi2s_prim>, <&mi2s_sec>, <&dtmf_tx>, <&rx_capture_tx>, <&rx_playback_rx>, Loading Loading @@ -999,6 +1001,11 @@ compatible = "qcom,msm-pcm-loopback"; }; compress: qcom,msm-compress-dsp { compatible = "qcom,msm-compress-dsp"; qcom,adsp-version = "MDSP 1.2"; }; qcom,msm-dai-stub { compatible = "qcom,msm-dai-stub"; dtmf_tx: qcom,msm-dai-stub-dtmf-tx { Loading sound/soc/msm/mdm9607.c +43 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,30 @@ static atomic_t sec_mi2s_ref_count; static int clk_users; static inline int param_is_mask(int p) { return (p >= SNDRV_PCM_HW_PARAM_FIRST_MASK) && (p <= SNDRV_PCM_HW_PARAM_LAST_MASK); } static inline struct snd_mask *param_to_mask(struct snd_pcm_hw_params *p, int n) { return &(p->masks[n - SNDRV_PCM_HW_PARAM_FIRST_MASK]); } static void param_set_mask(struct snd_pcm_hw_params *p, int n, unsigned bit) { if (bit >= SNDRV_MASK_MAX) return; if (param_is_mask(n)) { struct snd_mask *m = param_to_mask(p, n); m->bits[0] = 0; m->bits[1] = 0; m->bits[bit >> 5] |= (1 << (bit & 31)); } } static int mdm_enable_codec_ext_clk(struct snd_soc_codec *codec, int enable, bool dapm); Loading Loading @@ -581,6 +605,8 @@ static int mdm_mi2s_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rt, SNDRV_PCM_HW_PARAM_CHANNELS); rate->min = rate->max = mdm_mi2s_rate; channels->min = channels->max = mdm_mi2s_rx_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, SNDRV_PCM_FORMAT_S16_LE); return 0; } Loading Loading @@ -1637,6 +1663,23 @@ static struct snd_soc_dai_link mdm_dai[] = { .ignore_suspend = 1, .ignore_pmdown_time = 1, }, { .name = "MDM Compress1", .stream_name = "MultiMedia4", .cpu_dai_name = "MultiMedia4", .platform_name = "msm-compress-dsp", .dynamic = 1, .dpcm_playback = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .ignore_suspend = 1, .ignore_pmdown_time = 1, /* this dainlink has playback support */ .be_id = MSM_FRONTEND_DAI_MULTIMEDIA4, }, /* Backend DAI Links */ { .name = LPASS_BE_AFE_PCM_RX, Loading Loading
arch/arm/boot/dts/qcom/mdm9607.dtsi +11 −4 Original line number Diff line number Diff line Loading @@ -855,12 +855,13 @@ qcom,auxpcm-interface-mode = "pri_pcm_master", "sec_pcm_master"; asoc-platform = <&pcm0>, <&pcm1>, <&voip>, <&voice>, <&loopback>, <&hostless>, <&afe>, <&routing>, <&pcm_dtmf>, <&host_pcm>; <&pcm_dtmf>, <&host_pcm>, <&compress>; asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1", "msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback", "msm-pcm-hostless", "msm-pcm-afe", "msm-pcm-routing", "msm-pcm-dtmf", "msm-voice-host-pcm"; "msm-pcm-dtmf", "msm-voice-host-pcm", "msm-compress-dsp"; asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&mi2s_prim>, <&mi2s_sec>, <&dtmf_tx>, <&rx_capture_tx>, <&rx_playback_rx>, Loading Loading @@ -911,12 +912,13 @@ qcom,auxpcm-interface-mode = "pri_pcm_master", "sec_pcm_master"; asoc-platform = <&pcm0>, <&pcm1>, <&voip>, <&voice>, <&loopback>, <&hostless>, <&afe>, <&routing>, <&pcm_dtmf>, <&host_pcm>; <&pcm_dtmf>, <&host_pcm>, <&compress>; asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1", "msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback", "msm-pcm-hostless", "msm-pcm-afe", "msm-pcm-routing", "msm-pcm-dtmf", "msm-voice-host-pcm"; "msm-pcm-dtmf", "msm-voice-host-pcm", "msm-compress-dsp"; asoc-cpu = <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, <&mi2s_prim>, <&mi2s_sec>, <&dtmf_tx>, <&rx_capture_tx>, <&rx_playback_rx>, Loading Loading @@ -999,6 +1001,11 @@ compatible = "qcom,msm-pcm-loopback"; }; compress: qcom,msm-compress-dsp { compatible = "qcom,msm-compress-dsp"; qcom,adsp-version = "MDSP 1.2"; }; qcom,msm-dai-stub { compatible = "qcom,msm-dai-stub"; dtmf_tx: qcom,msm-dai-stub-dtmf-tx { Loading
sound/soc/msm/mdm9607.c +43 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,30 @@ static atomic_t sec_mi2s_ref_count; static int clk_users; static inline int param_is_mask(int p) { return (p >= SNDRV_PCM_HW_PARAM_FIRST_MASK) && (p <= SNDRV_PCM_HW_PARAM_LAST_MASK); } static inline struct snd_mask *param_to_mask(struct snd_pcm_hw_params *p, int n) { return &(p->masks[n - SNDRV_PCM_HW_PARAM_FIRST_MASK]); } static void param_set_mask(struct snd_pcm_hw_params *p, int n, unsigned bit) { if (bit >= SNDRV_MASK_MAX) return; if (param_is_mask(n)) { struct snd_mask *m = param_to_mask(p, n); m->bits[0] = 0; m->bits[1] = 0; m->bits[bit >> 5] |= (1 << (bit & 31)); } } static int mdm_enable_codec_ext_clk(struct snd_soc_codec *codec, int enable, bool dapm); Loading Loading @@ -581,6 +605,8 @@ static int mdm_mi2s_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rt, SNDRV_PCM_HW_PARAM_CHANNELS); rate->min = rate->max = mdm_mi2s_rate; channels->min = channels->max = mdm_mi2s_rx_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, SNDRV_PCM_FORMAT_S16_LE); return 0; } Loading Loading @@ -1637,6 +1663,23 @@ static struct snd_soc_dai_link mdm_dai[] = { .ignore_suspend = 1, .ignore_pmdown_time = 1, }, { .name = "MDM Compress1", .stream_name = "MultiMedia4", .cpu_dai_name = "MultiMedia4", .platform_name = "msm-compress-dsp", .dynamic = 1, .dpcm_playback = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .ignore_suspend = 1, .ignore_pmdown_time = 1, /* this dainlink has playback support */ .be_id = MSM_FRONTEND_DAI_MULTIMEDIA4, }, /* Backend DAI Links */ { .name = LPASS_BE_AFE_PCM_RX, Loading