nau8824 31 sound/soc/codecs/nau8824.c static int nau8824_config_sysclk(struct nau8824 *nau8824, nau8824 33 sound/soc/codecs/nau8824.c static bool nau8824_is_jack_inserted(struct nau8824 *nau8824); nau8824 198 sound/soc/codecs/nau8824.c static int nau8824_sema_acquire(struct nau8824 *nau8824, long timeout) nau8824 203 sound/soc/codecs/nau8824.c ret = down_timeout(&nau8824->jd_sem, timeout); nau8824 205 sound/soc/codecs/nau8824.c dev_warn(nau8824->dev, "Acquire semaphore timeout\n"); nau8824 207 sound/soc/codecs/nau8824.c ret = down_interruptible(&nau8824->jd_sem); nau8824 209 sound/soc/codecs/nau8824.c dev_warn(nau8824->dev, "Acquire semaphore fail\n"); nau8824 215 sound/soc/codecs/nau8824.c static inline void nau8824_sema_release(struct nau8824 *nau8824) nau8824 217 sound/soc/codecs/nau8824.c up(&nau8824->jd_sem); nau8824 424 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 429 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_ENABLE_LO, nau8824 433 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_ENABLE_LO, nau8824 447 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 451 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 456 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 471 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 477 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 482 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 497 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 498 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 503 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "system clock control : POWER OFF\n"); nau8824 509 sound/soc/codecs/nau8824.c if (nau8824_is_jack_inserted(nau8824)) { nau8824 510 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, nau8824 513 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, NAU8824_CLK_DIS, 0); nau8824 516 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "system clock control : POWER ON\n"); nau8824 543 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, nau8824 556 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 564 sound/soc/codecs/nau8824.c if ((0x1 << (8 - src)) * nau8824->fs <= DMIC_CLK) nau8824 567 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "dmic src %d for mclk %d\n", src, nau8824->fs * 256); nau8824 568 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_CLK_DIVIDER, nau8824 804 sound/soc/codecs/nau8824.c static bool nau8824_is_jack_inserted(struct nau8824 *nau8824) nau8824 806 sound/soc/codecs/nau8824.c struct snd_soc_jack *jack = nau8824->jack; nau8824 809 sound/soc/codecs/nau8824.c if (nau8824->irq && jack) nau8824 831 sound/soc/codecs/nau8824.c static void nau8824_dapm_disable_pin(struct nau8824 *nau8824, const char *pin) nau8824 833 sound/soc/codecs/nau8824.c struct snd_soc_dapm_context *dapm = nau8824->dapm; nau8824 846 sound/soc/codecs/nau8824.c static void nau8824_dapm_enable_pin(struct nau8824 *nau8824, const char *pin) nau8824 848 sound/soc/codecs/nau8824.c struct snd_soc_dapm_context *dapm = nau8824->dapm; nau8824 861 sound/soc/codecs/nau8824.c static void nau8824_eject_jack(struct nau8824 *nau8824) nau8824 863 sound/soc/codecs/nau8824.c struct snd_soc_dapm_context *dapm = nau8824->dapm; nau8824 864 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 869 sound/soc/codecs/nau8824.c nau8824_dapm_disable_pin(nau8824, "SAR"); nau8824 870 sound/soc/codecs/nau8824.c nau8824_dapm_disable_pin(nau8824, "MICBIAS"); nau8824 889 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, NAU8824_CLK_DIS, 0); nau8824 894 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = container_of( nau8824 895 sound/soc/codecs/nau8824.c work, struct nau8824, jdet_work); nau8824 896 sound/soc/codecs/nau8824.c struct snd_soc_dapm_context *dapm = nau8824->dapm; nau8824 897 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 900 sound/soc/codecs/nau8824.c nau8824_dapm_enable_pin(nau8824, "MICBIAS"); nau8824 901 sound/soc/codecs/nau8824.c nau8824_dapm_enable_pin(nau8824, "SAR"); nau8824 908 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "SAR ADC data 0x%02x\n", adc_value); nau8824 912 sound/soc/codecs/nau8824.c nau8824_dapm_disable_pin(nau8824, "SAR"); nau8824 913 sound/soc/codecs/nau8824.c nau8824_dapm_disable_pin(nau8824, "MICBIAS"); nau8824 919 sound/soc/codecs/nau8824.c snd_soc_jack_report(nau8824->jack, event, event_mask); nau8824 926 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 929 sound/soc/codecs/nau8824.c static void nau8824_setup_auto_irq(struct nau8824 *nau8824) nau8824 931 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 940 sound/soc/codecs/nau8824.c if (nau8824->dapm->bias_level < SND_SOC_BIAS_PREPARE) nau8824 941 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, NAU8824_CLK_INTERNAL, 0); nau8824 974 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = (struct nau8824 *)data; nau8824 975 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 979 sound/soc/codecs/nau8824.c dev_err(nau8824->dev, "failed to read irq status\n"); nau8824 982 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "IRQ %x\n", active_irq); nau8824 985 sound/soc/codecs/nau8824.c nau8824_eject_jack(nau8824); nau8824 991 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 992 sound/soc/codecs/nau8824.c cancel_work_sync(&nau8824->jdet_work); nau8824 1003 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "button %x pressed\n", event); nau8824 1019 sound/soc/codecs/nau8824.c cancel_work_sync(&nau8824->jdet_work); nau8824 1020 sound/soc/codecs/nau8824.c schedule_work(&nau8824->jdet_work); nau8824 1025 sound/soc/codecs/nau8824.c nau8824_setup_auto_irq(nau8824); nau8824 1034 sound/soc/codecs/nau8824.c snd_soc_jack_report(nau8824->jack, event, event_mask); nau8824 1039 sound/soc/codecs/nau8824.c static int nau8824_clock_check(struct nau8824 *nau8824, nau8824 1055 sound/soc/codecs/nau8824.c dev_err(nau8824->dev, "exceed the maximum frequency of CLK_ADC or CLK_DAC\n"); nau8824 1066 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1069 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1077 sound/soc/codecs/nau8824.c nau8824->fs = params_rate(params); nau8824 1079 sound/soc/codecs/nau8824.c regmap_read(nau8824->regmap, nau8824 1082 sound/soc/codecs/nau8824.c if (nau8824_clock_check(nau8824, substream->stream, nau8824 1083 sound/soc/codecs/nau8824.c nau8824->fs, osr)) nau8824 1085 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_CLK_DIVIDER, nau8824 1089 sound/soc/codecs/nau8824.c regmap_read(nau8824->regmap, nau8824 1092 sound/soc/codecs/nau8824.c if (nau8824_clock_check(nau8824, substream->stream, nau8824 1093 sound/soc/codecs/nau8824.c nau8824->fs, osr)) nau8824 1095 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_CLK_DIVIDER, nau8824 1101 sound/soc/codecs/nau8824.c regmap_read(nau8824->regmap, nau8824 1105 sound/soc/codecs/nau8824.c bclk_fs = snd_soc_params_to_bclk(params) / nau8824->fs; nau8824 1116 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1139 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_PORT0_I2S_PCM_CTRL_1, nau8824 1142 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1150 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1153 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1196 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_PORT0_I2S_PCM_CTRL_1, nau8824 1199 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_PORT0_I2S_PCM_CTRL_2, nau8824 1202 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1227 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1248 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_TDM_CTRL, nau8824 1252 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_PORT0_LEFT_TIME_SLOT, nau8824 1368 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1375 sound/soc/codecs/nau8824.c dev_err(nau8824->dev, "Unsupported input clock %d\n", freq_in); nau8824 1378 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "mclk_src=%x ratio=%x fll_frac=%x fll_int=%x clk_ref_div=%x\n", nau8824 1382 sound/soc/codecs/nau8824.c nau8824_fll_apply(nau8824->regmap, &fll_param); nau8824 1384 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_CLK_DIVIDER, nau8824 1390 sound/soc/codecs/nau8824.c static int nau8824_config_sysclk(struct nau8824 *nau8824, nau8824 1393 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 1404 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1409 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1420 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1423 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1427 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1430 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1434 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, HZ); nau8824 1437 sound/soc/codecs/nau8824.c nau8824_sema_release(nau8824); nau8824 1441 sound/soc/codecs/nau8824.c dev_err(nau8824->dev, "Invalid clock id (%d)\n", clk_id); nau8824 1445 sound/soc/codecs/nau8824.c dev_dbg(nau8824->dev, "Sysclk is %dHz and clock id is %d\n", freq, nau8824 1454 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1456 sound/soc/codecs/nau8824.c return nau8824_config_sysclk(nau8824, clk_id, freq); nau8824 1459 sound/soc/codecs/nau8824.c static void nau8824_resume_setup(struct nau8824 *nau8824) nau8824 1461 sound/soc/codecs/nau8824.c nau8824_config_sysclk(nau8824, NAU8824_CLK_DIS, 0); nau8824 1462 sound/soc/codecs/nau8824.c if (nau8824->irq) { nau8824 1464 sound/soc/codecs/nau8824.c nau8824_int_status_clear_all(nau8824->regmap); nau8824 1468 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_ENA_CTRL, nau8824 1470 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1474 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1483 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1495 sound/soc/codecs/nau8824.c nau8824_resume_setup(nau8824); nau8824 1500 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1502 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1513 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1516 sound/soc/codecs/nau8824.c nau8824->dapm = dapm; nau8824 1523 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1525 sound/soc/codecs/nau8824.c if (nau8824->irq) { nau8824 1526 sound/soc/codecs/nau8824.c disable_irq(nau8824->irq); nau8824 1529 sound/soc/codecs/nau8824.c regcache_cache_only(nau8824->regmap, true); nau8824 1530 sound/soc/codecs/nau8824.c regcache_mark_dirty(nau8824->regmap); nau8824 1537 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1539 sound/soc/codecs/nau8824.c regcache_cache_only(nau8824->regmap, false); nau8824 1540 sound/soc/codecs/nau8824.c regcache_sync(nau8824->regmap); nau8824 1541 sound/soc/codecs/nau8824.c if (nau8824->irq) { nau8824 1545 sound/soc/codecs/nau8824.c nau8824_sema_acquire(nau8824, 0); nau8824 1546 sound/soc/codecs/nau8824.c enable_irq(nau8824->irq); nau8824 1628 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = snd_soc_component_get_drvdata(component); nau8824 1631 sound/soc/codecs/nau8824.c nau8824->jack = jack; nau8824 1633 sound/soc/codecs/nau8824.c INIT_WORK(&nau8824->jdet_work, nau8824_jdet_work); nau8824 1634 sound/soc/codecs/nau8824.c ret = devm_request_threaded_irq(nau8824->dev, nau8824->irq, NULL, nau8824 1636 sound/soc/codecs/nau8824.c "nau8824", nau8824); nau8824 1638 sound/soc/codecs/nau8824.c dev_err(nau8824->dev, "Cannot request irq %d (%d)\n", nau8824 1639 sound/soc/codecs/nau8824.c nau8824->irq, ret); nau8824 1652 sound/soc/codecs/nau8824.c static void nau8824_setup_buttons(struct nau8824 *nau8824) nau8824 1654 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 1658 sound/soc/codecs/nau8824.c nau8824->sar_voltage << NAU8824_SAR_TRACKING_GAIN_SFT); nau8824 1661 sound/soc/codecs/nau8824.c nau8824->sar_compare_time << NAU8824_SAR_COMPARE_TIME_SFT); nau8824 1664 sound/soc/codecs/nau8824.c nau8824->sar_sampling_time << NAU8824_SAR_SAMPLING_TIME_SFT); nau8824 1668 sound/soc/codecs/nau8824.c (nau8824->sar_threshold_num - 1) << NAU8824_LEVELS_NR_SFT); nau8824 1671 sound/soc/codecs/nau8824.c nau8824->sar_hysteresis << NAU8824_HYSTERESIS_SFT); nau8824 1674 sound/soc/codecs/nau8824.c nau8824->key_debounce << NAU8824_SHORTKEY_DEBOUNCE_SFT); nau8824 1677 sound/soc/codecs/nau8824.c (nau8824->sar_threshold[0] << 8) | nau8824->sar_threshold[1]); nau8824 1679 sound/soc/codecs/nau8824.c (nau8824->sar_threshold[2] << 8) | nau8824->sar_threshold[3]); nau8824 1681 sound/soc/codecs/nau8824.c (nau8824->sar_threshold[4] << 8) | nau8824->sar_threshold[5]); nau8824 1683 sound/soc/codecs/nau8824.c (nau8824->sar_threshold[6] << 8) | nau8824->sar_threshold[7]); nau8824 1686 sound/soc/codecs/nau8824.c static void nau8824_init_regs(struct nau8824 *nau8824) nau8824 1688 sound/soc/codecs/nau8824.c struct regmap *regmap = nau8824->regmap; nau8824 1693 sound/soc/codecs/nau8824.c (nau8824->vref_impedance << NAU8824_VMID_SEL_SFT)); nau8824 1698 sound/soc/codecs/nau8824.c NAU8824_MICBIAS_VOLTAGE_MASK, nau8824->micbias_voltage); nau8824 1778 sound/soc/codecs/nau8824.c nau8824->jkdet_polarity ? 0 : NAU8824_JACK_LOGIC); nau8824 1781 sound/soc/codecs/nau8824.c (nau8824->jack_eject_debounce << NAU8824_JACK_EJECT_DT_SFT)); nau8824 1782 sound/soc/codecs/nau8824.c if (nau8824->sar_threshold_num) nau8824 1783 sound/soc/codecs/nau8824.c nau8824_setup_buttons(nau8824); nau8824 1786 sound/soc/codecs/nau8824.c static int nau8824_setup_irq(struct nau8824 *nau8824) nau8824 1789 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_ENA_CTRL, nau8824 1791 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, nau8824 1793 sound/soc/codecs/nau8824.c regmap_update_bits(nau8824->regmap, NAU8824_REG_INTERRUPT_SETTING_1, nau8824 1799 sound/soc/codecs/nau8824.c static void nau8824_print_device_properties(struct nau8824 *nau8824) nau8824 1801 sound/soc/codecs/nau8824.c struct device *dev = nau8824->dev; nau8824 1804 sound/soc/codecs/nau8824.c dev_dbg(dev, "jkdet-polarity: %d\n", nau8824->jkdet_polarity); nau8824 1805 sound/soc/codecs/nau8824.c dev_dbg(dev, "micbias-voltage: %d\n", nau8824->micbias_voltage); nau8824 1806 sound/soc/codecs/nau8824.c dev_dbg(dev, "vref-impedance: %d\n", nau8824->vref_impedance); nau8824 1808 sound/soc/codecs/nau8824.c dev_dbg(dev, "sar-threshold-num: %d\n", nau8824->sar_threshold_num); nau8824 1809 sound/soc/codecs/nau8824.c for (i = 0; i < nau8824->sar_threshold_num; i++) nau8824 1811 sound/soc/codecs/nau8824.c nau8824->sar_threshold[i]); nau8824 1813 sound/soc/codecs/nau8824.c dev_dbg(dev, "sar-hysteresis: %d\n", nau8824->sar_hysteresis); nau8824 1814 sound/soc/codecs/nau8824.c dev_dbg(dev, "sar-voltage: %d\n", nau8824->sar_voltage); nau8824 1815 sound/soc/codecs/nau8824.c dev_dbg(dev, "sar-compare-time: %d\n", nau8824->sar_compare_time); nau8824 1816 sound/soc/codecs/nau8824.c dev_dbg(dev, "sar-sampling-time: %d\n", nau8824->sar_sampling_time); nau8824 1817 sound/soc/codecs/nau8824.c dev_dbg(dev, "short-key-debounce: %d\n", nau8824->key_debounce); nau8824 1819 sound/soc/codecs/nau8824.c nau8824->jack_eject_debounce); nau8824 1823 sound/soc/codecs/nau8824.c struct nau8824 *nau8824) { nau8824 1827 sound/soc/codecs/nau8824.c &nau8824->jkdet_polarity); nau8824 1829 sound/soc/codecs/nau8824.c nau8824->jkdet_polarity = 1; nau8824 1831 sound/soc/codecs/nau8824.c &nau8824->micbias_voltage); nau8824 1833 sound/soc/codecs/nau8824.c nau8824->micbias_voltage = 6; nau8824 1835 sound/soc/codecs/nau8824.c &nau8824->vref_impedance); nau8824 1837 sound/soc/codecs/nau8824.c nau8824->vref_impedance = 2; nau8824 1839 sound/soc/codecs/nau8824.c &nau8824->sar_threshold_num); nau8824 1841 sound/soc/codecs/nau8824.c nau8824->sar_threshold_num = 4; nau8824 1843 sound/soc/codecs/nau8824.c nau8824->sar_threshold, nau8824->sar_threshold_num); nau8824 1845 sound/soc/codecs/nau8824.c nau8824->sar_threshold[0] = 0x0a; nau8824 1846 sound/soc/codecs/nau8824.c nau8824->sar_threshold[1] = 0x14; nau8824 1847 sound/soc/codecs/nau8824.c nau8824->sar_threshold[2] = 0x26; nau8824 1848 sound/soc/codecs/nau8824.c nau8824->sar_threshold[3] = 0x73; nau8824 1851 sound/soc/codecs/nau8824.c &nau8824->sar_hysteresis); nau8824 1853 sound/soc/codecs/nau8824.c nau8824->sar_hysteresis = 0; nau8824 1855 sound/soc/codecs/nau8824.c &nau8824->sar_voltage); nau8824 1857 sound/soc/codecs/nau8824.c nau8824->sar_voltage = 6; nau8824 1859 sound/soc/codecs/nau8824.c &nau8824->sar_compare_time); nau8824 1861 sound/soc/codecs/nau8824.c nau8824->sar_compare_time = 1; nau8824 1863 sound/soc/codecs/nau8824.c &nau8824->sar_sampling_time); nau8824 1865 sound/soc/codecs/nau8824.c nau8824->sar_sampling_time = 1; nau8824 1867 sound/soc/codecs/nau8824.c &nau8824->key_debounce); nau8824 1869 sound/soc/codecs/nau8824.c nau8824->key_debounce = 0; nau8824 1871 sound/soc/codecs/nau8824.c &nau8824->jack_eject_debounce); nau8824 1873 sound/soc/codecs/nau8824.c nau8824->jack_eject_debounce = 1; nau8824 1882 sound/soc/codecs/nau8824.c struct nau8824 *nau8824 = dev_get_platdata(dev); nau8824 1885 sound/soc/codecs/nau8824.c if (!nau8824) { nau8824 1886 sound/soc/codecs/nau8824.c nau8824 = devm_kzalloc(dev, sizeof(*nau8824), GFP_KERNEL); nau8824 1887 sound/soc/codecs/nau8824.c if (!nau8824) nau8824 1889 sound/soc/codecs/nau8824.c ret = nau8824_read_device_properties(dev, nau8824); nau8824 1893 sound/soc/codecs/nau8824.c i2c_set_clientdata(i2c, nau8824); nau8824 1895 sound/soc/codecs/nau8824.c nau8824->regmap = devm_regmap_init_i2c(i2c, &nau8824_regmap_config); nau8824 1896 sound/soc/codecs/nau8824.c if (IS_ERR(nau8824->regmap)) nau8824 1897 sound/soc/codecs/nau8824.c return PTR_ERR(nau8824->regmap); nau8824 1898 sound/soc/codecs/nau8824.c nau8824->dev = dev; nau8824 1899 sound/soc/codecs/nau8824.c nau8824->irq = i2c->irq; nau8824 1900 sound/soc/codecs/nau8824.c sema_init(&nau8824->jd_sem, 1); nau8824 1902 sound/soc/codecs/nau8824.c nau8824_print_device_properties(nau8824); nau8824 1904 sound/soc/codecs/nau8824.c ret = regmap_read(nau8824->regmap, NAU8824_REG_I2C_DEVICE_ID, &value); nau8824 1910 sound/soc/codecs/nau8824.c nau8824_reset_chip(nau8824->regmap); nau8824 1911 sound/soc/codecs/nau8824.c nau8824_init_regs(nau8824); nau8824 1914 sound/soc/codecs/nau8824.c nau8824_setup_irq(nau8824);