Lines Matching refs:arizona

72 	struct arizona *arizona;  member
151 struct arizona *arizona = info->arizona; in arizona_extcon_hp_clamp() local
156 switch (arizona->type) { in arizona_extcon_hp_clamp()
173 ret = regmap_update_bits(arizona->regmap, in arizona_extcon_hp_clamp()
178 dev_warn(arizona->dev, in arizona_extcon_hp_clamp()
188 mutex_lock(&arizona->dapm->card->dapm_mutex); in arizona_extcon_hp_clamp()
190 arizona->hpdet_clamp = clamp; in arizona_extcon_hp_clamp()
194 ret = regmap_update_bits(arizona->regmap, in arizona_extcon_hp_clamp()
199 dev_warn(arizona->dev, in arizona_extcon_hp_clamp()
205 ret = regmap_update_bits(arizona->regmap, ARIZONA_HP_CTRL_1L, in arizona_extcon_hp_clamp()
208 dev_warn(arizona->dev, "Failed to do clamp: %d\n", in arizona_extcon_hp_clamp()
211 ret = regmap_update_bits(arizona->regmap, ARIZONA_HP_CTRL_1R, in arizona_extcon_hp_clamp()
214 dev_warn(arizona->dev, "Failed to do clamp: %d\n", in arizona_extcon_hp_clamp()
220 ret = regmap_update_bits(arizona->regmap, in arizona_extcon_hp_clamp()
223 ARIZONA_OUT1R_ENA, arizona->hp_ena); in arizona_extcon_hp_clamp()
225 dev_warn(arizona->dev, in arizona_extcon_hp_clamp()
230 mutex_unlock(&arizona->dapm->card->dapm_mutex); in arizona_extcon_hp_clamp()
235 struct arizona *arizona = info->arizona; in arizona_extcon_set_mode() local
239 if (arizona->pdata.micd_pol_gpio > 0) in arizona_extcon_set_mode()
240 gpio_set_value_cansleep(arizona->pdata.micd_pol_gpio, in arizona_extcon_set_mode()
246 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_set_mode()
250 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_extcon_set_mode()
255 dev_dbg(arizona->dev, "Set jack polarity to %d\n", mode); in arizona_extcon_set_mode()
274 struct arizona *arizona = info->arizona; in arizona_extcon_pulse_micbias() local
276 struct snd_soc_dapm_context *dapm = arizona->dapm; in arizona_extcon_pulse_micbias()
281 dev_warn(arizona->dev, "Failed to enable %s: %d\n", in arizona_extcon_pulse_micbias()
286 if (!arizona->pdata.micd_force_micbias) { in arizona_extcon_pulse_micbias()
287 ret = snd_soc_dapm_disable_pin(arizona->dapm, widget); in arizona_extcon_pulse_micbias()
289 dev_warn(arizona->dev, "Failed to disable %s: %d\n", in arizona_extcon_pulse_micbias()
298 struct arizona *arizona = info->arizona; in arizona_start_mic() local
309 dev_err(arizona->dev, in arizona_start_mic()
317 dev_err(arizona->dev, "Failed to enable MICVDD: %d\n", in arizona_start_mic()
322 regmap_write(arizona->regmap, 0x80, 0x3); in arizona_start_mic()
323 regmap_write(arizona->regmap, 0x294, 0); in arizona_start_mic()
324 regmap_write(arizona->regmap, 0x80, 0x0); in arizona_start_mic()
327 if (info->detecting && arizona->pdata.micd_software_compare) in arizona_start_mic()
332 regmap_update_bits(arizona->regmap, in arizona_start_mic()
338 regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_start_mic()
349 struct arizona *arizona = info->arizona; in arizona_stop_mic() local
351 struct snd_soc_dapm_context *dapm = arizona->dapm; in arizona_stop_mic()
355 regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_stop_mic()
361 dev_warn(arizona->dev, in arizona_stop_mic()
368 regmap_write(arizona->regmap, 0x80, 0x3); in arizona_stop_mic()
369 regmap_write(arizona->regmap, 0x294, 2); in arizona_stop_mic()
370 regmap_write(arizona->regmap, 0x80, 0x0); in arizona_stop_mic()
375 dev_err(arizona->dev, "Failed to bypass MICVDD: %d\n", in arizona_stop_mic()
410 struct arizona *arizona = info->arizona; in arizona_hpdet_read() local
414 ret = regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_2, &val); in arizona_hpdet_read()
416 dev_err(arizona->dev, "Failed to read HPDET status: %d\n", in arizona_hpdet_read()
424 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
434 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
439 ret = regmap_read(arizona->regmap, ARIZONA_HP_DACVAL, &val); in arizona_hpdet_read()
441 dev_err(arizona->dev, "Failed to read HP value: %d\n", in arizona_hpdet_read()
446 regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_hpdet_read()
455 dev_dbg(arizona->dev, "Moving to HPDET range %d\n", in arizona_hpdet_read()
457 regmap_update_bits(arizona->regmap, in arizona_hpdet_read()
468 dev_dbg(arizona->dev, "Measurement out of range\n"); in arizona_hpdet_read()
472 dev_dbg(arizona->dev, "HPDET read %d in range %d\n", in arizona_hpdet_read()
482 dev_err(arizona->dev, "HPDET did not complete: %x\n", in arizona_hpdet_read()
491 regmap_read(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_hpdet_read()
500 dev_dbg(arizona->dev, "Moving to HPDET range %d-%d\n", in arizona_hpdet_read()
503 regmap_update_bits(arizona->regmap, in arizona_hpdet_read()
512 dev_dbg(arizona->dev, "Reporting range boundary %d\n", in arizona_hpdet_read()
519 dev_warn(arizona->dev, "Unknown HPDET IP revision %d\n", in arizona_hpdet_read()
524 dev_dbg(arizona->dev, "HP impedance %d ohms\n", val); in arizona_hpdet_read()
531 struct arizona *arizona = info->arizona; in arizona_hpdet_do_id() local
532 int id_gpio = arizona->pdata.hpdet_id_gpio; in arizona_hpdet_do_id()
538 if (arizona->pdata.hpdet_acc_id) { in arizona_hpdet_do_id()
543 dev_dbg(arizona->dev, "Measuring mic\n"); in arizona_hpdet_do_id()
545 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
554 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
561 dev_dbg(arizona->dev, "HPDET measured %d %d\n", in arizona_hpdet_do_id()
569 dev_dbg(arizona->dev, "Retrying high impedance\n"); in arizona_hpdet_do_id()
581 dev_dbg(arizona->dev, "Detected mic\n"); in arizona_hpdet_do_id()
585 dev_dbg(arizona->dev, "Detected headphone\n"); in arizona_hpdet_do_id()
589 regmap_update_bits(arizona->regmap, in arizona_hpdet_do_id()
601 struct arizona *arizona = info->arizona; in arizona_hpdet_irq() local
602 int id_gpio = arizona->pdata.hpdet_id_gpio; in arizona_hpdet_irq()
611 dev_warn(arizona->dev, "Spurious HPDET IRQ\n"); in arizona_hpdet_irq()
619 dev_err(arizona->dev, "Failed to check cable state: %d\n", in arizona_hpdet_irq()
623 dev_dbg(arizona->dev, "Ignoring HPDET for removed cable\n"); in arizona_hpdet_irq()
635 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
654 dev_err(arizona->dev, "Failed to report HP/line: %d\n", in arizona_hpdet_irq()
659 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
670 regmap_update_bits(arizona->regmap, in arizona_hpdet_irq()
693 struct arizona *arizona = info->arizona; in arizona_identify_headphone() local
699 dev_dbg(arizona->dev, "Starting HPDET\n"); in arizona_identify_headphone()
711 ret = regmap_update_bits(arizona->regmap, in arizona_identify_headphone()
714 arizona->pdata.hpdet_channel); in arizona_identify_headphone()
716 dev_err(arizona->dev, "Failed to set HPDET mode: %d\n", ret); in arizona_identify_headphone()
720 ret = regmap_update_bits(arizona->regmap, ARIZONA_HEADPHONE_DETECT_1, in arizona_identify_headphone()
723 dev_err(arizona->dev, "Can't start HPDETL measurement: %d\n", in arizona_identify_headphone()
731 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_identify_headphone()
737 dev_err(arizona->dev, "Failed to report headphone: %d\n", ret); in arizona_identify_headphone()
747 struct arizona *arizona = info->arizona; in arizona_start_hpdet_acc_id() local
752 dev_dbg(arizona->dev, "Starting identification via HPDET\n"); in arizona_start_hpdet_acc_id()
761 ret = regmap_update_bits(arizona->regmap, in arizona_start_hpdet_acc_id()
765 arizona->pdata.hpdet_channel); in arizona_start_hpdet_acc_id()
767 dev_err(arizona->dev, "Failed to set HPDET mode: %d\n", ret); in arizona_start_hpdet_acc_id()
771 if (arizona->pdata.hpdet_acc_id_line) { in arizona_start_hpdet_acc_id()
772 ret = regmap_update_bits(arizona->regmap, in arizona_start_hpdet_acc_id()
776 dev_err(arizona->dev, in arizona_start_hpdet_acc_id()
788 regmap_update_bits(arizona->regmap, ARIZONA_ACCESSORY_DETECT_MODE_1, in arizona_start_hpdet_acc_id()
794 dev_err(arizona->dev, "Failed to report headphone: %d\n", ret); in arizona_start_hpdet_acc_id()
807 dev_dbg(info->arizona->dev, "MICD timed out, reporting HP\n"); in arizona_micd_timeout_work()
823 struct arizona *arizona = info->arizona; in arizona_micd_detect() local
834 dev_err(arizona->dev, "Failed to check cable state: %d\n", in arizona_micd_detect()
839 dev_dbg(arizona->dev, "Ignoring MICDET for removed cable\n"); in arizona_micd_detect()
844 if (info->detecting && arizona->pdata.micd_software_compare) { in arizona_micd_detect()
846 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_micd_detect()
848 ret = regmap_read(arizona->regmap, ARIZONA_MIC_DETECT_4, &val); in arizona_micd_detect()
850 dev_err(arizona->dev, in arizona_micd_detect()
857 dev_dbg(arizona->dev, "MICDET_ADCVAL: %x\n", val); in arizona_micd_detect()
876 ret = regmap_read(arizona->regmap, ARIZONA_MIC_DETECT_3, &val); in arizona_micd_detect()
878 dev_err(arizona->dev, in arizona_micd_detect()
884 dev_dbg(arizona->dev, "MICDET: %x\n", val); in arizona_micd_detect()
887 dev_warn(arizona->dev, in arizona_micd_detect()
895 dev_err(arizona->dev, "Failed to get valid MICDET value\n"); in arizona_micd_detect()
902 dev_warn(arizona->dev, "Detected open circuit\n"); in arizona_micd_detect()
920 dev_err(arizona->dev, "Headset report failed: %d\n", in arizona_micd_detect()
926 dev_err(arizona->dev, "Failed to bypass MICVDD: %d\n", in arizona_micd_detect()
941 dev_dbg(arizona->dev, "Detected HP/line\n"); in arizona_micd_detect()
966 dev_dbg(arizona->dev, "Mic button detected\n"); in arizona_micd_detect()
984 dev_dbg(arizona->dev, "Headphone detected\n"); in arizona_micd_detect()
990 dev_warn(arizona->dev, "Button with no mic: %x\n", in arizona_micd_detect()
994 dev_dbg(arizona->dev, "Mic button released\n"); in arizona_micd_detect()
1004 if (arizona->pdata.micd_software_compare) in arizona_micd_detect()
1005 regmap_update_bits(arizona->regmap, in arizona_micd_detect()
1022 struct arizona *arizona = info->arizona; in arizona_micdet() local
1023 int debounce = arizona->pdata.micd_detect_debounce; in arizona_micdet()
1057 struct arizona *arizona = info->arizona; in arizona_jackdet() local
1074 if (arizona->pdata.jd_invert) in arizona_jackdet()
1080 ret = regmap_read(arizona->regmap, ARIZONA_AOD_IRQ_RAW_STATUS, &val); in arizona_jackdet()
1082 dev_err(arizona->dev, "Failed to read jackdet status: %d\n", in arizona_jackdet()
1091 dev_dbg(arizona->dev, "Suppressing duplicate JACKDET\n"); in arizona_jackdet()
1110 dev_dbg(arizona->dev, "Detected jack\n"); in arizona_jackdet()
1115 dev_err(arizona->dev, "Mechanical report failed: %d\n", in arizona_jackdet()
1118 if (!arizona->pdata.hpdet_acc_id) { in arizona_jackdet()
1130 if (info->micd_clamp || !arizona->pdata.jd_invert) in arizona_jackdet()
1131 regmap_update_bits(arizona->regmap, in arizona_jackdet()
1136 dev_dbg(arizona->dev, "Detected jack removal\n"); in arizona_jackdet()
1154 dev_err(arizona->dev, "Removal report failed: %d\n", in arizona_jackdet()
1157 regmap_update_bits(arizona->regmap, in arizona_jackdet()
1163 if (arizona->pdata.micd_timeout) in arizona_jackdet()
1164 info->micd_timeout = arizona->pdata.micd_timeout; in arizona_jackdet()
1170 regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG, in arizona_jackdet()
1185 static void arizona_micd_set_level(struct arizona *arizona, int index, in arizona_micd_set_level() argument
1201 regmap_update_bits(arizona->regmap, reg, mask, level); in arizona_micd_set_level()
1204 static int arizona_extcon_device_get_pdata(struct arizona *arizona) in arizona_extcon_device_get_pdata() argument
1206 struct arizona_pdata *pdata = &arizona->pdata; in arizona_extcon_device_get_pdata()
1209 device_property_read_u32(arizona->dev, "wlf,hpdet-channel", &val); in arizona_extcon_device_get_pdata()
1216 dev_err(arizona->dev, in arizona_extcon_device_get_pdata()
1221 device_property_read_u32(arizona->dev, "wlf,micd-detect-debounce", in arizona_extcon_device_get_pdata()
1224 device_property_read_u32(arizona->dev, "wlf,micd-bias-start-time", in arizona_extcon_device_get_pdata()
1227 device_property_read_u32(arizona->dev, "wlf,micd-rate", in arizona_extcon_device_get_pdata()
1230 device_property_read_u32(arizona->dev, "wlf,micd-dbtime", in arizona_extcon_device_get_pdata()
1233 device_property_read_u32(arizona->dev, "wlf,micd-timeout", in arizona_extcon_device_get_pdata()
1236 pdata->micd_force_micbias = device_property_read_bool(arizona->dev, in arizona_extcon_device_get_pdata()
1244 struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); in arizona_extcon_probe() local
1245 struct arizona_pdata *pdata = &arizona->pdata; in arizona_extcon_probe()
1252 if (!arizona->dapm || !arizona->dapm->card) in arizona_extcon_probe()
1259 if (!dev_get_platdata(arizona->dev)) in arizona_extcon_probe()
1260 arizona_extcon_device_get_pdata(arizona); in arizona_extcon_probe()
1265 dev_err(arizona->dev, "Failed to get MICVDD: %d\n", ret); in arizona_extcon_probe()
1270 info->arizona = arizona; in arizona_extcon_probe()
1278 switch (arizona->type) { in arizona_extcon_probe()
1280 switch (arizona->rev) { in arizona_extcon_probe()
1292 switch (arizona->rev) { in arizona_extcon_probe()
1318 dev_err(arizona->dev, "extcon_dev_register() failed: %d\n", in arizona_extcon_probe()
1325 dev_err(arizona->dev, "Can't allocate input dev\n"); in arizona_extcon_probe()
1341 if (arizona->pdata.gpsw > 0) in arizona_extcon_probe()
1342 regmap_update_bits(arizona->regmap, ARIZONA_GP_SWITCH_1, in arizona_extcon_probe()
1343 ARIZONA_SW1_MODE_MASK, arizona->pdata.gpsw); in arizona_extcon_probe()
1345 if (arizona->pdata.micd_pol_gpio > 0) { in arizona_extcon_probe()
1352 arizona->pdata.micd_pol_gpio, in arizona_extcon_probe()
1356 dev_err(arizona->dev, "Failed to request GPIO%d: %d\n", in arizona_extcon_probe()
1357 arizona->pdata.micd_pol_gpio, ret); in arizona_extcon_probe()
1371 info->micd_pol_gpio = gpiod_get_optional(arizona->dev, in arizona_extcon_probe()
1376 dev_err(arizona->dev, in arizona_extcon_probe()
1383 if (arizona->pdata.hpdet_id_gpio > 0) { in arizona_extcon_probe()
1385 arizona->pdata.hpdet_id_gpio, in arizona_extcon_probe()
1389 dev_err(arizona->dev, "Failed to request GPIO%d: %d\n", in arizona_extcon_probe()
1390 arizona->pdata.hpdet_id_gpio, ret); in arizona_extcon_probe()
1395 if (arizona->pdata.micd_bias_start_time) in arizona_extcon_probe()
1396 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1398 arizona->pdata.micd_bias_start_time in arizona_extcon_probe()
1401 if (arizona->pdata.micd_rate) in arizona_extcon_probe()
1402 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1404 arizona->pdata.micd_rate in arizona_extcon_probe()
1407 switch (arizona->pdata.micd_dbtime) { in arizona_extcon_probe()
1409 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1414 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1, in arizona_extcon_probe()
1424 if (arizona->pdata.num_micd_ranges) { in arizona_extcon_probe()
1432 if (arizona->pdata.num_micd_ranges > ARIZONA_MAX_MICD_RANGE) { in arizona_extcon_probe()
1433 dev_err(arizona->dev, "Too many MICD ranges: %d\n", in arizona_extcon_probe()
1434 arizona->pdata.num_micd_ranges); in arizona_extcon_probe()
1441 dev_err(arizona->dev, in arizona_extcon_probe()
1450 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_2, in arizona_extcon_probe()
1460 dev_err(arizona->dev, "Unsupported MICD level %d\n", in arizona_extcon_probe()
1466 dev_dbg(arizona->dev, "%d ohms for MICD threshold %d\n", in arizona_extcon_probe()
1469 arizona_micd_set_level(arizona, i, j); in arizona_extcon_probe()
1474 regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_2, in arizona_extcon_probe()
1480 arizona_micd_set_level(arizona, i, 0x3f); in arizona_extcon_probe()
1487 if (arizona->pdata.jd_gpio5) { in arizona_extcon_probe()
1490 if (arizona->pdata.jd_gpio5_nopull) in arizona_extcon_probe()
1493 regmap_write(arizona->regmap, ARIZONA_GPIO5_CTRL, in arizona_extcon_probe()
1496 if (arizona->pdata.jd_invert) in arizona_extcon_probe()
1501 if (arizona->pdata.jd_invert) in arizona_extcon_probe()
1507 regmap_update_bits(arizona->regmap, in arizona_extcon_probe()
1511 regmap_update_bits(arizona->regmap, in arizona_extcon_probe()
1531 ret = arizona_request_irq(arizona, jack_irq_rise, in arizona_extcon_probe()
1539 ret = arizona_set_irq_wake(arizona, jack_irq_rise, 1); in arizona_extcon_probe()
1546 ret = arizona_request_irq(arizona, jack_irq_fall, in arizona_extcon_probe()
1553 ret = arizona_set_irq_wake(arizona, jack_irq_fall, 1); in arizona_extcon_probe()
1560 ret = arizona_request_irq(arizona, ARIZONA_IRQ_MICDET, in arizona_extcon_probe()
1567 ret = arizona_request_irq(arizona, ARIZONA_IRQ_HPDET, in arizona_extcon_probe()
1574 arizona_clk32k_enable(arizona); in arizona_extcon_probe()
1575 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_DEBOUNCE, in arizona_extcon_probe()
1577 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_ANALOGUE, in arizona_extcon_probe()
1582 dev_warn(arizona->dev, "Failed to set MICVDD to bypass: %d\n", in arizona_extcon_probe()
1596 arizona_free_irq(arizona, ARIZONA_IRQ_HPDET, info); in arizona_extcon_probe()
1598 arizona_free_irq(arizona, ARIZONA_IRQ_MICDET, info); in arizona_extcon_probe()
1600 arizona_set_irq_wake(arizona, jack_irq_fall, 0); in arizona_extcon_probe()
1602 arizona_free_irq(arizona, jack_irq_fall, info); in arizona_extcon_probe()
1604 arizona_set_irq_wake(arizona, jack_irq_rise, 0); in arizona_extcon_probe()
1606 arizona_free_irq(arizona, jack_irq_rise, info); in arizona_extcon_probe()
1617 struct arizona *arizona = info->arizona; in arizona_extcon_remove() local
1624 regmap_update_bits(arizona->regmap, in arizona_extcon_remove()
1636 arizona_set_irq_wake(arizona, jack_irq_rise, 0); in arizona_extcon_remove()
1637 arizona_set_irq_wake(arizona, jack_irq_fall, 0); in arizona_extcon_remove()
1638 arizona_free_irq(arizona, ARIZONA_IRQ_HPDET, info); in arizona_extcon_remove()
1639 arizona_free_irq(arizona, ARIZONA_IRQ_MICDET, info); in arizona_extcon_remove()
1640 arizona_free_irq(arizona, jack_irq_rise, info); in arizona_extcon_remove()
1641 arizona_free_irq(arizona, jack_irq_fall, info); in arizona_extcon_remove()
1643 regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_ANALOGUE, in arizona_extcon_remove()
1645 arizona_clk32k_disable(arizona); in arizona_extcon_remove()