sound/soc/amd/acp/acp-mach-common.c
1469
links[i].codecs = nau8825;
sound/soc/amd/acp/acp-mach-common.c
1470
links[i].num_codecs = ARRAY_SIZE(nau8825);
sound/soc/amd/acp/acp-mach-common.c
1679
links[i].codecs = nau8825;
sound/soc/amd/acp/acp-mach-common.c
1680
links[i].num_codecs = ARRAY_SIZE(nau8825);
sound/soc/amd/acp/acp-mach-common.c
951
SND_SOC_DAILINK_DEF(nau8825,
sound/soc/codecs/nau8825.c
1237
nau8825_get_osr(struct nau8825 *nau8825, int stream)
sound/soc/codecs/nau8825.c
1242
regmap_read(nau8825->regmap,
sound/soc/codecs/nau8825.c
1249
regmap_read(nau8825->regmap,
sound/soc/codecs/nau8825.c
1262
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
1265
osr = nau8825_get_osr(nau8825, substream->stream);
sound/soc/codecs/nau8825.c
1279
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
1284
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
1292
osr = nau8825_get_osr(nau8825, substream->stream);
sound/soc/codecs/nau8825.c
1298
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
1302
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
1307
regmap_read(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2, &ctrl_val);
sound/soc/codecs/nau8825.c
1319
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2,
sound/soc/codecs/nau8825.c
1341
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL1,
sound/soc/codecs/nau8825.c
1347
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
1355
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
1399
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
1401
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL1,
sound/soc/codecs/nau8825.c
1405
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2,
sound/soc/codecs/nau8825.c
1409
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
1429
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
1433
dev_err(nau8825->dev, "Only support 4 or 8 slots!\n");
sound/soc/codecs/nau8825.c
1440
dev_err(nau8825->dev,
sound/soc/codecs/nau8825.c
1449
dev_err(nau8825->dev,
sound/soc/codecs/nau8825.c
1456
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2,
sound/soc/codecs/nau8825.c
1458
regmap_read(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL1, &value);
sound/soc/codecs/nau8825.c
1500
regmap_update_bits(nau8825->regmap, NAU8825_REG_TDM_CTRL,
sound/soc/codecs/nau8825.c
1504
regmap_update_bits(nau8825->regmap, NAU8825_REG_LEFT_TIME_SLOT,
sound/soc/codecs/nau8825.c
1553
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
1554
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1556
nau8825->jack = jack;
sound/soc/codecs/nau8825.c
1558
if (!nau8825->jack) {
sound/soc/codecs/nau8825.c
1619
static void nau8825_eject_jack(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
1621
struct snd_soc_dapm_context *dapm = nau8825->dapm;
sound/soc/codecs/nau8825.c
1622
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1625
nau8825_xtalk_cancel(nau8825);
sound/soc/codecs/nau8825.c
1659
nau8825_configure_sysclk(nau8825, NAU8825_CLK_DIS, 0);
sound/soc/codecs/nau8825.c
1663
static void nau8825_setup_auto_irq(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
1665
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1678
nau8825_configure_sysclk(nau8825, NAU8825_CLK_INTERNAL, 0);
sound/soc/codecs/nau8825.c
1729
static int nau8825_high_imped_detection(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
1731
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1732
struct snd_soc_dapm_context *dapm = nau8825->dapm;
sound/soc/codecs/nau8825.c
1788
NAU8825_MICBIAS_VOLTAGE_MASK, nau8825->micbias_voltage);
sound/soc/codecs/nau8825.c
1798
nau8825->sar_voltage << NAU8825_SAR_TRACKING_GAIN_SFT);
sound/soc/codecs/nau8825.c
1801
(nau8825->sar_compare_time << NAU8825_SAR_COMPARE_TIME_SFT) |
sound/soc/codecs/nau8825.c
1802
(nau8825->sar_sampling_time << NAU8825_SAR_SAMPLING_TIME_SFT));
sound/soc/codecs/nau8825.c
1803
dev_dbg(nau8825->dev, "adc_mg1:%x, adc_mg2:%x\n", adc_mg1, adc_mg2);
sound/soc/codecs/nau8825.c
1807
dev_dbg(nau8825->dev, "OMTP (micgnd1) mic connected\n");
sound/soc/codecs/nau8825.c
1822
dev_dbg(nau8825->dev, "CTIA (micgnd2) mic connected\n");
sound/soc/codecs/nau8825.c
1837
dev_err(nau8825->dev, "Jack broken.\n");
sound/soc/codecs/nau8825.c
1844
static int nau8825_jack_insert(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
1846
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1847
struct snd_soc_dapm_context *dapm = nau8825->dapm;
sound/soc/codecs/nau8825.c
1855
nau8825->high_imped = true;
sound/soc/codecs/nau8825.c
1857
nau8825->high_imped = false;
sound/soc/codecs/nau8825.c
1865
dev_dbg(nau8825->dev, "OMTP (micgnd1) mic connected\n");
sound/soc/codecs/nau8825.c
1885
dev_dbg(nau8825->dev, "CTIA (micgnd2) mic connected\n");
sound/soc/codecs/nau8825.c
1906
dev_warn(nau8825->dev,
sound/soc/codecs/nau8825.c
1908
if (!nau8825_high_imped_detection(nau8825)) {
sound/soc/codecs/nau8825.c
1937
struct nau8825 *nau8825 = (struct nau8825 *)data;
sound/soc/codecs/nau8825.c
1938
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
1942
dev_err(nau8825->dev, "failed to read irq status\n");
sound/soc/codecs/nau8825.c
1949
nau8825_eject_jack(nau8825);
sound/soc/codecs/nau8825.c
1961
nau8825->button_pressed = nau8825_button_decode(
sound/soc/codecs/nau8825.c
1964
event |= nau8825->button_pressed;
sound/soc/codecs/nau8825.c
1972
event |= nau8825_jack_insert(nau8825);
sound/soc/codecs/nau8825.c
1973
if (nau8825->xtalk_enable && !nau8825->high_imped) {
sound/soc/codecs/nau8825.c
1977
if (!nau8825->xtalk_protect) {
sound/soc/codecs/nau8825.c
1985
nau8825->xtalk_protect = true;
sound/soc/codecs/nau8825.c
1986
ret = nau8825_sema_acquire(nau8825, 0);
sound/soc/codecs/nau8825.c
1988
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
1991
if (nau8825->xtalk_protect) {
sound/soc/codecs/nau8825.c
1992
nau8825->xtalk_state =
sound/soc/codecs/nau8825.c
1994
schedule_work(&nau8825->xtalk_work);
sound/soc/codecs/nau8825.c
2001
if (nau8825->xtalk_protect) {
sound/soc/codecs/nau8825.c
2002
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
2003
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
2007
dev_warn(nau8825->dev, "Headset completion IRQ fired but no headset connected\n");
sound/soc/codecs/nau8825.c
2008
nau8825_eject_jack(nau8825);
sound/soc/codecs/nau8825.c
2017
if (nau8825->xtalk_state == NAU8825_XTALK_PREPARE) {
sound/soc/codecs/nau8825.c
2018
nau8825->xtalk_event = event;
sound/soc/codecs/nau8825.c
2019
nau8825->xtalk_event_mask = event_mask;
sound/soc/codecs/nau8825.c
2023
if (nau8825->xtalk_enable && nau8825->xtalk_protect)
sound/soc/codecs/nau8825.c
2024
schedule_work(&nau8825->xtalk_work);
sound/soc/codecs/nau8825.c
2044
nau8825_setup_auto_irq(nau8825);
sound/soc/codecs/nau8825.c
2058
if (event_mask && nau8825->xtalk_state == NAU8825_XTALK_DONE)
sound/soc/codecs/nau8825.c
2059
snd_soc_jack_report(nau8825->jack, event, event_mask);
sound/soc/codecs/nau8825.c
2064
static void nau8825_setup_buttons(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2066
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
2070
nau8825->sar_voltage << NAU8825_SAR_TRACKING_GAIN_SFT);
sound/soc/codecs/nau8825.c
2073
nau8825->sar_compare_time << NAU8825_SAR_COMPARE_TIME_SFT);
sound/soc/codecs/nau8825.c
2076
nau8825->sar_sampling_time << NAU8825_SAR_SAMPLING_TIME_SFT);
sound/soc/codecs/nau8825.c
2080
(nau8825->sar_threshold_num - 1) << NAU8825_KEYDET_LEVELS_NR_SFT);
sound/soc/codecs/nau8825.c
2083
nau8825->sar_hysteresis << NAU8825_KEYDET_HYSTERESIS_SFT);
sound/soc/codecs/nau8825.c
2086
nau8825->key_debounce << NAU8825_KEYDET_SHORTKEY_DEBOUNCE_SFT);
sound/soc/codecs/nau8825.c
2089
(nau8825->sar_threshold[0] << 8) | nau8825->sar_threshold[1]);
sound/soc/codecs/nau8825.c
2091
(nau8825->sar_threshold[2] << 8) | nau8825->sar_threshold[3]);
sound/soc/codecs/nau8825.c
2093
(nau8825->sar_threshold[4] << 8) | nau8825->sar_threshold[5]);
sound/soc/codecs/nau8825.c
2095
(nau8825->sar_threshold[6] << 8) | nau8825->sar_threshold[7]);
sound/soc/codecs/nau8825.c
2103
static void nau8825_init_regs(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2105
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
2110
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
2112
regmap_update_bits(nau8825->regmap, NAU8825_REG_BOOST,
sound/soc/codecs/nau8825.c
2118
nau8825->vref_impedance << NAU8825_BIAS_VMID_SEL_SFT);
sound/soc/codecs/nau8825.c
2128
nau8825->jkdet_enable ? 0 : NAU8825_JKDET_OUTPUT_EN);
sound/soc/codecs/nau8825.c
2131
nau8825->jkdet_pull_enable ? 0 : NAU8825_JKDET_PULL_EN);
sound/soc/codecs/nau8825.c
2134
nau8825->jkdet_pull_up ? NAU8825_JKDET_PULL_UP : 0);
sound/soc/codecs/nau8825.c
2138
nau8825->jkdet_polarity ? 0 : NAU8825_JACK_POLARITY);
sound/soc/codecs/nau8825.c
2142
nau8825->jack_insert_debounce << NAU8825_JACK_INSERT_DEBOUNCE_SFT);
sound/soc/codecs/nau8825.c
2145
nau8825->jack_eject_debounce << NAU8825_JACK_EJECT_DEBOUNCE_SFT);
sound/soc/codecs/nau8825.c
2155
NAU8825_MICBIAS_VOLTAGE_MASK, nau8825->micbias_voltage);
sound/soc/codecs/nau8825.c
2157
if (nau8825->sar_threshold_num)
sound/soc/codecs/nau8825.c
2158
nau8825_setup_buttons(nau8825);
sound/soc/codecs/nau8825.c
2169
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
2177
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
2199
regmap_update_bits(nau8825->regmap, NAU8825_REG_DACL_CTRL,
sound/soc/codecs/nau8825.c
2201
regmap_update_bits(nau8825->regmap, NAU8825_REG_DACR_CTRL,
sound/soc/codecs/nau8825.c
2209
nau8825->adcout_ds << NAU8825_ADCOUT_DS_SFT);
sound/soc/codecs/nau8825.c
2228
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2231
nau8825->dapm = dapm;
sound/soc/codecs/nau8825.c
2238
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2241
nau8825_xtalk_cancel(nau8825);
sound/soc/codecs/nau8825.c
2313
static void nau8825_fll_apply(struct nau8825 *nau8825,
sound/soc/codecs/nau8825.c
2316
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
2320
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL1,
sound/soc/codecs/nau8825.c
2325
regmap_write(nau8825->regmap, NAU8825_REG_FLL2,
sound/soc/codecs/nau8825.c
2328
regmap_write(nau8825->regmap, NAU8825_REG_FLL2_LOWER,
sound/soc/codecs/nau8825.c
2330
regmap_write(nau8825->regmap, NAU8825_REG_FLL2_UPPER,
sound/soc/codecs/nau8825.c
2334
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL3,
sound/soc/codecs/nau8825.c
2337
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL4,
sound/soc/codecs/nau8825.c
2341
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL5,
sound/soc/codecs/nau8825.c
2344
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
2348
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL5,
sound/soc/codecs/nau8825.c
2353
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL6,
sound/soc/codecs/nau8825.c
2358
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL5,
sound/soc/codecs/nau8825.c
2361
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL6,
sound/soc/codecs/nau8825.c
2370
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2374
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
2389
nau8825_fll_apply(nau8825, &fll_param);
sound/soc/codecs/nau8825.c
2391
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
2396
static int nau8825_mclk_prepare(struct nau8825 *nau8825, unsigned int freq)
sound/soc/codecs/nau8825.c
2400
nau8825->mclk = devm_clk_get(nau8825->dev, "mclk");
sound/soc/codecs/nau8825.c
2401
if (IS_ERR(nau8825->mclk)) {
sound/soc/codecs/nau8825.c
2402
dev_info(nau8825->dev, "No 'mclk' clock found, assume MCLK is managed externally");
sound/soc/codecs/nau8825.c
2406
if (!nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2407
ret = clk_prepare_enable(nau8825->mclk);
sound/soc/codecs/nau8825.c
2409
dev_err(nau8825->dev, "Unable to prepare codec mclk\n");
sound/soc/codecs/nau8825.c
241
static int nau8825_sema_acquire(struct nau8825 *nau8825, long timeout)
sound/soc/codecs/nau8825.c
2414
if (nau8825->mclk_freq != freq) {
sound/soc/codecs/nau8825.c
2415
freq = clk_round_rate(nau8825->mclk, freq);
sound/soc/codecs/nau8825.c
2416
ret = clk_set_rate(nau8825->mclk, freq);
sound/soc/codecs/nau8825.c
2418
dev_err(nau8825->dev, "Unable to set mclk rate\n");
sound/soc/codecs/nau8825.c
2421
nau8825->mclk_freq = freq;
sound/soc/codecs/nau8825.c
2438
static int nau8825_configure_sysclk(struct nau8825 *nau8825, int clk_id,
sound/soc/codecs/nau8825.c
2441
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
2448
if (nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2449
clk_disable_unprepare(nau8825->mclk);
sound/soc/codecs/nau8825.c
2450
nau8825->mclk_freq = 0;
sound/soc/codecs/nau8825.c
246
ret = down_timeout(&nau8825->xtalk_sem, timeout);
sound/soc/codecs/nau8825.c
2460
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
2466
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
2468
ret = nau8825_mclk_prepare(nau8825, freq);
sound/soc/codecs/nau8825.c
2474
if (nau8825_is_jack_inserted(nau8825->regmap)) {
sound/soc/codecs/nau8825.c
248
dev_warn(nau8825->dev, "Acquire semaphore timeout\n");
sound/soc/codecs/nau8825.c
2494
dev_warn(nau8825->dev, "Disable clock for power saving when no headset connected\n");
sound/soc/codecs/nau8825.c
2496
if (nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2497
clk_disable_unprepare(nau8825->mclk);
sound/soc/codecs/nau8825.c
2498
nau8825->mclk_freq = 0;
sound/soc/codecs/nau8825.c
250
ret = down_trylock(&nau8825->xtalk_sem);
sound/soc/codecs/nau8825.c
2508
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
2517
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
2519
ret = nau8825_mclk_prepare(nau8825, freq);
sound/soc/codecs/nau8825.c
252
dev_warn(nau8825->dev, "Acquire semaphore fail\n");
sound/soc/codecs/nau8825.c
2530
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
2542
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
2544
if (nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2545
clk_disable_unprepare(nau8825->mclk);
sound/soc/codecs/nau8825.c
2546
nau8825->mclk_freq = 0;
sound/soc/codecs/nau8825.c
2556
nau8825_sema_acquire(nau8825, 3 * HZ);
sound/soc/codecs/nau8825.c
2568
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
2570
if (nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2571
clk_disable_unprepare(nau8825->mclk);
sound/soc/codecs/nau8825.c
2572
nau8825->mclk_freq = 0;
sound/soc/codecs/nau8825.c
2577
dev_err(nau8825->dev, "Invalid clock id (%d)\n", clk_id);
sound/soc/codecs/nau8825.c
2581
dev_dbg(nau8825->dev, "Sysclk is %dHz and clock id is %d\n", freq,
sound/soc/codecs/nau8825.c
2589
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2591
return nau8825_configure_sysclk(nau8825, clk_id, freq);
sound/soc/codecs/nau8825.c
2594
static int nau8825_resume_setup(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2596
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
2599
nau8825_configure_sysclk(nau8825, NAU8825_CLK_DIS, 0);
sound/soc/codecs/nau8825.c
2622
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2633
if (snd_soc_dapm_get_bias_level(nau8825->dapm) == SND_SOC_BIAS_OFF) {
sound/soc/codecs/nau8825.c
2634
if (nau8825->mclk_freq) {
sound/soc/codecs/nau8825.c
2635
ret = clk_prepare_enable(nau8825->mclk);
sound/soc/codecs/nau8825.c
2637
dev_err(nau8825->dev, "Unable to prepare component mclk\n");
sound/soc/codecs/nau8825.c
2642
nau8825_resume_setup(nau8825);
sound/soc/codecs/nau8825.c
2649
regmap_update_bits(nau8825->regmap, NAU8825_REG_MIC_BIAS,
sound/soc/codecs/nau8825.c
265
static inline void nau8825_sema_release(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2652
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
2655
nau8825_xtalk_cancel(nau8825);
sound/soc/codecs/nau8825.c
2659
regmap_write(nau8825->regmap,
sound/soc/codecs/nau8825.c
2662
regmap_update_bits(nau8825->regmap, NAU8825_REG_ENA_CTRL,
sound/soc/codecs/nau8825.c
2664
if (nau8825->mclk_freq)
sound/soc/codecs/nau8825.c
2665
clk_disable_unprepare(nau8825->mclk);
sound/soc/codecs/nau8825.c
267
up(&nau8825->xtalk_sem);
sound/soc/codecs/nau8825.c
2673
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2675
disable_irq(nau8825->irq);
sound/soc/codecs/nau8825.c
2676
snd_soc_dapm_force_bias_level(nau8825->dapm, SND_SOC_BIAS_OFF);
sound/soc/codecs/nau8825.c
2678
snd_soc_dapm_disable_pin(nau8825->dapm, "SAR");
sound/soc/codecs/nau8825.c
2679
snd_soc_dapm_disable_pin(nau8825->dapm, "MICBIAS");
sound/soc/codecs/nau8825.c
2680
snd_soc_dapm_sync(nau8825->dapm);
sound/soc/codecs/nau8825.c
2681
regcache_cache_only(nau8825->regmap, true);
sound/soc/codecs/nau8825.c
2682
regcache_mark_dirty(nau8825->regmap);
sound/soc/codecs/nau8825.c
2689
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
2692
regcache_cache_only(nau8825->regmap, false);
sound/soc/codecs/nau8825.c
2693
regcache_sync(nau8825->regmap);
sound/soc/codecs/nau8825.c
2694
nau8825->xtalk_protect = true;
sound/soc/codecs/nau8825.c
2695
ret = nau8825_sema_acquire(nau8825, 0);
sound/soc/codecs/nau8825.c
2697
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
2698
enable_irq(nau8825->irq);
sound/soc/codecs/nau8825.c
2736
static void nau8825_print_device_properties(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2739
struct device *dev = nau8825->dev;
sound/soc/codecs/nau8825.c
2741
dev_dbg(dev, "jkdet-enable: %d\n", nau8825->jkdet_enable);
sound/soc/codecs/nau8825.c
2742
dev_dbg(dev, "jkdet-pull-enable: %d\n", nau8825->jkdet_pull_enable);
sound/soc/codecs/nau8825.c
2743
dev_dbg(dev, "jkdet-pull-up: %d\n", nau8825->jkdet_pull_up);
sound/soc/codecs/nau8825.c
2744
dev_dbg(dev, "jkdet-polarity: %d\n", nau8825->jkdet_polarity);
sound/soc/codecs/nau8825.c
2745
dev_dbg(dev, "micbias-voltage: %d\n", nau8825->micbias_voltage);
sound/soc/codecs/nau8825.c
2746
dev_dbg(dev, "vref-impedance: %d\n", nau8825->vref_impedance);
sound/soc/codecs/nau8825.c
2748
dev_dbg(dev, "sar-threshold-num: %d\n", nau8825->sar_threshold_num);
sound/soc/codecs/nau8825.c
2749
for (i = 0; i < nau8825->sar_threshold_num; i++)
sound/soc/codecs/nau8825.c
2751
nau8825->sar_threshold[i]);
sound/soc/codecs/nau8825.c
2753
dev_dbg(dev, "sar-hysteresis: %d\n", nau8825->sar_hysteresis);
sound/soc/codecs/nau8825.c
2754
dev_dbg(dev, "sar-voltage: %d\n", nau8825->sar_voltage);
sound/soc/codecs/nau8825.c
2755
dev_dbg(dev, "sar-compare-time: %d\n", nau8825->sar_compare_time);
sound/soc/codecs/nau8825.c
2756
dev_dbg(dev, "sar-sampling-time: %d\n", nau8825->sar_sampling_time);
sound/soc/codecs/nau8825.c
2757
dev_dbg(dev, "short-key-debounce: %d\n", nau8825->key_debounce);
sound/soc/codecs/nau8825.c
2759
nau8825->jack_insert_debounce);
sound/soc/codecs/nau8825.c
2761
nau8825->jack_eject_debounce);
sound/soc/codecs/nau8825.c
2763
nau8825->xtalk_enable);
sound/soc/codecs/nau8825.c
2764
dev_dbg(dev, "adcout-drive-strong: %d\n", nau8825->adcout_ds);
sound/soc/codecs/nau8825.c
2765
dev_dbg(dev, "adc-delay-ms: %d\n", nau8825->adc_delay);
sound/soc/codecs/nau8825.c
2769
struct nau8825 *nau8825) {
sound/soc/codecs/nau8825.c
277
static inline void nau8825_sema_reset(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2772
nau8825->jkdet_enable = device_property_read_bool(dev,
sound/soc/codecs/nau8825.c
2774
nau8825->jkdet_pull_enable = device_property_read_bool(dev,
sound/soc/codecs/nau8825.c
2776
nau8825->jkdet_pull_up = device_property_read_bool(dev,
sound/soc/codecs/nau8825.c
2779
&nau8825->jkdet_polarity);
sound/soc/codecs/nau8825.c
2781
nau8825->jkdet_polarity = 1;
sound/soc/codecs/nau8825.c
2783
&nau8825->micbias_voltage);
sound/soc/codecs/nau8825.c
2785
nau8825->micbias_voltage = 6;
sound/soc/codecs/nau8825.c
2787
&nau8825->vref_impedance);
sound/soc/codecs/nau8825.c
2789
nau8825->vref_impedance = 2;
sound/soc/codecs/nau8825.c
279
nau8825->xtalk_sem.count = 1;
sound/soc/codecs/nau8825.c
2791
&nau8825->sar_threshold_num);
sound/soc/codecs/nau8825.c
2793
nau8825->sar_threshold_num = 4;
sound/soc/codecs/nau8825.c
2795
nau8825->sar_threshold, nau8825->sar_threshold_num);
sound/soc/codecs/nau8825.c
2797
nau8825->sar_threshold[0] = 0x08;
sound/soc/codecs/nau8825.c
2798
nau8825->sar_threshold[1] = 0x12;
sound/soc/codecs/nau8825.c
2799
nau8825->sar_threshold[2] = 0x26;
sound/soc/codecs/nau8825.c
2800
nau8825->sar_threshold[3] = 0x73;
sound/soc/codecs/nau8825.c
2803
&nau8825->sar_hysteresis);
sound/soc/codecs/nau8825.c
2805
nau8825->sar_hysteresis = 0;
sound/soc/codecs/nau8825.c
2807
&nau8825->sar_voltage);
sound/soc/codecs/nau8825.c
2809
nau8825->sar_voltage = 6;
sound/soc/codecs/nau8825.c
2811
&nau8825->sar_compare_time);
sound/soc/codecs/nau8825.c
2813
nau8825->sar_compare_time = 1;
sound/soc/codecs/nau8825.c
2815
&nau8825->sar_sampling_time);
sound/soc/codecs/nau8825.c
2817
nau8825->sar_sampling_time = 1;
sound/soc/codecs/nau8825.c
2819
&nau8825->key_debounce);
sound/soc/codecs/nau8825.c
2821
nau8825->key_debounce = 3;
sound/soc/codecs/nau8825.c
2823
&nau8825->jack_insert_debounce);
sound/soc/codecs/nau8825.c
2825
nau8825->jack_insert_debounce = 7;
sound/soc/codecs/nau8825.c
2827
&nau8825->jack_eject_debounce);
sound/soc/codecs/nau8825.c
2829
nau8825->jack_eject_debounce = 0;
sound/soc/codecs/nau8825.c
2830
nau8825->xtalk_enable = device_property_read_bool(dev,
sound/soc/codecs/nau8825.c
2832
nau8825->adcout_ds = device_property_read_bool(dev, "nuvoton,adcout-drive-strong");
sound/soc/codecs/nau8825.c
2833
ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms", &nau8825->adc_delay);
sound/soc/codecs/nau8825.c
2835
nau8825->adc_delay = 125;
sound/soc/codecs/nau8825.c
2836
if (nau8825->adc_delay < 125 || nau8825->adc_delay > 500)
sound/soc/codecs/nau8825.c
2839
nau8825->mclk = devm_clk_get_optional(dev, "mclk");
sound/soc/codecs/nau8825.c
2840
if (IS_ERR(nau8825->mclk))
sound/soc/codecs/nau8825.c
2841
return PTR_ERR(nau8825->mclk);
sound/soc/codecs/nau8825.c
2842
if (!nau8825->mclk)
sound/soc/codecs/nau8825.c
2849
static int nau8825_setup_irq(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
2853
ret = devm_request_threaded_irq(nau8825->dev, nau8825->irq, NULL,
sound/soc/codecs/nau8825.c
2855
"nau8825", nau8825);
sound/soc/codecs/nau8825.c
2858
dev_err(nau8825->dev, "Cannot request irq %d (%d)\n",
sound/soc/codecs/nau8825.c
2859
nau8825->irq, ret);
sound/soc/codecs/nau8825.c
2869
struct nau8825 *nau8825 = dev_get_platdata(&i2c->dev);
sound/soc/codecs/nau8825.c
2872
if (!nau8825) {
sound/soc/codecs/nau8825.c
2873
nau8825 = devm_kzalloc(dev, sizeof(*nau8825), GFP_KERNEL);
sound/soc/codecs/nau8825.c
2874
if (!nau8825)
sound/soc/codecs/nau8825.c
2876
ret = nau8825_read_device_properties(dev, nau8825);
sound/soc/codecs/nau8825.c
2881
i2c_set_clientdata(i2c, nau8825);
sound/soc/codecs/nau8825.c
2883
nau8825->regmap = devm_regmap_init_i2c(i2c, &nau8825_regmap_config);
sound/soc/codecs/nau8825.c
2884
if (IS_ERR(nau8825->regmap))
sound/soc/codecs/nau8825.c
2885
return PTR_ERR(nau8825->regmap);
sound/soc/codecs/nau8825.c
2886
nau8825->dev = dev;
sound/soc/codecs/nau8825.c
2887
nau8825->irq = i2c->irq;
sound/soc/codecs/nau8825.c
2891
nau8825->xtalk_state = NAU8825_XTALK_DONE;
sound/soc/codecs/nau8825.c
2892
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
2893
nau8825->xtalk_baktab_initialized = false;
sound/soc/codecs/nau8825.c
2894
sema_init(&nau8825->xtalk_sem, 1);
sound/soc/codecs/nau8825.c
2895
INIT_WORK(&nau8825->xtalk_work, nau8825_xtalk_work);
sound/soc/codecs/nau8825.c
2897
nau8825_print_device_properties(nau8825);
sound/soc/codecs/nau8825.c
2899
nau8825_reset_chip(nau8825->regmap);
sound/soc/codecs/nau8825.c
2900
ret = regmap_read(nau8825->regmap, NAU8825_REG_I2C_DEVICE_ID, &value);
sound/soc/codecs/nau8825.c
2906
nau8825->sw_id = value & NAU8825_SOFTWARE_ID_MASK;
sound/soc/codecs/nau8825.c
2907
switch (nau8825->sw_id) {
sound/soc/codecs/nau8825.c
2911
ret = regmap_register_patch(nau8825->regmap, nau8825_regmap_patch,
sound/soc/codecs/nau8825.c
2923
nau8825_init_regs(nau8825);
sound/soc/codecs/nau8825.c
2926
nau8825_setup_irq(nau8825);
sound/soc/codecs/nau8825.c
295
static void nau8825_hpvol_ramp(struct nau8825 *nau8825,
sound/soc/codecs/nau8825.c
320
regmap_update_bits(nau8825->regmap, NAU8825_REG_HSVOL_CTRL,
sound/soc/codecs/nau8825.c
329
regmap_update_bits(nau8825->regmap, NAU8825_REG_HSVOL_CTRL,
sound/soc/codecs/nau8825.c
387
static void nau8825_xtalk_backup(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
391
if (nau8825->xtalk_baktab_initialized)
sound/soc/codecs/nau8825.c
396
regmap_read(nau8825->regmap, nau8825_xtalk_baktab[i].reg,
sound/soc/codecs/nau8825.c
399
nau8825->xtalk_baktab_initialized = true;
sound/soc/codecs/nau8825.c
402
static void nau8825_xtalk_restore(struct nau8825 *nau8825, bool cause_cancel)
sound/soc/codecs/nau8825.c
406
if (!nau8825->xtalk_baktab_initialized)
sound/soc/codecs/nau8825.c
420
nau8825_hpvol_ramp(nau8825, 0, volume, 3);
sound/soc/codecs/nau8825.c
423
regmap_write(nau8825->regmap, nau8825_xtalk_baktab[i].reg,
sound/soc/codecs/nau8825.c
427
nau8825->xtalk_baktab_initialized = false;
sound/soc/codecs/nau8825.c
430
static void nau8825_xtalk_prepare_dac(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
433
regmap_update_bits(nau8825->regmap, NAU8825_REG_ENA_CTRL,
sound/soc/codecs/nau8825.c
442
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
446
regmap_update_bits(nau8825->regmap, NAU8825_REG_RDAC,
sound/soc/codecs/nau8825.c
451
regmap_update_bits(nau8825->regmap, NAU8825_REG_POWER_UP_CONTROL,
sound/soc/codecs/nau8825.c
456
regmap_update_bits(nau8825->regmap, NAU8825_REG_POWER_UP_CONTROL,
sound/soc/codecs/nau8825.c
460
regmap_update_bits(nau8825->regmap, NAU8825_REG_HSD_CTRL,
sound/soc/codecs/nau8825.c
463
regmap_update_bits(nau8825->regmap, NAU8825_REG_BOOST,
sound/soc/codecs/nau8825.c
466
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLASSG_CTRL,
sound/soc/codecs/nau8825.c
471
static void nau8825_xtalk_prepare_adc(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
474
regmap_update_bits(nau8825->regmap, NAU8825_REG_ANALOG_ADC_2,
sound/soc/codecs/nau8825.c
479
static void nau8825_xtalk_clock(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
48
static int nau8825_configure_sysclk(struct nau8825 *nau8825,
sound/soc/codecs/nau8825.c
482
regmap_write(nau8825->regmap, NAU8825_REG_FLL1, 0x0);
sound/soc/codecs/nau8825.c
483
regmap_write(nau8825->regmap, NAU8825_REG_FLL2, 0x3126);
sound/soc/codecs/nau8825.c
484
regmap_write(nau8825->regmap, NAU8825_REG_FLL3, 0x0008);
sound/soc/codecs/nau8825.c
485
regmap_write(nau8825->regmap, NAU8825_REG_FLL4, 0x0010);
sound/soc/codecs/nau8825.c
486
regmap_write(nau8825->regmap, NAU8825_REG_FLL5, 0x0);
sound/soc/codecs/nau8825.c
487
regmap_write(nau8825->regmap, NAU8825_REG_FLL6, 0x6000);
sound/soc/codecs/nau8825.c
489
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
491
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL6, NAU8825_DCO_EN,
sound/soc/codecs/nau8825.c
496
regmap_update_bits(nau8825->regmap, NAU8825_REG_CLK_DIVIDER,
sound/soc/codecs/nau8825.c
498
regmap_update_bits(nau8825->regmap, NAU8825_REG_FLL1,
sound/soc/codecs/nau8825.c
502
static void nau8825_xtalk_prepare(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
507
nau8825_xtalk_backup(nau8825);
sound/soc/codecs/nau8825.c
509
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2,
sound/soc/codecs/nau8825.c
520
nau8825_hpvol_ramp(nau8825, volume, 0, 3);
sound/soc/codecs/nau8825.c
522
nau8825_xtalk_clock(nau8825);
sound/soc/codecs/nau8825.c
523
nau8825_xtalk_prepare_dac(nau8825);
sound/soc/codecs/nau8825.c
524
nau8825_xtalk_prepare_adc(nau8825);
sound/soc/codecs/nau8825.c
526
regmap_update_bits(nau8825->regmap, NAU8825_REG_DACL_CTRL,
sound/soc/codecs/nau8825.c
529
regmap_update_bits(nau8825->regmap, NAU8825_REG_DACR_CTRL,
sound/soc/codecs/nau8825.c
535
regmap_update_bits(nau8825->regmap, NAU8825_REG_IMM_MODE_CTRL,
sound/soc/codecs/nau8825.c
541
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
544
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
545
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
548
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
553
static void nau8825_xtalk_clean_dac(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
556
regmap_update_bits(nau8825->regmap, NAU8825_REG_BOOST,
sound/soc/codecs/nau8825.c
559
regmap_update_bits(nau8825->regmap, NAU8825_REG_HSD_CTRL,
sound/soc/codecs/nau8825.c
563
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
564
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
568
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
572
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
576
regmap_update_bits(nau8825->regmap, NAU8825_REG_POWER_UP_CONTROL,
sound/soc/codecs/nau8825.c
578
regmap_update_bits(nau8825->regmap, NAU8825_REG_POWER_UP_CONTROL,
sound/soc/codecs/nau8825.c
582
regmap_update_bits(nau8825->regmap, NAU8825_REG_RDAC,
sound/soc/codecs/nau8825.c
585
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
588
regmap_update_bits(nau8825->regmap, NAU8825_REG_ENA_CTRL,
sound/soc/codecs/nau8825.c
591
if (!nau8825->irq)
sound/soc/codecs/nau8825.c
592
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
596
static void nau8825_xtalk_clean_adc(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
599
regmap_update_bits(nau8825->regmap, NAU8825_REG_ANALOG_ADC_2,
sound/soc/codecs/nau8825.c
603
static void nau8825_xtalk_clean(struct nau8825 *nau8825, bool cause_cancel)
sound/soc/codecs/nau8825.c
606
nau8825_configure_sysclk(nau8825, NAU8825_CLK_INTERNAL, 0);
sound/soc/codecs/nau8825.c
607
nau8825_xtalk_clean_dac(nau8825);
sound/soc/codecs/nau8825.c
608
nau8825_xtalk_clean_adc(nau8825);
sound/soc/codecs/nau8825.c
610
regmap_write(nau8825->regmap, NAU8825_REG_IMM_MODE_CTRL, 0);
sound/soc/codecs/nau8825.c
612
regmap_update_bits(nau8825->regmap, NAU8825_REG_INTERRUPT_MASK,
sound/soc/codecs/nau8825.c
615
regmap_update_bits(nau8825->regmap, NAU8825_REG_I2S_PCM_CTRL2,
sound/soc/codecs/nau8825.c
619
nau8825_xtalk_restore(nau8825, cause_cancel);
sound/soc/codecs/nau8825.c
622
static void nau8825_xtalk_imm_start(struct nau8825 *nau8825, int vol)
sound/soc/codecs/nau8825.c
625
regmap_update_bits(nau8825->regmap, NAU8825_REG_ADC_DGAIN_CTRL,
sound/soc/codecs/nau8825.c
630
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
633
switch (nau8825->xtalk_state) {
sound/soc/codecs/nau8825.c
636
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
642
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
651
regmap_update_bits(nau8825->regmap, NAU8825_REG_IMM_MODE_CTRL,
sound/soc/codecs/nau8825.c
655
static void nau8825_xtalk_imm_stop(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
658
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
682
static void nau8825_xtalk_measure(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
686
switch (nau8825->xtalk_state) {
sound/soc/codecs/nau8825.c
691
nau8825_xtalk_prepare(nau8825);
sound/soc/codecs/nau8825.c
694
nau8825->xtalk_state = NAU8825_XTALK_HPR_R2L;
sound/soc/codecs/nau8825.c
695
nau8825_xtalk_imm_start(nau8825, 0x00d2);
sound/soc/codecs/nau8825.c
701
regmap_read(nau8825->regmap, NAU8825_REG_IMM_RMS_L,
sound/soc/codecs/nau8825.c
702
&nau8825->imp_rms[NAU8825_XTALK_HPR_R2L]);
sound/soc/codecs/nau8825.c
703
dev_dbg(nau8825->dev, "HPR_R2L imm: %x\n",
sound/soc/codecs/nau8825.c
704
nau8825->imp_rms[NAU8825_XTALK_HPR_R2L]);
sound/soc/codecs/nau8825.c
706
nau8825_xtalk_imm_stop(nau8825);
sound/soc/codecs/nau8825.c
708
nau8825->xtalk_state = NAU8825_XTALK_HPL_R2L;
sound/soc/codecs/nau8825.c
709
nau8825_xtalk_imm_start(nau8825, 0x00ff);
sound/soc/codecs/nau8825.c
718
regmap_read(nau8825->regmap, NAU8825_REG_IMM_RMS_L,
sound/soc/codecs/nau8825.c
719
&nau8825->imp_rms[NAU8825_XTALK_HPL_R2L]);
sound/soc/codecs/nau8825.c
720
dev_dbg(nau8825->dev, "HPL_R2L imm: %x\n",
sound/soc/codecs/nau8825.c
721
nau8825->imp_rms[NAU8825_XTALK_HPL_R2L]);
sound/soc/codecs/nau8825.c
722
nau8825_xtalk_imm_stop(nau8825);
sound/soc/codecs/nau8825.c
724
nau8825->xtalk_state = NAU8825_XTALK_IMM;
sound/soc/codecs/nau8825.c
733
nau8825->imp_rms[NAU8825_XTALK_HPR_R2L],
sound/soc/codecs/nau8825.c
734
nau8825->imp_rms[NAU8825_XTALK_HPL_R2L]);
sound/soc/codecs/nau8825.c
735
dev_dbg(nau8825->dev, "cross talk sidetone: %x\n", sidetone);
sound/soc/codecs/nau8825.c
736
regmap_write(nau8825->regmap, NAU8825_REG_DAC_DGAIN_CTRL,
sound/soc/codecs/nau8825.c
738
nau8825_xtalk_clean(nau8825, false);
sound/soc/codecs/nau8825.c
739
nau8825->xtalk_state = NAU8825_XTALK_DONE;
sound/soc/codecs/nau8825.c
748
struct nau8825 *nau8825 = container_of(
sound/soc/codecs/nau8825.c
749
work, struct nau8825, xtalk_work);
sound/soc/codecs/nau8825.c
751
nau8825_xtalk_measure(nau8825);
sound/soc/codecs/nau8825.c
755
if (nau8825->xtalk_state == NAU8825_XTALK_IMM)
sound/soc/codecs/nau8825.c
756
nau8825_xtalk_measure(nau8825);
sound/soc/codecs/nau8825.c
764
if (nau8825->xtalk_state == NAU8825_XTALK_DONE) {
sound/soc/codecs/nau8825.c
765
snd_soc_jack_report(nau8825->jack, nau8825->xtalk_event,
sound/soc/codecs/nau8825.c
766
nau8825->xtalk_event_mask);
sound/soc/codecs/nau8825.c
767
nau8825_sema_release(nau8825);
sound/soc/codecs/nau8825.c
768
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
772
static void nau8825_xtalk_cancel(struct nau8825 *nau8825)
sound/soc/codecs/nau8825.c
778
if (nau8825->xtalk_enable && nau8825->xtalk_state !=
sound/soc/codecs/nau8825.c
780
cancel_work_sync(&nau8825->xtalk_work);
sound/soc/codecs/nau8825.c
781
nau8825_xtalk_clean(nau8825, true);
sound/soc/codecs/nau8825.c
784
nau8825_sema_reset(nau8825);
sound/soc/codecs/nau8825.c
785
nau8825->xtalk_state = NAU8825_XTALK_DONE;
sound/soc/codecs/nau8825.c
786
nau8825->xtalk_protect = false;
sound/soc/codecs/nau8825.c
862
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
866
regmap_update_bits(nau8825->regmap, NAU8825_REG_FEPGA,
sound/soc/codecs/nau8825.c
869
regmap_update_bits(nau8825->regmap, NAU8825_REG_BOOST,
sound/soc/codecs/nau8825.c
872
regmap_update_bits(nau8825->regmap, NAU8825_REG_BOOST,
sound/soc/codecs/nau8825.c
874
regmap_update_bits(nau8825->regmap, NAU8825_REG_FEPGA,
sound/soc/codecs/nau8825.c
888
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
892
msleep(nau8825->adc_delay);
sound/soc/codecs/nau8825.c
893
regmap_update_bits(nau8825->regmap, NAU8825_REG_ENA_CTRL,
sound/soc/codecs/nau8825.c
897
if (!nau8825->irq)
sound/soc/codecs/nau8825.c
898
regmap_update_bits(nau8825->regmap,
sound/soc/codecs/nau8825.c
912
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
918
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
922
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
936
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
941
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
943
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
944
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
947
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
952
regmap_update_bits(nau8825->regmap, NAU8825_REG_BIAS_ADJ,
sound/soc/codecs/nau8825.c
954
if (nau8825->sw_id == NAU8825_SOFTWARE_ID_NAU8825)
sound/soc/codecs/nau8825.c
955
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
959
regmap_update_bits(nau8825->regmap, NAU8825_REG_CHARGE_PUMP,
sound/soc/codecs/nau8825.c
974
struct nau8825 *nau8825 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8825.c
975
struct regmap *regmap = nau8825->regmap;
sound/soc/codecs/nau8825.c
978
dev_dbg(nau8825->dev, "system clock control : POWER OFF\n");
sound/soc/codecs/nau8825.c
985
nau8825_configure_sysclk(nau8825,
sound/soc/codecs/nau8825.c
988
nau8825_configure_sysclk(nau8825, NAU8825_CLK_DIS, 0);