11 #include <linux/module.h>
13 #include <linux/kernel.h>
17 #include <linux/i2c.h>
24 #include <linux/slab.h>
25 #include <asm/div64.h>
584 return max98095_access[
reg].readable != 0;
587 static int max98095_volatile(
struct snd_soc_codec *codec,
unsigned int reg)
619 static int max98095_hw_write(
struct snd_soc_codec *codec,
unsigned int reg,
628 return ret ? -
EIO : 0;
635 unsigned int band,
u16 *coefs)
651 max98095_hw_write(codec, eq_reg++,
M98095_BYTE1(coefs[i]));
652 max98095_hw_write(codec, eq_reg++,
M98095_BYTE0(coefs[i]));
659 static void m98095_biquad_band(
struct snd_soc_codec *codec,
unsigned int dai,
660 unsigned int band,
u16 *coefs)
672 bq_reg += band * (M98095_COEFS_PER_BAND << 1);
676 max98095_hw_write(codec, bq_reg++,
M98095_BYTE1(coefs[i]));
677 max98095_hw_write(codec, bq_reg++,
M98095_BYTE0(coefs[i]));
681 static const char *
const max98095_fltr_mode[] = {
"Voice",
"Music" };
682 static const struct soc_enum max98095_dai1_filter_mode_enum[] = {
685 static const struct soc_enum max98095_dai2_filter_mode_enum[] = {
689 static const char *
const max98095_extmic_text[] = {
"None",
"MIC1",
"MIC2" };
691 static const struct soc_enum max98095_extmic_enum =
697 static const char *
const max98095_linein_text[] = {
"INA",
"INB" };
699 static const struct soc_enum max98095_linein_enum =
705 static const char *
const max98095_line_mode_text[] = {
706 "Stereo",
"Differential"};
708 static const struct soc_enum max98095_linein_mode_enum =
711 static const struct soc_enum max98095_lineout_mode_enum =
714 static const char *
const max98095_dai_fltr[] = {
715 "Off",
"Elliptical-HPF-16k",
"Butterworth-HPF-16k",
716 "Elliptical-HPF-8k",
"Butterworth-HPF-8k",
"Butterworth-HPF-Fs/240"};
717 static const struct soc_enum max98095_dai1_dac_filter_enum[] = {
720 static const struct soc_enum max98095_dai2_dac_filter_enum[] = {
723 static const struct soc_enum max98095_dai3_dac_filter_enum[] = {
727 static int max98095_mic1pre_set(
struct snd_kcontrol *kcontrol,
731 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
732 unsigned int sel = ucontrol->
value.integer.value[0];
741 static int max98095_mic1pre_get(
struct snd_kcontrol *kcontrol,
745 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
751 static int max98095_mic2pre_set(
struct snd_kcontrol *kcontrol,
755 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
756 unsigned int sel = ucontrol->
value.integer.value[0];
765 static int max98095_mic2pre_get(
struct snd_kcontrol *kcontrol,
769 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
775 static const unsigned int max98095_micboost_tlv[] = {
785 static const unsigned int max98095_hp_tlv[] = {
794 static const unsigned int max98095_spk_tlv[] = {
802 static const unsigned int max98095_rcv_lout_tlv[] = {
811 static const unsigned int max98095_lin_tlv[] = {
827 0, 31, 0, max98095_rcv_lout_tlv),
851 max98095_mic1pre_get, max98095_mic1pre_set,
852 max98095_micboost_tlv),
855 max98095_mic2pre_get, max98095_mic2pre_set,
856 max98095_micboost_tlv),
867 max98095_adcboost_tlv),
869 max98095_adcboost_tlv),
877 SOC_ENUM(
"DAI1 Filter Mode", max98095_dai1_filter_mode_enum),
878 SOC_ENUM(
"DAI2 Filter Mode", max98095_dai2_filter_mode_enum),
879 SOC_ENUM(
"DAI1 DAC Filter", max98095_dai1_dac_filter_enum),
880 SOC_ENUM(
"DAI2 DAC Filter", max98095_dai2_dac_filter_enum),
881 SOC_ENUM(
"DAI3 DAC Filter", max98095_dai3_dac_filter_enum),
883 SOC_ENUM(
"Linein Mode", max98095_linein_mode_enum),
884 SOC_ENUM(
"Lineout Mode", max98095_lineout_mode_enum),
888 static const struct snd_kcontrol_new max98095_left_speaker_mixer_controls[] = {
900 static const struct snd_kcontrol_new max98095_right_speaker_mixer_controls[] = {
942 static const struct snd_kcontrol_new max98095_left_lineout_mixer_controls[] = {
952 static const struct snd_kcontrol_new max98095_right_lineout_mixer_controls[] = {
970 static const struct snd_kcontrol_new max98095_right_ADC_mixer_controls[] = {
981 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1011 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1014 BUG_ON(!((channel == 1) || (channel == 2)));
1028 (1 << w->
shift), 0);
1041 return max98095_line_pga(w, event, 1);
1047 return max98095_line_pga(w, event, 2);
1066 (1 << (w->
shift+2)), 0);
1108 &max98095_extmic_mux),
1111 &max98095_linein_mux),
1114 &max98095_left_hp_mixer_controls[0],
1115 ARRAY_SIZE(max98095_left_hp_mixer_controls)),
1118 &max98095_right_hp_mixer_controls[0],
1119 ARRAY_SIZE(max98095_right_hp_mixer_controls)),
1122 &max98095_left_speaker_mixer_controls[0],
1123 ARRAY_SIZE(max98095_left_speaker_mixer_controls)),
1126 &max98095_right_speaker_mixer_controls[0],
1127 ARRAY_SIZE(max98095_right_speaker_mixer_controls)),
1130 &max98095_mono_rcv_mixer_controls[0],
1131 ARRAY_SIZE(max98095_mono_rcv_mixer_controls)),
1134 &max98095_left_lineout_mixer_controls[0],
1135 ARRAY_SIZE(max98095_left_lineout_mixer_controls)),
1138 &max98095_right_lineout_mixer_controls[0],
1139 ARRAY_SIZE(max98095_right_lineout_mixer_controls)),
1142 &max98095_left_ADC_mixer_controls[0],
1143 ARRAY_SIZE(max98095_left_ADC_mixer_controls)),
1146 &max98095_right_ADC_mixer_controls[0],
1147 ARRAY_SIZE(max98095_right_ADC_mixer_controls)),
1150 5, 0,
NULL, 0, max98095_mic_event,
1154 5, 0,
NULL, 0, max98095_mic_event,
1158 7, 0,
NULL, 0, max98095_pga_in1_event,
1162 7, 0,
NULL, 0, max98095_pga_in2_event,
1188 {
"Left Headphone Mixer",
"Left DAC1 Switch",
"DACL1"},
1189 {
"Left Headphone Mixer",
"Right DAC1 Switch",
"DACR1"},
1190 {
"Left Headphone Mixer",
"MIC1 Switch",
"MIC1 Input"},
1191 {
"Left Headphone Mixer",
"MIC2 Switch",
"MIC2 Input"},
1192 {
"Left Headphone Mixer",
"IN1 Switch",
"IN1 Input"},
1193 {
"Left Headphone Mixer",
"IN2 Switch",
"IN2 Input"},
1196 {
"Right Headphone Mixer",
"Left DAC1 Switch",
"DACL1"},
1197 {
"Right Headphone Mixer",
"Right DAC1 Switch",
"DACR1"},
1198 {
"Right Headphone Mixer",
"MIC1 Switch",
"MIC1 Input"},
1199 {
"Right Headphone Mixer",
"MIC2 Switch",
"MIC2 Input"},
1200 {
"Right Headphone Mixer",
"IN1 Switch",
"IN1 Input"},
1201 {
"Right Headphone Mixer",
"IN2 Switch",
"IN2 Input"},
1204 {
"Left Speaker Mixer",
"Left DAC1 Switch",
"DACL1"},
1205 {
"Left Speaker Mixer",
"Right DAC1 Switch",
"DACR1"},
1206 {
"Left Speaker Mixer",
"Mono DAC2 Switch",
"DACM2"},
1207 {
"Left Speaker Mixer",
"Mono DAC3 Switch",
"DACM3"},
1208 {
"Left Speaker Mixer",
"MIC1 Switch",
"MIC1 Input"},
1209 {
"Left Speaker Mixer",
"MIC2 Switch",
"MIC2 Input"},
1210 {
"Left Speaker Mixer",
"IN1 Switch",
"IN1 Input"},
1211 {
"Left Speaker Mixer",
"IN2 Switch",
"IN2 Input"},
1214 {
"Right Speaker Mixer",
"Left DAC1 Switch",
"DACL1"},
1215 {
"Right Speaker Mixer",
"Right DAC1 Switch",
"DACR1"},
1216 {
"Right Speaker Mixer",
"Mono DAC2 Switch",
"DACM2"},
1217 {
"Right Speaker Mixer",
"Mono DAC3 Switch",
"DACM3"},
1218 {
"Right Speaker Mixer",
"MIC1 Switch",
"MIC1 Input"},
1219 {
"Right Speaker Mixer",
"MIC2 Switch",
"MIC2 Input"},
1220 {
"Right Speaker Mixer",
"IN1 Switch",
"IN1 Input"},
1221 {
"Right Speaker Mixer",
"IN2 Switch",
"IN2 Input"},
1224 {
"Receiver Mixer",
"Left DAC1 Switch",
"DACL1"},
1225 {
"Receiver Mixer",
"Right DAC1 Switch",
"DACR1"},
1226 {
"Receiver Mixer",
"MIC1 Switch",
"MIC1 Input"},
1227 {
"Receiver Mixer",
"MIC2 Switch",
"MIC2 Input"},
1228 {
"Receiver Mixer",
"IN1 Switch",
"IN1 Input"},
1229 {
"Receiver Mixer",
"IN2 Switch",
"IN2 Input"},
1232 {
"Left Lineout Mixer",
"Left DAC1 Switch",
"DACL1"},
1233 {
"Left Lineout Mixer",
"Right DAC1 Switch",
"DACR1"},
1234 {
"Left Lineout Mixer",
"MIC1 Switch",
"MIC1 Input"},
1235 {
"Left Lineout Mixer",
"MIC2 Switch",
"MIC2 Input"},
1236 {
"Left Lineout Mixer",
"IN1 Switch",
"IN1 Input"},
1237 {
"Left Lineout Mixer",
"IN2 Switch",
"IN2 Input"},
1240 {
"Right Lineout Mixer",
"Left DAC1 Switch",
"DACL1"},
1241 {
"Right Lineout Mixer",
"Right DAC1 Switch",
"DACR1"},
1242 {
"Right Lineout Mixer",
"MIC1 Switch",
"MIC1 Input"},
1243 {
"Right Lineout Mixer",
"MIC2 Switch",
"MIC2 Input"},
1244 {
"Right Lineout Mixer",
"IN1 Switch",
"IN1 Input"},
1245 {
"Right Lineout Mixer",
"IN2 Switch",
"IN2 Input"},
1247 {
"HP Left Out",
NULL,
"Left Headphone Mixer"},
1248 {
"HP Right Out",
NULL,
"Right Headphone Mixer"},
1249 {
"SPK Left Out",
NULL,
"Left Speaker Mixer"},
1250 {
"SPK Right Out",
NULL,
"Right Speaker Mixer"},
1251 {
"RCV Mono Out",
NULL,
"Receiver Mixer"},
1252 {
"LINE Left Out",
NULL,
"Left Lineout Mixer"},
1253 {
"LINE Right Out",
NULL,
"Right Lineout Mixer"},
1255 {
"HPL",
NULL,
"HP Left Out"},
1256 {
"HPR",
NULL,
"HP Right Out"},
1257 {
"SPKL",
NULL,
"SPK Left Out"},
1258 {
"SPKR",
NULL,
"SPK Right Out"},
1259 {
"RCV",
NULL,
"RCV Mono Out"},
1260 {
"OUT1",
NULL,
"LINE Left Out"},
1261 {
"OUT2",
NULL,
"LINE Right Out"},
1262 {
"OUT3",
NULL,
"LINE Left Out"},
1263 {
"OUT4",
NULL,
"LINE Right Out"},
1266 {
"Left ADC Mixer",
"MIC1 Switch",
"MIC1 Input"},
1267 {
"Left ADC Mixer",
"MIC2 Switch",
"MIC2 Input"},
1268 {
"Left ADC Mixer",
"IN1 Switch",
"IN1 Input"},
1269 {
"Left ADC Mixer",
"IN2 Switch",
"IN2 Input"},
1272 {
"Right ADC Mixer",
"MIC1 Switch",
"MIC1 Input"},
1273 {
"Right ADC Mixer",
"MIC2 Switch",
"MIC2 Input"},
1274 {
"Right ADC Mixer",
"IN1 Switch",
"IN1 Input"},
1275 {
"Right ADC Mixer",
"IN2 Switch",
"IN2 Input"},
1278 {
"ADCL",
NULL,
"Left ADC Mixer"},
1279 {
"ADCR",
NULL,
"Right ADC Mixer"},
1281 {
"IN1 Input",
NULL,
"INA1"},
1282 {
"IN2 Input",
NULL,
"INA2"},
1284 {
"MIC1 Input",
NULL,
"MIC1"},
1285 {
"MIC2 Input",
NULL,
"MIC2"},
1288 static int max98095_add_widgets(
struct snd_soc_codec *codec)
1297 static const struct {
1332 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1334 unsigned long long ni;
1338 cdata = &max98095->
dai[0];
1355 if (rate_value(rate, ®val))
1364 if (max98095->
sysclk == 0) {
1365 dev_err(codec->
dev,
"Invalid system clock frequency\n");
1368 ni = 65536ULL * (rate < 50000 ? 96ULL : 48ULL)
1369 * (
unsigned long long int)
rate;
1393 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1395 unsigned long long ni;
1399 cdata = &max98095->
dai[1];
1416 if (rate_value(rate, ®val))
1425 if (max98095->
sysclk == 0) {
1426 dev_err(codec->
dev,
"Invalid system clock frequency\n");
1429 ni = 65536ULL * (rate < 50000 ? 96ULL : 48ULL)
1430 * (
unsigned long long int)
rate;
1454 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1456 unsigned long long ni;
1460 cdata = &max98095->
dai[2];
1477 if (rate_value(rate, ®val))
1486 if (max98095->
sysclk == 0) {
1487 dev_err(codec->
dev,
"Invalid system clock frequency\n");
1490 ni = 65536ULL * (rate < 50000 ? 96ULL : 48ULL)
1491 * (
unsigned long long int)
rate;
1510 static int max98095_dai_set_sysclk(
struct snd_soc_dai *dai,
1511 int clk_id,
unsigned int freq,
int dir)
1514 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1517 if (freq == max98095->
sysclk)
1525 if ((freq >= 10000000) && (freq < 20000000)) {
1527 }
else if ((freq >= 20000000) && (freq < 40000000)) {
1529 }
else if ((freq >= 40000000) && (freq < 60000000)) {
1532 dev_err(codec->
dev,
"Invalid master clock frequency\n");
1536 dev_dbg(dai->
dev,
"Clock source is %d at %uHz\n", clk_id, freq);
1542 static int max98095_dai1_set_fmt(
struct snd_soc_dai *codec_dai,
1546 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1550 cdata = &max98095->
dai[0];
1552 if (fmt != cdata->
fmt) {
1570 dev_err(codec->
dev,
"Clock mode unsupported");
1610 static int max98095_dai2_set_fmt(
struct snd_soc_dai *codec_dai,
1614 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1618 cdata = &max98095->
dai[1];
1620 if (fmt != cdata->
fmt) {
1623 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
1638 dev_err(codec->
dev,
"Clock mode unsupported");
1679 static int max98095_dai3_set_fmt(
struct snd_soc_dai *codec_dai,
1683 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1687 cdata = &max98095->
dai[2];
1689 if (fmt != cdata->
fmt) {
1692 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
1707 dev_err(codec->
dev,
"Clock mode unsupported");
1748 static int max98095_set_bias_level(
struct snd_soc_codec *codec,
1765 dev_err(codec->
dev,
"Failed to sync cache: %d\n", ret);
1784 #define MAX98095_RATES SNDRV_PCM_RATE_8000_96000
1785 #define MAX98095_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
1788 .set_sysclk = max98095_dai_set_sysclk,
1789 .set_fmt = max98095_dai1_set_fmt,
1790 .hw_params = max98095_dai1_hw_params,
1794 .set_sysclk = max98095_dai_set_sysclk,
1795 .set_fmt = max98095_dai2_set_fmt,
1796 .hw_params = max98095_dai2_hw_params,
1800 .set_sysclk = max98095_dai_set_sysclk,
1801 .set_fmt = max98095_dai3_set_fmt,
1802 .hw_params = max98095_dai3_hw_params,
1809 .stream_name =
"HiFi Playback",
1816 .stream_name =
"HiFi Capture",
1822 .ops = &max98095_dai1_ops,
1827 .stream_name =
"Aux Playback",
1833 .ops = &max98095_dai2_ops,
1838 .stream_name =
"Voice Playback",
1844 .ops = &max98095_dai3_ops,
1849 static int max98095_get_eq_channel(
const char *
name)
1851 if (
strcmp(name,
"EQ1 Mode") == 0)
1853 if (
strcmp(name,
"EQ2 Mode") == 0)
1858 static int max98095_put_eq_enum(
struct snd_kcontrol *kcontrol,
1862 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1864 int channel = max98095_get_eq_channel(kcontrol->
id.name);
1866 int sel = ucontrol->
value.integer.value[0];
1868 int fs, best, best_val,
i;
1886 for (i = 0; i < pdata->
eq_cfgcnt; i++) {
1888 abs(pdata->
eq_cfg[i].rate - fs) < best_val) {
1890 best_val =
abs(pdata->
eq_cfg[i].rate - fs);
1894 dev_dbg(codec->
dev,
"Selected %s/%dHz for %dHz sample rate\n",
1895 pdata->
eq_cfg[best].name,
1896 pdata->
eq_cfg[best].rate, fs);
1898 coef_set = &pdata->
eq_cfg[best];
1908 m98095_eq_band(codec, channel, 0, coef_set->
band1);
1909 m98095_eq_band(codec, channel, 1, coef_set->
band2);
1910 m98095_eq_band(codec, channel, 2, coef_set->
band3);
1911 m98095_eq_band(codec, channel, 3, coef_set->
band4);
1912 m98095_eq_band(codec, channel, 4, coef_set->
band5);
1921 static int max98095_get_eq_enum(
struct snd_kcontrol *kcontrol,
1925 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1926 int channel = max98095_get_eq_channel(kcontrol->
id.name);
1930 ucontrol->
value.enumerated.item[0] = cdata->
eq_sel;
1935 static void max98095_handle_eq_pdata(
struct snd_soc_codec *codec)
1937 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
1940 unsigned int cfgcnt;
1948 max98095_get_eq_enum,
1949 max98095_put_eq_enum),
1952 max98095_get_eq_enum,
1953 max98095_put_eq_enum),
1964 for (i = 0; i < cfgcnt; i++) {
1992 dev_err(codec->
dev,
"Failed to add EQ control: %d\n", ret);
1995 static const char *bq_mode_name[] = {
"Biquad1 Mode",
"Biquad2 Mode"};
1997 static int max98095_get_bq_channel(
struct snd_soc_codec *codec,
2002 for (i = 0; i <
ARRAY_SIZE(bq_mode_name); i++)
2003 if (
strcmp(name, bq_mode_name[i]) == 0)
2007 dev_err(codec->
dev,
"Bad biquad channel name '%s'\n", name);
2011 static int max98095_put_bq_enum(
struct snd_kcontrol *kcontrol,
2015 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2017 int channel = max98095_get_bq_channel(codec, kcontrol->
id.name);
2019 int sel = ucontrol->
value.integer.value[0];
2021 int fs, best, best_val,
i;
2040 for (i = 0; i < pdata->
bq_cfgcnt; i++) {
2042 abs(pdata->
bq_cfg[i].rate - fs) < best_val) {
2044 best_val =
abs(pdata->
bq_cfg[i].rate - fs);
2048 dev_dbg(codec->
dev,
"Selected %s/%dHz for %dHz sample rate\n",
2049 pdata->
bq_cfg[best].name,
2050 pdata->
bq_cfg[best].rate, fs);
2052 coef_set = &pdata->
bq_cfg[best];
2062 m98095_biquad_band(codec, channel, 0, coef_set->
band1);
2063 m98095_biquad_band(codec, channel, 1, coef_set->
band2);
2072 static int max98095_get_bq_enum(
struct snd_kcontrol *kcontrol,
2076 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2077 int channel = max98095_get_bq_channel(codec, kcontrol->
id.name);
2084 ucontrol->
value.enumerated.item[0] = cdata->
bq_sel;
2089 static void max98095_handle_bq_pdata(
struct snd_soc_codec *codec)
2091 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2094 unsigned int cfgcnt;
2102 max98095_get_bq_enum,
2103 max98095_put_bq_enum),
2106 max98095_get_bq_enum,
2107 max98095_put_bq_enum),
2119 for (i = 0; i < cfgcnt; i++) {
2147 dev_err(codec->
dev,
"Failed to add Biquad control: %d\n", ret);
2150 static void max98095_handle_pdata(
struct snd_soc_codec *codec)
2152 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2172 max98095_handle_eq_pdata(codec);
2176 max98095_handle_bq_pdata(codec);
2182 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2205 hp_report | mic_report,
2219 static int max98095_jack_detect_enable(
struct snd_soc_codec *codec)
2221 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2226 if (max98095->
pdata->jack_detect_pin5en)
2229 if (max98095->
pdata->jack_detect_delay)
2230 slew = max98095->
pdata->jack_detect_delay;
2234 dev_err(codec->
dev,
"Failed to cfg auto detect %d\n", ret);
2241 dev_err(codec->
dev,
"Failed to cfg auto detect %d\n", ret);
2248 static int max98095_jack_detect_disable(
struct snd_soc_codec *codec)
2255 dev_err(codec->
dev,
"Failed to cfg auto detect %d\n", ret);
2265 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2273 if (!hp_jack && !mic_jack)
2276 max98095_jack_detect_enable(codec);
2282 dev_err(codec->
dev,
"Failed to cfg jack irqs %d\n", ret);
2286 max98095_report_jack(client->
irq, codec);
2294 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2297 max98095_jack_detect_disable(codec);
2306 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2312 max98095_jack_detect_enable(codec);
2313 max98095_report_jack(client->
irq, codec);
2319 #define max98095_suspend NULL
2320 #define max98095_resume NULL
2331 dev_err(codec->
dev,
"Failed to reset DSP: %d\n", ret);
2337 dev_err(codec->
dev,
"Failed to reset codec: %d\n", ret);
2346 dev_err(codec->
dev,
"Failed to reset: %d\n", ret);
2356 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2363 dev_err(codec->
dev,
"Failed to set cache I/O: %d\n", ret);
2368 max98095_reset(codec);
2374 max98095->
sysclk = (unsigned)-1;
2378 cdata = &max98095->
dai[0];
2379 cdata->
rate = (unsigned)-1;
2380 cdata->
fmt = (unsigned)-1;
2384 cdata = &max98095->
dai[1];
2385 cdata->
rate = (unsigned)-1;
2386 cdata->
fmt = (unsigned)-1;
2390 cdata = &max98095->
dai[2];
2391 cdata->
rate = (unsigned)-1;
2392 cdata->
fmt = (unsigned)-1;
2403 max98095_report_jack,
2407 dev_err(codec->
dev,
"Failed to request IRQ: %d\n", ret);
2414 dev_err(codec->
dev,
"Failure reading hardware revision: %d\n",
2418 dev_info(codec->
dev,
"Hardware revision: %c\n", ret - 0x40 +
'A');
2444 max98095_handle_pdata(codec);
2450 max98095_add_widgets(codec);
2463 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
2469 max98095_jack_detect_disable(codec);
2478 .probe = max98095_probe,
2479 .remove = max98095_remove,
2482 .set_bias_level = max98095_set_bias_level,
2483 .reg_cache_size =
ARRAY_SIZE(max98095_reg_def),
2484 .reg_word_size =
sizeof(
u8),
2490 .dapm_routes = max98095_audio_map,
2491 .num_dapm_routes =
ARRAY_SIZE(max98095_audio_map),
2494 static int max98095_i2c_probe(
struct i2c_client *i2c,
2502 if (max98095 ==
NULL)
2505 max98095->
devtype =
id->driver_data;
2506 i2c_set_clientdata(i2c, max98095);
2507 max98095->
pdata = i2c->
dev.platform_data;
2526 static struct i2c_driver max98095_i2c_driver = {
2531 .probe = max98095_i2c_probe,
2533 .id_table = max98095_i2c_id,