Lines Matching defs:wm8903

3  * wm8903.c  --  WM8903 ALSA SoC Audio driver
34 #include <sound/wm8903.h>
37 #include "wm8903.h"
270 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
274 wm8903->dcs_pending |= 1 << w->shift;
291 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
296 if (wm8903->dcs_pending) {
298 wm8903->dcs_pending);
301 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) {
302 if (!(wm8903->dcs_pending & (1 << i)))
305 if (wm8903->dcs_cache[i]) {
308 3 - i, wm8903->dcs_cache[i]);
311 wm8903->dcs_cache[i] & 0xff);
320 if (wm8903->class_w_users)
327 WM8903_DCS_ENA_MASK, wm8903->dcs_pending);
337 if (wm8903->class_w_users)
340 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) {
341 if (!(wm8903->dcs_pending & (1 << i)))
348 wm8903->dcs_cache[i] = val;
357 wm8903->dcs_pending = 0;
373 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
381 if (wm8903->class_w_users == 0) {
386 wm8903->class_w_users++;
394 if (wm8903->class_w_users == 1) {
399 wm8903->class_w_users--;
403 wm8903->class_w_users);
417 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
423 if (wm8903->deemph) {
426 if (abs(wm8903_deemph[i] - wm8903->fs) <
427 abs(wm8903_deemph[best] - wm8903->fs))
448 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
450 ucontrol->value.integer.value[0] = wm8903->deemph;
459 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
466 mutex_lock(&wm8903->lock);
467 if (wm8903->deemph != deemph) {
468 wm8903->deemph = deemph;
474 mutex_unlock(&wm8903->lock);
1215 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1217 wm8903->sysclk = freq;
1442 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1504 wm8903->sysclk, fs);
1511 best_val = abs((wm8903->sysclk /
1515 cur_val = abs((wm8903->sysclk /
1527 clk_sys = wm8903->sysclk / 2;
1530 clk_sys = wm8903->sysclk;
1570 wm8903->fs = params_rate(params);
1603 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1610 wm8903->mic_jack = jack;
1611 wm8903->mic_det = det;
1612 wm8903->mic_short = shrt;
1642 struct wm8903_priv *wm8903 = data;
1646 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1_MASK,
1649 dev_err(wm8903->dev, "Failed to read IRQ mask: %d\n", ret);
1653 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1, &int_val);
1655 dev_err(wm8903->dev, "Failed to read IRQ status: %d\n", ret);
1662 dev_warn(wm8903->dev, "Write sequencer done\n");
1672 mic_report = wm8903->mic_last_report;
1673 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1,
1676 dev_err(wm8903->dev, "Failed to read interrupt polarity: %d\n",
1683 trace_snd_soc_jack_irq(dev_name(wm8903->dev));
1687 dev_dbg(wm8903->dev, "Microphone short (pol=%x)\n", int_pol);
1689 mic_report ^= wm8903->mic_short;
1694 dev_dbg(wm8903->dev, "Microphone detect (pol=%x)\n", int_pol);
1696 mic_report ^= wm8903->mic_det;
1699 msleep(wm8903->mic_delay);
1702 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1,
1705 snd_soc_jack_report(wm8903->mic_jack, mic_report,
1706 wm8903->mic_short | wm8903->mic_det);
1708 wm8903->mic_last_report = mic_report;
1744 .name = "wm8903-hifi",
1765 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);
1767 regcache_sync(wm8903->regmap);
1783 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1791 ret = regmap_update_bits(wm8903->regmap,
1801 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1804 regmap_read(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, &reg);
1812 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1820 ret = regmap_update_bits(wm8903->regmap,
1830 struct wm8903_priv *wm8903 = gpiochip_get_data(chip);
1832 regmap_update_bits(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset,
1838 .label = "wm8903",
1848 static void wm8903_init_gpio(struct wm8903_priv *wm8903)
1850 struct wm8903_platform_data *pdata = wm8903->pdata;
1853 wm8903->gpio_chip = wm8903_template_chip;
1854 wm8903->gpio_chip.ngpio = WM8903_NUM_GPIO;
1855 wm8903->gpio_chip.parent = wm8903->dev;
1858 wm8903->gpio_chip.base = pdata->gpio_base;
1860 wm8903->gpio_chip.base = -1;
1862 ret = gpiochip_add_data(&wm8903->gpio_chip, wm8903);
1864 dev_err(wm8903->dev, "Failed to add GPIOs: %d\n", ret);
1867 static void wm8903_free_gpio(struct wm8903_priv *wm8903)
1869 gpiochip_remove(&wm8903->gpio_chip);
1872 static void wm8903_init_gpio(struct wm8903_priv *wm8903)
1876 static void wm8903_free_gpio(struct wm8903_priv *wm8903)
1985 struct wm8903_priv *wm8903;
1991 wm8903 = devm_kzalloc(&i2c->dev, sizeof(*wm8903), GFP_KERNEL);
1992 if (wm8903 == NULL)
1995 mutex_init(&wm8903->lock);
1996 wm8903->dev = &i2c->dev;
1998 wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap);
1999 if (IS_ERR(wm8903->regmap)) {
2000 ret = PTR_ERR(wm8903->regmap);
2006 i2c_set_clientdata(i2c, wm8903);
2010 wm8903->pdata = pdata;
2012 wm8903->pdata = devm_kzalloc(&i2c->dev, sizeof(*wm8903->pdata),
2014 if (!wm8903->pdata)
2018 ret = wm8903_set_pdata_irq_trigger(i2c, wm8903->pdata);
2024 ret = wm8903_set_pdata_from_of(i2c, wm8903->pdata);
2030 pdata = wm8903->pdata;
2032 for (i = 0; i < ARRAY_SIZE(wm8903->supplies); i++)
2033 wm8903->supplies[i].supply = wm8903_supply_names[i];
2035 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8903->supplies),
2036 wm8903->supplies);
2042 ret = regulator_bulk_enable(ARRAY_SIZE(wm8903->supplies),
2043 wm8903->supplies);
2049 ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val);
2060 ret = regmap_read(wm8903->regmap, WM8903_REVISION_NUMBER, &val);
2069 regmap_write(wm8903->regmap, WM8903_SW_RESET_AND_ID, 0x8903);
2071 wm8903_init_gpio(wm8903);
2079 regmap_write(wm8903->regmap, WM8903_GPIO_CONTROL_1 + i,
2096 regmap_write(wm8903->regmap, WM8903_MIC_BIAS_CONTROL_0,
2101 regmap_update_bits(wm8903->regmap, WM8903_WRITE_SEQUENCER_0,
2112 wm8903->mic_delay = pdata->micdet_delay;
2123 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_CONTROL,
2128 "wm8903", wm8903);
2130 dev_err(wm8903->dev, "Failed to request IRQ: %d\n",
2136 regmap_update_bits(wm8903->regmap,
2142 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_LEFT,
2144 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_RIGHT,
2147 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_LEFT,
2149 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_RIGHT,
2152 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_LEFT,
2154 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_RIGHT,
2157 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_LEFT,
2159 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_RIGHT,
2162 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_LEFT,
2164 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_RIGHT,
2168 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_1,
2179 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
2180 wm8903->supplies);
2186 struct wm8903_priv *wm8903 = i2c_get_clientdata(client);
2188 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
2189 wm8903->supplies);
2191 free_irq(client->irq, wm8903);
2192 wm8903_free_gpio(wm8903);
2196 { .compatible = "wlf,wm8903", },
2202 { "wm8903" },
2209 .name = "wm8903",