aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/rt5665.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/rt5665.c')
-rw-r--r--sound/soc/codecs/rt5665.c158
1 files changed, 86 insertions, 72 deletions
diff --git a/sound/soc/codecs/rt5665.c b/sound/soc/codecs/rt5665.c
index 8cd22307f5b6..370ed54d1e15 100644
--- a/sound/soc/codecs/rt5665.c
+++ b/sound/soc/codecs/rt5665.c
@@ -70,6 +70,7 @@ struct rt5665_priv {
70 int jack_type; 70 int jack_type;
71 int irq_work_delay_time; 71 int irq_work_delay_time;
72 unsigned int sar_adc_value; 72 unsigned int sar_adc_value;
73 bool calibration_done;
73}; 74};
74 75
75static const struct reg_default rt5665_reg[] = { 76static const struct reg_default rt5665_reg[] = {
@@ -912,46 +913,46 @@ static const char * const rt5665_data_select[] = {
912 "L/R", "R/L", "L/L", "R/R" 913 "L/R", "R/L", "L/L", "R/R"
913}; 914};
914 915
915static const SOC_ENUM_SINGLE_DECL(rt5665_if1_1_01_adc_enum, 916static SOC_ENUM_SINGLE_DECL(rt5665_if1_1_01_adc_enum,
916 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT01_SFT, rt5665_data_select); 917 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT01_SFT, rt5665_data_select);
917 918
918static const SOC_ENUM_SINGLE_DECL(rt5665_if1_1_23_adc_enum, 919static SOC_ENUM_SINGLE_DECL(rt5665_if1_1_23_adc_enum,
919 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT23_SFT, rt5665_data_select); 920 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT23_SFT, rt5665_data_select);
920 921
921static const SOC_ENUM_SINGLE_DECL(rt5665_if1_1_45_adc_enum, 922static SOC_ENUM_SINGLE_DECL(rt5665_if1_1_45_adc_enum,
922 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT45_SFT, rt5665_data_select); 923 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT45_SFT, rt5665_data_select);
923 924
924static const SOC_ENUM_SINGLE_DECL(rt5665_if1_1_67_adc_enum, 925static SOC_ENUM_SINGLE_DECL(rt5665_if1_1_67_adc_enum,
925 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT67_SFT, rt5665_data_select); 926 RT5665_TDM_CTRL_2, RT5665_I2S1_1_DS_ADC_SLOT67_SFT, rt5665_data_select);
926 927
927static const SOC_ENUM_SINGLE_DECL(rt5665_if1_2_01_adc_enum, 928static SOC_ENUM_SINGLE_DECL(rt5665_if1_2_01_adc_enum,
928 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT01_SFT, rt5665_data_select); 929 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT01_SFT, rt5665_data_select);
929 930
930static const SOC_ENUM_SINGLE_DECL(rt5665_if1_2_23_adc_enum, 931static SOC_ENUM_SINGLE_DECL(rt5665_if1_2_23_adc_enum,
931 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT23_SFT, rt5665_data_select); 932 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT23_SFT, rt5665_data_select);
932 933
933static const SOC_ENUM_SINGLE_DECL(rt5665_if1_2_45_adc_enum, 934static SOC_ENUM_SINGLE_DECL(rt5665_if1_2_45_adc_enum,
934 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT45_SFT, rt5665_data_select); 935 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT45_SFT, rt5665_data_select);
935 936
936static const SOC_ENUM_SINGLE_DECL(rt5665_if1_2_67_adc_enum, 937static SOC_ENUM_SINGLE_DECL(rt5665_if1_2_67_adc_enum,
937 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT67_SFT, rt5665_data_select); 938 RT5665_TDM_CTRL_2, RT5665_I2S1_2_DS_ADC_SLOT67_SFT, rt5665_data_select);
938 939
939static const SOC_ENUM_SINGLE_DECL(rt5665_if2_1_dac_enum, 940static SOC_ENUM_SINGLE_DECL(rt5665_if2_1_dac_enum,
940 RT5665_DIG_INF2_DATA, RT5665_IF2_1_DAC_SEL_SFT, rt5665_data_select); 941 RT5665_DIG_INF2_DATA, RT5665_IF2_1_DAC_SEL_SFT, rt5665_data_select);
941 942
942static const SOC_ENUM_SINGLE_DECL(rt5665_if2_1_adc_enum, 943static SOC_ENUM_SINGLE_DECL(rt5665_if2_1_adc_enum,
943 RT5665_DIG_INF2_DATA, RT5665_IF2_1_ADC_SEL_SFT, rt5665_data_select); 944 RT5665_DIG_INF2_DATA, RT5665_IF2_1_ADC_SEL_SFT, rt5665_data_select);
944 945
945static const SOC_ENUM_SINGLE_DECL(rt5665_if2_2_dac_enum, 946static SOC_ENUM_SINGLE_DECL(rt5665_if2_2_dac_enum,
946 RT5665_DIG_INF2_DATA, RT5665_IF2_2_DAC_SEL_SFT, rt5665_data_select); 947 RT5665_DIG_INF2_DATA, RT5665_IF2_2_DAC_SEL_SFT, rt5665_data_select);
947 948
948static const SOC_ENUM_SINGLE_DECL(rt5665_if2_2_adc_enum, 949static SOC_ENUM_SINGLE_DECL(rt5665_if2_2_adc_enum,
949 RT5665_DIG_INF2_DATA, RT5665_IF2_2_ADC_SEL_SFT, rt5665_data_select); 950 RT5665_DIG_INF2_DATA, RT5665_IF2_2_ADC_SEL_SFT, rt5665_data_select);
950 951
951static const SOC_ENUM_SINGLE_DECL(rt5665_if3_dac_enum, 952static SOC_ENUM_SINGLE_DECL(rt5665_if3_dac_enum,
952 RT5665_DIG_INF3_DATA, RT5665_IF3_DAC_SEL_SFT, rt5665_data_select); 953 RT5665_DIG_INF3_DATA, RT5665_IF3_DAC_SEL_SFT, rt5665_data_select);
953 954
954static const SOC_ENUM_SINGLE_DECL(rt5665_if3_adc_enum, 955static SOC_ENUM_SINGLE_DECL(rt5665_if3_adc_enum,
955 RT5665_DIG_INF3_DATA, RT5665_IF3_ADC_SEL_SFT, rt5665_data_select); 956 RT5665_DIG_INF3_DATA, RT5665_IF3_ADC_SEL_SFT, rt5665_data_select);
956 957
957static const struct snd_kcontrol_new rt5665_if1_1_01_adc_swap_mux = 958static const struct snd_kcontrol_new rt5665_if1_1_01_adc_swap_mux =
@@ -1305,6 +1306,11 @@ static void rt5665_jack_detect_handler(struct work_struct *work)
1305 usleep_range(10000, 15000); 1306 usleep_range(10000, 15000);
1306 } 1307 }
1307 1308
1309 while (!rt5665->calibration_done) {
1310 pr_debug("%s calibration not ready\n", __func__);
1311 usleep_range(10000, 15000);
1312 }
1313
1308 mutex_lock(&rt5665->calibrate_mutex); 1314 mutex_lock(&rt5665->calibrate_mutex);
1309 1315
1310 val = snd_soc_read(rt5665->codec, RT5665_AJD1_CTRL) & 0x0010; 1316 val = snd_soc_read(rt5665->codec, RT5665_AJD1_CTRL) & 0x0010;
@@ -1819,14 +1825,14 @@ static const char * const rt5665_dac2_src[] = {
1819 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC", "Mono ADC MIX" 1825 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC", "Mono ADC MIX"
1820}; 1826};
1821 1827
1822static const SOC_ENUM_SINGLE_DECL( 1828static SOC_ENUM_SINGLE_DECL(
1823 rt5665_dac_l2_enum, RT5665_DAC2_CTRL, 1829 rt5665_dac_l2_enum, RT5665_DAC2_CTRL,
1824 RT5665_DAC_L2_SEL_SFT, rt5665_dac2_src); 1830 RT5665_DAC_L2_SEL_SFT, rt5665_dac2_src);
1825 1831
1826static const struct snd_kcontrol_new rt5665_dac_l2_mux = 1832static const struct snd_kcontrol_new rt5665_dac_l2_mux =
1827 SOC_DAPM_ENUM("Digital DAC L2 Source", rt5665_dac_l2_enum); 1833 SOC_DAPM_ENUM("Digital DAC L2 Source", rt5665_dac_l2_enum);
1828 1834
1829static const SOC_ENUM_SINGLE_DECL( 1835static SOC_ENUM_SINGLE_DECL(
1830 rt5665_dac_r2_enum, RT5665_DAC2_CTRL, 1836 rt5665_dac_r2_enum, RT5665_DAC2_CTRL,
1831 RT5665_DAC_R2_SEL_SFT, rt5665_dac2_src); 1837 RT5665_DAC_R2_SEL_SFT, rt5665_dac2_src);
1832 1838
@@ -1839,14 +1845,14 @@ static const char * const rt5665_dac3_src[] = {
1839 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC", "STO2 ADC MIX" 1845 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC", "STO2 ADC MIX"
1840}; 1846};
1841 1847
1842static const SOC_ENUM_SINGLE_DECL( 1848static SOC_ENUM_SINGLE_DECL(
1843 rt5665_dac_l3_enum, RT5665_DAC3_CTRL, 1849 rt5665_dac_l3_enum, RT5665_DAC3_CTRL,
1844 RT5665_DAC_L3_SEL_SFT, rt5665_dac3_src); 1850 RT5665_DAC_L3_SEL_SFT, rt5665_dac3_src);
1845 1851
1846static const struct snd_kcontrol_new rt5665_dac_l3_mux = 1852static const struct snd_kcontrol_new rt5665_dac_l3_mux =
1847 SOC_DAPM_ENUM("Digital DAC L3 Source", rt5665_dac_l3_enum); 1853 SOC_DAPM_ENUM("Digital DAC L3 Source", rt5665_dac_l3_enum);
1848 1854
1849static const SOC_ENUM_SINGLE_DECL( 1855static SOC_ENUM_SINGLE_DECL(
1850 rt5665_dac_r3_enum, RT5665_DAC3_CTRL, 1856 rt5665_dac_r3_enum, RT5665_DAC3_CTRL,
1851 RT5665_DAC_R3_SEL_SFT, rt5665_dac3_src); 1857 RT5665_DAC_R3_SEL_SFT, rt5665_dac3_src);
1852 1858
@@ -1859,14 +1865,14 @@ static const char * const rt5665_sto1_adc1_src[] = {
1859 "DD Mux", "ADC" 1865 "DD Mux", "ADC"
1860}; 1866};
1861 1867
1862static const SOC_ENUM_SINGLE_DECL( 1868static SOC_ENUM_SINGLE_DECL(
1863 rt5665_sto1_adc1l_enum, RT5665_STO1_ADC_MIXER, 1869 rt5665_sto1_adc1l_enum, RT5665_STO1_ADC_MIXER,
1864 RT5665_STO1_ADC1L_SRC_SFT, rt5665_sto1_adc1_src); 1870 RT5665_STO1_ADC1L_SRC_SFT, rt5665_sto1_adc1_src);
1865 1871
1866static const struct snd_kcontrol_new rt5665_sto1_adc1l_mux = 1872static const struct snd_kcontrol_new rt5665_sto1_adc1l_mux =
1867 SOC_DAPM_ENUM("Stereo1 ADC1L Source", rt5665_sto1_adc1l_enum); 1873 SOC_DAPM_ENUM("Stereo1 ADC1L Source", rt5665_sto1_adc1l_enum);
1868 1874
1869static const SOC_ENUM_SINGLE_DECL( 1875static SOC_ENUM_SINGLE_DECL(
1870 rt5665_sto1_adc1r_enum, RT5665_STO1_ADC_MIXER, 1876 rt5665_sto1_adc1r_enum, RT5665_STO1_ADC_MIXER,
1871 RT5665_STO1_ADC1R_SRC_SFT, rt5665_sto1_adc1_src); 1877 RT5665_STO1_ADC1R_SRC_SFT, rt5665_sto1_adc1_src);
1872 1878
@@ -1879,14 +1885,14 @@ static const char * const rt5665_sto1_adc_src[] = {
1879 "ADC1 L", "ADC1 R", "ADC2 L", "ADC2 R" 1885 "ADC1 L", "ADC1 R", "ADC2 L", "ADC2 R"
1880}; 1886};
1881 1887
1882static const SOC_ENUM_SINGLE_DECL( 1888static SOC_ENUM_SINGLE_DECL(
1883 rt5665_sto1_adcl_enum, RT5665_STO1_ADC_MIXER, 1889 rt5665_sto1_adcl_enum, RT5665_STO1_ADC_MIXER,
1884 RT5665_STO1_ADCL_SRC_SFT, rt5665_sto1_adc_src); 1890 RT5665_STO1_ADCL_SRC_SFT, rt5665_sto1_adc_src);
1885 1891
1886static const struct snd_kcontrol_new rt5665_sto1_adcl_mux = 1892static const struct snd_kcontrol_new rt5665_sto1_adcl_mux =
1887 SOC_DAPM_ENUM("Stereo1 ADCL Source", rt5665_sto1_adcl_enum); 1893 SOC_DAPM_ENUM("Stereo1 ADCL Source", rt5665_sto1_adcl_enum);
1888 1894
1889static const SOC_ENUM_SINGLE_DECL( 1895static SOC_ENUM_SINGLE_DECL(
1890 rt5665_sto1_adcr_enum, RT5665_STO1_ADC_MIXER, 1896 rt5665_sto1_adcr_enum, RT5665_STO1_ADC_MIXER,
1891 RT5665_STO1_ADCR_SRC_SFT, rt5665_sto1_adc_src); 1897 RT5665_STO1_ADCR_SRC_SFT, rt5665_sto1_adc_src);
1892 1898
@@ -1899,14 +1905,14 @@ static const char * const rt5665_sto1_adc2_src[] = {
1899 "DAC MIX", "DMIC" 1905 "DAC MIX", "DMIC"
1900}; 1906};
1901 1907
1902static const SOC_ENUM_SINGLE_DECL( 1908static SOC_ENUM_SINGLE_DECL(
1903 rt5665_sto1_adc2l_enum, RT5665_STO1_ADC_MIXER, 1909 rt5665_sto1_adc2l_enum, RT5665_STO1_ADC_MIXER,
1904 RT5665_STO1_ADC2L_SRC_SFT, rt5665_sto1_adc2_src); 1910 RT5665_STO1_ADC2L_SRC_SFT, rt5665_sto1_adc2_src);
1905 1911
1906static const struct snd_kcontrol_new rt5665_sto1_adc2l_mux = 1912static const struct snd_kcontrol_new rt5665_sto1_adc2l_mux =
1907 SOC_DAPM_ENUM("Stereo1 ADC2L Source", rt5665_sto1_adc2l_enum); 1913 SOC_DAPM_ENUM("Stereo1 ADC2L Source", rt5665_sto1_adc2l_enum);
1908 1914
1909static const SOC_ENUM_SINGLE_DECL( 1915static SOC_ENUM_SINGLE_DECL(
1910 rt5665_sto1_adc2r_enum, RT5665_STO1_ADC_MIXER, 1916 rt5665_sto1_adc2r_enum, RT5665_STO1_ADC_MIXER,
1911 RT5665_STO1_ADC2R_SRC_SFT, rt5665_sto1_adc2_src); 1917 RT5665_STO1_ADC2R_SRC_SFT, rt5665_sto1_adc2_src);
1912 1918
@@ -1919,7 +1925,7 @@ static const char * const rt5665_sto1_dmic_src[] = {
1919 "DMIC1", "DMIC2" 1925 "DMIC1", "DMIC2"
1920}; 1926};
1921 1927
1922static const SOC_ENUM_SINGLE_DECL( 1928static SOC_ENUM_SINGLE_DECL(
1923 rt5665_sto1_dmic_enum, RT5665_STO1_ADC_MIXER, 1929 rt5665_sto1_dmic_enum, RT5665_STO1_ADC_MIXER,
1924 RT5665_STO1_DMIC_SRC_SFT, rt5665_sto1_dmic_src); 1930 RT5665_STO1_DMIC_SRC_SFT, rt5665_sto1_dmic_src);
1925 1931
@@ -1931,7 +1937,7 @@ static const char * const rt5665_sto1_dd_l_src[] = {
1931 "STO2 DAC", "MONO DAC" 1937 "STO2 DAC", "MONO DAC"
1932}; 1938};
1933 1939
1934static const SOC_ENUM_SINGLE_DECL( 1940static SOC_ENUM_SINGLE_DECL(
1935 rt5665_sto1_dd_l_enum, RT5665_STO1_ADC_MIXER, 1941 rt5665_sto1_dd_l_enum, RT5665_STO1_ADC_MIXER,
1936 RT5665_STO1_DD_L_SRC_SFT, rt5665_sto1_dd_l_src); 1942 RT5665_STO1_DD_L_SRC_SFT, rt5665_sto1_dd_l_src);
1937 1943
@@ -1943,7 +1949,7 @@ static const char * const rt5665_sto1_dd_r_src[] = {
1943 "STO2 DAC", "MONO DAC", "AEC REF" 1949 "STO2 DAC", "MONO DAC", "AEC REF"
1944}; 1950};
1945 1951
1946static const SOC_ENUM_SINGLE_DECL( 1952static SOC_ENUM_SINGLE_DECL(
1947 rt5665_sto1_dd_r_enum, RT5665_STO1_ADC_MIXER, 1953 rt5665_sto1_dd_r_enum, RT5665_STO1_ADC_MIXER,
1948 RT5665_STO1_DD_R_SRC_SFT, rt5665_sto1_dd_r_src); 1954 RT5665_STO1_DD_R_SRC_SFT, rt5665_sto1_dd_r_src);
1949 1955
@@ -1956,7 +1962,7 @@ static const char * const rt5665_mono_adc_l2_src[] = {
1956 "DAC MIXL", "DMIC" 1962 "DAC MIXL", "DMIC"
1957}; 1963};
1958 1964
1959static const SOC_ENUM_SINGLE_DECL( 1965static SOC_ENUM_SINGLE_DECL(
1960 rt5665_mono_adc_l2_enum, RT5665_MONO_ADC_MIXER, 1966 rt5665_mono_adc_l2_enum, RT5665_MONO_ADC_MIXER,
1961 RT5665_MONO_ADC_L2_SRC_SFT, rt5665_mono_adc_l2_src); 1967 RT5665_MONO_ADC_L2_SRC_SFT, rt5665_mono_adc_l2_src);
1962 1968
@@ -1970,7 +1976,7 @@ static const char * const rt5665_mono_adc_l1_src[] = {
1970 "DD Mux", "ADC" 1976 "DD Mux", "ADC"
1971}; 1977};
1972 1978
1973static const SOC_ENUM_SINGLE_DECL( 1979static SOC_ENUM_SINGLE_DECL(
1974 rt5665_mono_adc_l1_enum, RT5665_MONO_ADC_MIXER, 1980 rt5665_mono_adc_l1_enum, RT5665_MONO_ADC_MIXER,
1975 RT5665_MONO_ADC_L1_SRC_SFT, rt5665_mono_adc_l1_src); 1981 RT5665_MONO_ADC_L1_SRC_SFT, rt5665_mono_adc_l1_src);
1976 1982
@@ -1982,14 +1988,14 @@ static const char * const rt5665_mono_dd_src[] = {
1982 "STO2 DAC", "MONO DAC" 1988 "STO2 DAC", "MONO DAC"
1983}; 1989};
1984 1990
1985static const SOC_ENUM_SINGLE_DECL( 1991static SOC_ENUM_SINGLE_DECL(
1986 rt5665_mono_dd_l_enum, RT5665_MONO_ADC_MIXER, 1992 rt5665_mono_dd_l_enum, RT5665_MONO_ADC_MIXER,
1987 RT5665_MONO_DD_L_SRC_SFT, rt5665_mono_dd_src); 1993 RT5665_MONO_DD_L_SRC_SFT, rt5665_mono_dd_src);
1988 1994
1989static const struct snd_kcontrol_new rt5665_mono_dd_l_mux = 1995static const struct snd_kcontrol_new rt5665_mono_dd_l_mux =
1990 SOC_DAPM_ENUM("Mono DD L Source", rt5665_mono_dd_l_enum); 1996 SOC_DAPM_ENUM("Mono DD L Source", rt5665_mono_dd_l_enum);
1991 1997
1992static const SOC_ENUM_SINGLE_DECL( 1998static SOC_ENUM_SINGLE_DECL(
1993 rt5665_mono_dd_r_enum, RT5665_MONO_ADC_MIXER, 1999 rt5665_mono_dd_r_enum, RT5665_MONO_ADC_MIXER,
1994 RT5665_MONO_DD_R_SRC_SFT, rt5665_mono_dd_src); 2000 RT5665_MONO_DD_R_SRC_SFT, rt5665_mono_dd_src);
1995 2001
@@ -2002,14 +2008,14 @@ static const char * const rt5665_mono_adc_src[] = {
2002 "ADC1 L", "ADC1 R", "ADC2 L", "ADC2 R" 2008 "ADC1 L", "ADC1 R", "ADC2 L", "ADC2 R"
2003}; 2009};
2004 2010
2005static const SOC_ENUM_SINGLE_DECL( 2011static SOC_ENUM_SINGLE_DECL(
2006 rt5665_mono_adc_l_enum, RT5665_MONO_ADC_MIXER, 2012 rt5665_mono_adc_l_enum, RT5665_MONO_ADC_MIXER,
2007 RT5665_MONO_ADC_L_SRC_SFT, rt5665_mono_adc_src); 2013 RT5665_MONO_ADC_L_SRC_SFT, rt5665_mono_adc_src);
2008 2014
2009static const struct snd_kcontrol_new rt5665_mono_adc_l_mux = 2015static const struct snd_kcontrol_new rt5665_mono_adc_l_mux =
2010 SOC_DAPM_ENUM("Mono ADC L Source", rt5665_mono_adc_l_enum); 2016 SOC_DAPM_ENUM("Mono ADC L Source", rt5665_mono_adc_l_enum);
2011 2017
2012static const SOC_ENUM_SINGLE_DECL( 2018static SOC_ENUM_SINGLE_DECL(
2013 rt5665_mono_adcr_enum, RT5665_MONO_ADC_MIXER, 2019 rt5665_mono_adcr_enum, RT5665_MONO_ADC_MIXER,
2014 RT5665_MONO_ADC_R_SRC_SFT, rt5665_mono_adc_src); 2020 RT5665_MONO_ADC_R_SRC_SFT, rt5665_mono_adc_src);
2015 2021
@@ -2022,7 +2028,7 @@ static const char * const rt5665_mono_dmic_l_src[] = {
2022 "DMIC1 L", "DMIC2 L" 2028 "DMIC1 L", "DMIC2 L"
2023}; 2029};
2024 2030
2025static const SOC_ENUM_SINGLE_DECL( 2031static SOC_ENUM_SINGLE_DECL(
2026 rt5665_mono_dmic_l_enum, RT5665_MONO_ADC_MIXER, 2032 rt5665_mono_dmic_l_enum, RT5665_MONO_ADC_MIXER,
2027 RT5665_MONO_DMIC_L_SRC_SFT, rt5665_mono_dmic_l_src); 2033 RT5665_MONO_DMIC_L_SRC_SFT, rt5665_mono_dmic_l_src);
2028 2034
@@ -2035,7 +2041,7 @@ static const char * const rt5665_mono_adc_r2_src[] = {
2035 "DAC MIXR", "DMIC" 2041 "DAC MIXR", "DMIC"
2036}; 2042};
2037 2043
2038static const SOC_ENUM_SINGLE_DECL( 2044static SOC_ENUM_SINGLE_DECL(
2039 rt5665_mono_adc_r2_enum, RT5665_MONO_ADC_MIXER, 2045 rt5665_mono_adc_r2_enum, RT5665_MONO_ADC_MIXER,
2040 RT5665_MONO_ADC_R2_SRC_SFT, rt5665_mono_adc_r2_src); 2046 RT5665_MONO_ADC_R2_SRC_SFT, rt5665_mono_adc_r2_src);
2041 2047
@@ -2048,7 +2054,7 @@ static const char * const rt5665_mono_adc_r1_src[] = {
2048 "DD Mux", "ADC" 2054 "DD Mux", "ADC"
2049}; 2055};
2050 2056
2051static const SOC_ENUM_SINGLE_DECL( 2057static SOC_ENUM_SINGLE_DECL(
2052 rt5665_mono_adc_r1_enum, RT5665_MONO_ADC_MIXER, 2058 rt5665_mono_adc_r1_enum, RT5665_MONO_ADC_MIXER,
2053 RT5665_MONO_ADC_R1_SRC_SFT, rt5665_mono_adc_r1_src); 2059 RT5665_MONO_ADC_R1_SRC_SFT, rt5665_mono_adc_r1_src);
2054 2060
@@ -2061,7 +2067,7 @@ static const char * const rt5665_mono_dmic_r_src[] = {
2061 "DMIC1 R", "DMIC2 R" 2067 "DMIC1 R", "DMIC2 R"
2062}; 2068};
2063 2069
2064static const SOC_ENUM_SINGLE_DECL( 2070static SOC_ENUM_SINGLE_DECL(
2065 rt5665_mono_dmic_r_enum, RT5665_MONO_ADC_MIXER, 2071 rt5665_mono_dmic_r_enum, RT5665_MONO_ADC_MIXER,
2066 RT5665_MONO_DMIC_R_SRC_SFT, rt5665_mono_dmic_r_src); 2072 RT5665_MONO_DMIC_R_SRC_SFT, rt5665_mono_dmic_r_src);
2067 2073
@@ -2075,14 +2081,14 @@ static const char * const rt5665_sto2_adc1_src[] = {
2075 "DD Mux", "ADC" 2081 "DD Mux", "ADC"
2076}; 2082};
2077 2083
2078static const SOC_ENUM_SINGLE_DECL( 2084static SOC_ENUM_SINGLE_DECL(
2079 rt5665_sto2_adc1l_enum, RT5665_STO2_ADC_MIXER, 2085 rt5665_sto2_adc1l_enum, RT5665_STO2_ADC_MIXER,
2080 RT5665_STO2_ADC1L_SRC_SFT, rt5665_sto2_adc1_src); 2086 RT5665_STO2_ADC1L_SRC_SFT, rt5665_sto2_adc1_src);
2081 2087
2082static const struct snd_kcontrol_new rt5665_sto2_adc1l_mux = 2088static const struct snd_kcontrol_new rt5665_sto2_adc1l_mux =
2083 SOC_DAPM_ENUM("Stereo2 ADC1L Source", rt5665_sto2_adc1l_enum); 2089 SOC_DAPM_ENUM("Stereo2 ADC1L Source", rt5665_sto2_adc1l_enum);
2084 2090
2085static const SOC_ENUM_SINGLE_DECL( 2091static SOC_ENUM_SINGLE_DECL(
2086 rt5665_sto2_adc1r_enum, RT5665_STO2_ADC_MIXER, 2092 rt5665_sto2_adc1r_enum, RT5665_STO2_ADC_MIXER,
2087 RT5665_STO2_ADC1R_SRC_SFT, rt5665_sto2_adc1_src); 2093 RT5665_STO2_ADC1R_SRC_SFT, rt5665_sto2_adc1_src);
2088 2094
@@ -2095,14 +2101,14 @@ static const char * const rt5665_sto2_adc_src[] = {
2095 "ADC1 L", "ADC1 R", "ADC2 L" 2101 "ADC1 L", "ADC1 R", "ADC2 L"
2096}; 2102};
2097 2103
2098static const SOC_ENUM_SINGLE_DECL( 2104static SOC_ENUM_SINGLE_DECL(
2099 rt5665_sto2_adcl_enum, RT5665_STO2_ADC_MIXER, 2105 rt5665_sto2_adcl_enum, RT5665_STO2_ADC_MIXER,
2100 RT5665_STO2_ADCL_SRC_SFT, rt5665_sto2_adc_src); 2106 RT5665_STO2_ADCL_SRC_SFT, rt5665_sto2_adc_src);
2101 2107
2102static const struct snd_kcontrol_new rt5665_sto2_adcl_mux = 2108static const struct snd_kcontrol_new rt5665_sto2_adcl_mux =
2103 SOC_DAPM_ENUM("Stereo2 ADCL Source", rt5665_sto2_adcl_enum); 2109 SOC_DAPM_ENUM("Stereo2 ADCL Source", rt5665_sto2_adcl_enum);
2104 2110
2105static const SOC_ENUM_SINGLE_DECL( 2111static SOC_ENUM_SINGLE_DECL(
2106 rt5665_sto2_adcr_enum, RT5665_STO2_ADC_MIXER, 2112 rt5665_sto2_adcr_enum, RT5665_STO2_ADC_MIXER,
2107 RT5665_STO2_ADCR_SRC_SFT, rt5665_sto2_adc_src); 2113 RT5665_STO2_ADCR_SRC_SFT, rt5665_sto2_adc_src);
2108 2114
@@ -2115,14 +2121,14 @@ static const char * const rt5665_sto2_adc2_src[] = {
2115 "DAC MIX", "DMIC" 2121 "DAC MIX", "DMIC"
2116}; 2122};
2117 2123
2118static const SOC_ENUM_SINGLE_DECL( 2124static SOC_ENUM_SINGLE_DECL(
2119 rt5665_sto2_adc2l_enum, RT5665_STO2_ADC_MIXER, 2125 rt5665_sto2_adc2l_enum, RT5665_STO2_ADC_MIXER,
2120 RT5665_STO2_ADC2L_SRC_SFT, rt5665_sto2_adc2_src); 2126 RT5665_STO2_ADC2L_SRC_SFT, rt5665_sto2_adc2_src);
2121 2127
2122static const struct snd_kcontrol_new rt5665_sto2_adc2l_mux = 2128static const struct snd_kcontrol_new rt5665_sto2_adc2l_mux =
2123 SOC_DAPM_ENUM("Stereo2 ADC2L Source", rt5665_sto2_adc2l_enum); 2129 SOC_DAPM_ENUM("Stereo2 ADC2L Source", rt5665_sto2_adc2l_enum);
2124 2130
2125static const SOC_ENUM_SINGLE_DECL( 2131static SOC_ENUM_SINGLE_DECL(
2126 rt5665_sto2_adc2r_enum, RT5665_STO2_ADC_MIXER, 2132 rt5665_sto2_adc2r_enum, RT5665_STO2_ADC_MIXER,
2127 RT5665_STO2_ADC2R_SRC_SFT, rt5665_sto2_adc2_src); 2133 RT5665_STO2_ADC2R_SRC_SFT, rt5665_sto2_adc2_src);
2128 2134
@@ -2135,7 +2141,7 @@ static const char * const rt5665_sto2_dmic_src[] = {
2135 "DMIC1", "DMIC2" 2141 "DMIC1", "DMIC2"
2136}; 2142};
2137 2143
2138static const SOC_ENUM_SINGLE_DECL( 2144static SOC_ENUM_SINGLE_DECL(
2139 rt5665_sto2_dmic_enum, RT5665_STO2_ADC_MIXER, 2145 rt5665_sto2_dmic_enum, RT5665_STO2_ADC_MIXER,
2140 RT5665_STO2_DMIC_SRC_SFT, rt5665_sto2_dmic_src); 2146 RT5665_STO2_DMIC_SRC_SFT, rt5665_sto2_dmic_src);
2141 2147
@@ -2147,7 +2153,7 @@ static const char * const rt5665_sto2_dd_l_src[] = {
2147 "STO2 DAC", "MONO DAC" 2153 "STO2 DAC", "MONO DAC"
2148}; 2154};
2149 2155
2150static const SOC_ENUM_SINGLE_DECL( 2156static SOC_ENUM_SINGLE_DECL(
2151 rt5665_sto2_dd_l_enum, RT5665_STO2_ADC_MIXER, 2157 rt5665_sto2_dd_l_enum, RT5665_STO2_ADC_MIXER,
2152 RT5665_STO2_DD_L_SRC_SFT, rt5665_sto2_dd_l_src); 2158 RT5665_STO2_DD_L_SRC_SFT, rt5665_sto2_dd_l_src);
2153 2159
@@ -2159,7 +2165,7 @@ static const char * const rt5665_sto2_dd_r_src[] = {
2159 "STO2 DAC", "MONO DAC" 2165 "STO2 DAC", "MONO DAC"
2160}; 2166};
2161 2167
2162static const SOC_ENUM_SINGLE_DECL( 2168static SOC_ENUM_SINGLE_DECL(
2163 rt5665_sto2_dd_r_enum, RT5665_STO2_ADC_MIXER, 2169 rt5665_sto2_dd_r_enum, RT5665_STO2_ADC_MIXER,
2164 RT5665_STO2_DD_R_SRC_SFT, rt5665_sto2_dd_r_src); 2170 RT5665_STO2_DD_R_SRC_SFT, rt5665_sto2_dd_r_src);
2165 2171
@@ -2172,14 +2178,14 @@ static const char * const rt5665_dac1_src[] = {
2172 "IF1 DAC1", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC" 2178 "IF1 DAC1", "IF2_1 DAC", "IF2_2 DAC", "IF3 DAC"
2173}; 2179};
2174 2180
2175static const SOC_ENUM_SINGLE_DECL( 2181static SOC_ENUM_SINGLE_DECL(
2176 rt5665_dac_r1_enum, RT5665_AD_DA_MIXER, 2182 rt5665_dac_r1_enum, RT5665_AD_DA_MIXER,
2177 RT5665_DAC1_R_SEL_SFT, rt5665_dac1_src); 2183 RT5665_DAC1_R_SEL_SFT, rt5665_dac1_src);
2178 2184
2179static const struct snd_kcontrol_new rt5665_dac_r1_mux = 2185static const struct snd_kcontrol_new rt5665_dac_r1_mux =
2180 SOC_DAPM_ENUM("DAC R1 Source", rt5665_dac_r1_enum); 2186 SOC_DAPM_ENUM("DAC R1 Source", rt5665_dac_r1_enum);
2181 2187
2182static const SOC_ENUM_SINGLE_DECL( 2188static SOC_ENUM_SINGLE_DECL(
2183 rt5665_dac_l1_enum, RT5665_AD_DA_MIXER, 2189 rt5665_dac_l1_enum, RT5665_AD_DA_MIXER,
2184 RT5665_DAC1_L_SEL_SFT, rt5665_dac1_src); 2190 RT5665_DAC1_L_SEL_SFT, rt5665_dac1_src);
2185 2191
@@ -2192,14 +2198,14 @@ static const char * const rt5665_dig_dac_mix_src[] = {
2192 "Stereo1 DAC Mixer", "Stereo2 DAC Mixer", "Mono DAC Mixer" 2198 "Stereo1 DAC Mixer", "Stereo2 DAC Mixer", "Mono DAC Mixer"
2193}; 2199};
2194 2200
2195static const SOC_ENUM_SINGLE_DECL( 2201static SOC_ENUM_SINGLE_DECL(
2196 rt5665_dig_dac_mixl_enum, RT5665_A_DAC1_MUX, 2202 rt5665_dig_dac_mixl_enum, RT5665_A_DAC1_MUX,
2197 RT5665_DAC_MIX_L_SFT, rt5665_dig_dac_mix_src); 2203 RT5665_DAC_MIX_L_SFT, rt5665_dig_dac_mix_src);
2198 2204
2199static const struct snd_kcontrol_new rt5665_dig_dac_mixl_mux = 2205static const struct snd_kcontrol_new rt5665_dig_dac_mixl_mux =
2200 SOC_DAPM_ENUM("DAC Digital Mixer L Source", rt5665_dig_dac_mixl_enum); 2206 SOC_DAPM_ENUM("DAC Digital Mixer L Source", rt5665_dig_dac_mixl_enum);
2201 2207
2202static const SOC_ENUM_SINGLE_DECL( 2208static SOC_ENUM_SINGLE_DECL(
2203 rt5665_dig_dac_mixr_enum, RT5665_A_DAC1_MUX, 2209 rt5665_dig_dac_mixr_enum, RT5665_A_DAC1_MUX,
2204 RT5665_DAC_MIX_R_SFT, rt5665_dig_dac_mix_src); 2210 RT5665_DAC_MIX_R_SFT, rt5665_dig_dac_mix_src);
2205 2211
@@ -2212,14 +2218,14 @@ static const char * const rt5665_alg_dac1_src[] = {
2212 "Stereo1 DAC Mixer", "DAC1", "DMIC1" 2218 "Stereo1 DAC Mixer", "DAC1", "DMIC1"
2213}; 2219};
2214 2220
2215static const SOC_ENUM_SINGLE_DECL( 2221static SOC_ENUM_SINGLE_DECL(
2216 rt5665_alg_dac_l1_enum, RT5665_A_DAC1_MUX, 2222 rt5665_alg_dac_l1_enum, RT5665_A_DAC1_MUX,
2217 RT5665_A_DACL1_SFT, rt5665_alg_dac1_src); 2223 RT5665_A_DACL1_SFT, rt5665_alg_dac1_src);
2218 2224
2219static const struct snd_kcontrol_new rt5665_alg_dac_l1_mux = 2225static const struct snd_kcontrol_new rt5665_alg_dac_l1_mux =
2220 SOC_DAPM_ENUM("Analog DAC L1 Source", rt5665_alg_dac_l1_enum); 2226 SOC_DAPM_ENUM("Analog DAC L1 Source", rt5665_alg_dac_l1_enum);
2221 2227
2222static const SOC_ENUM_SINGLE_DECL( 2228static SOC_ENUM_SINGLE_DECL(
2223 rt5665_alg_dac_r1_enum, RT5665_A_DAC1_MUX, 2229 rt5665_alg_dac_r1_enum, RT5665_A_DAC1_MUX,
2224 RT5665_A_DACR1_SFT, rt5665_alg_dac1_src); 2230 RT5665_A_DACR1_SFT, rt5665_alg_dac1_src);
2225 2231
@@ -2232,14 +2238,14 @@ static const char * const rt5665_alg_dac2_src[] = {
2232 "Mono DAC Mixer", "DAC2" 2238 "Mono DAC Mixer", "DAC2"
2233}; 2239};
2234 2240
2235static const SOC_ENUM_SINGLE_DECL( 2241static SOC_ENUM_SINGLE_DECL(
2236 rt5665_alg_dac_l2_enum, RT5665_A_DAC2_MUX, 2242 rt5665_alg_dac_l2_enum, RT5665_A_DAC2_MUX,
2237 RT5665_A_DACL2_SFT, rt5665_alg_dac2_src); 2243 RT5665_A_DACL2_SFT, rt5665_alg_dac2_src);
2238 2244
2239static const struct snd_kcontrol_new rt5665_alg_dac_l2_mux = 2245static const struct snd_kcontrol_new rt5665_alg_dac_l2_mux =
2240 SOC_DAPM_ENUM("Analog DAC L2 Source", rt5665_alg_dac_l2_enum); 2246 SOC_DAPM_ENUM("Analog DAC L2 Source", rt5665_alg_dac_l2_enum);
2241 2247
2242static const SOC_ENUM_SINGLE_DECL( 2248static SOC_ENUM_SINGLE_DECL(
2243 rt5665_alg_dac_r2_enum, RT5665_A_DAC2_MUX, 2249 rt5665_alg_dac_r2_enum, RT5665_A_DAC2_MUX,
2244 RT5665_A_DACR2_SFT, rt5665_alg_dac2_src); 2250 RT5665_A_DACR2_SFT, rt5665_alg_dac2_src);
2245 2251
@@ -2253,7 +2259,7 @@ static const char * const rt5665_if2_1_adc_in_src[] = {
2253 "IF1 DAC2", "IF2_2 DAC", "IF3 DAC", "DAC1 MIX" 2259 "IF1 DAC2", "IF2_2 DAC", "IF3 DAC", "DAC1 MIX"
2254}; 2260};
2255 2261
2256static const SOC_ENUM_SINGLE_DECL( 2262static SOC_ENUM_SINGLE_DECL(
2257 rt5665_if2_1_adc_in_enum, RT5665_DIG_INF2_DATA, 2263 rt5665_if2_1_adc_in_enum, RT5665_DIG_INF2_DATA,
2258 RT5665_IF2_1_ADC_IN_SFT, rt5665_if2_1_adc_in_src); 2264 RT5665_IF2_1_ADC_IN_SFT, rt5665_if2_1_adc_in_src);
2259 2265
@@ -2266,7 +2272,7 @@ static const char * const rt5665_if2_2_adc_in_src[] = {
2266 "IF1 DAC2", "IF2_1 DAC", "IF3 DAC", "DAC1 MIX" 2272 "IF1 DAC2", "IF2_1 DAC", "IF3 DAC", "DAC1 MIX"
2267}; 2273};
2268 2274
2269static const SOC_ENUM_SINGLE_DECL( 2275static SOC_ENUM_SINGLE_DECL(
2270 rt5665_if2_2_adc_in_enum, RT5665_DIG_INF2_DATA, 2276 rt5665_if2_2_adc_in_enum, RT5665_DIG_INF2_DATA,
2271 RT5665_IF2_2_ADC_IN_SFT, rt5665_if2_2_adc_in_src); 2277 RT5665_IF2_2_ADC_IN_SFT, rt5665_if2_2_adc_in_src);
2272 2278
@@ -2280,7 +2286,7 @@ static const char * const rt5665_if3_adc_in_src[] = {
2280 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "DAC1 MIX" 2286 "IF1 DAC2", "IF2_1 DAC", "IF2_2 DAC", "DAC1 MIX"
2281}; 2287};
2282 2288
2283static const SOC_ENUM_SINGLE_DECL( 2289static SOC_ENUM_SINGLE_DECL(
2284 rt5665_if3_adc_in_enum, RT5665_DIG_INF3_DATA, 2290 rt5665_if3_adc_in_enum, RT5665_DIG_INF3_DATA,
2285 RT5665_IF3_ADC_IN_SFT, rt5665_if3_adc_in_src); 2291 RT5665_IF3_ADC_IN_SFT, rt5665_if3_adc_in_src);
2286 2292
@@ -2293,14 +2299,14 @@ static const char * const rt5665_pdm_src[] = {
2293 "Stereo1 DAC", "Stereo2 DAC", "Mono DAC" 2299 "Stereo1 DAC", "Stereo2 DAC", "Mono DAC"
2294}; 2300};
2295 2301
2296static const SOC_ENUM_SINGLE_DECL( 2302static SOC_ENUM_SINGLE_DECL(
2297 rt5665_pdm_l_enum, RT5665_PDM_OUT_CTRL, 2303 rt5665_pdm_l_enum, RT5665_PDM_OUT_CTRL,
2298 RT5665_PDM1_L_SFT, rt5665_pdm_src); 2304 RT5665_PDM1_L_SFT, rt5665_pdm_src);
2299 2305
2300static const struct snd_kcontrol_new rt5665_pdm_l_mux = 2306static const struct snd_kcontrol_new rt5665_pdm_l_mux =
2301 SOC_DAPM_ENUM("PDM L Source", rt5665_pdm_l_enum); 2307 SOC_DAPM_ENUM("PDM L Source", rt5665_pdm_l_enum);
2302 2308
2303static const SOC_ENUM_SINGLE_DECL( 2309static SOC_ENUM_SINGLE_DECL(
2304 rt5665_pdm_r_enum, RT5665_PDM_OUT_CTRL, 2310 rt5665_pdm_r_enum, RT5665_PDM_OUT_CTRL,
2305 RT5665_PDM1_R_SFT, rt5665_pdm_src); 2311 RT5665_PDM1_R_SFT, rt5665_pdm_src);
2306 2312
@@ -2314,7 +2320,7 @@ static const char * const rt5665_if1_1_adc1_data_src[] = {
2314 "STO1 ADC", "IF2_1 DAC", 2320 "STO1 ADC", "IF2_1 DAC",
2315}; 2321};
2316 2322
2317static const SOC_ENUM_SINGLE_DECL( 2323static SOC_ENUM_SINGLE_DECL(
2318 rt5665_if1_1_adc1_data_enum, RT5665_TDM_CTRL_3, 2324 rt5665_if1_1_adc1_data_enum, RT5665_TDM_CTRL_3,
2319 RT5665_IF1_ADC1_SEL_SFT, rt5665_if1_1_adc1_data_src); 2325 RT5665_IF1_ADC1_SEL_SFT, rt5665_if1_1_adc1_data_src);
2320 2326
@@ -2326,7 +2332,7 @@ static const char * const rt5665_if1_1_adc2_data_src[] = {
2326 "STO2 ADC", "IF2_2 DAC", 2332 "STO2 ADC", "IF2_2 DAC",
2327}; 2333};
2328 2334
2329static const SOC_ENUM_SINGLE_DECL( 2335static SOC_ENUM_SINGLE_DECL(
2330 rt5665_if1_1_adc2_data_enum, RT5665_TDM_CTRL_3, 2336 rt5665_if1_1_adc2_data_enum, RT5665_TDM_CTRL_3,
2331 RT5665_IF1_ADC2_SEL_SFT, rt5665_if1_1_adc2_data_src); 2337 RT5665_IF1_ADC2_SEL_SFT, rt5665_if1_1_adc2_data_src);
2332 2338
@@ -2338,7 +2344,7 @@ static const char * const rt5665_if1_1_adc3_data_src[] = {
2338 "MONO ADC", "IF3 DAC", 2344 "MONO ADC", "IF3 DAC",
2339}; 2345};
2340 2346
2341static const SOC_ENUM_SINGLE_DECL( 2347static SOC_ENUM_SINGLE_DECL(
2342 rt5665_if1_1_adc3_data_enum, RT5665_TDM_CTRL_3, 2348 rt5665_if1_1_adc3_data_enum, RT5665_TDM_CTRL_3,
2343 RT5665_IF1_ADC3_SEL_SFT, rt5665_if1_1_adc3_data_src); 2349 RT5665_IF1_ADC3_SEL_SFT, rt5665_if1_1_adc3_data_src);
2344 2350
@@ -2350,7 +2356,7 @@ static const char * const rt5665_if1_2_adc1_data_src[] = {
2350 "STO1 ADC", "IF1 DAC", 2356 "STO1 ADC", "IF1 DAC",
2351}; 2357};
2352 2358
2353static const SOC_ENUM_SINGLE_DECL( 2359static SOC_ENUM_SINGLE_DECL(
2354 rt5665_if1_2_adc1_data_enum, RT5665_TDM_CTRL_4, 2360 rt5665_if1_2_adc1_data_enum, RT5665_TDM_CTRL_4,
2355 RT5665_IF1_ADC1_SEL_SFT, rt5665_if1_2_adc1_data_src); 2361 RT5665_IF1_ADC1_SEL_SFT, rt5665_if1_2_adc1_data_src);
2356 2362
@@ -2362,7 +2368,7 @@ static const char * const rt5665_if1_2_adc2_data_src[] = {
2362 "STO2 ADC", "IF2_1 DAC", 2368 "STO2 ADC", "IF2_1 DAC",
2363}; 2369};
2364 2370
2365static const SOC_ENUM_SINGLE_DECL( 2371static SOC_ENUM_SINGLE_DECL(
2366 rt5665_if1_2_adc2_data_enum, RT5665_TDM_CTRL_4, 2372 rt5665_if1_2_adc2_data_enum, RT5665_TDM_CTRL_4,
2367 RT5665_IF1_ADC2_SEL_SFT, rt5665_if1_2_adc2_data_src); 2373 RT5665_IF1_ADC2_SEL_SFT, rt5665_if1_2_adc2_data_src);
2368 2374
@@ -2374,7 +2380,7 @@ static const char * const rt5665_if1_2_adc3_data_src[] = {
2374 "MONO ADC", "IF2_2 DAC", 2380 "MONO ADC", "IF2_2 DAC",
2375}; 2381};
2376 2382
2377static const SOC_ENUM_SINGLE_DECL( 2383static SOC_ENUM_SINGLE_DECL(
2378 rt5665_if1_2_adc3_data_enum, RT5665_TDM_CTRL_4, 2384 rt5665_if1_2_adc3_data_enum, RT5665_TDM_CTRL_4,
2379 RT5665_IF1_ADC3_SEL_SFT, rt5665_if1_2_adc3_data_src); 2385 RT5665_IF1_ADC3_SEL_SFT, rt5665_if1_2_adc3_data_src);
2380 2386
@@ -2386,7 +2392,7 @@ static const char * const rt5665_if1_2_adc4_data_src[] = {
2386 "DAC1", "IF3 DAC", 2392 "DAC1", "IF3 DAC",
2387}; 2393};
2388 2394
2389static const SOC_ENUM_SINGLE_DECL( 2395static SOC_ENUM_SINGLE_DECL(
2390 rt5665_if1_2_adc4_data_enum, RT5665_TDM_CTRL_4, 2396 rt5665_if1_2_adc4_data_enum, RT5665_TDM_CTRL_4,
2391 RT5665_IF1_ADC4_SEL_SFT, rt5665_if1_2_adc4_data_src); 2397 RT5665_IF1_ADC4_SEL_SFT, rt5665_if1_2_adc4_data_src);
2392 2398
@@ -2401,14 +2407,14 @@ static const char * const rt5665_tdm_adc_data_src[] = {
2401 "4123", "4132", "4213", "4231", "4312", "4321" 2407 "4123", "4132", "4213", "4231", "4312", "4321"
2402}; 2408};
2403 2409
2404static const SOC_ENUM_SINGLE_DECL( 2410static SOC_ENUM_SINGLE_DECL(
2405 rt5665_tdm1_adc_data_enum, RT5665_TDM_CTRL_3, 2411 rt5665_tdm1_adc_data_enum, RT5665_TDM_CTRL_3,
2406 RT5665_TDM_ADC_SEL_SFT, rt5665_tdm_adc_data_src); 2412 RT5665_TDM_ADC_SEL_SFT, rt5665_tdm_adc_data_src);
2407 2413
2408static const struct snd_kcontrol_new rt5665_tdm1_adc_mux = 2414static const struct snd_kcontrol_new rt5665_tdm1_adc_mux =
2409 SOC_DAPM_ENUM("TDM1 ADC Mux", rt5665_tdm1_adc_data_enum); 2415 SOC_DAPM_ENUM("TDM1 ADC Mux", rt5665_tdm1_adc_data_enum);
2410 2416
2411static const SOC_ENUM_SINGLE_DECL( 2417static SOC_ENUM_SINGLE_DECL(
2412 rt5665_tdm2_adc_data_enum, RT5665_TDM_CTRL_4, 2418 rt5665_tdm2_adc_data_enum, RT5665_TDM_CTRL_4,
2413 RT5665_TDM_ADC_SEL_SFT, rt5665_tdm_adc_data_src); 2419 RT5665_TDM_ADC_SEL_SFT, rt5665_tdm_adc_data_src);
2414 2420
@@ -2607,7 +2613,7 @@ static int rt5665_i2s_pin_event(struct snd_soc_dapm_widget *w,
2607 struct snd_kcontrol *kcontrol, int event) 2613 struct snd_kcontrol *kcontrol, int event)
2608{ 2614{
2609 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); 2615 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
2610 unsigned int val1, val2, mask1, mask2 = 0; 2616 unsigned int val1, val2, mask1 = 0, mask2 = 0;
2611 2617
2612 switch (w->shift) { 2618 switch (w->shift) {
2613 case RT5665_PWR_I2S2_1_BIT: 2619 case RT5665_PWR_I2S2_1_BIT:
@@ -2635,13 +2641,17 @@ static int rt5665_i2s_pin_event(struct snd_soc_dapm_widget *w,
2635 } 2641 }
2636 switch (event) { 2642 switch (event) {
2637 case SND_SOC_DAPM_PRE_PMU: 2643 case SND_SOC_DAPM_PRE_PMU:
2638 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_1, mask1, val1); 2644 if (mask1)
2645 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_1,
2646 mask1, val1);
2639 if (mask2) 2647 if (mask2)
2640 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_2, 2648 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_2,
2641 mask2, val2); 2649 mask2, val2);
2642 break; 2650 break;
2643 case SND_SOC_DAPM_POST_PMD: 2651 case SND_SOC_DAPM_POST_PMD:
2644 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_1, mask1, 0); 2652 if (mask1)
2653 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_1,
2654 mask1, 0);
2645 if (mask2) 2655 if (mask2)
2646 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_2, 2656 snd_soc_update_bits(codec, RT5665_GPIO_CTRL_2,
2647 mask2, 0); 2657 mask2, 0);
@@ -2684,6 +2694,8 @@ static const struct snd_soc_dapm_widget rt5665_dapm_widgets[] = {
2684 RT5665_DAC_MONO_R_ASRC_SFT, 0, NULL, 0), 2694 RT5665_DAC_MONO_R_ASRC_SFT, 0, NULL, 0),
2685 SND_SOC_DAPM_SUPPLY_S("ADC STO1 ASRC", 1, RT5665_ASRC_1, 2695 SND_SOC_DAPM_SUPPLY_S("ADC STO1 ASRC", 1, RT5665_ASRC_1,
2686 RT5665_ADC_STO1_ASRC_SFT, 0, NULL, 0), 2696 RT5665_ADC_STO1_ASRC_SFT, 0, NULL, 0),
2697 SND_SOC_DAPM_SUPPLY_S("ADC STO2 ASRC", 1, RT5665_ASRC_1,
2698 RT5665_ADC_STO2_ASRC_SFT, 0, NULL, 0),
2687 SND_SOC_DAPM_SUPPLY_S("ADC Mono L ASRC", 1, RT5665_ASRC_1, 2699 SND_SOC_DAPM_SUPPLY_S("ADC Mono L ASRC", 1, RT5665_ASRC_1,
2688 RT5665_ADC_MONO_L_ASRC_SFT, 0, NULL, 0), 2700 RT5665_ADC_MONO_L_ASRC_SFT, 0, NULL, 0),
2689 SND_SOC_DAPM_SUPPLY_S("ADC Mono R ASRC", 1, RT5665_ASRC_1, 2701 SND_SOC_DAPM_SUPPLY_S("ADC Mono R ASRC", 1, RT5665_ASRC_1,
@@ -3227,6 +3239,7 @@ static const struct snd_soc_dapm_route rt5665_dapm_routes[] = {
3227 3239
3228 /*ASRC*/ 3240 /*ASRC*/
3229 {"ADC Stereo1 Filter", NULL, "ADC STO1 ASRC", is_using_asrc}, 3241 {"ADC Stereo1 Filter", NULL, "ADC STO1 ASRC", is_using_asrc},
3242 {"ADC Stereo2 Filter", NULL, "ADC STO2 ASRC", is_using_asrc},
3230 {"ADC Mono Left Filter", NULL, "ADC Mono L ASRC", is_using_asrc}, 3243 {"ADC Mono Left Filter", NULL, "ADC Mono L ASRC", is_using_asrc},
3231 {"ADC Mono Right Filter", NULL, "ADC Mono R ASRC", is_using_asrc}, 3244 {"ADC Mono Right Filter", NULL, "ADC Mono R ASRC", is_using_asrc},
3232 {"DAC Mono Left Filter", NULL, "DAC Mono L ASRC", is_using_asrc}, 3245 {"DAC Mono Left Filter", NULL, "DAC Mono L ASRC", is_using_asrc},
@@ -4688,6 +4701,7 @@ static void rt5665_calibrate(struct rt5665_priv *rt5665)
4688 regmap_write(rt5665->regmap, RT5665_ASRC_8, 0x0120); 4701 regmap_write(rt5665->regmap, RT5665_ASRC_8, 0x0120);
4689 4702
4690out_unlock: 4703out_unlock:
4704 rt5665->calibration_done = true;
4691 mutex_unlock(&rt5665->calibrate_mutex); 4705 mutex_unlock(&rt5665->calibrate_mutex);
4692} 4706}
4693 4707
@@ -4922,7 +4936,7 @@ static struct acpi_device_id rt5665_acpi_match[] = {
4922MODULE_DEVICE_TABLE(acpi, rt5665_acpi_match); 4936MODULE_DEVICE_TABLE(acpi, rt5665_acpi_match);
4923#endif 4937#endif
4924 4938
4925struct i2c_driver rt5665_i2c_driver = { 4939static struct i2c_driver rt5665_i2c_driver = {
4926 .driver = { 4940 .driver = {
4927 .name = "rt5665", 4941 .name = "rt5665",
4928 .of_match_table = of_match_ptr(rt5665_of_match), 4942 .of_match_table = of_match_ptr(rt5665_of_match),