Lines Matching refs:arizona
63 struct arizona *arizona; member
142 struct arizona *arizona = info->arizona; in arizona_extcon_hp_clamp() local
146 switch (arizona->type) { in arizona_extcon_hp_clamp()
162 mutex_lock(&arizona->dapm->card->dapm_mutex); in arizona_extcon_hp_clamp()
164 arizona->hpdet_clamp = clamp; in arizona_extcon_hp_clamp()
168 ret = regmap_update_bits(arizona->regmap, in arizona_extcon_hp_clamp()
173 dev_warn(arizona->dev, in arizona_extcon_hp_clamp()
178 ret = regmap_update_bits(arizona->regmap, ARIZONA_HP_CTRL_1L, in arizona_extcon_hp_clamp()
181 dev_warn(arizona->dev, "Failed to do clamp: %d\n", in arizona_extcon_hp_clamp()
184 ret = regmap_update_bits(arizona->regmap, ARIZONA_HP_CTRL_1R, in arizona_extcon_hp_clamp()
187 dev_warn(arizona->dev, "Failed to do clamp: %d\n", in arizona_extcon_hp_clamp()
192 ret = regmap_update_bits(arizona->regmap, in arizona_extcon_hp_clamp()
195 ARIZONA_OUT1R_ENA, arizona->hp_ena); in arizona_extcon_hp_clamp()
197 dev_warn(arizona->dev, in arizona_extcon_hp_clamp()
202 mutex_unlock(&arizona->dapm->card->dapm_mutex); in arizona_extcon_hp_clamp()
207 struct arizona *arizona = info->arizona; in arizona_extcon_set_mode() local
211 if (arizona->pdata.micd_pol_gpio > 0) in arizona_extcon_set_mode()
212 gpio_set_value_cansleep(arizona->pdata.micd_pol_gpio, in arizona_extcon_set_mode()
214 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_set_mode()
218 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_extcon_set_mode()
223 dev_dbg(arizona->dev, "Set jack polarity to %d\n", mode); in arizona_extcon_set_mode()
242 struct arizona *arizona = info->arizona; in arizona_extcon_pulse_micbias() local
244 struct snd_soc_dapm_context *dapm = arizona->dapm; in arizona_extcon_pulse_micbias()
249 dev_warn(arizona->dev, "Failed to enable %s: %d\n", in arizona_extcon_pulse_micbias()
254 if (!arizona->pdata.micd_force_micbias) { in arizona_extcon_pulse_micbias()
255 ret = snd_soc_dapm_disable_pin(arizona->dapm, widget); in arizona_extcon_pulse_micbias()
257 dev_warn(arizona->dev, "Failed to disable %s: %d\n", in arizona_extcon_pulse_micbias()
266 struct arizona *arizona = info->arizona; in arizona_start_mic() local
276 dev_err(arizona->dev, in arizona_start_mic()
284 dev_err(arizona->dev, "Failed to enable MICVDD: %d\n", in arizona_start_mic()
289 regmap_write(arizona->regmap, 0x80, 0x3); in arizona_start_mic()
290 regmap_write(arizona->regmap, 0x294, 0); in arizona_start_mic()
291 regmap_write(arizona->regmap, 0x80, 0x0); in arizona_start_mic()
294 regmap_update_bits(arizona->regmap, in arizona_start_mic()
300 regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_start_mic()
311 struct arizona *arizona = info->arizona; in arizona_stop_mic() local
313 struct snd_soc_dapm_context *dapm = arizona->dapm; in arizona_stop_mic()
317 regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_stop_mic()
323 dev_warn(arizona->dev, in arizona_stop_mic()
330 regmap_write(arizona->regmap, 0x80, 0x3); in arizona_stop_mic()
331 regmap_write(arizona->regmap, 0x294, 2); in arizona_stop_mic()
332 regmap_write(arizona->regmap, 0x80, 0x0); in arizona_stop_mic()
337 dev_err(arizona->dev, "Failed to bypass MICVDD: %d\n", in arizona_stop_mic()
372 struct arizona *arizona = info->arizona; in arizona_hpdet_read() local
376 ret = regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_2, &val); in arizona_hpdet_read()
378 dev_err(arizona->dev, "Failed to read HPDET status: %d\n", in arizona_hpdet_read()
386 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
396 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
401 ret = regmap_read(arizona->regmap, ARIZONA_HP_DACVAL, &val); in arizona_hpdet_read()
403 dev_err(arizona->dev, "Failed to read HP value: %d\n", in arizona_hpdet_read()
408 regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_hpdet_read()
417 dev_dbg(arizona->dev, "Moving to HPDET range %d\n", in arizona_hpdet_read()
419 regmap_update_bits(arizona->regmap, in arizona_hpdet_read()
430 dev_dbg(arizona->dev, "Measurement out of range\n"); in arizona_hpdet_read()
434 dev_dbg(arizona->dev, "HPDET read %d in range %d\n", in arizona_hpdet_read()
443 dev_warn(arizona->dev, "Unknown HPDET IP revision %d\n", in arizona_hpdet_read()
447 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
456 regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_hpdet_read()
465 dev_dbg(arizona->dev, "Moving to HPDET range %d-%d\n", in arizona_hpdet_read()
468 regmap_update_bits(arizona->regmap, in arizona_hpdet_read()
477 dev_dbg(arizona->dev, "Reporting range boundary %d\n", in arizona_hpdet_read()
483 dev_dbg(arizona->dev, "HP impedance %d ohms\n", val); in arizona_hpdet_read()
490 struct arizona *arizona = info->arizona; in arizona_hpdet_do_id() local
491 int id_gpio = arizona->pdata.hpdet_id_gpio; in arizona_hpdet_do_id()
497 if (arizona->pdata.hpdet_acc_id) { in arizona_hpdet_do_id()
502 dev_dbg(arizona->dev, "Measuring mic\n"); in arizona_hpdet_do_id()
504 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
513 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
520 dev_dbg(arizona->dev, "HPDET measured %d %d\n", in arizona_hpdet_do_id()
528 dev_dbg(arizona->dev, "Retrying high impedance\n"); in arizona_hpdet_do_id()
540 dev_dbg(arizona->dev, "Detected mic\n"); in arizona_hpdet_do_id()
544 dev_dbg(arizona->dev, "Detected headphone\n"); in arizona_hpdet_do_id()
548 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
560 struct arizona *arizona = info->arizona; in arizona_hpdet_irq() local
561 int id_gpio = arizona->pdata.hpdet_id_gpio; in arizona_hpdet_irq()
570 dev_warn(arizona->dev, "Spurious HPDET IRQ\n"); in arizona_hpdet_irq()
578 dev_err(arizona->dev, "Failed to check cable state: %d\n", in arizona_hpdet_irq()
582 dev_dbg(arizona->dev, "Ignoring HPDET for removed cable\n"); in arizona_hpdet_irq()
594 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
613 dev_err(arizona->dev, "Failed to report HP/line: %d\n", in arizona_hpdet_irq()
618 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
629 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
652 struct arizona *arizona = info->arizona; in arizona_identify_headphone() local
658 dev_dbg(arizona->dev, "Starting HPDET\n"); in arizona_identify_headphone()
670 ret = regmap_update_bits(arizona->regmap, in arizona_identify_headphone()
675 dev_err(arizona->dev, "Failed to set HPDETL mode: %d\n", ret); in arizona_identify_headphone()
679 ret = regmap_update_bits(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_identify_headphone()
682 dev_err(arizona->dev, "Can't start HPDETL measurement: %d\n", in arizona_identify_headphone()
690 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_identify_headphone()
697 dev_err(arizona->dev, "Failed to report headphone: %d\n", ret); in arizona_identify_headphone()
707 struct arizona *arizona = info->arizona; in arizona_start_hpdet_acc_id() local
712 dev_dbg(arizona->dev, "Starting identification via HPDET\n"); in arizona_start_hpdet_acc_id()
721 ret = regmap_update_bits(arizona->regmap, in arizona_start_hpdet_acc_id()
727 dev_err(arizona->dev, "Failed to set HPDETL mode: %d\n", ret); in arizona_start_hpdet_acc_id()
731 if (arizona->pdata.hpdet_acc_id_line) { in arizona_start_hpdet_acc_id()
732 ret = regmap_update_bits(arizona->regmap, in arizona_start_hpdet_acc_id()
736 dev_err(arizona->dev, in arizona_start_hpdet_acc_id()
748 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_start_hpdet_acc_id()
755 dev_err(arizona->dev, "Failed to report headphone: %d\n", ret); in arizona_start_hpdet_acc_id()
768 dev_dbg(info->arizona->dev, "MICD timed out, reporting HP\n"); in arizona_micd_timeout_work()
783 struct arizona *arizona = info->arizona; in arizona_micd_detect() local
794 dev_err(arizona->dev, "Failed to check cable state: %d\n", in arizona_micd_detect()
799 dev_dbg(arizona->dev, "Ignoring MICDET for removed cable\n"); in arizona_micd_detect()
805 ret = regmap_read(arizona->regmap, ARIZONA_MIC_DETECT_3, &val); in arizona_micd_detect()
807 dev_err(arizona->dev, in arizona_micd_detect()
813 dev_dbg(arizona->dev, "MICDET: %x\n", val); in arizona_micd_detect()
816 dev_warn(arizona->dev, in arizona_micd_detect()
824 dev_err(arizona->dev, "Failed to get valid MICDET value\n"); in arizona_micd_detect()
831 dev_warn(arizona->dev, "Detected open circuit\n"); in arizona_micd_detect()
844 dev_err(arizona->dev, "Headset report failed: %d\n", in arizona_micd_detect()
850 dev_err(arizona->dev, "Failed to bypass MICVDD: %d\n", in arizona_micd_detect()
867 dev_dbg(arizona->dev, "Detected HP/line\n"); in arizona_micd_detect()
891 dev_dbg(arizona->dev, "Mic button detected\n"); in arizona_micd_detect()
909 dev_dbg(arizona->dev, "Headphone detected\n"); in arizona_micd_detect()
915 dev_warn(arizona->dev, "Button with no mic: %x\n", in arizona_micd_detect()
919 dev_dbg(arizona->dev, "Mic button released\n"); in arizona_micd_detect()
940 struct arizona *arizona = info->arizona; in arizona_micdet() local
941 int debounce = arizona->pdata.micd_detect_debounce; in arizona_micdet()
975 struct arizona *arizona = info->arizona; in arizona_jackdet() local
987 if (arizona->pdata.jd_gpio5) { in arizona_jackdet()
989 if (arizona->pdata.jd_invert) in arizona_jackdet()
995 if (arizona->pdata.jd_invert) in arizona_jackdet()
1001 ret = regmap_read(arizona->regmap, ARIZONA_AOD_IRQ_RAW_STATUS, &val); in arizona_jackdet()
1003 dev_err(arizona->dev, "Failed to read jackdet status: %d\n", in arizona_jackdet()
1012 dev_dbg(arizona->dev, "Suppressing duplicate JACKDET\n"); in arizona_jackdet()
1031 dev_dbg(arizona->dev, "Detected jack\n"); in arizona_jackdet()
1036 dev_err(arizona->dev, "Mechanical report failed: %d\n", in arizona_jackdet()
1039 if (!arizona->pdata.hpdet_acc_id) { in arizona_jackdet()
1051 regmap_update_bits(arizona->regmap, in arizona_jackdet()
1055 dev_dbg(arizona->dev, "Detected jack removal\n"); in arizona_jackdet()
1073 dev_err(arizona->dev, "Removal report failed: %d\n", in arizona_jackdet()
1076 regmap_update_bits(arizona->regmap, in arizona_jackdet()
1082 if (arizona->pdata.micd_timeout) in arizona_jackdet()
1083 info->micd_timeout = arizona->pdata.micd_timeout; in arizona_jackdet()
1089 regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG, in arizona_jackdet()
1104 static void arizona_micd_set_level(struct arizona *arizona, int index, in arizona_micd_set_level() argument
1120 regmap_update_bits(arizona->regmap, reg, mask, level); in arizona_micd_set_level()
1125 struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); in arizona_extcon_probe() local
1126 struct arizona_pdata *pdata = &arizona->pdata; in arizona_extcon_probe()
1133 if (!arizona->dapm || !arizona->dapm->card) in arizona_extcon_probe()
1143 dev_err(arizona->dev, "Failed to get MICVDD: %d\n", ret); in arizona_extcon_probe()
1148 info->arizona = arizona; in arizona_extcon_probe()
1156 switch (arizona->type) { in arizona_extcon_probe()
1158 switch (arizona->rev) { in arizona_extcon_probe()
1170 switch (arizona->rev) { in arizona_extcon_probe()
1192 dev_err(arizona->dev, "extcon_dev_register() failed: %d\n", in arizona_extcon_probe()
1199 dev_err(arizona->dev, "Can't allocate input dev\n"); in arizona_extcon_probe()
1215 if (arizona->pdata.micd_pol_gpio > 0) { in arizona_extcon_probe()
1222 arizona->pdata.micd_pol_gpio, in arizona_extcon_probe()
1226 dev_err(arizona->dev, "Failed to request GPIO%d: %d\n", in arizona_extcon_probe()
1227 arizona->pdata.micd_pol_gpio, ret); in arizona_extcon_probe()
1232 if (arizona->pdata.hpdet_id_gpio > 0) { in arizona_extcon_probe()
1234 arizona->pdata.hpdet_id_gpio, in arizona_extcon_probe()
1238 dev_err(arizona->dev, "Failed to request GPIO%d: %d\n", in arizona_extcon_probe()
1239 arizona->pdata.hpdet_id_gpio, ret); in arizona_extcon_probe()
1244 if (arizona->pdata.micd_bias_start_time) in arizona_extcon_probe()
1245 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1247 arizona->pdata.micd_bias_start_time in arizona_extcon_probe()
1250 if (arizona->pdata.micd_rate) in arizona_extcon_probe()
1251 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1253 arizona->pdata.micd_rate in arizona_extcon_probe()
1256 if (arizona->pdata.micd_dbtime) in arizona_extcon_probe()
1257 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1259 arizona->pdata.micd_dbtime in arizona_extcon_probe()
1264 if (arizona->pdata.num_micd_ranges) { in arizona_extcon_probe()
1272 if (arizona->pdata.num_micd_ranges > ARIZONA_MAX_MICD_RANGE) { in arizona_extcon_probe()
1273 dev_err(arizona->dev, "Too many MICD ranges: %d\n", in arizona_extcon_probe()
1274 arizona->pdata.num_micd_ranges); in arizona_extcon_probe()
1281 dev_err(arizona->dev, in arizona_extcon_probe()
1290 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_2, in arizona_extcon_probe()
1300 dev_err(arizona->dev, "Unsupported MICD level %d\n", in arizona_extcon_probe()
1306 dev_dbg(arizona->dev, "%d ohms for MICD threshold %d\n", in arizona_extcon_probe()
1309 arizona_micd_set_level(arizona, i, j); in arizona_extcon_probe()
1314 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_2, in arizona_extcon_probe()
1320 arizona_micd_set_level(arizona, i, 0x3f); in arizona_extcon_probe()
1327 if (arizona->pdata.jd_gpio5) { in arizona_extcon_probe()
1330 if (arizona->pdata.jd_gpio5_nopull) in arizona_extcon_probe()
1333 regmap_write(arizona->regmap, ARIZONA_GPIO5_CTRL, in arizona_extcon_probe()
1336 if (arizona->pdata.jd_invert) in arizona_extcon_probe()
1341 if (arizona->pdata.jd_invert) in arizona_extcon_probe()
1347 regmap_update_bits(arizona->regmap, in arizona_extcon_probe()
1351 regmap_update_bits(arizona->regmap, in arizona_extcon_probe()
1363 if (arizona->pdata.jd_gpio5) { in arizona_extcon_probe()
1371 ret = arizona_request_irq(arizona, jack_irq_rise, in arizona_extcon_probe()
1379 ret = arizona_set_irq_wake(arizona, jack_irq_rise, 1); in arizona_extcon_probe()
1386 ret = arizona_request_irq(arizona, jack_irq_fall, in arizona_extcon_probe()
1393 ret = arizona_set_irq_wake(arizona, jack_irq_fall, 1); in arizona_extcon_probe()
1400 ret = arizona_request_irq(arizona, ARIZONA_IRQ_MICDET, in arizona_extcon_probe()
1407 ret = arizona_request_irq(arizona, ARIZONA_IRQ_HPDET, in arizona_extcon_probe()
1414 arizona_clk32k_enable(arizona); in arizona_extcon_probe()
1415 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_DEBOUNCE, in arizona_extcon_probe()
1417 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_ANALOGUE, in arizona_extcon_probe()
1422 dev_warn(arizona->dev, "Failed to set MICVDD to bypass: %d\n", in arizona_extcon_probe()
1436 arizona_free_irq(arizona, ARIZONA_IRQ_HPDET, info); in arizona_extcon_probe()
1438 arizona_free_irq(arizona, ARIZONA_IRQ_MICDET, info); in arizona_extcon_probe()
1440 arizona_set_irq_wake(arizona, jack_irq_fall, 0); in arizona_extcon_probe()
1442 arizona_free_irq(arizona, jack_irq_fall, info); in arizona_extcon_probe()
1444 arizona_set_irq_wake(arizona, jack_irq_rise, 0); in arizona_extcon_probe()
1446 arizona_free_irq(arizona, jack_irq_rise, info); in arizona_extcon_probe()
1456 struct arizona *arizona = info->arizona; in arizona_extcon_remove() local
1461 regmap_update_bits(arizona->regmap, in arizona_extcon_remove()
1465 if (arizona->pdata.jd_gpio5) { in arizona_extcon_remove()
1473 arizona_set_irq_wake(arizona, jack_irq_rise, 0); in arizona_extcon_remove()
1474 arizona_set_irq_wake(arizona, jack_irq_fall, 0); in arizona_extcon_remove()
1475 arizona_free_irq(arizona, ARIZONA_IRQ_HPDET, info); in arizona_extcon_remove()
1476 arizona_free_irq(arizona, ARIZONA_IRQ_MICDET, info); in arizona_extcon_remove()
1477 arizona_free_irq(arizona, jack_irq_rise, info); in arizona_extcon_remove()
1478 arizona_free_irq(arizona, jack_irq_fall, info); in arizona_extcon_remove()
1480 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_ANALOGUE, in arizona_extcon_remove()
1482 arizona_clk32k_disable(arizona); in arizona_extcon_remove()