Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

SoC: Cleanup MediaTek soundcard machine drivers

Merge series from AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>:

This is the start of a series cleaning up the Mediatek drivers with some
preparatory cleanups and improvements.

+171 -583
+2
sound/soc/mediatek/common/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 # platform driver 3 3 snd-soc-mtk-common-objs := mtk-afe-platform-driver.o mtk-afe-fe-dai.o mtk-dsp-sof-common.o mtk-soundcard-driver.o 4 + snd-soc-mtk-common-objs += mtk-dai-adda-common.o 5 + 4 6 obj-$(CONFIG_SND_SOC_MEDIATEK) += snd-soc-mtk-common.o 5 7 6 8 obj-$(CONFIG_SND_SOC_MTK_BTCVSD) += mtk-btcvsd.o
+70
sound/soc/mediatek/common/mtk-dai-adda-common.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * MediaTek ALSA SoC Audio DAI ADDA Common 4 + * 5 + * Copyright (c) 2021 MediaTek Inc. 6 + * Copyright (c) 2024 Collabora Ltd. 7 + * AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> 8 + */ 9 + 10 + #include <linux/delay.h> 11 + #include <linux/dev_printk.h> 12 + 13 + #include "mtk-base-afe.h" 14 + #include "mtk-dai-adda-common.h" 15 + 16 + unsigned int mtk_adda_dl_rate_transform(struct mtk_base_afe *afe, u32 rate) 17 + { 18 + switch (rate) { 19 + case 8000: 20 + return MTK_AFE_ADDA_DL_RATE_8K; 21 + case 11025: 22 + return MTK_AFE_ADDA_DL_RATE_11K; 23 + case 12000: 24 + return MTK_AFE_ADDA_DL_RATE_12K; 25 + case 16000: 26 + return MTK_AFE_ADDA_DL_RATE_16K; 27 + case 22050: 28 + return MTK_AFE_ADDA_DL_RATE_22K; 29 + case 24000: 30 + return MTK_AFE_ADDA_DL_RATE_24K; 31 + case 32000: 32 + return MTK_AFE_ADDA_DL_RATE_32K; 33 + case 44100: 34 + return MTK_AFE_ADDA_DL_RATE_44K; 35 + case 48000: 36 + return MTK_AFE_ADDA_DL_RATE_48K; 37 + case 96000: 38 + return MTK_AFE_ADDA_DL_RATE_96K; 39 + case 192000: 40 + return MTK_AFE_ADDA_DL_RATE_192K; 41 + default: 42 + dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 43 + __func__, rate); 44 + return MTK_AFE_ADDA_DL_RATE_48K; 45 + } 46 + } 47 + EXPORT_SYMBOL_GPL(mtk_adda_dl_rate_transform); 48 + 49 + unsigned int mtk_adda_ul_rate_transform(struct mtk_base_afe *afe, u32 rate) 50 + { 51 + switch (rate) { 52 + case 8000: 53 + return MTK_AFE_ADDA_UL_RATE_8K; 54 + case 16000: 55 + return MTK_AFE_ADDA_UL_RATE_16K; 56 + case 32000: 57 + return MTK_AFE_ADDA_UL_RATE_32K; 58 + case 48000: 59 + return MTK_AFE_ADDA_UL_RATE_48K; 60 + case 96000: 61 + return MTK_AFE_ADDA_UL_RATE_96K; 62 + case 192000: 63 + return MTK_AFE_ADDA_UL_RATE_192K; 64 + default: 65 + dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 66 + __func__, rate); 67 + return MTK_AFE_ADDA_UL_RATE_48K; 68 + } 69 + } 70 + EXPORT_SYMBOL_GPL(mtk_adda_ul_rate_transform);
+45
sound/soc/mediatek/common/mtk-dai-adda-common.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2021 MediaTek Inc. 4 + * Copyright (c) 2024 Collabora Ltd. 5 + * AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> 6 + */ 7 + 8 + #ifndef _MTK_DAI_ADDA_COMMON_H_ 9 + #define _MTK_DAI_ADDA_COMMON_H_ 10 + 11 + struct mtk_base_afe; 12 + 13 + enum adda_input_mode_rate { 14 + MTK_AFE_ADDA_DL_RATE_8K = 0, 15 + MTK_AFE_ADDA_DL_RATE_11K = 1, 16 + MTK_AFE_ADDA_DL_RATE_12K = 2, 17 + MTK_AFE_ADDA_DL_RATE_16K = 3, 18 + MTK_AFE_ADDA_DL_RATE_22K = 4, 19 + MTK_AFE_ADDA_DL_RATE_24K = 5, 20 + MTK_AFE_ADDA_DL_RATE_32K = 6, 21 + MTK_AFE_ADDA_DL_RATE_44K = 7, 22 + MTK_AFE_ADDA_DL_RATE_48K = 8, 23 + MTK_AFE_ADDA_DL_RATE_96K = 9, 24 + MTK_AFE_ADDA_DL_RATE_192K = 10, 25 + }; 26 + 27 + enum adda_voice_mode_rate { 28 + MTK_AFE_ADDA_UL_RATE_8K = 0, 29 + MTK_AFE_ADDA_UL_RATE_16K = 1, 30 + MTK_AFE_ADDA_UL_RATE_32K = 2, 31 + MTK_AFE_ADDA_UL_RATE_48K = 3, 32 + MTK_AFE_ADDA_UL_RATE_96K = 4, 33 + MTK_AFE_ADDA_UL_RATE_192K = 5, 34 + MTK_AFE_ADDA_UL_RATE_48K_HD = 6, 35 + }; 36 + 37 + enum adda_rxif_delay_data { 38 + DELAY_DATA_MISO1 = 0, 39 + DELAY_DATA_MISO0 = 1, 40 + DELAY_DATA_MISO2 = 1, 41 + }; 42 + 43 + unsigned int mtk_adda_dl_rate_transform(struct mtk_base_afe *afe, u32 rate); 44 + unsigned int mtk_adda_ul_rate_transform(struct mtk_base_afe *afe, u32 rate); 45 + #endif
+5 -1
sound/soc/mediatek/common/mtk-soundcard-driver.c
··· 22 22 23 23 codec_node = of_get_child_by_name(sub_node, "codec"); 24 24 if (!codec_node) { 25 - dev_dbg(dev, "%s no specified codec\n", dai_link->name); 25 + dev_dbg(dev, "%s no specified codec: setting dummy.\n", dai_link->name); 26 + 27 + dai_link->codecs = &snd_soc_dummy_dlc; 28 + dai_link->num_codecs = 1; 29 + dai_link->dynamic = 1; 26 30 return 0; 27 31 } 28 32
+3 -82
sound/soc/mediatek/mt6797/mt6797-dai-adda.c
··· 10 10 #include "mt6797-afe-common.h" 11 11 #include "mt6797-interconnection.h" 12 12 #include "mt6797-reg.h" 13 - 14 - enum { 15 - MTK_AFE_ADDA_DL_RATE_8K = 0, 16 - MTK_AFE_ADDA_DL_RATE_11K = 1, 17 - MTK_AFE_ADDA_DL_RATE_12K = 2, 18 - MTK_AFE_ADDA_DL_RATE_16K = 3, 19 - MTK_AFE_ADDA_DL_RATE_22K = 4, 20 - MTK_AFE_ADDA_DL_RATE_24K = 5, 21 - MTK_AFE_ADDA_DL_RATE_32K = 6, 22 - MTK_AFE_ADDA_DL_RATE_44K = 7, 23 - MTK_AFE_ADDA_DL_RATE_48K = 8, 24 - MTK_AFE_ADDA_DL_RATE_96K = 9, 25 - MTK_AFE_ADDA_DL_RATE_192K = 10, 26 - }; 27 - 28 - enum { 29 - MTK_AFE_ADDA_UL_RATE_8K = 0, 30 - MTK_AFE_ADDA_UL_RATE_16K = 1, 31 - MTK_AFE_ADDA_UL_RATE_32K = 2, 32 - MTK_AFE_ADDA_UL_RATE_48K = 3, 33 - MTK_AFE_ADDA_UL_RATE_96K = 4, 34 - MTK_AFE_ADDA_UL_RATE_192K = 5, 35 - MTK_AFE_ADDA_UL_RATE_48K_HD = 6, 36 - }; 37 - 38 - static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe, 39 - unsigned int rate) 40 - { 41 - switch (rate) { 42 - case 8000: 43 - return MTK_AFE_ADDA_DL_RATE_8K; 44 - case 11025: 45 - return MTK_AFE_ADDA_DL_RATE_11K; 46 - case 12000: 47 - return MTK_AFE_ADDA_DL_RATE_12K; 48 - case 16000: 49 - return MTK_AFE_ADDA_DL_RATE_16K; 50 - case 22050: 51 - return MTK_AFE_ADDA_DL_RATE_22K; 52 - case 24000: 53 - return MTK_AFE_ADDA_DL_RATE_24K; 54 - case 32000: 55 - return MTK_AFE_ADDA_DL_RATE_32K; 56 - case 44100: 57 - return MTK_AFE_ADDA_DL_RATE_44K; 58 - case 48000: 59 - return MTK_AFE_ADDA_DL_RATE_48K; 60 - case 96000: 61 - return MTK_AFE_ADDA_DL_RATE_96K; 62 - case 192000: 63 - return MTK_AFE_ADDA_DL_RATE_192K; 64 - default: 65 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 66 - __func__, rate); 67 - return MTK_AFE_ADDA_DL_RATE_48K; 68 - } 69 - } 70 - 71 - static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe, 72 - unsigned int rate) 73 - { 74 - switch (rate) { 75 - case 8000: 76 - return MTK_AFE_ADDA_UL_RATE_8K; 77 - case 16000: 78 - return MTK_AFE_ADDA_UL_RATE_16K; 79 - case 32000: 80 - return MTK_AFE_ADDA_UL_RATE_32K; 81 - case 48000: 82 - return MTK_AFE_ADDA_UL_RATE_48K; 83 - case 96000: 84 - return MTK_AFE_ADDA_UL_RATE_96K; 85 - case 192000: 86 - return MTK_AFE_ADDA_UL_RATE_192K; 87 - default: 88 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 89 - __func__, rate); 90 - return MTK_AFE_ADDA_UL_RATE_48K; 91 - } 92 - } 13 + #include "../common/mtk-dai-adda-common.h" 93 14 94 15 /* dai component */ 95 16 static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = { ··· 167 246 regmap_write(afe->regmap, AFE_ADDA_PREDIS_CON1, 0); 168 247 169 248 /* set input sampling rate */ 170 - dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 28; 249 + dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 28; 171 250 172 251 /* set output mode */ 173 252 switch (rate) { ··· 217 296 0x1 << 0, 218 297 0x0 << 0); 219 298 220 - voice_mode = adda_ul_rate_transform(afe, rate); 299 + voice_mode = mtk_adda_ul_rate_transform(afe, rate); 221 300 222 301 ul_src_con0 |= (voice_mode << 17) & (0x7 << 17); 223 302
+3 -87
sound/soc/mediatek/mt8183/mt8183-dai-adda.c
··· 10 10 #include "mt8183-afe-common.h" 11 11 #include "mt8183-interconnection.h" 12 12 #include "mt8183-reg.h" 13 + #include "../common/mtk-dai-adda-common.h" 13 14 14 15 enum { 15 16 AUDIO_SDM_LEVEL_MUTE = 0, ··· 18 17 /* if you change level normal */ 19 18 /* you need to change formula of hp impedance and dc trim too */ 20 19 }; 21 - 22 - enum { 23 - DELAY_DATA_MISO1 = 0, 24 - DELAY_DATA_MISO2, 25 - }; 26 - 27 - enum { 28 - MTK_AFE_ADDA_DL_RATE_8K = 0, 29 - MTK_AFE_ADDA_DL_RATE_11K = 1, 30 - MTK_AFE_ADDA_DL_RATE_12K = 2, 31 - MTK_AFE_ADDA_DL_RATE_16K = 3, 32 - MTK_AFE_ADDA_DL_RATE_22K = 4, 33 - MTK_AFE_ADDA_DL_RATE_24K = 5, 34 - MTK_AFE_ADDA_DL_RATE_32K = 6, 35 - MTK_AFE_ADDA_DL_RATE_44K = 7, 36 - MTK_AFE_ADDA_DL_RATE_48K = 8, 37 - MTK_AFE_ADDA_DL_RATE_96K = 9, 38 - MTK_AFE_ADDA_DL_RATE_192K = 10, 39 - }; 40 - 41 - enum { 42 - MTK_AFE_ADDA_UL_RATE_8K = 0, 43 - MTK_AFE_ADDA_UL_RATE_16K = 1, 44 - MTK_AFE_ADDA_UL_RATE_32K = 2, 45 - MTK_AFE_ADDA_UL_RATE_48K = 3, 46 - MTK_AFE_ADDA_UL_RATE_96K = 4, 47 - MTK_AFE_ADDA_UL_RATE_192K = 5, 48 - MTK_AFE_ADDA_UL_RATE_48K_HD = 6, 49 - }; 50 - 51 - static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe, 52 - unsigned int rate) 53 - { 54 - switch (rate) { 55 - case 8000: 56 - return MTK_AFE_ADDA_DL_RATE_8K; 57 - case 11025: 58 - return MTK_AFE_ADDA_DL_RATE_11K; 59 - case 12000: 60 - return MTK_AFE_ADDA_DL_RATE_12K; 61 - case 16000: 62 - return MTK_AFE_ADDA_DL_RATE_16K; 63 - case 22050: 64 - return MTK_AFE_ADDA_DL_RATE_22K; 65 - case 24000: 66 - return MTK_AFE_ADDA_DL_RATE_24K; 67 - case 32000: 68 - return MTK_AFE_ADDA_DL_RATE_32K; 69 - case 44100: 70 - return MTK_AFE_ADDA_DL_RATE_44K; 71 - case 48000: 72 - return MTK_AFE_ADDA_DL_RATE_48K; 73 - case 96000: 74 - return MTK_AFE_ADDA_DL_RATE_96K; 75 - case 192000: 76 - return MTK_AFE_ADDA_DL_RATE_192K; 77 - default: 78 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 79 - __func__, rate); 80 - return MTK_AFE_ADDA_DL_RATE_48K; 81 - } 82 - } 83 - 84 - static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe, 85 - unsigned int rate) 86 - { 87 - switch (rate) { 88 - case 8000: 89 - return MTK_AFE_ADDA_UL_RATE_8K; 90 - case 16000: 91 - return MTK_AFE_ADDA_UL_RATE_16K; 92 - case 32000: 93 - return MTK_AFE_ADDA_UL_RATE_32K; 94 - case 48000: 95 - return MTK_AFE_ADDA_UL_RATE_48K; 96 - case 96000: 97 - return MTK_AFE_ADDA_UL_RATE_96K; 98 - case 192000: 99 - return MTK_AFE_ADDA_UL_RATE_192K; 100 - default: 101 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 102 - __func__, rate); 103 - return MTK_AFE_ADDA_UL_RATE_48K; 104 - } 105 - } 106 20 107 21 /* dai component */ 108 22 static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = { ··· 285 369 regmap_write(afe->regmap, AFE_ADDA_PREDIS_CON1, 0); 286 370 287 371 /* set sampling rate */ 288 - dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 28; 372 + dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 28; 289 373 290 374 /* set output mode */ 291 375 switch (rate) { ··· 336 420 0x1 << 0, 337 421 0x0 << 0); 338 422 339 - voice_mode = adda_ul_rate_transform(afe, rate); 423 + voice_mode = mtk_adda_ul_rate_transform(afe, rate); 340 424 341 425 ul_src_con0 |= (voice_mode << 17) & (0x7 << 17); 342 426
+3 -89
sound/soc/mediatek/mt8186/mt8186-dai-adda.c
··· 11 11 #include "mt8186-afe-common.h" 12 12 #include "mt8186-afe-gpio.h" 13 13 #include "mt8186-interconnection.h" 14 + #include "../common/mtk-dai-adda-common.h" 14 15 15 16 enum { 16 17 UL_IIR_SW = 0, ··· 34 33 AUDIO_SDM_3RD, 35 34 }; 36 35 37 - enum { 38 - DELAY_DATA_MISO1 = 0, 39 - DELAY_DATA_MISO2, 40 - }; 41 - 42 - enum { 43 - MTK_AFE_ADDA_DL_RATE_8K = 0, 44 - MTK_AFE_ADDA_DL_RATE_11K = 1, 45 - MTK_AFE_ADDA_DL_RATE_12K = 2, 46 - MTK_AFE_ADDA_DL_RATE_16K = 3, 47 - MTK_AFE_ADDA_DL_RATE_22K = 4, 48 - MTK_AFE_ADDA_DL_RATE_24K = 5, 49 - MTK_AFE_ADDA_DL_RATE_32K = 6, 50 - MTK_AFE_ADDA_DL_RATE_44K = 7, 51 - MTK_AFE_ADDA_DL_RATE_48K = 8, 52 - MTK_AFE_ADDA_DL_RATE_96K = 9, 53 - MTK_AFE_ADDA_DL_RATE_192K = 10, 54 - }; 55 - 56 - enum { 57 - MTK_AFE_ADDA_UL_RATE_8K = 0, 58 - MTK_AFE_ADDA_UL_RATE_16K = 1, 59 - MTK_AFE_ADDA_UL_RATE_32K = 2, 60 - MTK_AFE_ADDA_UL_RATE_48K = 3, 61 - MTK_AFE_ADDA_UL_RATE_96K = 4, 62 - MTK_AFE_ADDA_UL_RATE_192K = 5, 63 - MTK_AFE_ADDA_UL_RATE_48K_HD = 6, 64 - }; 65 - 66 36 #define SDM_AUTO_RESET_THRESHOLD 0x190000 67 37 68 38 struct mtk_afe_adda_priv { ··· 53 81 return NULL; 54 82 55 83 return afe_priv->dai_priv[dai_id]; 56 - } 57 - 58 - static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe, 59 - unsigned int rate) 60 - { 61 - switch (rate) { 62 - case 8000: 63 - return MTK_AFE_ADDA_DL_RATE_8K; 64 - case 11025: 65 - return MTK_AFE_ADDA_DL_RATE_11K; 66 - case 12000: 67 - return MTK_AFE_ADDA_DL_RATE_12K; 68 - case 16000: 69 - return MTK_AFE_ADDA_DL_RATE_16K; 70 - case 22050: 71 - return MTK_AFE_ADDA_DL_RATE_22K; 72 - case 24000: 73 - return MTK_AFE_ADDA_DL_RATE_24K; 74 - case 32000: 75 - return MTK_AFE_ADDA_DL_RATE_32K; 76 - case 44100: 77 - return MTK_AFE_ADDA_DL_RATE_44K; 78 - case 48000: 79 - return MTK_AFE_ADDA_DL_RATE_48K; 80 - case 96000: 81 - return MTK_AFE_ADDA_DL_RATE_96K; 82 - case 192000: 83 - return MTK_AFE_ADDA_DL_RATE_192K; 84 - default: 85 - dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 86 - __func__, rate); 87 - } 88 - 89 - return MTK_AFE_ADDA_DL_RATE_48K; 90 - } 91 - 92 - static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe, 93 - unsigned int rate) 94 - { 95 - switch (rate) { 96 - case 8000: 97 - return MTK_AFE_ADDA_UL_RATE_8K; 98 - case 16000: 99 - return MTK_AFE_ADDA_UL_RATE_16K; 100 - case 32000: 101 - return MTK_AFE_ADDA_UL_RATE_32K; 102 - case 48000: 103 - return MTK_AFE_ADDA_UL_RATE_48K; 104 - case 96000: 105 - return MTK_AFE_ADDA_UL_RATE_96K; 106 - case 192000: 107 - return MTK_AFE_ADDA_UL_RATE_192K; 108 - default: 109 - dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 110 - __func__, rate); 111 - } 112 - 113 - return MTK_AFE_ADDA_UL_RATE_48K; 114 84 } 115 85 116 86 /* dai component */ ··· 572 658 adda_priv->dl_rate = rate; 573 659 574 660 /* set sampling rate */ 575 - dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 661 + dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 576 662 DL_2_INPUT_MODE_CTL_SFT; 577 663 578 664 /* set output mode, UP_SAMPLING_RATE_X8 */ ··· 635 721 } 636 722 } else { 637 723 unsigned int ul_src_con0 = 0; 638 - unsigned int voice_mode = adda_ul_rate_transform(afe, rate); 724 + unsigned int voice_mode = mtk_adda_ul_rate_transform(afe, rate); 639 725 640 726 adda_priv->ul_rate = rate; 641 727 ul_src_con0 |= (voice_mode << 17) & (0x7 << 17);
+3 -86
sound/soc/mediatek/mt8188/mt8188-dai-adda.c
··· 14 14 #include "mt8188-afe-clk.h" 15 15 #include "mt8188-afe-common.h" 16 16 #include "mt8188-reg.h" 17 + #include "../common/mtk-dai-adda-common.h" 17 18 18 19 #define ADDA_HIRES_THRES 48000 19 20 ··· 25 24 SUPPLY_SEQ_ADDA_AFE_ON, 26 25 }; 27 26 28 - enum { 29 - MTK_AFE_ADDA_DL_RATE_8K = 0, 30 - MTK_AFE_ADDA_DL_RATE_11K = 1, 31 - MTK_AFE_ADDA_DL_RATE_12K = 2, 32 - MTK_AFE_ADDA_DL_RATE_16K = 3, 33 - MTK_AFE_ADDA_DL_RATE_22K = 4, 34 - MTK_AFE_ADDA_DL_RATE_24K = 5, 35 - MTK_AFE_ADDA_DL_RATE_32K = 6, 36 - MTK_AFE_ADDA_DL_RATE_44K = 7, 37 - MTK_AFE_ADDA_DL_RATE_48K = 8, 38 - MTK_AFE_ADDA_DL_RATE_96K = 9, 39 - MTK_AFE_ADDA_DL_RATE_192K = 10, 40 - }; 41 - 42 - enum { 43 - MTK_AFE_ADDA_UL_RATE_8K = 0, 44 - MTK_AFE_ADDA_UL_RATE_16K = 1, 45 - MTK_AFE_ADDA_UL_RATE_32K = 2, 46 - MTK_AFE_ADDA_UL_RATE_48K = 3, 47 - MTK_AFE_ADDA_UL_RATE_96K = 4, 48 - MTK_AFE_ADDA_UL_RATE_192K = 5, 49 - }; 50 - 51 - enum { 52 - DELAY_DATA_MISO1 = 0, 53 - DELAY_DATA_MISO0 = 1, 54 - }; 55 - 56 27 struct mtk_dai_adda_priv { 57 28 bool hires_required; 58 29 }; 59 - 60 - static unsigned int afe_adda_dl_rate_transform(struct mtk_base_afe *afe, 61 - unsigned int rate) 62 - { 63 - switch (rate) { 64 - case 8000: 65 - return MTK_AFE_ADDA_DL_RATE_8K; 66 - case 11025: 67 - return MTK_AFE_ADDA_DL_RATE_11K; 68 - case 12000: 69 - return MTK_AFE_ADDA_DL_RATE_12K; 70 - case 16000: 71 - return MTK_AFE_ADDA_DL_RATE_16K; 72 - case 22050: 73 - return MTK_AFE_ADDA_DL_RATE_22K; 74 - case 24000: 75 - return MTK_AFE_ADDA_DL_RATE_24K; 76 - case 32000: 77 - return MTK_AFE_ADDA_DL_RATE_32K; 78 - case 44100: 79 - return MTK_AFE_ADDA_DL_RATE_44K; 80 - case 48000: 81 - return MTK_AFE_ADDA_DL_RATE_48K; 82 - case 96000: 83 - return MTK_AFE_ADDA_DL_RATE_96K; 84 - case 192000: 85 - return MTK_AFE_ADDA_DL_RATE_192K; 86 - default: 87 - dev_info(afe->dev, "%s(), rate %u invalid, use 48kHz!!!\n", 88 - __func__, rate); 89 - return MTK_AFE_ADDA_DL_RATE_48K; 90 - } 91 - } 92 - 93 - static unsigned int afe_adda_ul_rate_transform(struct mtk_base_afe *afe, 94 - unsigned int rate) 95 - { 96 - switch (rate) { 97 - case 8000: 98 - return MTK_AFE_ADDA_UL_RATE_8K; 99 - case 16000: 100 - return MTK_AFE_ADDA_UL_RATE_16K; 101 - case 32000: 102 - return MTK_AFE_ADDA_UL_RATE_32K; 103 - case 48000: 104 - return MTK_AFE_ADDA_UL_RATE_48K; 105 - case 96000: 106 - return MTK_AFE_ADDA_UL_RATE_96K; 107 - case 192000: 108 - return MTK_AFE_ADDA_UL_RATE_192K; 109 - default: 110 - dev_info(afe->dev, "%s(), rate %u invalid, use 48kHz!!!\n", 111 - __func__, rate); 112 - return MTK_AFE_ADDA_UL_RATE_48K; 113 - } 114 - } 115 30 116 31 static int mt8188_adda_mtkaif_init(struct mtk_base_afe *afe) 117 32 { ··· 357 440 /* set sampling rate */ 358 441 mask |= DL_2_INPUT_MODE_CTL_MASK; 359 442 val |= FIELD_PREP(DL_2_INPUT_MODE_CTL_MASK, 360 - afe_adda_dl_rate_transform(afe, rate)); 443 + mtk_adda_dl_rate_transform(afe, rate)); 361 444 362 445 /* turn off saturation */ 363 446 mask |= DL_2_CH1_SATURATION_EN_CTL; ··· 391 474 392 475 mask = UL_VOICE_MODE_CTL_MASK; 393 476 val = FIELD_PREP(UL_VOICE_MODE_CTL_MASK, 394 - afe_adda_ul_rate_transform(afe, rate)); 477 + mtk_adda_ul_rate_transform(afe, rate)); 395 478 396 479 regmap_update_bits(afe->regmap, AFE_ADDA_UL_SRC_CON0, 397 480 mask, val);
+31 -64
sound/soc/mediatek/mt8192/mt8192-afe-pcm.c
··· 2205 2205 2206 2206 /* reset controller to reset audio regs before regmap cache */ 2207 2207 rstc = devm_reset_control_get_exclusive(dev, "audiosys"); 2208 - if (IS_ERR(rstc)) { 2209 - ret = PTR_ERR(rstc); 2210 - dev_err(dev, "could not get audiosys reset:%d\n", ret); 2211 - return ret; 2212 - } 2208 + if (IS_ERR(rstc)) 2209 + return dev_err_probe(dev, PTR_ERR(rstc), "could not get audiosys reset\n"); 2213 2210 2214 2211 ret = reset_control_reset(rstc); 2215 - if (ret) { 2216 - dev_err(dev, "failed to trigger audio reset:%d\n", ret); 2217 - return ret; 2218 - } 2212 + if (ret) 2213 + return dev_err_probe(dev, ret, "failed to trigger audio reset\n"); 2219 2214 2220 - pm_runtime_enable(&pdev->dev); 2221 - if (!pm_runtime_enabled(&pdev->dev)) 2222 - goto err_pm_disable; 2215 + ret = devm_pm_runtime_enable(&pdev->dev); 2216 + if (ret) 2217 + return ret; 2223 2218 2224 2219 /* regmap init */ 2225 2220 afe->regmap = syscon_node_to_regmap(dev->parent->of_node); 2226 - if (IS_ERR(afe->regmap)) { 2227 - dev_err(dev, "could not get regmap from parent\n"); 2228 - ret = PTR_ERR(afe->regmap); 2229 - goto err_pm_disable; 2230 - } 2221 + if (IS_ERR(afe->regmap)) 2222 + return dev_err_probe(dev, PTR_ERR(afe->regmap), 2223 + "could not get regmap from parent"); 2224 + 2231 2225 ret = regmap_attach_dev(dev, afe->regmap, &mt8192_afe_regmap_config); 2232 - if (ret) { 2233 - dev_warn(dev, "regmap_attach_dev fail, ret %d\n", ret); 2234 - goto err_pm_disable; 2235 - } 2226 + if (ret) 2227 + return dev_err_probe(dev, ret, "regmap_attach_dev fail\n"); 2236 2228 2237 2229 /* enable clock for regcache get default value from hw */ 2238 2230 afe_priv->pm_runtime_bypass_reg_ctl = true; 2239 2231 pm_runtime_get_sync(&pdev->dev); 2240 2232 2241 2233 ret = regmap_reinit_cache(afe->regmap, &mt8192_afe_regmap_config); 2242 - if (ret) { 2243 - dev_err(dev, "regmap_reinit_cache fail, ret %d\n", ret); 2244 - goto err_pm_disable; 2245 - } 2234 + if (ret) 2235 + return dev_err_probe(dev, ret, "regmap_reinit_cache fail\n"); 2246 2236 2247 2237 pm_runtime_put_sync(&pdev->dev); 2248 2238 afe_priv->pm_runtime_bypass_reg_ctl = false; ··· 2244 2254 afe->memif_size = MT8192_MEMIF_NUM; 2245 2255 afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif), 2246 2256 GFP_KERNEL); 2247 - if (!afe->memif) { 2248 - ret = -ENOMEM; 2249 - goto err_pm_disable; 2250 - } 2257 + if (!afe->memif) 2258 + return -ENOMEM; 2251 2259 2252 2260 for (i = 0; i < afe->memif_size; i++) { 2253 2261 afe->memif[i].data = &memif_data[i]; ··· 2259 2271 afe->irqs_size = MT8192_IRQ_NUM; 2260 2272 afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs), 2261 2273 GFP_KERNEL); 2262 - if (!afe->irqs) { 2263 - ret = -ENOMEM; 2264 - goto err_pm_disable; 2265 - } 2274 + if (!afe->irqs) 2275 + return -ENOMEM; 2266 2276 2267 2277 for (i = 0; i < afe->irqs_size; i++) 2268 2278 afe->irqs[i].irq_data = &irq_data[i]; 2269 2279 2270 2280 /* request irq */ 2271 2281 irq_id = platform_get_irq(pdev, 0); 2272 - if (irq_id < 0) { 2273 - ret = irq_id; 2274 - goto err_pm_disable; 2275 - } 2282 + if (irq_id < 0) 2283 + return irq_id; 2276 2284 2277 2285 ret = devm_request_irq(dev, irq_id, mt8192_afe_irq_handler, 2278 2286 IRQF_TRIGGER_NONE, "asys-isr", (void *)afe); 2279 - if (ret) { 2280 - dev_err(dev, "could not request_irq for Afe_ISR_Handle\n"); 2281 - goto err_pm_disable; 2282 - } 2287 + if (ret) 2288 + return dev_err_probe(dev, ret, "could not request_irq for Afe_ISR_Handle\n"); 2283 2289 2284 2290 /* init sub_dais */ 2285 2291 INIT_LIST_HEAD(&afe->sub_dais); 2286 2292 2287 2293 for (i = 0; i < ARRAY_SIZE(dai_register_cbs); i++) { 2288 2294 ret = dai_register_cbs[i](afe); 2289 - if (ret) { 2290 - dev_warn(afe->dev, "dai register i %d fail, ret %d\n", 2291 - i, ret); 2292 - goto err_pm_disable; 2293 - } 2295 + if (ret) 2296 + return dev_err_probe(afe->dev, ret, "dai %d register fail", i); 2294 2297 } 2295 2298 2296 2299 /* init dai_driver and component_driver */ 2297 2300 ret = mtk_afe_combine_sub_dai(afe); 2298 - if (ret) { 2299 - dev_warn(afe->dev, "mtk_afe_combine_sub_dai fail, ret %d\n", 2300 - ret); 2301 - goto err_pm_disable; 2302 - } 2301 + if (ret) 2302 + return dev_err_probe(afe->dev, ret, "mtk_afe_combine_sub_dai fail\n"); 2303 2303 2304 2304 /* others */ 2305 2305 afe->mtk_afe_hardware = &mt8192_afe_hardware; ··· 2303 2327 /* register platform */ 2304 2328 ret = devm_snd_soc_register_component(&pdev->dev, 2305 2329 &mt8192_afe_component, NULL, 0); 2306 - if (ret) { 2307 - dev_warn(dev, "err_platform\n"); 2308 - goto err_pm_disable; 2309 - } 2330 + if (ret) 2331 + return dev_err_probe(dev, ret, "Couldn't register AFE component\n"); 2310 2332 2311 2333 ret = devm_snd_soc_register_component(&pdev->dev, 2312 2334 &mt8192_afe_pcm_component, 2313 2335 afe->dai_drivers, 2314 2336 afe->num_dai_drivers); 2315 - if (ret) { 2316 - dev_warn(dev, "err_dai_component\n"); 2317 - goto err_pm_disable; 2318 - } 2337 + if (ret) 2338 + return dev_err_probe(dev, ret, "Couldn't register AFE-PCM component\n"); 2319 2339 2320 2340 return 0; 2321 - 2322 - err_pm_disable: 2323 - pm_runtime_disable(&pdev->dev); 2324 - 2325 - return ret; 2326 2341 } 2327 2342 2328 2343 static void mt8192_afe_pcm_dev_remove(struct platform_device *pdev)
+3 -87
sound/soc/mediatek/mt8192/mt8192-dai-adda.c
··· 13 13 #include "mt8192-afe-common.h" 14 14 #include "mt8192-afe-gpio.h" 15 15 #include "mt8192-interconnection.h" 16 + #include "../common/mtk-dai-adda-common.h" 16 17 17 18 enum { 18 19 UL_IIR_SW = 0, ··· 36 35 AUDIO_SDM_3RD, 37 36 }; 38 37 39 - enum { 40 - DELAY_DATA_MISO1 = 0, 41 - DELAY_DATA_MISO2, 42 - }; 43 - 44 - enum { 45 - MTK_AFE_ADDA_DL_RATE_8K = 0, 46 - MTK_AFE_ADDA_DL_RATE_11K = 1, 47 - MTK_AFE_ADDA_DL_RATE_12K = 2, 48 - MTK_AFE_ADDA_DL_RATE_16K = 3, 49 - MTK_AFE_ADDA_DL_RATE_22K = 4, 50 - MTK_AFE_ADDA_DL_RATE_24K = 5, 51 - MTK_AFE_ADDA_DL_RATE_32K = 6, 52 - MTK_AFE_ADDA_DL_RATE_44K = 7, 53 - MTK_AFE_ADDA_DL_RATE_48K = 8, 54 - MTK_AFE_ADDA_DL_RATE_96K = 9, 55 - MTK_AFE_ADDA_DL_RATE_192K = 10, 56 - }; 57 - 58 - enum { 59 - MTK_AFE_ADDA_UL_RATE_8K = 0, 60 - MTK_AFE_ADDA_UL_RATE_16K = 1, 61 - MTK_AFE_ADDA_UL_RATE_32K = 2, 62 - MTK_AFE_ADDA_UL_RATE_48K = 3, 63 - MTK_AFE_ADDA_UL_RATE_96K = 4, 64 - MTK_AFE_ADDA_UL_RATE_192K = 5, 65 - MTK_AFE_ADDA_UL_RATE_48K_HD = 6, 66 - }; 67 - 68 38 #define SDM_AUTO_RESET_THRESHOLD 0x190000 69 - 70 - static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe, 71 - unsigned int rate) 72 - { 73 - switch (rate) { 74 - case 8000: 75 - return MTK_AFE_ADDA_DL_RATE_8K; 76 - case 11025: 77 - return MTK_AFE_ADDA_DL_RATE_11K; 78 - case 12000: 79 - return MTK_AFE_ADDA_DL_RATE_12K; 80 - case 16000: 81 - return MTK_AFE_ADDA_DL_RATE_16K; 82 - case 22050: 83 - return MTK_AFE_ADDA_DL_RATE_22K; 84 - case 24000: 85 - return MTK_AFE_ADDA_DL_RATE_24K; 86 - case 32000: 87 - return MTK_AFE_ADDA_DL_RATE_32K; 88 - case 44100: 89 - return MTK_AFE_ADDA_DL_RATE_44K; 90 - case 48000: 91 - return MTK_AFE_ADDA_DL_RATE_48K; 92 - case 96000: 93 - return MTK_AFE_ADDA_DL_RATE_96K; 94 - case 192000: 95 - return MTK_AFE_ADDA_DL_RATE_192K; 96 - default: 97 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 98 - __func__, rate); 99 - return MTK_AFE_ADDA_DL_RATE_48K; 100 - } 101 - } 102 - 103 - static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe, 104 - unsigned int rate) 105 - { 106 - switch (rate) { 107 - case 8000: 108 - return MTK_AFE_ADDA_UL_RATE_8K; 109 - case 16000: 110 - return MTK_AFE_ADDA_UL_RATE_16K; 111 - case 32000: 112 - return MTK_AFE_ADDA_UL_RATE_32K; 113 - case 48000: 114 - return MTK_AFE_ADDA_UL_RATE_48K; 115 - case 96000: 116 - return MTK_AFE_ADDA_UL_RATE_96K; 117 - case 192000: 118 - return MTK_AFE_ADDA_UL_RATE_192K; 119 - default: 120 - dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 121 - __func__, rate); 122 - return MTK_AFE_ADDA_UL_RATE_48K; 123 - } 124 - } 125 39 126 40 /* dai component */ 127 41 static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = { ··· 1072 1156 unsigned int dl_src2_con1 = 0; 1073 1157 1074 1158 /* set sampling rate */ 1075 - dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 1159 + dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 1076 1160 DL_2_INPUT_MODE_CTL_SFT; 1077 1161 1078 1162 /* set output mode, UP_SAMPLING_RATE_X8 */ ··· 1162 1246 unsigned int voice_mode = 0; 1163 1247 unsigned int ul_src_con0 = 0; /* default value */ 1164 1248 1165 - voice_mode = adda_ul_rate_transform(afe, rate); 1249 + voice_mode = mtk_adda_ul_rate_transform(afe, rate); 1166 1250 1167 1251 ul_src_con0 |= (voice_mode << 17) & (0x7 << 17); 1168 1252
+3 -87
sound/soc/mediatek/mt8195/mt8195-dai-adda.c
··· 12 12 #include "mt8195-afe-clk.h" 13 13 #include "mt8195-afe-common.h" 14 14 #include "mt8195-reg.h" 15 + #include "../common/mtk-dai-adda-common.h" 15 16 16 17 #define ADDA_DL_GAIN_LOOPBACK 0x1800 17 18 #define ADDA_HIRES_THRES 48000 ··· 27 26 }; 28 27 29 28 enum { 30 - MTK_AFE_ADDA_DL_RATE_8K = 0, 31 - MTK_AFE_ADDA_DL_RATE_11K = 1, 32 - MTK_AFE_ADDA_DL_RATE_12K = 2, 33 - MTK_AFE_ADDA_DL_RATE_16K = 3, 34 - MTK_AFE_ADDA_DL_RATE_22K = 4, 35 - MTK_AFE_ADDA_DL_RATE_24K = 5, 36 - MTK_AFE_ADDA_DL_RATE_32K = 6, 37 - MTK_AFE_ADDA_DL_RATE_44K = 7, 38 - MTK_AFE_ADDA_DL_RATE_48K = 8, 39 - MTK_AFE_ADDA_DL_RATE_96K = 9, 40 - MTK_AFE_ADDA_DL_RATE_192K = 10, 41 - }; 42 - 43 - enum { 44 - MTK_AFE_ADDA_UL_RATE_8K = 0, 45 - MTK_AFE_ADDA_UL_RATE_16K = 1, 46 - MTK_AFE_ADDA_UL_RATE_32K = 2, 47 - MTK_AFE_ADDA_UL_RATE_48K = 3, 48 - MTK_AFE_ADDA_UL_RATE_96K = 4, 49 - MTK_AFE_ADDA_UL_RATE_192K = 5, 50 - }; 51 - 52 - enum { 53 - DELAY_DATA_MISO1 = 0, 54 - DELAY_DATA_MISO0 = 1, 55 - DELAY_DATA_MISO2 = 1, 56 - }; 57 - 58 - enum { 59 29 MTK_AFE_ADDA, 60 30 MTK_AFE_ADDA6, 61 31 }; ··· 34 62 struct mtk_dai_adda_priv { 35 63 bool hires_required; 36 64 }; 37 - 38 - static unsigned int afe_adda_dl_rate_transform(struct mtk_base_afe *afe, 39 - unsigned int rate) 40 - { 41 - switch (rate) { 42 - case 8000: 43 - return MTK_AFE_ADDA_DL_RATE_8K; 44 - case 11025: 45 - return MTK_AFE_ADDA_DL_RATE_11K; 46 - case 12000: 47 - return MTK_AFE_ADDA_DL_RATE_12K; 48 - case 16000: 49 - return MTK_AFE_ADDA_DL_RATE_16K; 50 - case 22050: 51 - return MTK_AFE_ADDA_DL_RATE_22K; 52 - case 24000: 53 - return MTK_AFE_ADDA_DL_RATE_24K; 54 - case 32000: 55 - return MTK_AFE_ADDA_DL_RATE_32K; 56 - case 44100: 57 - return MTK_AFE_ADDA_DL_RATE_44K; 58 - case 48000: 59 - return MTK_AFE_ADDA_DL_RATE_48K; 60 - case 96000: 61 - return MTK_AFE_ADDA_DL_RATE_96K; 62 - case 192000: 63 - return MTK_AFE_ADDA_DL_RATE_192K; 64 - default: 65 - dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 66 - __func__, rate); 67 - return MTK_AFE_ADDA_DL_RATE_48K; 68 - } 69 - } 70 - 71 - static unsigned int afe_adda_ul_rate_transform(struct mtk_base_afe *afe, 72 - unsigned int rate) 73 - { 74 - switch (rate) { 75 - case 8000: 76 - return MTK_AFE_ADDA_UL_RATE_8K; 77 - case 16000: 78 - return MTK_AFE_ADDA_UL_RATE_16K; 79 - case 32000: 80 - return MTK_AFE_ADDA_UL_RATE_32K; 81 - case 48000: 82 - return MTK_AFE_ADDA_UL_RATE_48K; 83 - case 96000: 84 - return MTK_AFE_ADDA_UL_RATE_96K; 85 - case 192000: 86 - return MTK_AFE_ADDA_UL_RATE_192K; 87 - default: 88 - dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n", 89 - __func__, rate); 90 - return MTK_AFE_ADDA_UL_RATE_48K; 91 - } 92 - } 93 65 94 66 static int mt8195_adda_mtkaif_init(struct mtk_base_afe *afe) 95 67 { ··· 560 644 561 645 /* set sampling rate */ 562 646 mask |= DL_2_INPUT_MODE_CTL_MASK; 563 - val |= DL_2_INPUT_MODE_CTL(afe_adda_dl_rate_transform(afe, rate)); 647 + val |= DL_2_INPUT_MODE_CTL(mtk_adda_dl_rate_transform(afe, rate)); 564 648 565 649 /* turn off saturation */ 566 650 mask |= DL_2_CH1_SATURATION_EN_CTL; ··· 597 681 unsigned int mask = 0; 598 682 599 683 mask |= UL_VOICE_MODE_CTL_MASK; 600 - val |= UL_VOICE_MODE_CTL(afe_adda_ul_rate_transform(afe, rate)); 684 + val |= UL_VOICE_MODE_CTL(mtk_adda_ul_rate_transform(afe, rate)); 601 685 602 686 switch (id) { 603 687 case MT8195_AFE_IO_UL_SRC1: