Lines Matching defs:wm8903

3  * wm8903.c  --  WM8903 ALSA SoC Audio driver
35 #include <sound/wm8903.h>
38 #include "wm8903.h"
271 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
275 wm8903->dcs_pending |= 1 << w->shift;
292 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
297 if (wm8903->dcs_pending) {
299 wm8903->dcs_pending);
302 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) {
303 if (!(wm8903->dcs_pending & (1 << i)))
306 if (wm8903->dcs_cache[i]) {
309 3 - i, wm8903->dcs_cache[i]);
312 wm8903->dcs_cache[i] & 0xff);
321 if (wm8903->class_w_users)
328 WM8903_DCS_ENA_MASK, wm8903->dcs_pending);
338 if (wm8903->class_w_users)
341 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) {
342 if (!(wm8903->dcs_pending & (1 << i)))
349 wm8903->dcs_cache[i] = val;
358 wm8903->dcs_pending = 0;
374 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
382 if (wm8903->class_w_users == 0) {
387 wm8903->class_w_users++;
395 if (wm8903->class_w_users == 1) {
400 wm8903->class_w_users--;
404 wm8903->class_w_users);
418 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
424 if (wm8903->deemph) {
427 if (abs(wm8903_deemph[i] - wm8903->fs) <
428 abs(wm8903_deemph[best] - wm8903->fs))
449 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
451 ucontrol->value.integer.value[0] = wm8903->deemph;
460 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
467 mutex_lock(&wm8903->lock);
468 if (wm8903->deemph != deemph) {
469 wm8903->deemph = deemph;
475 mutex_unlock(&wm8903->lock);
1216 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1218 wm8903->sysclk = freq;
1443 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1505 wm8903->sysclk, fs);
1512 best_val = abs((wm8903->sysclk /
1516 cur_val = abs((wm8903->sysclk /
1528 clk_sys = wm8903->sysclk / 2;
1531 clk_sys = wm8903->sysclk;
1573 wm8903->fs = params_rate(params);
1606 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1613 wm8903->mic_jack = jack;
1614 wm8903->mic_det = det;
1615 wm8903->mic_short = shrt;
1645 struct wm8903_priv *wm8903 = data;
1649 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1_MASK,
1652 dev_err(wm8903->dev, "Failed to read IRQ mask: %d\n", ret);
1656 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1, &int_val);
1658 dev_err(wm8903->dev, "Failed to read IRQ status: %d\n", ret);
1665 dev_warn(wm8903->dev, "Write sequencer done\n");
1675 mic_report = wm8903->mic_last_report;
1676 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1,
1679 dev_err(wm8903->dev, "Failed to read interrupt polarity: %d\n",
1686 trace_snd_soc_jack_irq(dev_name(wm8903->dev));
1690 dev_dbg(wm8903->dev, "Microphone short (pol=%x)\n", int_pol);
1692 mic_report ^= wm8903->mic_short;
1697 dev_dbg(wm8903->dev, "Microphone detect (pol=%x)\n", int_pol);
1699 mic_report ^= wm8903->mic_det;
1702 msleep(wm8903->mic_delay);
1705 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1,
1708 snd_soc_jack_report(wm8903->mic_jack, mic_report,
1709 wm8903->mic_short | wm8903->mic_det);
1711 wm8903->mic_last_report = mic_report;
1747 .name = "wm8903-hifi",
1768 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1770 regcache_sync(wm8903->regmap);
1786 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1794 ret = regmap_update_bits(wm8903->regmap,
1804 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1807 regmap_read(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, &reg);
1815 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1823 ret = regmap_update_bits(wm8903->regmap,
1833 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1835 regmap_update_bits(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset,
1841 .label = "wm8903",
1851 static void wm8903_init_gpio(struct wm8903_priv *wm8903)
1853 struct wm8903_platform_data *pdata = wm8903->pdata;
1856 wm8903->gpio_chip = wm8903_template_chip;
1857 wm8903->gpio_chip.ngpio = WM8903_NUM_GPIO;
1858 wm8903->gpio_chip.parent = wm8903->dev;
1861 wm8903->gpio_chip.base = pdata->gpio_base;
1863 wm8903->gpio_chip.base = -1;
1865 ret = gpiochip_add_data(&wm8903->gpio_chip, wm8903);
1867 dev_err(wm8903->dev, "Failed to add GPIOs: %d\n", ret);
1870 static void wm8903_free_gpio(struct wm8903_priv *wm8903)
1872 gpiochip_remove(&wm8903->gpio_chip);
1875 static void wm8903_init_gpio(struct wm8903_priv *wm8903)
1879 static void wm8903_free_gpio(struct wm8903_priv *wm8903)
1990 struct wm8903_priv *wm8903;
1996 wm8903 = devm_kzalloc(&i2c->dev, sizeof(*wm8903), GFP_KERNEL);
1997 if (wm8903 == NULL)
2000 mutex_init(&wm8903->lock);
2001 wm8903->dev = &i2c->dev;
2003 wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap);
2004 if (IS_ERR(wm8903->regmap)) {
2005 ret = PTR_ERR(wm8903->regmap);
2011 i2c_set_clientdata(i2c, wm8903);
2015 wm8903->pdata = pdata;
2017 wm8903->pdata = devm_kzalloc(&i2c->dev, sizeof(*wm8903->pdata),
2019 if (!wm8903->pdata)
2023 ret = wm8903_set_pdata_irq_trigger(i2c, wm8903->pdata);
2029 ret = wm8903_set_pdata_from_of(i2c, wm8903->pdata);
2035 pdata = wm8903->pdata;
2037 for (i = 0; i < ARRAY_SIZE(wm8903->supplies); i++)
2038 wm8903->supplies[i].supply = wm8903_supply_names[i];
2040 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8903->supplies),
2041 wm8903->supplies);
2047 ret = regulator_bulk_enable(ARRAY_SIZE(wm8903->supplies),
2048 wm8903->supplies);
2054 ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val);
2065 ret = regmap_read(wm8903->regmap, WM8903_REVISION_NUMBER, &val);
2074 regmap_write(wm8903->regmap, WM8903_SW_RESET_AND_ID, 0x8903);
2076 wm8903_init_gpio(wm8903);
2084 regmap_write(wm8903->regmap, WM8903_GPIO_CONTROL_1 + i,
2101 regmap_write(wm8903->regmap, WM8903_MIC_BIAS_CONTROL_0,
2106 regmap_update_bits(wm8903->regmap, WM8903_WRITE_SEQUENCER_0,
2117 wm8903->mic_delay = pdata->micdet_delay;
2128 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_CONTROL,
2133 "wm8903", wm8903);
2135 dev_err(wm8903->dev, "Failed to request IRQ: %d\n",
2141 regmap_update_bits(wm8903->regmap,
2147 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_LEFT,
2149 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_RIGHT,
2152 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_LEFT,
2154 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_RIGHT,
2157 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_LEFT,
2159 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_RIGHT,
2162 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_LEFT,
2164 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_RIGHT,
2167 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_LEFT,
2169 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_RIGHT,
2173 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_1,
2184 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
2185 wm8903->supplies);
2191 struct wm8903_priv *wm8903 = i2c_get_clientdata(client);
2193 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
2194 wm8903->supplies);
2196 free_irq(client->irq, wm8903);
2197 wm8903_free_gpio(wm8903);
2203 { .compatible = "wlf,wm8903", },
2209 { "wm8903", 0 },
2216 .name = "wm8903",