Lines Matching refs:wm8996
108 struct wm8996_priv *wm8996 = container_of(nb, struct wm8996_priv, \
111 regcache_mark_dirty(wm8996->regmap); \
339 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_set_retune_mobile() local
340 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_set_retune_mobile()
343 if (!wm8996->num_retune_mobile_texts) in wm8996_set_retune_mobile()
369 cfg = wm8996->retune_mobile_cfg[block]; in wm8996_set_retune_mobile()
374 wm8996->retune_mobile_texts[cfg]) == 0 && in wm8996_set_retune_mobile()
376 - wm8996->rx_rate[iface]) < best_val) { in wm8996_set_retune_mobile()
379 - wm8996->rx_rate[iface]); in wm8996_set_retune_mobile()
387 wm8996->rx_rate[iface]); in wm8996_set_retune_mobile()
416 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_put_retune_mobile_enum() local
417 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_put_retune_mobile_enum()
427 wm8996->retune_mobile_cfg[block] = value; in wm8996_put_retune_mobile_enum()
438 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_get_retune_mobile_enum() local
443 ucontrol->value.enumerated.item[0] = wm8996->retune_mobile_cfg[block]; in wm8996_get_retune_mobile_enum()
579 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_bg_enable() local
581 wm8996->bg_ena++; in wm8996_bg_enable()
582 if (wm8996->bg_ena == 1) { in wm8996_bg_enable()
591 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_bg_disable() local
593 wm8996->bg_ena--; in wm8996_bg_disable()
594 if (!wm8996->bg_ena) in wm8996_bg_disable()
638 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in rmv_short_event() local
643 wm8996->hpout_pending &= ~w->shift; in rmv_short_event()
646 wm8996->hpout_pending |= w->shift; in rmv_short_event()
659 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wait_for_dc_servo() local
668 timeout = wait_for_completion_timeout(&wm8996->dcs_done, in wait_for_dc_servo()
692 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_seq_notifier() local
696 if (wm8996->dcs_pending) { in wm8996_seq_notifier()
698 wm8996->dcs_pending); in wm8996_seq_notifier()
701 wait_for_dc_servo(codec, wm8996->dcs_pending in wm8996_seq_notifier()
704 wm8996->dcs_pending = 0; in wm8996_seq_notifier()
707 if (wm8996->hpout_pending != wm8996->hpout_ena) { in wm8996_seq_notifier()
709 wm8996->hpout_ena, wm8996->hpout_pending); in wm8996_seq_notifier()
713 if (wm8996->hpout_pending & HPOUT1L) { in wm8996_seq_notifier()
722 if (wm8996->hpout_pending & HPOUT1R) { in wm8996_seq_notifier()
735 if (wm8996->hpout_pending & HPOUT2L) { in wm8996_seq_notifier()
744 if (wm8996->hpout_pending & HPOUT2R) { in wm8996_seq_notifier()
755 wm8996->hpout_ena = wm8996->hpout_pending; in wm8996_seq_notifier()
763 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in dcs_start() local
767 wm8996->dcs_pending |= 1 << w->shift; in dcs_start()
1537 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_update_bclk() local
1543 if (wm8996->sysclk < 64000) in wm8996_update_bclk()
1556 bclk_rate = wm8996->bclk_rate[aif]; in wm8996_update_bclk()
1561 cur_val = (wm8996->sysclk / bclk_divs[i]) - bclk_rate; in wm8996_update_bclk()
1566 bclk_rate = wm8996->sysclk / bclk_divs[best]; in wm8996_update_bclk()
1578 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_set_bias_level() local
1594 ret = regulator_bulk_enable(ARRAY_SIZE(wm8996->supplies), in wm8996_set_bias_level()
1595 wm8996->supplies); in wm8996_set_bias_level()
1603 if (wm8996->pdata.ldo_ena >= 0) { in wm8996_set_bias_level()
1604 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, in wm8996_set_bias_level()
1609 regcache_cache_only(wm8996->regmap, false); in wm8996_set_bias_level()
1610 regcache_sync(wm8996->regmap); in wm8996_set_bias_level()
1621 regcache_cache_only(wm8996->regmap, true); in wm8996_set_bias_level()
1622 if (wm8996->pdata.ldo_ena >= 0) { in wm8996_set_bias_level()
1623 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_set_bias_level()
1624 regcache_cache_only(wm8996->regmap, true); in wm8996_set_bias_level()
1626 regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), in wm8996_set_bias_level()
1627 wm8996->supplies); in wm8996_set_bias_level()
1740 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_hw_params() local
1781 wm8996->bclk_rate[dai->id] = bclk_rate; in wm8996_hw_params()
1782 wm8996->rx_rate[dai->id] = params_rate(params); in wm8996_hw_params()
1820 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_set_sysclk() local
1827 if (freq == wm8996->sysclk && clk_id == wm8996->sysclk_src) in wm8996_set_sysclk()
1837 wm8996->sysclk = freq; in wm8996_set_sysclk()
1841 wm8996->sysclk = freq; in wm8996_set_sysclk()
1845 wm8996->sysclk = freq; in wm8996_set_sysclk()
1853 switch (wm8996->sysclk) { in wm8996_set_sysclk()
1862 wm8996->sysclk /= 2; in wm8996_set_sysclk()
1875 wm8996->sysclk); in wm8996_set_sysclk()
1890 wm8996->sysclk_src = clk_id; in wm8996_set_sysclk()
2009 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_set_fll() local
2016 if (source == wm8996->fll_src && Fref == wm8996->fll_fref && in wm8996_set_fll()
2017 Fout == wm8996->fll_fout) in wm8996_set_fll()
2023 wm8996->fll_fref = 0; in wm8996_set_fll()
2024 wm8996->fll_fout = 0; in wm8996_set_fll()
2091 try_wait_for_completion(&wm8996->fll_lock); in wm8996_set_fll()
2117 time_left = wait_for_completion_timeout(&wm8996->fll_lock, in wm8996_set_fll()
2136 wm8996->fll_fref = Fref; in wm8996_set_fll()
2137 wm8996->fll_fout = Fout; in wm8996_set_fll()
2138 wm8996->fll_src = source; in wm8996_set_fll()
2151 struct wm8996_priv *wm8996 = gpio_to_wm8996(chip); in wm8996_gpio_set() local
2153 regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_set()
2160 struct wm8996_priv *wm8996 = gpio_to_wm8996(chip); in wm8996_gpio_direction_out() local
2165 return regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_direction_out()
2172 struct wm8996_priv *wm8996 = gpio_to_wm8996(chip); in wm8996_gpio_get() local
2176 ret = regmap_read(wm8996->regmap, WM8996_GPIO_1 + offset, ®); in wm8996_gpio_get()
2185 struct wm8996_priv *wm8996 = gpio_to_wm8996(chip); in wm8996_gpio_direction_in() local
2187 return regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_direction_in()
2203 static void wm8996_init_gpio(struct wm8996_priv *wm8996) in wm8996_init_gpio() argument
2207 wm8996->gpio_chip = wm8996_template_chip; in wm8996_init_gpio()
2208 wm8996->gpio_chip.ngpio = 5; in wm8996_init_gpio()
2209 wm8996->gpio_chip.dev = wm8996->dev; in wm8996_init_gpio()
2211 if (wm8996->pdata.gpio_base) in wm8996_init_gpio()
2212 wm8996->gpio_chip.base = wm8996->pdata.gpio_base; in wm8996_init_gpio()
2214 wm8996->gpio_chip.base = -1; in wm8996_init_gpio()
2216 ret = gpiochip_add(&wm8996->gpio_chip); in wm8996_init_gpio()
2218 dev_err(wm8996->dev, "Failed to add GPIOs: %d\n", ret); in wm8996_init_gpio()
2221 static void wm8996_free_gpio(struct wm8996_priv *wm8996) in wm8996_free_gpio() argument
2223 gpiochip_remove(&wm8996->gpio_chip); in wm8996_free_gpio()
2226 static void wm8996_init_gpio(struct wm8996_priv *wm8996) in wm8996_init_gpio() argument
2230 static void wm8996_free_gpio(struct wm8996_priv *wm8996) in wm8996_free_gpio() argument
2249 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_detect() local
2252 wm8996->jack = jack; in wm8996_detect()
2253 wm8996->detecting = true; in wm8996_detect()
2254 wm8996->polarity_cb = polarity_cb; in wm8996_detect()
2255 wm8996->jack_flips = 0; in wm8996_detect()
2257 if (wm8996->polarity_cb) in wm8996_detect()
2258 wm8996->polarity_cb(codec, 0); in wm8996_detect()
2295 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_hpdet_irq() local
2327 if (wm8996->jack_mic) in wm8996_hpdet_irq()
2330 snd_soc_jack_report(wm8996->jack, report, in wm8996_hpdet_irq()
2333 wm8996->detecting = false; in wm8996_hpdet_irq()
2390 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_micd() local
2405 wm8996->jack_mic = false; in wm8996_micd()
2406 wm8996->detecting = true; in wm8996_micd()
2407 wm8996->jack_flips = 0; in wm8996_micd()
2408 snd_soc_jack_report(wm8996->jack, 0, in wm8996_micd()
2425 if (wm8996->detecting) { in wm8996_micd()
2427 wm8996->jack_mic = true; in wm8996_micd()
2439 snd_soc_jack_report(wm8996->jack, 0, SND_JACK_BTN_0); in wm8996_micd()
2451 if (wm8996->detecting && (val & 0x3f0)) { in wm8996_micd()
2452 wm8996->jack_flips++; in wm8996_micd()
2454 if (wm8996->jack_flips > 1) { in wm8996_micd()
2466 if (wm8996->polarity_cb) in wm8996_micd()
2467 wm8996->polarity_cb(codec, in wm8996_micd()
2480 if (wm8996->jack_mic) { in wm8996_micd()
2482 snd_soc_jack_report(wm8996->jack, SND_JACK_BTN_0, in wm8996_micd()
2484 } else if (wm8996->detecting) { in wm8996_micd()
2493 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_irq() local
2511 complete(&wm8996->dcs_done); in wm8996_irq()
2519 complete(&wm8996->fll_lock); in wm8996_irq()
2547 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_retune_mobile_pdata() local
2548 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_retune_mobile_pdata()
2552 wm8996->retune_mobile_enum, in wm8996_retune_mobile_pdata()
2556 wm8996->retune_mobile_enum, in wm8996_retune_mobile_pdata()
2567 wm8996->num_retune_mobile_texts = 0; in wm8996_retune_mobile_pdata()
2568 wm8996->retune_mobile_texts = NULL; in wm8996_retune_mobile_pdata()
2570 for (j = 0; j < wm8996->num_retune_mobile_texts; j++) { in wm8996_retune_mobile_pdata()
2572 wm8996->retune_mobile_texts[j]) == 0) in wm8996_retune_mobile_pdata()
2576 if (j != wm8996->num_retune_mobile_texts) in wm8996_retune_mobile_pdata()
2580 t = krealloc(wm8996->retune_mobile_texts, in wm8996_retune_mobile_pdata()
2582 (wm8996->num_retune_mobile_texts + 1), in wm8996_retune_mobile_pdata()
2588 t[wm8996->num_retune_mobile_texts] = in wm8996_retune_mobile_pdata()
2592 wm8996->num_retune_mobile_texts++; in wm8996_retune_mobile_pdata()
2593 wm8996->retune_mobile_texts = t; in wm8996_retune_mobile_pdata()
2597 wm8996->num_retune_mobile_texts); in wm8996_retune_mobile_pdata()
2599 wm8996->retune_mobile_enum.items = wm8996->num_retune_mobile_texts; in wm8996_retune_mobile_pdata()
2600 wm8996->retune_mobile_enum.texts = wm8996->retune_mobile_texts; in wm8996_retune_mobile_pdata()
2623 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); in wm8996_probe() local
2627 wm8996->codec = codec; in wm8996_probe()
2629 init_completion(&wm8996->dcs_done); in wm8996_probe()
2630 init_completion(&wm8996->fll_lock); in wm8996_probe()
2632 if (wm8996->pdata.num_retune_mobile_cfgs) in wm8996_probe()
2639 if (wm8996->pdata.irq_flags) in wm8996_probe()
2640 irq_flags = wm8996->pdata.irq_flags; in wm8996_probe()
2764 struct wm8996_priv *wm8996; in wm8996_i2c_probe() local
2768 wm8996 = devm_kzalloc(&i2c->dev, sizeof(struct wm8996_priv), in wm8996_i2c_probe()
2770 if (wm8996 == NULL) in wm8996_i2c_probe()
2773 i2c_set_clientdata(i2c, wm8996); in wm8996_i2c_probe()
2774 wm8996->dev = &i2c->dev; in wm8996_i2c_probe()
2777 memcpy(&wm8996->pdata, dev_get_platdata(&i2c->dev), in wm8996_i2c_probe()
2778 sizeof(wm8996->pdata)); in wm8996_i2c_probe()
2780 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2781 ret = gpio_request_one(wm8996->pdata.ldo_ena, in wm8996_i2c_probe()
2785 wm8996->pdata.ldo_ena, ret); in wm8996_i2c_probe()
2790 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) in wm8996_i2c_probe()
2791 wm8996->supplies[i].supply = wm8996_supply_names[i]; in wm8996_i2c_probe()
2793 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8996->supplies), in wm8996_i2c_probe()
2794 wm8996->supplies); in wm8996_i2c_probe()
2800 wm8996->disable_nb[0].notifier_call = wm8996_regulator_event_0; in wm8996_i2c_probe()
2801 wm8996->disable_nb[1].notifier_call = wm8996_regulator_event_1; in wm8996_i2c_probe()
2802 wm8996->disable_nb[2].notifier_call = wm8996_regulator_event_2; in wm8996_i2c_probe()
2805 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) { in wm8996_i2c_probe()
2806 ret = regulator_register_notifier(wm8996->supplies[i].consumer, in wm8996_i2c_probe()
2807 &wm8996->disable_nb[i]); in wm8996_i2c_probe()
2815 ret = regulator_bulk_enable(ARRAY_SIZE(wm8996->supplies), in wm8996_i2c_probe()
2816 wm8996->supplies); in wm8996_i2c_probe()
2822 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2823 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 1); in wm8996_i2c_probe()
2827 wm8996->regmap = devm_regmap_init_i2c(i2c, &wm8996_regmap); in wm8996_i2c_probe()
2828 if (IS_ERR(wm8996->regmap)) { in wm8996_i2c_probe()
2829 ret = PTR_ERR(wm8996->regmap); in wm8996_i2c_probe()
2834 ret = regmap_read(wm8996->regmap, WM8996_SOFTWARE_RESET, ®); in wm8996_i2c_probe()
2845 ret = regmap_read(wm8996->regmap, WM8996_CHIP_REVISION, ®); in wm8996_i2c_probe()
2855 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2856 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_probe()
2857 regcache_cache_only(wm8996->regmap, true); in wm8996_i2c_probe()
2859 ret = regmap_write(wm8996->regmap, WM8996_SOFTWARE_RESET, in wm8996_i2c_probe()
2867 regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies); in wm8996_i2c_probe()
2870 regmap_update_bits(wm8996->regmap, WM8996_LINE_INPUT_CONTROL, in wm8996_i2c_probe()
2872 wm8996->pdata.inl_mode << WM8996_INL_MODE_SHIFT | in wm8996_i2c_probe()
2873 wm8996->pdata.inr_mode); in wm8996_i2c_probe()
2875 for (i = 0; i < ARRAY_SIZE(wm8996->pdata.gpio_default); i++) { in wm8996_i2c_probe()
2876 if (!wm8996->pdata.gpio_default[i]) in wm8996_i2c_probe()
2879 regmap_write(wm8996->regmap, WM8996_GPIO_1 + i, in wm8996_i2c_probe()
2880 wm8996->pdata.gpio_default[i] & 0xffff); in wm8996_i2c_probe()
2883 if (wm8996->pdata.spkmute_seq) in wm8996_i2c_probe()
2884 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2888 wm8996->pdata.spkmute_seq); in wm8996_i2c_probe()
2890 regmap_update_bits(wm8996->regmap, WM8996_ACCESSORY_DETECT_MODE_2, in wm8996_i2c_probe()
2892 WM8996_MICD_SRC, wm8996->pdata.micdet_def); in wm8996_i2c_probe()
2895 regmap_update_bits(wm8996->regmap, WM8996_LEFT_LINE_INPUT_VOLUME, in wm8996_i2c_probe()
2897 regmap_update_bits(wm8996->regmap, WM8996_RIGHT_LINE_INPUT_VOLUME, in wm8996_i2c_probe()
2900 regmap_update_bits(wm8996->regmap, WM8996_DAC1_LEFT_VOLUME, in wm8996_i2c_probe()
2902 regmap_update_bits(wm8996->regmap, WM8996_DAC1_RIGHT_VOLUME, in wm8996_i2c_probe()
2904 regmap_update_bits(wm8996->regmap, WM8996_DAC2_LEFT_VOLUME, in wm8996_i2c_probe()
2906 regmap_update_bits(wm8996->regmap, WM8996_DAC2_RIGHT_VOLUME, in wm8996_i2c_probe()
2909 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT1_LEFT_VOLUME, in wm8996_i2c_probe()
2911 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT1_RIGHT_VOLUME, in wm8996_i2c_probe()
2913 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT2_LEFT_VOLUME, in wm8996_i2c_probe()
2915 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT2_RIGHT_VOLUME, in wm8996_i2c_probe()
2918 regmap_update_bits(wm8996->regmap, WM8996_DSP1_TX_LEFT_VOLUME, in wm8996_i2c_probe()
2920 regmap_update_bits(wm8996->regmap, WM8996_DSP1_TX_RIGHT_VOLUME, in wm8996_i2c_probe()
2922 regmap_update_bits(wm8996->regmap, WM8996_DSP2_TX_LEFT_VOLUME, in wm8996_i2c_probe()
2924 regmap_update_bits(wm8996->regmap, WM8996_DSP2_TX_RIGHT_VOLUME, in wm8996_i2c_probe()
2927 regmap_update_bits(wm8996->regmap, WM8996_DSP1_RX_LEFT_VOLUME, in wm8996_i2c_probe()
2929 regmap_update_bits(wm8996->regmap, WM8996_DSP1_RX_RIGHT_VOLUME, in wm8996_i2c_probe()
2931 regmap_update_bits(wm8996->regmap, WM8996_DSP2_RX_LEFT_VOLUME, in wm8996_i2c_probe()
2933 regmap_update_bits(wm8996->regmap, WM8996_DSP2_RX_RIGHT_VOLUME, in wm8996_i2c_probe()
2939 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2944 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2949 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2954 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2959 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2964 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2970 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2975 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2981 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2986 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2991 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2996 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3001 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3006 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3012 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3017 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3026 ret = regmap_read(wm8996->regmap, WM8996_GPIO_1, ®); in wm8996_i2c_probe()
3033 regmap_update_bits(wm8996->regmap, WM8996_AIF1_TX_LRCLK_2, in wm8996_i2c_probe()
3037 ret = regmap_read(wm8996->regmap, WM8996_GPIO_2, ®); in wm8996_i2c_probe()
3044 regmap_update_bits(wm8996->regmap, WM8996_AIF2_TX_LRCLK_2, in wm8996_i2c_probe()
3048 wm8996_init_gpio(wm8996); in wm8996_i2c_probe()
3059 wm8996_free_gpio(wm8996); in wm8996_i2c_probe()
3062 if (wm8996->pdata.ldo_ena > 0) in wm8996_i2c_probe()
3063 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_probe()
3064 regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies); in wm8996_i2c_probe()
3066 if (wm8996->pdata.ldo_ena > 0) in wm8996_i2c_probe()
3067 gpio_free(wm8996->pdata.ldo_ena); in wm8996_i2c_probe()
3075 struct wm8996_priv *wm8996 = i2c_get_clientdata(client); in wm8996_i2c_remove() local
3079 wm8996_free_gpio(wm8996); in wm8996_i2c_remove()
3080 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_remove()
3081 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_remove()
3082 gpio_free(wm8996->pdata.ldo_ena); in wm8996_i2c_remove()
3084 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) in wm8996_i2c_remove()
3085 regulator_unregister_notifier(wm8996->supplies[i].consumer, in wm8996_i2c_remove()
3086 &wm8996->disable_nb[i]); in wm8996_i2c_remove()