Lines Matching +full:pwm +full:- +full:off +full:- +full:delay +full:- +full:ms
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) ST-Ericsson SA 2012
8 * for ST-Ericsson.
14 * for ST-Ericsson.
25 #include <linux/delay.h>
31 #include <linux/mfd/abx500/ab8500-sysctrl.h>
32 #include <linux/mfd/abx500/ab8500-codec.h>
41 #include <sound/soc-dapm.h>
44 #include "ab8500-codec.h"
58 /* Nr of FIR/IIR-coeff banks in ANC-block */
116 /* Private data for AB8500 device-driver */
159 /* Read a register from the audio-bank of AB8500 */
174 /* Write to a register in the audio-bank of AB8500 */
190 * Controls - DAPM
217 /* Speaker Left - ANC selector */
225 /* Speaker Right - ANC selector */
234 /* Mic 1 - Mic 1a or 1b selector */
242 /* Mic 1 - AD3 - Mic 1 or DMic 3 selector */
250 /* Mic 1 - AD6 - Mic 1 or DMic 6 selector */
260 /* Mic 2 - AD5 - Mic 2 or DMic 5 selector */
270 /* LineIn left - AD1 - LineIn Left or DMic 1 selector */
278 /* LineIn right - Mic 2 or LineIn Right selector */
286 /* LineIn right - AD2 - LineIn Right or DMic2 selector */
305 /* ANC - Enable/Disable */
311 /* ANC to Earpiece - Mute */
321 /* Sidetone left - Input selector */
333 /* Sidetone right - Input selector */
345 static const char * const enum_pwm2vibx[] = {"Audio Path", "PWM Generator"};
362 * DAPM-widgets
371 SND_SOC_DAPM_REGULATOR_SUPPLY("V-AUD", 0, 0),
372 SND_SOC_DAPM_REGULATOR_SUPPLY("V-AMIC1", 0, 0),
373 SND_SOC_DAPM_REGULATOR_SUPPLY("V-AMIC2", 0, 0),
374 SND_SOC_DAPM_REGULATOR_SUPPLY("V-DMIC", 0, 0),
573 SND_SOC_DAPM_MIXER("MIC1A V-AMICx Enable",
576 SND_SOC_DAPM_MIXER("MIC1B V-AMICx Enable",
598 SND_SOC_DAPM_MIXER("MIC2 V-AMICx Enable", AB8500_ANACONF2,
743 * DAPM-routes
746 /* Power AB8500 audio-block when AD/DA is active */
747 {"Main Supply", NULL, "V-AUD"},
872 {"Vibra 1 Controller", "PWM Generator", "PWMGEN1"},
873 {"Vibra 2 Controller", "PWM Generator", "PWMGEN2"},
884 {"MIC2 V-AMICx Enable", NULL, "Mic 2"},
895 {"Mic 2 or LINR Select", "Mic 2", "MIC2 V-AMICx Enable"},
918 {"MIC1A V-AMICx Enable", NULL, "MIC1 Mute"},
919 {"MIC1B V-AMICx Enable", NULL, "MIC1 Mute"},
921 {"Mic 1a or 1b Select", "Mic 1a", "MIC1A V-AMICx Enable"},
922 {"Mic 1a or 1b Select", "Mic 1b", "MIC1B V-AMICx Enable"},
953 {"DMic 1", NULL, "V-DMIC"},
954 {"DMic 2", NULL, "V-DMIC"},
955 {"DMic 3", NULL, "V-DMIC"},
956 {"DMic 4", NULL, "V-DMIC"},
957 {"DMic 5", NULL, "V-DMIC"},
958 {"DMic 6", NULL, "V-DMIC"},
1015 {"MIC1A V-AMICx Enable", NULL, "V-AMIC1"},
1016 {"MIC1A V-AMICx Enable", NULL, "V-AMIC2"},
1020 {"MIC1B V-AMICx Enable", NULL, "V-AMIC1"},
1021 {"MIC1B V-AMICx Enable", NULL, "V-AMIC2"},
1025 {"MIC2 V-AMICx Enable", NULL, "V-AMIC1"},
1026 {"MIC2 V-AMICx Enable", NULL, "V-AMIC2"},
1029 /* ANC FIR-coefficients configuration sequence */
1041 if (par == AB8500_ANC_FIR_COEFFS - 1 && bnk == 1) in anc_fir()
1046 /* ANC IIR-coefficients configuration sequence */
1072 if (par == AB8500_ANC_IIR_COEFFS - 1 && bnk == 1) in anc_iir()
1077 /* ANC IIR-/FIR-coefficients configuration sequence */
1081 struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(component->dev); in anc_configure()
1084 dev_dbg(component->dev, "%s: Enter.\n", __func__); in anc_configure()
1097 drvdata->anc_fir_values[par]); in anc_configure()
1105 drvdata->anc_iir_values[par]); in anc_configure()
1109 dev_dbg(component->dev, "%s: Exit.\n", __func__); in anc_configure()
1113 * Control-events
1120 struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(component->dev); in sid_status_control_get()
1122 mutex_lock(&drvdata->ctrl_lock); in sid_status_control_get()
1123 ucontrol->value.enumerated.item[0] = drvdata->sid_status; in sid_status_control_get()
1124 mutex_unlock(&drvdata->ctrl_lock); in sid_status_control_get()
1129 /* Write sidetone FIR-coefficients configuration sequence */
1134 struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(component->dev); in sid_status_control_put()
1138 dev_dbg(component->dev, "%s: Enter\n", __func__); in sid_status_control_put()
1140 if (ucontrol->value.enumerated.item[0] != SID_APPLY_FIR) { in sid_status_control_put()
1141 dev_err(component->dev, in sid_status_control_put()
1144 return -EIO; in sid_status_control_put()
1147 mutex_lock(&drvdata->ctrl_lock); in sid_status_control_put()
1152 dev_err(component->dev, "%s: Sidetone busy while off!\n", in sid_status_control_put()
1154 status = -EPERM; in sid_status_control_put()
1156 status = -EBUSY; in sid_status_control_put()
1164 val = snd_soc_component_read(component, drvdata->sid_fir_values[param]); in sid_status_control_put()
1175 drvdata->sid_status = SID_FIR_CONFIGURED; in sid_status_control_put()
1178 mutex_unlock(&drvdata->ctrl_lock); in sid_status_control_put()
1180 dev_dbg(component->dev, "%s: Exit\n", __func__); in sid_status_control_put()
1189 struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(component->dev); in anc_status_control_get()
1191 mutex_lock(&drvdata->ctrl_lock); in anc_status_control_get()
1192 ucontrol->value.enumerated.item[0] = drvdata->anc_status; in anc_status_control_get()
1193 mutex_unlock(&drvdata->ctrl_lock); in anc_status_control_get()
1203 struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(component->dev); in anc_status_control_put()
1204 struct device *dev = component->dev; in anc_status_control_put()
1211 mutex_lock(&drvdata->ctrl_lock); in anc_status_control_put()
1213 req = ucontrol->value.enumerated.item[0]; in anc_status_control_put()
1215 status = -EINVAL; in anc_status_control_put()
1222 status = -EINVAL; in anc_status_control_put()
1240 if (drvdata->anc_status == ANC_IIR_CONFIGURED) in anc_status_control_put()
1241 drvdata->anc_status = ANC_FIR_IIR_CONFIGURED; in anc_status_control_put()
1242 else if (drvdata->anc_status != ANC_FIR_IIR_CONFIGURED) in anc_status_control_put()
1243 drvdata->anc_status = ANC_FIR_CONFIGURED; in anc_status_control_put()
1246 if (drvdata->anc_status == ANC_FIR_CONFIGURED) in anc_status_control_put()
1247 drvdata->anc_status = ANC_FIR_IIR_CONFIGURED; in anc_status_control_put()
1248 else if (drvdata->anc_status != ANC_FIR_IIR_CONFIGURED) in anc_status_control_put()
1249 drvdata->anc_status = ANC_IIR_CONFIGURED; in anc_status_control_put()
1256 mutex_unlock(&drvdata->ctrl_lock); in anc_status_control_put()
1271 (struct filter_control *)kcontrol->private_value; in filter_control_info()
1273 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; in filter_control_info()
1274 uinfo->count = fc->count; in filter_control_info()
1275 uinfo->value.integer.min = fc->min; in filter_control_info()
1276 uinfo->value.integer.max = fc->max; in filter_control_info()
1287 (struct filter_control *)kcontrol->private_value; in filter_control_get()
1290 mutex_lock(&drvdata->ctrl_lock); in filter_control_get()
1291 for (i = 0; i < fc->count; i++) in filter_control_get()
1292 ucontrol->value.integer.value[i] = fc->value[i]; in filter_control_get()
1293 mutex_unlock(&drvdata->ctrl_lock); in filter_control_get()
1304 (struct filter_control *)kcontrol->private_value; in filter_control_put()
1307 mutex_lock(&drvdata->ctrl_lock); in filter_control_put()
1308 for (i = 0; i < fc->count; i++) in filter_control_put()
1309 fc->value[i] = ucontrol->value.integer.value[i]; in filter_control_put()
1310 mutex_unlock(&drvdata->ctrl_lock); in filter_control_put()
1316 * Controls - Non-DAPM ASoC
1319 static DECLARE_TLV_DB_SCALE(adx_dig_gain_tlv, -3200, 100, 1);
1320 /* -32dB = Mute */
1322 static DECLARE_TLV_DB_SCALE(dax_dig_gain_tlv, -6300, 100, 1);
1323 /* -63dB = Mute */
1325 static DECLARE_TLV_DB_SCALE(hs_ear_dig_gain_tlv, -100, 100, 1);
1326 /* -1dB = Mute */
1329 0, 3, TLV_DB_SCALE_ITEM(-3200, 400, 0),
1330 4, 15, TLV_DB_SCALE_ITEM(-1800, 200, 0)
1335 static DECLARE_TLV_DB_SCALE(lin_gain_tlv, -1000, 200, 0);
1337 static DECLARE_TLV_DB_SCALE(lin2hs_gain_tlv, -3800, 200, 1);
1338 /* -38dB = Mute */
1340 static const char * const enum_hsfadspeed[] = {"2ms", "0.5ms", "10.6ms",
1341 "5ms"};
1356 "426us", "851us", "1.70ms", "3.40ms",
1357 "6.81ms", "13.6ms", "27.2ms", "54.5ms",
1358 "109ms", "218ms", "436ms", "872ms" };
1366 static const char * const enum_fadespeed[] = {"1ms", "4ms", "8ms", "16ms"};
1412 /* Digital interface - DA from slot mapping */
1470 /* Digital interface - AD to slot mapping */
1584 /* Digital interface - Burst mode */
1688 SOC_DOUBLE_R("Vibra PWM Duty Cycle N",
1692 SOC_DOUBLE_R("Vibra PWM Duty Cycle P",
1774 /* Digital interface - DA from slot mapping */
1784 /* Digital interface - AD to slot mapping */
1818 /* Digital interface - Loopback */
1844 /* Digital interface - Burst FIFO */
1849 SOC_ENUM("Burst FIFO Bit-clock Frequency", soc_enum_bfifo19m2),
1859 SOC_SINGLE("Burst FIFO FS Extra Bit-clocks",
1870 SOC_SINGLE("Burst FIFO Wake Up Delay",
1880 SOC_SINGLE_XR_SX("ANC Warp Delay Shift",
1889 SOC_SINGLE_XR_SX("ANC Warp Delay",
1916 * Extended interface for codec-driver
1923 dev_dbg(component->dev, "%s: Enter.\n", __func__); in ab8500_audio_init_audioblock()
1925 /* Reset audio-registers and disable 32kHz-clock output 2 */ in ab8500_audio_init_audioblock()
1945 dev_dbg(component->dev, "%s: Enter.\n", __func__); in ab8500_audio_setup_mics()
1947 /* Set DMic-clocks to outputs */ in ab8500_audio_setup_mics()
1948 status = abx500_get_register_interruptible(component->dev, AB8500_MISC, in ab8500_audio_setup_mics()
1955 status = abx500_set_register_interruptible(component->dev, in ab8500_audio_setup_mics()
1962 /* Attach regulators to AMic DAPM-paths */ in ab8500_audio_setup_mics()
1963 dev_dbg(component->dev, "%s: Mic 1a regulator: %s\n", __func__, in ab8500_audio_setup_mics()
1964 amic_micbias_str(amics->mic1a_micbias)); in ab8500_audio_setup_mics()
1965 route = &ab8500_dapm_routes_mic1a_vamicx[amics->mic1a_micbias]; in ab8500_audio_setup_mics()
1967 dev_dbg(component->dev, "%s: Mic 1b regulator: %s\n", __func__, in ab8500_audio_setup_mics()
1968 amic_micbias_str(amics->mic1b_micbias)); in ab8500_audio_setup_mics()
1969 route = &ab8500_dapm_routes_mic1b_vamicx[amics->mic1b_micbias]; in ab8500_audio_setup_mics()
1971 dev_dbg(component->dev, "%s: Mic 2 regulator: %s\n", __func__, in ab8500_audio_setup_mics()
1972 amic_micbias_str(amics->mic2_micbias)); in ab8500_audio_setup_mics()
1973 route = &ab8500_dapm_routes_mic2_vamicx[amics->mic2_micbias]; in ab8500_audio_setup_mics()
1976 dev_err(component->dev, in ab8500_audio_setup_mics()
1977 "%s: Failed to add AMic-regulator DAPM-routes (%d).\n", in ab8500_audio_setup_mics()
1982 /* Set AMic-configuration */ in ab8500_audio_setup_mics()
1983 dev_dbg(component->dev, "%s: Mic 1 mic-type: %s\n", __func__, in ab8500_audio_setup_mics()
1984 amic_type_str(amics->mic1_type)); in ab8500_audio_setup_mics()
1986 amics->mic1_type == AMIC_TYPE_DIFFERENTIAL ? in ab8500_audio_setup_mics()
1988 dev_dbg(component->dev, "%s: Mic 2 mic-type: %s\n", __func__, in ab8500_audio_setup_mics()
1989 amic_type_str(amics->mic2_type)); in ab8500_audio_setup_mics()
1991 amics->mic2_type == AMIC_TYPE_DIFFERENTIAL ? in ab8500_audio_setup_mics()
2016 dev_err(component->dev, in ab8500_audio_set_ear_cmv()
2017 "%s: Unknown earpiece CM-voltage (%d)!\n", in ab8500_audio_set_ear_cmv()
2019 return -EINVAL; in ab8500_audio_set_ear_cmv()
2021 dev_dbg(component->dev, "%s: Earpiece CM-voltage: %s\n", __func__, in ab8500_audio_set_ear_cmv()
2030 unsigned int delay) in ab8500_audio_set_bit_delay() argument
2033 struct snd_soc_component *component = dai->component; in ab8500_audio_set_bit_delay()
2038 switch (delay) { in ab8500_audio_set_bit_delay()
2045 dev_err(dai->component->dev, in ab8500_audio_set_bit_delay()
2046 "%s: ERROR: Unsupported bit-delay (0x%x)!\n", in ab8500_audio_set_bit_delay()
2047 __func__, delay); in ab8500_audio_set_bit_delay()
2048 return -EINVAL; in ab8500_audio_set_bit_delay()
2051 dev_dbg(dai->component->dev, "%s: IF0 Bit-delay: %d bits.\n", in ab8500_audio_set_bit_delay()
2052 __func__, delay); in ab8500_audio_set_bit_delay()
2072 dev_dbg(component->dev, "%s: IF0 Clock is continuous.\n", in ab8500_codec_set_dai_clock_gate()
2077 dev_dbg(component->dev, "%s: IF0 Clock is gated.\n", in ab8500_codec_set_dai_clock_gate()
2081 dev_err(component->dev, in ab8500_codec_set_dai_clock_gate()
2084 return -EINVAL; in ab8500_codec_set_dai_clock_gate()
2096 struct snd_soc_component *component = dai->component; in ab8500_codec_set_dai_fmt()
2099 dev_dbg(component->dev, "%s: Enter (fmt = 0x%x)\n", __func__, fmt); in ab8500_codec_set_dai_fmt()
2109 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2110 "%s: IF0 Master-mode: AB8500 master.\n", __func__); in ab8500_codec_set_dai_fmt()
2114 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2115 "%s: IF0 Master-mode: AB8500 slave.\n", __func__); in ab8500_codec_set_dai_fmt()
2119 dev_err(dai->component->dev, in ab8500_codec_set_dai_fmt()
2124 dev_err(dai->component->dev, in ab8500_codec_set_dai_fmt()
2127 return -EINVAL; in ab8500_codec_set_dai_fmt()
2135 dev_err(dai->component->dev, in ab8500_codec_set_dai_fmt()
2151 dev_dbg(dai->component->dev, "%s: IF0 Protocol: I2S\n", __func__); in ab8500_codec_set_dai_fmt()
2157 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2164 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2171 dev_err(dai->component->dev, in ab8500_codec_set_dai_fmt()
2174 return -EINVAL; in ab8500_codec_set_dai_fmt()
2179 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2184 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2190 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2196 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_fmt()
2203 dev_err(dai->component->dev, in ab8500_codec_set_dai_fmt()
2206 return -EINVAL; in ab8500_codec_set_dai_fmt()
2218 struct snd_soc_component *component = dai->component; in ab8500_codec_set_dai_tdm_slot()
2239 dev_err(dai->component->dev, "%s: Unsupported slot-width 0x%x\n", in ab8500_codec_set_dai_tdm_slot()
2241 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2244 dev_dbg(dai->component->dev, "%s: IF0 slot-width: %d bits.\n", in ab8500_codec_set_dai_tdm_slot()
2249 dev_dbg(dai->component->dev, "%s: Slots, total: %d\n", __func__, slots); in ab8500_codec_set_dai_tdm_slot()
2267 dev_err(dai->component->dev, in ab8500_codec_set_dai_tdm_slot()
2270 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2277 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2283 dev_dbg(dai->component->dev, "%s: Slots, active, TX: %d\n", __func__, in ab8500_codec_set_dai_tdm_slot()
2305 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_tdm_slot()
2306 "%s: In 8-channel mode DA-from-slot mapping is set manually.", in ab8500_codec_set_dai_tdm_slot()
2310 dev_err(dai->component->dev, in ab8500_codec_set_dai_tdm_slot()
2311 "%s: Unsupported number of active TX-slots (%d)!\n", in ab8500_codec_set_dai_tdm_slot()
2313 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2316 /* Setup TDM AD according to active RX-slots */ in ab8500_codec_set_dai_tdm_slot()
2319 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2324 dev_dbg(dai->component->dev, "%s: Slots, active, RX: %d\n", __func__, in ab8500_codec_set_dai_tdm_slot()
2349 dev_dbg(dai->component->dev, in ab8500_codec_set_dai_tdm_slot()
2350 "%s: In 8-channel mode AD-to-slot mapping is set manually.", in ab8500_codec_set_dai_tdm_slot()
2354 dev_err(dai->component->dev, in ab8500_codec_set_dai_tdm_slot()
2355 "%s: Unsupported number of active RX-slots (%d)!\n", in ab8500_codec_set_dai_tdm_slot()
2357 return -EINVAL; in ab8500_codec_set_dai_tdm_slot()
2370 .name = "ab8500-codec-dai.0",
2383 .name = "ab8500-codec-dai.1",
2402 if (of_property_read_bool(np, "stericsson,amic1-type-single-ended")) in ab8500_codec_of_probe()
2403 codec->amics.mic1_type = AMIC_TYPE_SINGLE_ENDED; in ab8500_codec_of_probe()
2405 codec->amics.mic1_type = AMIC_TYPE_DIFFERENTIAL; in ab8500_codec_of_probe()
2407 if (of_property_read_bool(np, "stericsson,amic2-type-single-ended")) in ab8500_codec_of_probe()
2408 codec->amics.mic2_type = AMIC_TYPE_SINGLE_ENDED; in ab8500_codec_of_probe()
2410 codec->amics.mic2_type = AMIC_TYPE_DIFFERENTIAL; in ab8500_codec_of_probe()
2412 /* Has a non-standard Vamic been requested? */ in ab8500_codec_of_probe()
2413 if (of_property_read_bool(np, "stericsson,amic1a-bias-vamic2")) in ab8500_codec_of_probe()
2414 codec->amics.mic1a_micbias = AMIC_MICBIAS_VAMIC2; in ab8500_codec_of_probe()
2416 codec->amics.mic1a_micbias = AMIC_MICBIAS_VAMIC1; in ab8500_codec_of_probe()
2418 if (of_property_read_bool(np, "stericsson,amic1b-bias-vamic2")) in ab8500_codec_of_probe()
2419 codec->amics.mic1b_micbias = AMIC_MICBIAS_VAMIC2; in ab8500_codec_of_probe()
2421 codec->amics.mic1b_micbias = AMIC_MICBIAS_VAMIC1; in ab8500_codec_of_probe()
2423 if (of_property_read_bool(np, "stericsson,amic2-bias-vamic1")) in ab8500_codec_of_probe()
2424 codec->amics.mic2_micbias = AMIC_MICBIAS_VAMIC1; in ab8500_codec_of_probe()
2426 codec->amics.mic2_micbias = AMIC_MICBIAS_VAMIC2; in ab8500_codec_of_probe()
2428 if (!of_property_read_u32(np, "stericsson,earpeice-cmv", &value)) { in ab8500_codec_of_probe()
2431 codec->ear_cmv = EAR_CMV_0_95V; in ab8500_codec_of_probe()
2434 codec->ear_cmv = EAR_CMV_1_10V; in ab8500_codec_of_probe()
2437 codec->ear_cmv = EAR_CMV_1_27V; in ab8500_codec_of_probe()
2440 codec->ear_cmv = EAR_CMV_1_58V; in ab8500_codec_of_probe()
2443 codec->ear_cmv = EAR_CMV_UNKNOWN; in ab8500_codec_of_probe()
2447 dev_warn(dev, "No earpiece voltage found in DT - using default\n"); in ab8500_codec_of_probe()
2448 codec->ear_cmv = EAR_CMV_0_95V; in ab8500_codec_of_probe()
2455 struct device *dev = component->dev; in ab8500_codec_probe()
2456 struct device_node *np = dev->of_node; in ab8500_codec_probe()
2473 pr_err("%s: Failed to set earpiece CM-voltage (%d)!\n", in ab8500_codec_probe()
2480 dev_err(dev, "%s: failed to init audio-block (%d)!\n", in ab8500_codec_probe()
2485 /* Override HW-defaults */ in ab8500_codec_probe()
2502 drvdata->anc_fir_values = (long *)fc->value; in ab8500_codec_probe()
2505 drvdata->anc_iir_values = (long *)fc->value; in ab8500_codec_probe()
2508 drvdata->sid_fir_values = (long *)fc->value; in ab8500_codec_probe()
2512 mutex_init(&drvdata->ctrl_lock); in ab8500_codec_probe()
2536 dev_dbg(&pdev->dev, "%s: Enter.\n", __func__); in ab8500_codec_driver_probe()
2538 /* Create driver private-data struct */ in ab8500_codec_driver_probe()
2539 drvdata = devm_kzalloc(&pdev->dev, sizeof(struct ab8500_codec_drvdata), in ab8500_codec_driver_probe()
2542 return -ENOMEM; in ab8500_codec_driver_probe()
2543 drvdata->sid_status = SID_UNCONFIGURED; in ab8500_codec_driver_probe()
2544 drvdata->anc_status = ANC_UNCONFIGURED; in ab8500_codec_driver_probe()
2545 dev_set_drvdata(&pdev->dev, drvdata); in ab8500_codec_driver_probe()
2547 drvdata->regmap = devm_regmap_init(&pdev->dev, NULL, &pdev->dev, in ab8500_codec_driver_probe()
2549 if (IS_ERR(drvdata->regmap)) { in ab8500_codec_driver_probe()
2550 status = PTR_ERR(drvdata->regmap); in ab8500_codec_driver_probe()
2551 dev_err(&pdev->dev, "%s: Failed to allocate regmap: %d\n", in ab8500_codec_driver_probe()
2556 dev_dbg(&pdev->dev, "%s: Register codec.\n", __func__); in ab8500_codec_driver_probe()
2557 status = devm_snd_soc_register_component(&pdev->dev, in ab8500_codec_driver_probe()
2562 dev_err(&pdev->dev, in ab8500_codec_driver_probe()
2571 .name = "ab8500-codec",