Lines Matching refs:wm8903

271 	struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component);  in wm8903_dcs_event()  local
275 wm8903->dcs_pending |= 1 << w->shift; in wm8903_dcs_event()
292 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_seq_notifier() local
297 if (wm8903->dcs_pending) { in wm8903_seq_notifier()
299 wm8903->dcs_pending); in wm8903_seq_notifier()
302 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) { in wm8903_seq_notifier()
303 if (!(wm8903->dcs_pending & (1 << i))) in wm8903_seq_notifier()
306 if (wm8903->dcs_cache[i]) { in wm8903_seq_notifier()
309 3 - i, wm8903->dcs_cache[i]); in wm8903_seq_notifier()
312 wm8903->dcs_cache[i] & 0xff); in wm8903_seq_notifier()
321 if (wm8903->class_w_users) in wm8903_seq_notifier()
328 WM8903_DCS_ENA_MASK, wm8903->dcs_pending); in wm8903_seq_notifier()
338 if (wm8903->class_w_users) in wm8903_seq_notifier()
341 for (i = 0; i < ARRAY_SIZE(wm8903->dcs_cache); i++) { in wm8903_seq_notifier()
342 if (!(wm8903->dcs_pending & (1 << i))) in wm8903_seq_notifier()
349 wm8903->dcs_cache[i] = val; in wm8903_seq_notifier()
358 wm8903->dcs_pending = 0; in wm8903_seq_notifier()
374 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_class_w_put() local
382 if (wm8903->class_w_users == 0) { in wm8903_class_w_put()
387 wm8903->class_w_users++; in wm8903_class_w_put()
395 if (wm8903->class_w_users == 1) { in wm8903_class_w_put()
400 wm8903->class_w_users--; in wm8903_class_w_put()
404 wm8903->class_w_users); in wm8903_class_w_put()
418 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_set_deemph() local
424 if (wm8903->deemph) { in wm8903_set_deemph()
427 if (abs(wm8903_deemph[i] - wm8903->fs) < in wm8903_set_deemph()
428 abs(wm8903_deemph[best] - wm8903->fs)) in wm8903_set_deemph()
449 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_get_deemph() local
451 ucontrol->value.integer.value[0] = wm8903->deemph; in wm8903_get_deemph()
460 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_put_deemph() local
467 mutex_lock(&wm8903->lock); in wm8903_put_deemph()
468 if (wm8903->deemph != deemph) { in wm8903_put_deemph()
469 wm8903->deemph = deemph; in wm8903_put_deemph()
475 mutex_unlock(&wm8903->lock); in wm8903_put_deemph()
1216 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_set_dai_sysclk() local
1218 wm8903->sysclk = freq; in wm8903_set_dai_sysclk()
1443 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_hw_params() local
1505 wm8903->sysclk, fs); in wm8903_hw_params()
1512 best_val = abs((wm8903->sysclk / in wm8903_hw_params()
1516 cur_val = abs((wm8903->sysclk / in wm8903_hw_params()
1528 clk_sys = wm8903->sysclk / 2; in wm8903_hw_params()
1531 clk_sys = wm8903->sysclk; in wm8903_hw_params()
1573 wm8903->fs = params_rate(params); in wm8903_hw_params()
1606 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_mic_detect() local
1613 wm8903->mic_jack = jack; in wm8903_mic_detect()
1614 wm8903->mic_det = det; in wm8903_mic_detect()
1615 wm8903->mic_short = shrt; in wm8903_mic_detect()
1645 struct wm8903_priv *wm8903 = data; in wm8903_irq() local
1649 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1_MASK, in wm8903_irq()
1652 dev_err(wm8903->dev, "Failed to read IRQ mask: %d\n", ret); in wm8903_irq()
1656 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_STATUS_1, &int_val); in wm8903_irq()
1658 dev_err(wm8903->dev, "Failed to read IRQ status: %d\n", ret); in wm8903_irq()
1665 dev_warn(wm8903->dev, "Write sequencer done\n"); in wm8903_irq()
1675 mic_report = wm8903->mic_last_report; in wm8903_irq()
1676 ret = regmap_read(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1679 dev_err(wm8903->dev, "Failed to read interrupt polarity: %d\n", in wm8903_irq()
1686 trace_snd_soc_jack_irq(dev_name(wm8903->dev)); in wm8903_irq()
1690 dev_dbg(wm8903->dev, "Microphone short (pol=%x)\n", int_pol); in wm8903_irq()
1692 mic_report ^= wm8903->mic_short; in wm8903_irq()
1697 dev_dbg(wm8903->dev, "Microphone detect (pol=%x)\n", int_pol); in wm8903_irq()
1699 mic_report ^= wm8903->mic_det; in wm8903_irq()
1702 msleep(wm8903->mic_delay); in wm8903_irq()
1705 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_POLARITY_1, in wm8903_irq()
1708 snd_soc_jack_report(wm8903->mic_jack, mic_report, in wm8903_irq()
1709 wm8903->mic_short | wm8903->mic_det); in wm8903_irq()
1711 wm8903->mic_last_report = mic_report; in wm8903_irq()
1768 struct wm8903_priv *wm8903 = snd_soc_component_get_drvdata(component); in wm8903_resume() local
1770 regcache_sync(wm8903->regmap); in wm8903_resume()
1786 struct wm8903_priv *wm8903 = gpiochip_get_data(chip); in wm8903_gpio_direction_in() local
1794 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_in()
1804 struct wm8903_priv *wm8903 = gpiochip_get_data(chip); in wm8903_gpio_get() local
1807 regmap_read(wm8903->regmap, WM8903_GPIO_CONTROL_1 + offset, &reg); in wm8903_gpio_get()
1815 struct wm8903_priv *wm8903 = gpiochip_get_data(chip); in wm8903_gpio_direction_out() local
1823 ret = regmap_update_bits(wm8903->regmap, in wm8903_gpio_direction_out()
1833 struct wm8903_priv *wm8903 = gpiochip_get_data(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.parent = 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_data(&wm8903->gpio_chip, wm8903); 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
1990 struct wm8903_priv *wm8903; in wm8903_i2c_probe() local
1996 wm8903 = devm_kzalloc(&i2c->dev, sizeof(*wm8903), GFP_KERNEL); in wm8903_i2c_probe()
1997 if (wm8903 == NULL) in wm8903_i2c_probe()
2000 mutex_init(&wm8903->lock); in wm8903_i2c_probe()
2001 wm8903->dev = &i2c->dev; in wm8903_i2c_probe()
2003 wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap); in wm8903_i2c_probe()
2004 if (IS_ERR(wm8903->regmap)) { in wm8903_i2c_probe()
2005 ret = PTR_ERR(wm8903->regmap); in wm8903_i2c_probe()
2011 i2c_set_clientdata(i2c, wm8903); in wm8903_i2c_probe()
2015 wm8903->pdata = pdata; in wm8903_i2c_probe()
2017 wm8903->pdata = devm_kzalloc(&i2c->dev, sizeof(*wm8903->pdata), in wm8903_i2c_probe()
2019 if (!wm8903->pdata) in wm8903_i2c_probe()
2023 ret = wm8903_set_pdata_irq_trigger(i2c, wm8903->pdata); in wm8903_i2c_probe()
2029 ret = wm8903_set_pdata_from_of(i2c, wm8903->pdata); in wm8903_i2c_probe()
2035 pdata = wm8903->pdata; in wm8903_i2c_probe()
2037 for (i = 0; i < ARRAY_SIZE(wm8903->supplies); i++) in wm8903_i2c_probe()
2038 wm8903->supplies[i].supply = wm8903_supply_names[i]; in wm8903_i2c_probe()
2040 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8903->supplies), in wm8903_i2c_probe()
2041 wm8903->supplies); in wm8903_i2c_probe()
2047 ret = regulator_bulk_enable(ARRAY_SIZE(wm8903->supplies), in wm8903_i2c_probe()
2048 wm8903->supplies); in wm8903_i2c_probe()
2054 ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val); in wm8903_i2c_probe()
2065 ret = regmap_read(wm8903->regmap, WM8903_REVISION_NUMBER, &val); in wm8903_i2c_probe()
2074 regmap_write(wm8903->regmap, WM8903_SW_RESET_AND_ID, 0x8903); in wm8903_i2c_probe()
2076 wm8903_init_gpio(wm8903); in wm8903_i2c_probe()
2084 regmap_write(wm8903->regmap, WM8903_GPIO_CONTROL_1 + i, in wm8903_i2c_probe()
2101 regmap_write(wm8903->regmap, WM8903_MIC_BIAS_CONTROL_0, in wm8903_i2c_probe()
2106 regmap_update_bits(wm8903->regmap, WM8903_WRITE_SEQUENCER_0, in wm8903_i2c_probe()
2117 wm8903->mic_delay = pdata->micdet_delay; in wm8903_i2c_probe()
2128 regmap_update_bits(wm8903->regmap, WM8903_INTERRUPT_CONTROL, in wm8903_i2c_probe()
2133 "wm8903", wm8903); in wm8903_i2c_probe()
2135 dev_err(wm8903->dev, "Failed to request IRQ: %d\n", in wm8903_i2c_probe()
2141 regmap_update_bits(wm8903->regmap, in wm8903_i2c_probe()
2147 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2149 regmap_update_bits(wm8903->regmap, WM8903_ADC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2152 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_LEFT, in wm8903_i2c_probe()
2154 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_VOLUME_RIGHT, in wm8903_i2c_probe()
2157 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_LEFT, in wm8903_i2c_probe()
2159 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT1_RIGHT, in wm8903_i2c_probe()
2162 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_LEFT, in wm8903_i2c_probe()
2164 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT2_RIGHT, in wm8903_i2c_probe()
2167 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_LEFT, in wm8903_i2c_probe()
2169 regmap_update_bits(wm8903->regmap, WM8903_ANALOGUE_OUT3_RIGHT, in wm8903_i2c_probe()
2173 regmap_update_bits(wm8903->regmap, WM8903_DAC_DIGITAL_1, in wm8903_i2c_probe()
2184 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies), in wm8903_i2c_probe()
2185 wm8903->supplies); in wm8903_i2c_probe()
2191 struct wm8903_priv *wm8903 = i2c_get_clientdata(client); in wm8903_i2c_remove() local
2193 regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies), in wm8903_i2c_remove()
2194 wm8903->supplies); in wm8903_i2c_remove()
2196 free_irq(client->irq, wm8903); in wm8903_i2c_remove()
2197 wm8903_free_gpio(wm8903); in wm8903_i2c_remove()