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()
1212 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_set_dai_sysclk() local
1214 wm8903->sysclk = freq; in wm8903_set_dai_sysclk()
1439 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_hw_params() local
1501 wm8903->sysclk, fs); in wm8903_hw_params()
1508 best_val = abs((wm8903->sysclk / in wm8903_hw_params()
1512 cur_val = abs((wm8903->sysclk / in wm8903_hw_params()
1524 clk_sys = wm8903->sysclk / 2; in wm8903_hw_params()
1527 clk_sys = wm8903->sysclk; in wm8903_hw_params()
1569 wm8903->fs = params_rate(params); in wm8903_hw_params()
1602 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_mic_detect() local
1609 wm8903->mic_jack = jack; in wm8903_mic_detect()
1610 wm8903->mic_det = det; in wm8903_mic_detect()
1611 wm8903->mic_short = shrt; in wm8903_mic_detect()
1641 struct wm8903_priv *wm8903 = data; in wm8903_irq() local
1645 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1_MASK, in wm8903_irq()
1648 dev_err(wm8903->dev, "Failed to read IRQ mask: %d\n", ret); in wm8903_irq()
1652 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1, &int_val); in wm8903_irq()
1654 dev_err(wm8903->dev, "Failed to read IRQ status: %d\n", ret); in wm8903_irq()
1661 dev_warn(wm8903->dev, "Write sequencer done\n"); in wm8903_irq()
1671 mic_report = wm8903->mic_last_report; in wm8903_irq()
1672 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1675 dev_err(wm8903->dev, "Failed to read interrupt polarity: %d\n", in wm8903_irq()
1682 trace_snd_soc_jack_irq(dev_name(wm8903->dev)); in wm8903_irq()
1686 dev_dbg(wm8903->dev, "Microphone short (pol=%x)\n", int_pol); in wm8903_irq()
1688 mic_report ^= wm8903->mic_short; in wm8903_irq()
1693 dev_dbg(wm8903->dev, "Microphone detect (pol=%x)\n", int_pol); in wm8903_irq()
1695 mic_report ^= wm8903->mic_det; in wm8903_irq()
1698 msleep(wm8903->mic_delay); in wm8903_irq()
1701 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1704 snd_soc_jack_report(wm8903->mic_jack, mic_report, in wm8903_irq()
1705 wm8903->mic_short | wm8903->mic_det); in wm8903_irq()
1707 wm8903->mic_last_report = mic_report; in wm8903_irq()
1763 struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); in wm8903_resume() local
1765 regcache_sync(wm8903->regmap); in wm8903_resume()
1786 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_direction_in() local
1794 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_in()
1804 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_get() local
1807 regmap_read(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, ®); in wm8903_gpio_get()
1815 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_direction_out() local
1823 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_out()
1833 struct wm8903_priv *wm8903 = gpio_to_wm8903(chip); in wm8903_gpio_set() local
1835 regmap_update_bits(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, in wm8903_gpio_set()
1851 static void wm8903_init_gpio(struct wm8903_priv *wm8903) in wm8903_init_gpio() argument
1853 struct wm8903_platform_data *pdata = wm8903->pdata; in wm8903_init_gpio()
1856 wm8903->gpio_chip = wm8903_template_chip; in wm8903_init_gpio()
1857 wm8903->gpio_chip.ngpio = WM8903_NUM_GPIO; in wm8903_init_gpio()
1858 wm8903->gpio_chip.dev = wm8903->dev; in wm8903_init_gpio()
1861 wm8903->gpio_chip.base = pdata->gpio_base; in wm8903_init_gpio()
1863 wm8903->gpio_chip.base = -1; in wm8903_init_gpio()
1865 ret = gpiochip_add(&wm8903->gpio_chip); in wm8903_init_gpio()
1867 dev_err(wm8903->dev, "Failed to add GPIOs: %d\n", ret); in wm8903_init_gpio()
1870 static void wm8903_free_gpio(struct wm8903_priv *wm8903) in wm8903_free_gpio() argument
1872 gpiochip_remove(&wm8903->gpio_chip); in wm8903_free_gpio()
1875 static void wm8903_init_gpio(struct wm8903_priv *wm8903) in wm8903_init_gpio() argument
1879 static void wm8903_free_gpio(struct wm8903_priv *wm8903) in wm8903_free_gpio() argument
1987 struct wm8903_priv *wm8903; in wm8903_i2c_probe() local
1993 wm8903 = devm_kzalloc(&i2c->dev, sizeof(struct wm8903_priv), in wm8903_i2c_probe()
1995 if (wm8903 == NULL) in wm8903_i2c_probe()
1998 mutex_init(&wm8903->lock); in wm8903_i2c_probe()
1999 wm8903->dev = &i2c->dev; in wm8903_i2c_probe()
2001 wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap); in wm8903_i2c_probe()
2002 if (IS_ERR(wm8903->regmap)) { in wm8903_i2c_probe()
2003 ret = PTR_ERR(wm8903->regmap); in wm8903_i2c_probe()
2009 i2c_set_clientdata(i2c, wm8903); in wm8903_i2c_probe()
2013 wm8903->pdata = pdata; in wm8903_i2c_probe()
2015 wm8903->pdata = devm_kzalloc(&i2c->dev, in wm8903_i2c_probe()
2018 if (wm8903->pdata == NULL) { in wm8903_i2c_probe()
2024 ret = wm8903_set_pdata_irq_trigger(i2c, wm8903->pdata); in wm8903_i2c_probe()
2030 ret = wm8903_set_pdata_from_of(i2c, wm8903->pdata); in wm8903_i2c_probe()
2036 pdata = wm8903->pdata; in wm8903_i2c_probe()
2038 ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val); in wm8903_i2c_probe()
2049 ret = regmap_read(wm8903->regmap, WM8903_REVISION_NUMBER, &val); in wm8903_i2c_probe()
2058 regmap_write(wm8903->regmap, WM8903_SW_RESET_AND_ID, 0x8903); in wm8903_i2c_probe()
2060 wm8903_init_gpio(wm8903); in wm8903_i2c_probe()
2068 regmap_write(wm8903->regmap, WM8903_GPIO_CONTROL_1 + i, in wm8903_i2c_probe()
2085 regmap_write(wm8903->regmap, WM8903_MIC_BIAS_CONTROL_0, in wm8903_i2c_probe()
2090 regmap_update_bits(wm8903->regmap, WM8903_WRITE_SEQUENCER_0, in wm8903_i2c_probe()
2101 wm8903->mic_delay = pdata->micdet_delay; in wm8903_i2c_probe()
2112 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_CONTROL, in wm8903_i2c_probe()
2117 "wm8903", wm8903); in wm8903_i2c_probe()
2119 dev_err(wm8903->dev, "Failed to request IRQ: %d\n", in wm8903_i2c_probe()
2125 regmap_update_bits(wm8903->regmap, in wm8903_i2c_probe()
2131 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2133 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2136 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2138 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2141 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_LEFT, in wm8903_i2c_probe()
2143 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_RIGHT, in wm8903_i2c_probe()
2146 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_LEFT, in wm8903_i2c_probe()
2148 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_RIGHT, in wm8903_i2c_probe()
2151 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_LEFT, in wm8903_i2c_probe()
2153 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_RIGHT, in wm8903_i2c_probe()
2157 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_1, in wm8903_i2c_probe()
2173 struct wm8903_priv *wm8903 = i2c_get_clientdata(client); in wm8903_i2c_remove() local
2176 free_irq(client->irq, wm8903); in wm8903_i2c_remove()
2177 wm8903_free_gpio(wm8903); in wm8903_i2c_remove()