@@ -389,100 +389,6 @@ static int mt8192_i2s_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
389389 return 0 ;
390390}
391391
392- static int
393- mt8192_mt6359_cap1_startup (struct snd_pcm_substream * substream )
394- {
395- static const unsigned int channels [] = {
396- 1 , 2 , 4
397- };
398- static const struct snd_pcm_hw_constraint_list constraints_channels = {
399- .count = ARRAY_SIZE (channels ),
400- .list = channels ,
401- .mask = 0 ,
402- };
403- static const unsigned int rates [] = {
404- 8000 , 16000 , 32000 , 48000 , 96000 , 192000
405- };
406- static const struct snd_pcm_hw_constraint_list constraints_rates = {
407- .count = ARRAY_SIZE (rates ),
408- .list = rates ,
409- .mask = 0 ,
410- };
411-
412- struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
413- struct snd_pcm_runtime * runtime = substream -> runtime ;
414- int ret ;
415-
416- ret = snd_pcm_hw_constraint_list (runtime , 0 ,
417- SNDRV_PCM_HW_PARAM_CHANNELS ,
418- & constraints_channels );
419- if (ret < 0 ) {
420- dev_err (rtd -> dev , "hw_constraint_list channels failed\n" );
421- return ret ;
422- }
423-
424- ret = snd_pcm_hw_constraint_list (runtime , 0 ,
425- SNDRV_PCM_HW_PARAM_RATE ,
426- & constraints_rates );
427- if (ret < 0 ) {
428- dev_err (rtd -> dev , "hw_constraint_list rate failed\n" );
429- return ret ;
430- }
431-
432- return 0 ;
433- }
434-
435- static const struct snd_soc_ops mt8192_mt6359_capture1_ops = {
436- .startup = mt8192_mt6359_cap1_startup ,
437- };
438-
439- static int
440- mt8192_mt6359_rt5682_startup (struct snd_pcm_substream * substream )
441- {
442- static const unsigned int channels [] = {
443- 1 , 2
444- };
445- static const struct snd_pcm_hw_constraint_list constraints_channels = {
446- .count = ARRAY_SIZE (channels ),
447- .list = channels ,
448- .mask = 0 ,
449- };
450- static const unsigned int rates [] = {
451- 48000
452- };
453- static const struct snd_pcm_hw_constraint_list constraints_rates = {
454- .count = ARRAY_SIZE (rates ),
455- .list = rates ,
456- .mask = 0 ,
457- };
458-
459- struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
460- struct snd_pcm_runtime * runtime = substream -> runtime ;
461- int ret ;
462-
463- ret = snd_pcm_hw_constraint_list (runtime , 0 ,
464- SNDRV_PCM_HW_PARAM_CHANNELS ,
465- & constraints_channels );
466- if (ret < 0 ) {
467- dev_err (rtd -> dev , "hw_constraint_list channels failed\n" );
468- return ret ;
469- }
470-
471- ret = snd_pcm_hw_constraint_list (runtime , 0 ,
472- SNDRV_PCM_HW_PARAM_RATE ,
473- & constraints_rates );
474- if (ret < 0 ) {
475- dev_err (rtd -> dev , "hw_constraint_list rate failed\n" );
476- return ret ;
477- }
478-
479- return 0 ;
480- }
481-
482- static const struct snd_soc_ops mt8192_mt6359_rt5682_ops = {
483- .startup = mt8192_mt6359_rt5682_startup ,
484- };
485-
486392/* FE */
487393SND_SOC_DAILINK_DEFS (playback1 ,
488394 DAILINK_COMP_ARRAY (COMP_CPU ("DL1" )),
@@ -720,7 +626,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
720626 SND_SOC_DPCM_TRIGGER_PRE },
721627 .dynamic = 1 ,
722628 .dpcm_playback = 1 ,
723- .ops = & mt8192_mt6359_rt5682_ops ,
629+ .ops = & mtk_soundcard_common_playback_ops ,
724630 SND_SOC_DAILINK_REG (playback3 ),
725631 },
726632 {
@@ -784,7 +690,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
784690 SND_SOC_DPCM_TRIGGER_PRE },
785691 .dynamic = 1 ,
786692 .dpcm_capture = 1 ,
787- .ops = & mt8192_mt6359_capture1_ops ,
693+ .ops = & mtk_soundcard_common_capture_ops ,
788694 SND_SOC_DAILINK_REG (capture1 ),
789695 },
790696 {
@@ -794,7 +700,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
794700 SND_SOC_DPCM_TRIGGER_PRE },
795701 .dynamic = 1 ,
796702 .dpcm_capture = 1 ,
797- .ops = & mt8192_mt6359_rt5682_ops ,
703+ .ops = & mtk_soundcard_common_playback_ops ,
798704 SND_SOC_DAILINK_REG (capture2 ),
799705 },
800706 {
@@ -1146,7 +1052,7 @@ static int mt8192_mt6359_legacy_probe(struct mtk_soc_card_data *soc_card_data)
11461052 struct device * dev = card -> dev ;
11471053 struct device_node * hdmi_codec , * headset_codec , * speaker_codec ;
11481054 struct snd_soc_dai_link * dai_link ;
1149- int ret , i ;
1055+ int i , ret = 0 ;
11501056
11511057 hdmi_codec = of_parse_phandle (dev -> of_node , "mediatek,hdmi-codec" , 0 );
11521058 if (!hdmi_codec )
@@ -1235,11 +1141,44 @@ static int mt8192_mt6359_soc_card_probe(struct mtk_soc_card_data *soc_card_data,
12351141 return 0 ;
12361142}
12371143
1144+ static const unsigned int mt8192_pcm_playback_channels [] = { 1 , 2 };
1145+ static const unsigned int mt8192_pcm_playback_rates [] = { 48000 };
1146+
1147+ static const unsigned int mt8192_pcm_capture_channels [] = { 1 , 2 , 4 };
1148+ static const unsigned int mt8192_pcm_capture_rates [] = {
1149+ 8000 , 16000 , 32000 , 48000 , 96000 , 192000
1150+ };
1151+
1152+ static const struct mtk_pcm_constraints_data mt8192_pcm_constraints [MTK_CONSTRAINT_CAPTURE + 1 ] = {
1153+ [MTK_CONSTRAINT_PLAYBACK ] = {
1154+ .channels = & (const struct snd_pcm_hw_constraint_list ) {
1155+ .list = mt8192_pcm_playback_channels ,
1156+ .count = ARRAY_SIZE (mt8192_pcm_playback_channels )
1157+ },
1158+ .rates = & (const struct snd_pcm_hw_constraint_list ) {
1159+ .list = mt8192_pcm_playback_rates ,
1160+ .count = ARRAY_SIZE (mt8192_pcm_playback_rates )
1161+ }
1162+ },
1163+ [MTK_CONSTRAINT_CAPTURE ] = {
1164+ .channels = & (const struct snd_pcm_hw_constraint_list ) {
1165+ .list = mt8192_pcm_capture_channels ,
1166+ .count = ARRAY_SIZE (mt8192_pcm_capture_channels )
1167+ },
1168+ .rates = & (const struct snd_pcm_hw_constraint_list ) {
1169+ .list = mt8192_pcm_capture_rates ,
1170+ .count = ARRAY_SIZE (mt8192_pcm_capture_rates )
1171+ }
1172+ }
1173+ };
1174+
12381175static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015_rt5682_pdata = {
12391176 .card_name = RT1015_RT5682_CARD_NAME ,
12401177 .card_data = & (struct mtk_platform_card_data ) {
12411178 .card = & mt8192_mt6359_rt1015_rt5682_card ,
12421179 .num_jacks = MT8192_JACK_MAX ,
1180+ .pcm_constraints = mt8192_pcm_constraints ,
1181+ .num_pcm_constraints = ARRAY_SIZE (mt8192_pcm_constraints ),
12431182 },
12441183 .soc_probe = mt8192_mt6359_soc_card_probe
12451184};
@@ -1249,6 +1188,8 @@ static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015p_rt5682_pdata = {
12491188 .card_data = & (struct mtk_platform_card_data ) {
12501189 .card = & mt8192_mt6359_rt1015p_rt5682x_card ,
12511190 .num_jacks = MT8192_JACK_MAX ,
1191+ .pcm_constraints = mt8192_pcm_constraints ,
1192+ .num_pcm_constraints = ARRAY_SIZE (mt8192_pcm_constraints ),
12521193 },
12531194 .soc_probe = mt8192_mt6359_soc_card_probe
12541195};
@@ -1258,6 +1199,8 @@ static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015p_rt5682s_pdata = {
12581199 .card_data = & (struct mtk_platform_card_data ) {
12591200 .card = & mt8192_mt6359_rt1015p_rt5682x_card ,
12601201 .num_jacks = MT8192_JACK_MAX ,
1202+ .pcm_constraints = mt8192_pcm_constraints ,
1203+ .num_pcm_constraints = ARRAY_SIZE (mt8192_pcm_constraints ),
12611204 },
12621205 .soc_probe = mt8192_mt6359_soc_card_probe
12631206};
0 commit comments