Lines Matching refs:wm8903

264 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);  in wm8903_dcs_event()  local
268 wm8903->dcs_pending |= 1 << w->shift; in wm8903_dcs_event()
286 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_seq_notifier() local
291 if (wm8903->dcs_pending) { in wm8903_seq_notifier()
293 wm8903->dcs_pending); in wm8903_seq_notifier()
296 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) { in wm8903_seq_notifier()
297 if (!(wm8903->dcs_pending & (1 << i))) in wm8903_seq_notifier()
300 if (wm8903->dcs_cache[i]) { in wm8903_seq_notifier()
303 3 - i, wm8903->dcs_cache[i]); in wm8903_seq_notifier()
306 wm8903->dcs_cache[i] & 0xff); in wm8903_seq_notifier()
315 if (wm8903->class_w_users) in wm8903_seq_notifier()
322 WM8903_DCS_ENA_MASK, wm8903->dcs_pending); in wm8903_seq_notifier()
332 if (wm8903->class_w_users) in wm8903_seq_notifier()
335 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) { in wm8903_seq_notifier()
336 if (!(wm8903->dcs_pending & (1 << i))) in wm8903_seq_notifier()
343 wm8903->dcs_cache[i] = val; in wm8903_seq_notifier()
352 wm8903->dcs_pending = 0; in wm8903_seq_notifier()
368 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_class_w_put() local
376 if (wm8903->class_w_users == 0) { in wm8903_class_w_put()
381 wm8903->class_w_users++; in wm8903_class_w_put()
389 if (wm8903->class_w_users == 1) { in wm8903_class_w_put()
394 wm8903->class_w_users--; in wm8903_class_w_put()
398 wm8903->class_w_users); in wm8903_class_w_put()
412 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_set_deemph() local
418 if (wm8903->deemph) { in wm8903_set_deemph()
421 if (abs(wm8903_deemph[i] - wm8903->fs) < in wm8903_set_deemph()
422 abs(wm8903_deemph[best] - wm8903->fs)) in wm8903_set_deemph()
443 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_get_deemph() local
445 ucontrol->value.integer.value[0] = wm8903->deemph; in wm8903_get_deemph()
454 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_put_deemph() local
461 mutex_lock(&wm8903->lock); in wm8903_put_deemph()
462 if (wm8903->deemph != deemph) { in wm8903_put_deemph()
463 wm8903->deemph = deemph; in wm8903_put_deemph()
469 mutex_unlock(&wm8903->lock); in wm8903_put_deemph()
1210 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_set_dai_sysclk() local
1212 wm8903->sysclk = freq; in wm8903_set_dai_sysclk()
1437 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_hw_params() local
1499 wm8903->sysclk, fs); in wm8903_hw_params()
1506 best_val = abs((wm8903->sysclk / in wm8903_hw_params()
1510 cur_val = abs((wm8903->sysclk / in wm8903_hw_params()
1522 clk_sys = wm8903->sysclk / 2; in wm8903_hw_params()
1525 clk_sys = wm8903->sysclk; in wm8903_hw_params()
1567 wm8903->fs = params_rate(params); in wm8903_hw_params()
1600 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_mic_detect() local
1607 wm8903->mic_jack = jack; in wm8903_mic_detect()
1608 wm8903->mic_det = det; in wm8903_mic_detect()
1609 wm8903->mic_short = shrt; in wm8903_mic_detect()
1639 struct wm8903_priv *wm8903 = data; in wm8903_irq() local
1643 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1_MASK, in wm8903_irq()
1646 dev_err(wm8903->dev, "Failed to read IRQ mask: %d\n", ret); in wm8903_irq()
1650 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1, &int_val); in wm8903_irq()
1652 dev_err(wm8903->dev, "Failed to read IRQ status: %d\n", ret); in wm8903_irq()
1659 dev_warn(wm8903->dev, "Write sequencer done\n"); in wm8903_irq()
1669 mic_report = wm8903->mic_last_report; in wm8903_irq()
1670 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1673 dev_err(wm8903->dev, "Failed to read interrupt polarity: %d\n", in wm8903_irq()
1680 trace_snd_soc_jack_irq(dev_name(wm8903->dev)); in wm8903_irq()
1684 dev_dbg(wm8903->dev, "Microphone short (pol=%x)\n", int_pol); in wm8903_irq()
1686 mic_report ^= wm8903->mic_short; in wm8903_irq()
1691 dev_dbg(wm8903->dev, "Microphone detect (pol=%x)\n", int_pol); in wm8903_irq()
1693 mic_report ^= wm8903->mic_det; in wm8903_irq()
1696 msleep(wm8903->mic_delay); in wm8903_irq()
1699 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1702 snd_soc_jack_report(wm8903->mic_jack, mic_report, in wm8903_irq()
1703 wm8903->mic_short | wm8903->mic_det); in wm8903_irq()
1705 wm8903->mic_last_report = mic_report; in wm8903_irq()
1761 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_resume() local
1763 regcache_sync(wm8903->regmap); in wm8903_resume()
1784 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_direction_in() local
1792 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_in()
1802 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_get() local
1805 regmap_read(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, &reg); in wm8903_gpio_get()
1813 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_direction_out() local
1821 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_out()
1831 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_set() local
1833 regmap_update_bits(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, in wm8903_gpio_set()
1849 static void wm8903_init_gpio(struct wm8903_priv *wm8903) in wm8903_init_gpio() argument
1851 struct wm8903_platform_data *pdata = wm8903->pdata; in wm8903_init_gpio()
1854 wm8903->gpio_chip = wm8903_template_chip; in wm8903_init_gpio()
1855 wm8903->gpio_chip.ngpio = WM8903_NUM_GPIO; in wm8903_init_gpio()
1856 wm8903->gpio_chip.dev = wm8903->dev; in wm8903_init_gpio()
1859 wm8903->gpio_chip.base = pdata->gpio_base; in wm8903_init_gpio()
1861 wm8903->gpio_chip.base = -1; in wm8903_init_gpio()
1863 ret = gpiochip_add(&wm8903->gpio_chip); in wm8903_init_gpio()
1865 dev_err(wm8903->dev, "Failed to add GPIOs: %d\n", ret); in wm8903_init_gpio()
1868 static void wm8903_free_gpio(struct wm8903_priv *wm8903) in wm8903_free_gpio() argument
1870 gpiochip_remove(&wm8903->gpio_chip); in wm8903_free_gpio()
1873 static void wm8903_init_gpio(struct wm8903_priv *wm8903) in wm8903_init_gpio() argument
1877 static void wm8903_free_gpio(struct wm8903_priv *wm8903) in wm8903_free_gpio() argument
1985 struct wm8903_priv *wm8903; in wm8903_i2c_probe() local
1991 wm8903 = devm_kzalloc(&i2c->dev, sizeof(struct wm8903_priv), in wm8903_i2c_probe()
1993 if (wm8903 == NULL) in wm8903_i2c_probe()
1996 mutex_init(&wm8903->lock); in wm8903_i2c_probe()
1997 wm8903->dev = &i2c->dev; in wm8903_i2c_probe()
1999 wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap); in wm8903_i2c_probe()
2000 if (IS_ERR(wm8903->regmap)) { in wm8903_i2c_probe()
2001 ret = PTR_ERR(wm8903->regmap); in wm8903_i2c_probe()
2007 i2c_set_clientdata(i2c, wm8903); in wm8903_i2c_probe()
2011 wm8903->pdata = pdata; in wm8903_i2c_probe()
2013 wm8903->pdata = devm_kzalloc(&i2c->dev, in wm8903_i2c_probe()
2016 if (wm8903->pdata == NULL) { in wm8903_i2c_probe()
2022 ret = wm8903_set_pdata_irq_trigger(i2c, wm8903->pdata); in wm8903_i2c_probe()
2028 ret = wm8903_set_pdata_from_of(i2c, wm8903->pdata); in wm8903_i2c_probe()
2034 pdata = wm8903->pdata; in wm8903_i2c_probe()
2036 ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val); in wm8903_i2c_probe()
2047 ret = regmap_read(wm8903->regmap, WM8903_REVISION_NUMBER, &val); in wm8903_i2c_probe()
2056 regmap_write(wm8903->regmap, WM8903_SW_RESET_AND_ID, 0x8903); in wm8903_i2c_probe()
2058 wm8903_init_gpio(wm8903); in wm8903_i2c_probe()
2066 regmap_write(wm8903->regmap, WM8903_GPIO_CONTROL_1 + i, in wm8903_i2c_probe()
2083 regmap_write(wm8903->regmap, WM8903_MIC_BIAS_CONTROL_0, in wm8903_i2c_probe()
2088 regmap_update_bits(wm8903->regmap, WM8903_WRITE_SEQUENCER_0, in wm8903_i2c_probe()
2099 wm8903->mic_delay = pdata->micdet_delay; in wm8903_i2c_probe()
2110 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_CONTROL, in wm8903_i2c_probe()
2115 "wm8903", wm8903); in wm8903_i2c_probe()
2117 dev_err(wm8903->dev, "Failed to request IRQ: %d\n", in wm8903_i2c_probe()
2123 regmap_update_bits(wm8903->regmap, in wm8903_i2c_probe()
2129 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2131 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2134 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2136 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2139 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_LEFT, in wm8903_i2c_probe()
2141 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_RIGHT, in wm8903_i2c_probe()
2144 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_LEFT, in wm8903_i2c_probe()
2146 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_RIGHT, in wm8903_i2c_probe()
2149 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_LEFT, in wm8903_i2c_probe()
2151 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_RIGHT, in wm8903_i2c_probe()
2155 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_1, in wm8903_i2c_probe()
2171 struct wm8903_priv *wm8903 = i2c_get_clientdata(client); in wm8903_i2c_remove() local
2174 free_irq(client->irq, wm8903); in wm8903_i2c_remove()
2175 wm8903_free_gpio(wm8903); in wm8903_i2c_remove()