Lines Matching +full:level +full:- +full:detect
1 // SPDX-License-Identifier: GPL-2.0-only
3 * cs42l42.c -- CS42L42 ALSA SoC audio driver
31 #include <sound/soc-dapm.h>
34 #include <dt-bindings/sound/cs42l42.h>
405 static DECLARE_TLV_DB_SCALE(adc_tlv, -9700, 100, true);
406 static DECLARE_TLV_DB_SCALE(mixer_tlv, -6300, 100, true);
435 SOC_SINGLE_S8_TLV("ADC Volume", CS42L42_ADC_VOLUME, -97, 12, adc_tlv),
458 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in cs42l42_hpdrv_evt()
484 dev_err(component->dev, "Invalid event 0x%x\n", event); in cs42l42_hpdrv_evt()
506 enum snd_soc_bias_level level) in cs42l42_set_bias_level() argument
511 switch (level) { in cs42l42_set_bias_level()
518 regcache_cache_only(cs42l42->regmap, false); in cs42l42_set_bias_level()
519 regcache_sync(cs42l42->regmap); in cs42l42_set_bias_level()
521 ARRAY_SIZE(cs42l42->supplies), in cs42l42_set_bias_level()
522 cs42l42->supplies); in cs42l42_set_bias_level()
524 dev_err(component->dev, in cs42l42_set_bias_level()
533 regcache_cache_only(cs42l42->regmap, true); in cs42l42_set_bias_level()
534 regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), in cs42l42_set_bias_level()
535 cs42l42->supplies); in cs42l42_set_bias_level()
547 cs42l42->component = component; in cs42l42_component_probe()
581 * Table 4-5 from the Datasheet
608 if (pll_ratio_table[i].sclk == cs42l42->sclk) { in cs42l42_pll_config()
628 fsync = cs42l42->sclk / cs42l42->srate; in cs42l42_pll_config()
629 if (((fsync * cs42l42->srate) != cs42l42->sclk) in cs42l42_pll_config()
631 dev_err(component->dev, in cs42l42_pll_config()
633 cs42l42->sclk, in cs42l42_pll_config()
634 cs42l42->srate); in cs42l42_pll_config()
635 return -EINVAL; in cs42l42_pll_config()
641 CS42L42_FRAC0_VAL(fsync - 1) << in cs42l42_pll_config()
646 CS42L42_FRAC1_VAL(fsync - 1) << in cs42l42_pll_config()
653 CS42L42_FRAC0_VAL(fsync - 1) << in cs42l42_pll_config()
658 CS42L42_FRAC1_VAL(fsync - 1) << in cs42l42_pll_config()
682 /* Configure PLL per table 4-5 */ in cs42l42_pll_config()
731 return -EINVAL; in cs42l42_pll_config()
736 struct snd_soc_component *component = codec_dai->component; in cs42l42_set_dai_fmt()
749 return -EINVAL; in cs42l42_set_dai_fmt()
769 return -EINVAL; in cs42l42_set_dai_fmt()
800 struct snd_soc_component *component = dai->component; in cs42l42_pcm_hw_params()
802 unsigned int width = (params_width(params) / 8) - 1; in cs42l42_pcm_hw_params()
805 cs42l42->srate = params_rate(params); in cs42l42_pcm_hw_params()
807 switch(substream->stream) { in cs42l42_pcm_hw_params()
830 struct snd_soc_component *component = dai->component; in cs42l42_set_sysclk()
833 cs42l42->sclk = freq; in cs42l42_set_sysclk()
840 struct snd_soc_component *component = dai->component; in cs42l42_mute()
874 /* Un-mute the headphone, set the full scale volume flag */ in cs42l42_mute()
926 /* Mask the auto detect interrupt */ in cs42l42_process_hs_type_detect()
927 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
934 /* Set hs detect to automatic, disabled mode */ in cs42l42_process_hs_type_detect()
935 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
947 regmap_read(cs42l42->regmap, CS42L42_HS_DET_STATUS, &hs_det_status); in cs42l42_process_hs_type_detect()
949 cs42l42->hs_type = (hs_det_status & CS42L42_HSDET_TYPE_MASK) >> in cs42l42_process_hs_type_detect()
953 if ((cs42l42->hs_type == CS42L42_PLUG_CTIA) || in cs42l42_process_hs_type_detect()
954 (cs42l42->hs_type == CS42L42_PLUG_OMTP)) { in cs42l42_process_hs_type_detect()
956 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
967 /* Set up hs detect level sensitivity */ in cs42l42_process_hs_type_detect()
968 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
975 (cs42l42->bias_thresholds[0] << in cs42l42_process_hs_type_detect()
979 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
990 /* Turn on level detect circuitry */ in cs42l42_process_hs_type_detect()
991 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
1000 msleep(cs42l42->btn_det_init_dbnce); in cs42l42_process_hs_type_detect()
1003 regmap_read(cs42l42->regmap, CS42L42_DET_INT_STATUS2, in cs42l42_process_hs_type_detect()
1006 /* Unmask button detect interrupts */ in cs42l42_process_hs_type_detect()
1007 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
1020 /* Make sure button detect and HS bias circuits are off */ in cs42l42_process_hs_type_detect()
1021 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
1031 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
1045 regmap_update_bits(cs42l42->regmap, in cs42l42_process_hs_type_detect()
1060 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1071 /* Make sure button detect and HS bias circuits are off */ in cs42l42_init_hs_type_detect()
1072 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1082 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1093 /* Set hs detect to manual, disabled mode */ in cs42l42_init_hs_type_detect()
1094 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1105 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1119 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1129 msleep(cs42l42->hs_bias_ramp_time); in cs42l42_init_hs_type_detect()
1131 /* Unmask auto detect interrupt */ in cs42l42_init_hs_type_detect()
1132 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1139 /* Set hs detect to automatic, enabled mode */ in cs42l42_init_hs_type_detect()
1140 regmap_update_bits(cs42l42->regmap, in cs42l42_init_hs_type_detect()
1154 /* Mask button detect interrupts */ in cs42l42_cancel_hs_type_detect()
1155 regmap_update_bits(cs42l42->regmap, in cs42l42_cancel_hs_type_detect()
1169 regmap_update_bits(cs42l42->regmap, in cs42l42_cancel_hs_type_detect()
1179 regmap_update_bits(cs42l42->regmap, in cs42l42_cancel_hs_type_detect()
1190 /* Set hs detect to manual, disabled mode */ in cs42l42_cancel_hs_type_detect()
1191 regmap_update_bits(cs42l42->regmap, in cs42l42_cancel_hs_type_detect()
1208 /* Mask button detect interrupts */ in cs42l42_handle_button_press()
1209 regmap_update_bits(cs42l42->regmap, in cs42l42_handle_button_press()
1222 usleep_range(cs42l42->btn_det_event_dbnce * 1000, in cs42l42_handle_button_press()
1223 cs42l42->btn_det_event_dbnce * 2000); in cs42l42_handle_button_press()
1225 /* Test all 4 level detect biases */ in cs42l42_handle_button_press()
1228 /* Adjust button detect level sensitivity */ in cs42l42_handle_button_press()
1229 regmap_update_bits(cs42l42->regmap, in cs42l42_handle_button_press()
1236 (cs42l42->bias_thresholds[bias_level] << in cs42l42_handle_button_press()
1239 regmap_read(cs42l42->regmap, CS42L42_DET_STATUS2, in cs42l42_handle_button_press()
1246 dev_dbg(cs42l42->component->dev, "Function C button press\n"); in cs42l42_handle_button_press()
1249 dev_dbg(cs42l42->component->dev, "Function B button press\n"); in cs42l42_handle_button_press()
1252 dev_dbg(cs42l42->component->dev, "Function D button press\n"); in cs42l42_handle_button_press()
1255 dev_dbg(cs42l42->component->dev, "Function A button press\n"); in cs42l42_handle_button_press()
1259 /* Set button detect level sensitivity back to default */ in cs42l42_handle_button_press()
1260 regmap_update_bits(cs42l42->regmap, in cs42l42_handle_button_press()
1267 (cs42l42->bias_thresholds[0] << CS42L42_HS_DET_LEVEL_SHIFT)); in cs42l42_handle_button_press()
1270 regmap_read(cs42l42->regmap, CS42L42_DET_INT_STATUS2, in cs42l42_handle_button_press()
1273 /* Unmask button detect interrupts */ in cs42l42_handle_button_press()
1274 regmap_update_bits(cs42l42->regmap, in cs42l42_handle_button_press()
1324 struct snd_soc_component *component = cs42l42->component; in cs42l42_irq_thread()
1333 regmap_read(cs42l42->regmap, irq_params_table[i].status_addr, in cs42l42_irq_thread()
1335 regmap_read(cs42l42->regmap, irq_params_table[i].mask_addr, in cs42l42_irq_thread()
1341 /* Read tip sense status before handling type detect */ in cs42l42_irq_thread()
1352 /* Check auto-detect status */ in cs42l42_irq_thread()
1356 dev_dbg(component->dev, in cs42l42_irq_thread()
1357 "Auto detect done (%d)\n", in cs42l42_irq_thread()
1358 cs42l42->hs_type); in cs42l42_irq_thread()
1366 if (cs42l42->plug_state != CS42L42_TS_PLUG) { in cs42l42_irq_thread()
1367 cs42l42->plug_state = CS42L42_TS_PLUG; in cs42l42_irq_thread()
1373 if (cs42l42->plug_state != CS42L42_TS_UNPLUG) { in cs42l42_irq_thread()
1374 cs42l42->plug_state = CS42L42_TS_UNPLUG; in cs42l42_irq_thread()
1376 dev_dbg(component->dev, in cs42l42_irq_thread()
1382 if (cs42l42->plug_state != CS42L42_TS_TRANS) in cs42l42_irq_thread()
1383 cs42l42->plug_state = CS42L42_TS_TRANS; in cs42l42_irq_thread()
1387 /* Check button detect status */ in cs42l42_irq_thread()
1394 dev_dbg(component->dev, in cs42l42_irq_thread()
1408 regmap_update_bits(cs42l42->regmap, CS42L42_ADC_OVFL_INT_MASK, in cs42l42_set_interrupt_masks()
1412 regmap_update_bits(cs42l42->regmap, CS42L42_MIXER_INT_MASK, in cs42l42_set_interrupt_masks()
1422 regmap_update_bits(cs42l42->regmap, CS42L42_SRC_INT_MASK, in cs42l42_set_interrupt_masks()
1432 regmap_update_bits(cs42l42->regmap, CS42L42_ASP_RX_INT_MASK, in cs42l42_set_interrupt_masks()
1444 regmap_update_bits(cs42l42->regmap, CS42L42_ASP_TX_INT_MASK, in cs42l42_set_interrupt_masks()
1454 regmap_update_bits(cs42l42->regmap, CS42L42_CODEC_INT_MASK, in cs42l42_set_interrupt_masks()
1460 regmap_update_bits(cs42l42->regmap, CS42L42_SRCPL_INT_MASK, in cs42l42_set_interrupt_masks()
1470 regmap_update_bits(cs42l42->regmap, CS42L42_DET_INT1_MASK, in cs42l42_set_interrupt_masks()
1478 regmap_update_bits(cs42l42->regmap, CS42L42_DET_INT2_MASK, in cs42l42_set_interrupt_masks()
1490 regmap_update_bits(cs42l42->regmap, CS42L42_VPMON_INT_MASK, in cs42l42_set_interrupt_masks()
1494 regmap_update_bits(cs42l42->regmap, CS42L42_PLL_LOCK_INT_MASK, in cs42l42_set_interrupt_masks()
1498 regmap_update_bits(cs42l42->regmap, CS42L42_TSRS_PLUG_INT_MASK, in cs42l42_set_interrupt_masks()
1513 cs42l42->hs_type = CS42L42_PLUG_INVALID; in cs42l42_setup_hs_type_detect()
1516 regmap_update_bits(cs42l42->regmap, CS42L42_MIC_DET_CTL1, in cs42l42_setup_hs_type_detect()
1522 (cs42l42->bias_thresholds[0] << in cs42l42_setup_hs_type_detect()
1525 /* Remove ground noise-suppression clamps */ in cs42l42_setup_hs_type_detect()
1526 regmap_update_bits(cs42l42->regmap, in cs42l42_setup_hs_type_detect()
1532 regmap_update_bits(cs42l42->regmap, CS42L42_TSENSE_CTL, in cs42l42_setup_hs_type_detect()
1535 regmap_update_bits(cs42l42->regmap, CS42L42_TIPSENSE_CTL, in cs42l42_setup_hs_type_detect()
1540 (!cs42l42->ts_inv << CS42L42_TIP_SENSE_INV_SHIFT) | in cs42l42_setup_hs_type_detect()
1544 regmap_read(cs42l42->regmap, in cs42l42_setup_hs_type_detect()
1547 cs42l42->plug_state = (((char) reg) & in cs42l42_setup_hs_type_detect()
1567 ret = device_property_read_u32(dev, "cirrus,ts-inv", &val); in cs42l42_handle_device_data()
1572 cs42l42->ts_inv = val; in cs42l42_handle_device_data()
1576 "Wrong cirrus,ts-inv DT value %d\n", in cs42l42_handle_device_data()
1578 cs42l42->ts_inv = CS42L42_TS_INV_DIS; in cs42l42_handle_device_data()
1581 cs42l42->ts_inv = CS42L42_TS_INV_DIS; in cs42l42_handle_device_data()
1584 ret = device_property_read_u32(dev, "cirrus,ts-dbnc-rise", &val); in cs42l42_handle_device_data()
1595 cs42l42->ts_dbnc_rise = val; in cs42l42_handle_device_data()
1599 "Wrong cirrus,ts-dbnc-rise DT value %d\n", in cs42l42_handle_device_data()
1601 cs42l42->ts_dbnc_rise = CS42L42_TS_DBNCE_1000; in cs42l42_handle_device_data()
1604 cs42l42->ts_dbnc_rise = CS42L42_TS_DBNCE_1000; in cs42l42_handle_device_data()
1607 regmap_update_bits(cs42l42->regmap, CS42L42_TSENSE_CTL, in cs42l42_handle_device_data()
1609 (cs42l42->ts_dbnc_rise << in cs42l42_handle_device_data()
1612 ret = device_property_read_u32(dev, "cirrus,ts-dbnc-fall", &val); in cs42l42_handle_device_data()
1623 cs42l42->ts_dbnc_fall = val; in cs42l42_handle_device_data()
1627 "Wrong cirrus,ts-dbnc-fall DT value %d\n", in cs42l42_handle_device_data()
1629 cs42l42->ts_dbnc_fall = CS42L42_TS_DBNCE_0; in cs42l42_handle_device_data()
1632 cs42l42->ts_dbnc_fall = CS42L42_TS_DBNCE_0; in cs42l42_handle_device_data()
1635 regmap_update_bits(cs42l42->regmap, CS42L42_TSENSE_CTL, in cs42l42_handle_device_data()
1637 (cs42l42->ts_dbnc_fall << in cs42l42_handle_device_data()
1640 ret = device_property_read_u32(dev, "cirrus,btn-det-init-dbnce", &val); in cs42l42_handle_device_data()
1643 cs42l42->btn_det_init_dbnce = val; in cs42l42_handle_device_data()
1646 "Wrong cirrus,btn-det-init-dbnce DT value %d\n", in cs42l42_handle_device_data()
1648 cs42l42->btn_det_init_dbnce = in cs42l42_handle_device_data()
1652 cs42l42->btn_det_init_dbnce = in cs42l42_handle_device_data()
1656 ret = device_property_read_u32(dev, "cirrus,btn-det-event-dbnce", &val); in cs42l42_handle_device_data()
1659 cs42l42->btn_det_event_dbnce = val; in cs42l42_handle_device_data()
1662 "Wrong cirrus,btn-det-event-dbnce DT value %d\n", val); in cs42l42_handle_device_data()
1663 cs42l42->btn_det_event_dbnce = in cs42l42_handle_device_data()
1667 cs42l42->btn_det_event_dbnce = in cs42l42_handle_device_data()
1671 ret = device_property_read_u32_array(dev, "cirrus,bias-lvls", in cs42l42_handle_device_data()
1676 cs42l42->bias_thresholds[i] = thresholds[i]; in cs42l42_handle_device_data()
1679 "Wrong cirrus,bias-lvls[%d] DT value %d\n", i, in cs42l42_handle_device_data()
1681 cs42l42->bias_thresholds[i] = threshold_defaults[i]; in cs42l42_handle_device_data()
1686 cs42l42->bias_thresholds[i] = threshold_defaults[i]; in cs42l42_handle_device_data()
1689 ret = device_property_read_u32(dev, "cirrus,hs-bias-ramp-rate", &val); in cs42l42_handle_device_data()
1693 cs42l42->hs_bias_ramp_rate = val; in cs42l42_handle_device_data()
1694 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME0; in cs42l42_handle_device_data()
1697 cs42l42->hs_bias_ramp_rate = val; in cs42l42_handle_device_data()
1698 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME1; in cs42l42_handle_device_data()
1701 cs42l42->hs_bias_ramp_rate = val; in cs42l42_handle_device_data()
1702 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME2; in cs42l42_handle_device_data()
1705 cs42l42->hs_bias_ramp_rate = val; in cs42l42_handle_device_data()
1706 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME3; in cs42l42_handle_device_data()
1710 "Wrong cirrus,hs-bias-ramp-rate DT value %d\n", in cs42l42_handle_device_data()
1712 cs42l42->hs_bias_ramp_rate = CS42L42_HSBIAS_RAMP_SLOW; in cs42l42_handle_device_data()
1713 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME2; in cs42l42_handle_device_data()
1716 cs42l42->hs_bias_ramp_rate = CS42L42_HSBIAS_RAMP_SLOW; in cs42l42_handle_device_data()
1717 cs42l42->hs_bias_ramp_time = CS42L42_HSBIAS_RAMP_TIME2; in cs42l42_handle_device_data()
1720 regmap_update_bits(cs42l42->regmap, CS42L42_HS_BIAS_CTL, in cs42l42_handle_device_data()
1722 (cs42l42->hs_bias_ramp_rate << in cs42l42_handle_device_data()
1736 cs42l42 = devm_kzalloc(&i2c_client->dev, sizeof(struct cs42l42_private), in cs42l42_i2c_probe()
1739 return -ENOMEM; in cs42l42_i2c_probe()
1743 cs42l42->regmap = devm_regmap_init_i2c(i2c_client, &cs42l42_regmap); in cs42l42_i2c_probe()
1744 if (IS_ERR(cs42l42->regmap)) { in cs42l42_i2c_probe()
1745 ret = PTR_ERR(cs42l42->regmap); in cs42l42_i2c_probe()
1746 dev_err(&i2c_client->dev, "regmap_init() failed: %d\n", ret); in cs42l42_i2c_probe()
1750 for (i = 0; i < ARRAY_SIZE(cs42l42->supplies); i++) in cs42l42_i2c_probe()
1751 cs42l42->supplies[i].supply = cs42l42_supply_names[i]; in cs42l42_i2c_probe()
1753 ret = devm_regulator_bulk_get(&i2c_client->dev, in cs42l42_i2c_probe()
1754 ARRAY_SIZE(cs42l42->supplies), in cs42l42_i2c_probe()
1755 cs42l42->supplies); in cs42l42_i2c_probe()
1757 dev_err(&i2c_client->dev, in cs42l42_i2c_probe()
1762 ret = regulator_bulk_enable(ARRAY_SIZE(cs42l42->supplies), in cs42l42_i2c_probe()
1763 cs42l42->supplies); in cs42l42_i2c_probe()
1765 dev_err(&i2c_client->dev, in cs42l42_i2c_probe()
1771 cs42l42->reset_gpio = devm_gpiod_get_optional(&i2c_client->dev, in cs42l42_i2c_probe()
1773 if (IS_ERR(cs42l42->reset_gpio)) { in cs42l42_i2c_probe()
1774 ret = PTR_ERR(cs42l42->reset_gpio); in cs42l42_i2c_probe()
1778 if (cs42l42->reset_gpio) { in cs42l42_i2c_probe()
1779 dev_dbg(&i2c_client->dev, "Found reset GPIO\n"); in cs42l42_i2c_probe()
1780 gpiod_set_value_cansleep(cs42l42->reset_gpio, 1); in cs42l42_i2c_probe()
1785 ret = devm_request_threaded_irq(&i2c_client->dev, in cs42l42_i2c_probe()
1786 i2c_client->irq, in cs42l42_i2c_probe()
1790 if (ret == -EPROBE_DEFER) in cs42l42_i2c_probe()
1793 dev_err(&i2c_client->dev, in cs42l42_i2c_probe()
1797 ret = regmap_read(cs42l42->regmap, CS42L42_DEVID_AB, ®); in cs42l42_i2c_probe()
1800 ret = regmap_read(cs42l42->regmap, CS42L42_DEVID_CD, ®); in cs42l42_i2c_probe()
1803 ret = regmap_read(cs42l42->regmap, CS42L42_DEVID_E, ®); in cs42l42_i2c_probe()
1807 ret = -ENODEV; in cs42l42_i2c_probe()
1808 dev_err(&i2c_client->dev, in cs42l42_i2c_probe()
1814 ret = regmap_read(cs42l42->regmap, CS42L42_REVID, ®); in cs42l42_i2c_probe()
1816 dev_err(&i2c_client->dev, "Get Revision ID failed\n"); in cs42l42_i2c_probe()
1820 dev_info(&i2c_client->dev, in cs42l42_i2c_probe()
1824 regmap_update_bits(cs42l42->regmap, CS42L42_PWR_CTL1, in cs42l42_i2c_probe()
1840 ret = cs42l42_handle_device_data(&i2c_client->dev, cs42l42); in cs42l42_i2c_probe()
1851 ret = devm_snd_soc_register_component(&i2c_client->dev, in cs42l42_i2c_probe()
1858 regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), in cs42l42_i2c_probe()
1859 cs42l42->supplies); in cs42l42_i2c_probe()
1868 gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); in cs42l42_i2c_remove()
1878 regcache_cache_only(cs42l42->regmap, true); in cs42l42_runtime_suspend()
1879 regcache_mark_dirty(cs42l42->regmap); in cs42l42_runtime_suspend()
1882 gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); in cs42l42_runtime_suspend()
1885 regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), in cs42l42_runtime_suspend()
1886 cs42l42->supplies); in cs42l42_runtime_suspend()
1897 ret = regulator_bulk_enable(ARRAY_SIZE(cs42l42->supplies), in cs42l42_runtime_resume()
1898 cs42l42->supplies); in cs42l42_runtime_resume()
1905 gpiod_set_value_cansleep(cs42l42->reset_gpio, 1); in cs42l42_runtime_resume()
1908 regcache_cache_only(cs42l42->regmap, false); in cs42l42_runtime_resume()
1909 regcache_sync(cs42l42->regmap); in cs42l42_runtime_resume()