Lines Matching refs:wm8996
109 struct wm8996_priv *wm8996 = container_of(nb, struct wm8996_priv, \
112 regcache_mark_dirty(wm8996->regmap); \
340 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_set_retune_mobile() local
341 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_set_retune_mobile()
344 if (!wm8996->num_retune_mobile_texts) in wm8996_set_retune_mobile()
370 cfg = wm8996->retune_mobile_cfg[block]; in wm8996_set_retune_mobile()
375 wm8996->retune_mobile_texts[cfg]) == 0 && in wm8996_set_retune_mobile()
377 - wm8996->rx_rate[iface]) < best_val) { in wm8996_set_retune_mobile()
380 - wm8996->rx_rate[iface]); in wm8996_set_retune_mobile()
388 wm8996->rx_rate[iface]); in wm8996_set_retune_mobile()
417 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_put_retune_mobile_enum() local
418 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_put_retune_mobile_enum()
428 wm8996->retune_mobile_cfg[block] = value; in wm8996_put_retune_mobile_enum()
439 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_get_retune_mobile_enum() local
444 ucontrol->value.enumerated.item[0] = wm8996->retune_mobile_cfg[block]; in wm8996_get_retune_mobile_enum()
580 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_bg_enable() local
582 wm8996->bg_ena++; in wm8996_bg_enable()
583 if (wm8996->bg_ena == 1) { in wm8996_bg_enable()
592 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_bg_disable() local
594 wm8996->bg_ena--; in wm8996_bg_disable()
595 if (!wm8996->bg_ena) in wm8996_bg_disable()
639 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in rmv_short_event() local
644 wm8996->hpout_pending &= ~w->shift; in rmv_short_event()
647 wm8996->hpout_pending |= w->shift; in rmv_short_event()
660 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wait_for_dc_servo() local
669 timeout = wait_for_completion_timeout(&wm8996->dcs_done, in wait_for_dc_servo()
692 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); 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(component, 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_component_get_drvdata(component); in dcs_start() local
767 wm8996->dcs_pending |= 1 << w->shift; in dcs_start()
1537 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); 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_component_get_drvdata(component); 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()
1738 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_hw_params() local
1779 wm8996->bclk_rate[dai->id] = bclk_rate; in wm8996_hw_params()
1780 wm8996->rx_rate[dai->id] = params_rate(params); in wm8996_hw_params()
1818 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_set_sysclk() local
1825 if (freq == wm8996->sysclk && clk_id == wm8996->sysclk_src) in wm8996_set_sysclk()
1835 wm8996->sysclk = freq; in wm8996_set_sysclk()
1839 wm8996->sysclk = freq; in wm8996_set_sysclk()
1843 wm8996->sysclk = freq; in wm8996_set_sysclk()
1851 switch (wm8996->sysclk) { in wm8996_set_sysclk()
1860 wm8996->sysclk /= 2; in wm8996_set_sysclk()
1874 wm8996->sysclk); in wm8996_set_sysclk()
1889 wm8996->sysclk_src = clk_id; in wm8996_set_sysclk()
2008 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_set_fll() local
2015 if (source == wm8996->fll_src && Fref == wm8996->fll_fref && in wm8996_set_fll()
2016 Fout == wm8996->fll_fout) in wm8996_set_fll()
2022 wm8996->fll_fref = 0; in wm8996_set_fll()
2023 wm8996->fll_fout = 0; in wm8996_set_fll()
2090 try_wait_for_completion(&wm8996->fll_lock); in wm8996_set_fll()
2116 time_left = wait_for_completion_timeout(&wm8996->fll_lock, in wm8996_set_fll()
2135 wm8996->fll_fref = Fref; in wm8996_set_fll()
2136 wm8996->fll_fout = Fout; in wm8996_set_fll()
2137 wm8996->fll_src = source; in wm8996_set_fll()
2145 struct wm8996_priv *wm8996 = gpiochip_get_data(chip); in wm8996_gpio_set() local
2147 regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_set()
2154 struct wm8996_priv *wm8996 = gpiochip_get_data(chip); in wm8996_gpio_direction_out() local
2159 return regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_direction_out()
2166 struct wm8996_priv *wm8996 = gpiochip_get_data(chip); in wm8996_gpio_get() local
2170 ret = regmap_read(wm8996->regmap, WM8996_GPIO_1 + offset, ®); in wm8996_gpio_get()
2179 struct wm8996_priv *wm8996 = gpiochip_get_data(chip); in wm8996_gpio_direction_in() local
2181 return regmap_update_bits(wm8996->regmap, WM8996_GPIO_1 + offset, in wm8996_gpio_direction_in()
2197 static void wm8996_init_gpio(struct wm8996_priv *wm8996) in wm8996_init_gpio() argument
2201 wm8996->gpio_chip = wm8996_template_chip; in wm8996_init_gpio()
2202 wm8996->gpio_chip.ngpio = 5; in wm8996_init_gpio()
2203 wm8996->gpio_chip.parent = wm8996->dev; in wm8996_init_gpio()
2205 if (wm8996->pdata.gpio_base) in wm8996_init_gpio()
2206 wm8996->gpio_chip.base = wm8996->pdata.gpio_base; in wm8996_init_gpio()
2208 wm8996->gpio_chip.base = -1; in wm8996_init_gpio()
2210 ret = gpiochip_add_data(&wm8996->gpio_chip, wm8996); in wm8996_init_gpio()
2212 dev_err(wm8996->dev, "Failed to add GPIOs: %d\n", ret); in wm8996_init_gpio()
2215 static void wm8996_free_gpio(struct wm8996_priv *wm8996) in wm8996_free_gpio() argument
2217 gpiochip_remove(&wm8996->gpio_chip); in wm8996_free_gpio()
2220 static void wm8996_init_gpio(struct wm8996_priv *wm8996) in wm8996_init_gpio() argument
2224 static void wm8996_free_gpio(struct wm8996_priv *wm8996) in wm8996_free_gpio() argument
2243 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_detect() local
2246 wm8996->jack = jack; in wm8996_detect()
2247 wm8996->detecting = true; in wm8996_detect()
2248 wm8996->polarity_cb = polarity_cb; in wm8996_detect()
2249 wm8996->jack_flips = 0; in wm8996_detect()
2251 if (wm8996->polarity_cb) in wm8996_detect()
2252 wm8996->polarity_cb(component, 0); in wm8996_detect()
2290 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_hpdet_irq() local
2322 if (wm8996->jack_mic) in wm8996_hpdet_irq()
2325 snd_soc_jack_report(wm8996->jack, report, in wm8996_hpdet_irq()
2328 wm8996->detecting = false; in wm8996_hpdet_irq()
2387 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_micd() local
2402 wm8996->jack_mic = false; in wm8996_micd()
2403 wm8996->detecting = true; in wm8996_micd()
2404 wm8996->jack_flips = 0; in wm8996_micd()
2405 snd_soc_jack_report(wm8996->jack, 0, in wm8996_micd()
2422 if (wm8996->detecting) { in wm8996_micd()
2424 wm8996->jack_mic = true; in wm8996_micd()
2436 snd_soc_jack_report(wm8996->jack, 0, SND_JACK_BTN_0); in wm8996_micd()
2448 if (wm8996->detecting && (val & 0x3f0)) { in wm8996_micd()
2449 wm8996->jack_flips++; in wm8996_micd()
2451 if (wm8996->jack_flips > 1) { in wm8996_micd()
2463 if (wm8996->polarity_cb) in wm8996_micd()
2464 wm8996->polarity_cb(component, in wm8996_micd()
2477 if (wm8996->jack_mic) { in wm8996_micd()
2479 snd_soc_jack_report(wm8996->jack, SND_JACK_BTN_0, in wm8996_micd()
2481 } else if (wm8996->detecting) { in wm8996_micd()
2490 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_irq() local
2508 complete(&wm8996->dcs_done); in wm8996_irq()
2516 complete(&wm8996->fll_lock); in wm8996_irq()
2544 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_retune_mobile_pdata() local
2545 struct wm8996_pdata *pdata = &wm8996->pdata; in wm8996_retune_mobile_pdata()
2549 wm8996->retune_mobile_enum, in wm8996_retune_mobile_pdata()
2553 wm8996->retune_mobile_enum, in wm8996_retune_mobile_pdata()
2564 wm8996->num_retune_mobile_texts = 0; in wm8996_retune_mobile_pdata()
2565 wm8996->retune_mobile_texts = NULL; in wm8996_retune_mobile_pdata()
2567 for (j = 0; j < wm8996->num_retune_mobile_texts; j++) { in wm8996_retune_mobile_pdata()
2569 wm8996->retune_mobile_texts[j]) == 0) in wm8996_retune_mobile_pdata()
2573 if (j != wm8996->num_retune_mobile_texts) in wm8996_retune_mobile_pdata()
2577 t = krealloc(wm8996->retune_mobile_texts, in wm8996_retune_mobile_pdata()
2579 (wm8996->num_retune_mobile_texts + 1), in wm8996_retune_mobile_pdata()
2585 t[wm8996->num_retune_mobile_texts] = in wm8996_retune_mobile_pdata()
2589 wm8996->num_retune_mobile_texts++; in wm8996_retune_mobile_pdata()
2590 wm8996->retune_mobile_texts = t; in wm8996_retune_mobile_pdata()
2594 wm8996->num_retune_mobile_texts); in wm8996_retune_mobile_pdata()
2596 wm8996->retune_mobile_enum.items = wm8996->num_retune_mobile_texts; in wm8996_retune_mobile_pdata()
2597 wm8996->retune_mobile_enum.texts = wm8996->retune_mobile_texts; in wm8996_retune_mobile_pdata()
2620 struct wm8996_priv *wm8996 = snd_soc_component_get_drvdata(component); in wm8996_probe() local
2624 wm8996->component = component; in wm8996_probe()
2626 init_completion(&wm8996->dcs_done); in wm8996_probe()
2627 init_completion(&wm8996->fll_lock); in wm8996_probe()
2629 if (wm8996->pdata.num_retune_mobile_cfgs) in wm8996_probe()
2636 if (wm8996->pdata.irq_flags) in wm8996_probe()
2637 irq_flags = wm8996->pdata.irq_flags; in wm8996_probe()
2762 struct wm8996_priv *wm8996; in wm8996_i2c_probe() local
2766 wm8996 = devm_kzalloc(&i2c->dev, sizeof(struct wm8996_priv), in wm8996_i2c_probe()
2768 if (wm8996 == NULL) in wm8996_i2c_probe()
2771 i2c_set_clientdata(i2c, wm8996); in wm8996_i2c_probe()
2772 wm8996->dev = &i2c->dev; in wm8996_i2c_probe()
2775 memcpy(&wm8996->pdata, dev_get_platdata(&i2c->dev), in wm8996_i2c_probe()
2776 sizeof(wm8996->pdata)); in wm8996_i2c_probe()
2778 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2779 ret = gpio_request_one(wm8996->pdata.ldo_ena, in wm8996_i2c_probe()
2783 wm8996->pdata.ldo_ena, ret); in wm8996_i2c_probe()
2788 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) in wm8996_i2c_probe()
2789 wm8996->supplies[i].supply = wm8996_supply_names[i]; in wm8996_i2c_probe()
2791 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8996->supplies), in wm8996_i2c_probe()
2792 wm8996->supplies); in wm8996_i2c_probe()
2798 wm8996->disable_nb[0].notifier_call = wm8996_regulator_event_0; in wm8996_i2c_probe()
2799 wm8996->disable_nb[1].notifier_call = wm8996_regulator_event_1; in wm8996_i2c_probe()
2800 wm8996->disable_nb[2].notifier_call = wm8996_regulator_event_2; in wm8996_i2c_probe()
2803 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) { in wm8996_i2c_probe()
2804 ret = regulator_register_notifier(wm8996->supplies[i].consumer, in wm8996_i2c_probe()
2805 &wm8996->disable_nb[i]); in wm8996_i2c_probe()
2813 ret = regulator_bulk_enable(ARRAY_SIZE(wm8996->supplies), in wm8996_i2c_probe()
2814 wm8996->supplies); in wm8996_i2c_probe()
2820 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2821 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 1); in wm8996_i2c_probe()
2825 wm8996->regmap = devm_regmap_init_i2c(i2c, &wm8996_regmap); in wm8996_i2c_probe()
2826 if (IS_ERR(wm8996->regmap)) { in wm8996_i2c_probe()
2827 ret = PTR_ERR(wm8996->regmap); in wm8996_i2c_probe()
2832 ret = regmap_read(wm8996->regmap, WM8996_SOFTWARE_RESET, ®); in wm8996_i2c_probe()
2843 ret = regmap_read(wm8996->regmap, WM8996_CHIP_REVISION, ®); in wm8996_i2c_probe()
2853 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_probe()
2854 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_probe()
2855 regcache_cache_only(wm8996->regmap, true); in wm8996_i2c_probe()
2857 ret = regmap_write(wm8996->regmap, WM8996_SOFTWARE_RESET, in wm8996_i2c_probe()
2865 regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies); in wm8996_i2c_probe()
2868 regmap_update_bits(wm8996->regmap, WM8996_LINE_INPUT_CONTROL, in wm8996_i2c_probe()
2870 wm8996->pdata.inl_mode << WM8996_INL_MODE_SHIFT | in wm8996_i2c_probe()
2871 wm8996->pdata.inr_mode); in wm8996_i2c_probe()
2873 for (i = 0; i < ARRAY_SIZE(wm8996->pdata.gpio_default); i++) { in wm8996_i2c_probe()
2874 if (!wm8996->pdata.gpio_default[i]) in wm8996_i2c_probe()
2877 regmap_write(wm8996->regmap, WM8996_GPIO_1 + i, in wm8996_i2c_probe()
2878 wm8996->pdata.gpio_default[i] & 0xffff); in wm8996_i2c_probe()
2881 if (wm8996->pdata.spkmute_seq) in wm8996_i2c_probe()
2882 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2886 wm8996->pdata.spkmute_seq); in wm8996_i2c_probe()
2888 regmap_update_bits(wm8996->regmap, WM8996_ACCESSORY_DETECT_MODE_2, in wm8996_i2c_probe()
2890 WM8996_MICD_SRC, wm8996->pdata.micdet_def); in wm8996_i2c_probe()
2893 regmap_update_bits(wm8996->regmap, WM8996_LEFT_LINE_INPUT_VOLUME, in wm8996_i2c_probe()
2895 regmap_update_bits(wm8996->regmap, WM8996_RIGHT_LINE_INPUT_VOLUME, in wm8996_i2c_probe()
2898 regmap_update_bits(wm8996->regmap, WM8996_DAC1_LEFT_VOLUME, in wm8996_i2c_probe()
2900 regmap_update_bits(wm8996->regmap, WM8996_DAC1_RIGHT_VOLUME, in wm8996_i2c_probe()
2902 regmap_update_bits(wm8996->regmap, WM8996_DAC2_LEFT_VOLUME, in wm8996_i2c_probe()
2904 regmap_update_bits(wm8996->regmap, WM8996_DAC2_RIGHT_VOLUME, in wm8996_i2c_probe()
2907 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT1_LEFT_VOLUME, in wm8996_i2c_probe()
2909 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT1_RIGHT_VOLUME, in wm8996_i2c_probe()
2911 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT2_LEFT_VOLUME, in wm8996_i2c_probe()
2913 regmap_update_bits(wm8996->regmap, WM8996_OUTPUT2_RIGHT_VOLUME, in wm8996_i2c_probe()
2916 regmap_update_bits(wm8996->regmap, WM8996_DSP1_TX_LEFT_VOLUME, in wm8996_i2c_probe()
2918 regmap_update_bits(wm8996->regmap, WM8996_DSP1_TX_RIGHT_VOLUME, in wm8996_i2c_probe()
2920 regmap_update_bits(wm8996->regmap, WM8996_DSP2_TX_LEFT_VOLUME, in wm8996_i2c_probe()
2922 regmap_update_bits(wm8996->regmap, WM8996_DSP2_TX_RIGHT_VOLUME, in wm8996_i2c_probe()
2925 regmap_update_bits(wm8996->regmap, WM8996_DSP1_RX_LEFT_VOLUME, in wm8996_i2c_probe()
2927 regmap_update_bits(wm8996->regmap, WM8996_DSP1_RX_RIGHT_VOLUME, in wm8996_i2c_probe()
2929 regmap_update_bits(wm8996->regmap, WM8996_DSP2_RX_LEFT_VOLUME, in wm8996_i2c_probe()
2931 regmap_update_bits(wm8996->regmap, WM8996_DSP2_RX_RIGHT_VOLUME, in wm8996_i2c_probe()
2937 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2942 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2947 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2952 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2957 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2962 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2968 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2973 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2979 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2984 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2989 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2994 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
2999 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3004 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3010 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3015 regmap_update_bits(wm8996->regmap, in wm8996_i2c_probe()
3024 ret = regmap_read(wm8996->regmap, WM8996_GPIO_1, ®); in wm8996_i2c_probe()
3031 regmap_update_bits(wm8996->regmap, WM8996_AIF1_TX_LRCLK_2, in wm8996_i2c_probe()
3035 ret = regmap_read(wm8996->regmap, WM8996_GPIO_2, ®); in wm8996_i2c_probe()
3042 regmap_update_bits(wm8996->regmap, WM8996_AIF2_TX_LRCLK_2, in wm8996_i2c_probe()
3046 wm8996_init_gpio(wm8996); in wm8996_i2c_probe()
3057 wm8996_free_gpio(wm8996); in wm8996_i2c_probe()
3060 if (wm8996->pdata.ldo_ena > 0) in wm8996_i2c_probe()
3061 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_probe()
3062 regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies); in wm8996_i2c_probe()
3064 if (wm8996->pdata.ldo_ena > 0) in wm8996_i2c_probe()
3065 gpio_free(wm8996->pdata.ldo_ena); in wm8996_i2c_probe()
3073 struct wm8996_priv *wm8996 = i2c_get_clientdata(client); in wm8996_i2c_remove() local
3076 wm8996_free_gpio(wm8996); in wm8996_i2c_remove()
3077 if (wm8996->pdata.ldo_ena > 0) { in wm8996_i2c_remove()
3078 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); in wm8996_i2c_remove()
3079 gpio_free(wm8996->pdata.ldo_ena); in wm8996_i2c_remove()
3081 for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++) in wm8996_i2c_remove()
3082 regulator_unregister_notifier(wm8996->supplies[i].consumer, in wm8996_i2c_remove()
3083 &wm8996->disable_nb[i]); in wm8996_i2c_remove()