Lines Matching refs:wm2200

985 static int wm2200_reset(struct wm2200_priv *wm2200)  in wm2200_reset()  argument
987 if (wm2200->pdata.reset) { in wm2200_reset()
988 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_reset()
989 gpio_set_value_cansleep(wm2200->pdata.reset, 1); in wm2200_reset()
993 return regmap_write(wm2200->regmap, WM2200_SOFTWARE_RESET, in wm2200_reset()
1553 struct wm2200_priv *wm2200 = dev_get_drvdata(codec->dev); in wm2200_probe() local
1556 wm2200->codec = codec; in wm2200_probe()
1700 struct wm2200_priv *wm2200 = snd_soc_codec_get_drvdata(codec); in wm2200_hw_params() local
1720 if (!wm2200->sysclk) { in wm2200_hw_params()
1736 bclk, wm2200->sysclk); in wm2200_hw_params()
1738 if (wm2200->sysclk % 4000) in wm2200_hw_params()
1749 bclk, wm2200->sysclk); in wm2200_hw_params()
1792 struct wm2200_priv *wm2200 = snd_soc_codec_get_drvdata(codec); in wm2200_set_sysclk() local
1833 wm2200->sysclk = freq; in wm2200_set_sysclk()
1941 struct wm2200_priv *wm2200 = snd_soc_codec_get_drvdata(codec); in wm2200_set_fll() local
1949 if (wm2200->fll_fout) in wm2200_set_fll()
1952 wm2200->fll_fout = 0; in wm2200_set_fll()
2006 try_wait_for_completion(&wm2200->fll_lock); in wm2200_set_fll()
2025 &wm2200->fll_lock, in wm2200_set_fll()
2050 wm2200->fll_src = source; in wm2200_set_fll()
2051 wm2200->fll_fref = Fref; in wm2200_set_fll()
2052 wm2200->fll_fout = Fout; in wm2200_set_fll()
2124 struct wm2200_priv *wm2200 = data; in wm2200_irq() local
2128 ret = regmap_read(wm2200->regmap, WM2200_INTERRUPT_STATUS_2, &val); in wm2200_irq()
2130 dev_err(wm2200->dev, "Failed to read IRQ status: %d\n", ret); in wm2200_irq()
2134 ret = regmap_read(wm2200->regmap, WM2200_INTERRUPT_STATUS_2_MASK, in wm2200_irq()
2137 dev_warn(wm2200->dev, "Failed to read IRQ mask: %d\n", ret); in wm2200_irq()
2144 dev_dbg(wm2200->dev, "FLL locked\n"); in wm2200_irq()
2145 complete(&wm2200->fll_lock); in wm2200_irq()
2149 regmap_write(wm2200->regmap, WM2200_INTERRUPT_STATUS_2, val); in wm2200_irq()
2195 struct wm2200_priv *wm2200; in wm2200_i2c_probe() local
2200 wm2200 = devm_kzalloc(&i2c->dev, sizeof(struct wm2200_priv), in wm2200_i2c_probe()
2202 if (wm2200 == NULL) in wm2200_i2c_probe()
2205 wm2200->dev = &i2c->dev; in wm2200_i2c_probe()
2206 init_completion(&wm2200->fll_lock); in wm2200_i2c_probe()
2208 wm2200->regmap = devm_regmap_init_i2c(i2c, &wm2200_regmap); in wm2200_i2c_probe()
2209 if (IS_ERR(wm2200->regmap)) { in wm2200_i2c_probe()
2210 ret = PTR_ERR(wm2200->regmap); in wm2200_i2c_probe()
2217 wm2200->dsp[i].type = WMFW_ADSP1; in wm2200_i2c_probe()
2218 wm2200->dsp[i].part = "wm2200"; in wm2200_i2c_probe()
2219 wm2200->dsp[i].num = i + 1; in wm2200_i2c_probe()
2220 wm2200->dsp[i].dev = &i2c->dev; in wm2200_i2c_probe()
2221 wm2200->dsp[i].regmap = wm2200->regmap; in wm2200_i2c_probe()
2222 wm2200->dsp[i].sysclk_reg = WM2200_CLOCKING_3; in wm2200_i2c_probe()
2223 wm2200->dsp[i].sysclk_mask = WM2200_SYSCLK_FREQ_MASK; in wm2200_i2c_probe()
2224 wm2200->dsp[i].sysclk_shift = WM2200_SYSCLK_FREQ_SHIFT; in wm2200_i2c_probe()
2227 wm2200->dsp[0].base = WM2200_DSP1_CONTROL_1; in wm2200_i2c_probe()
2228 wm2200->dsp[0].mem = wm2200_dsp1_regions; in wm2200_i2c_probe()
2229 wm2200->dsp[0].num_mems = ARRAY_SIZE(wm2200_dsp1_regions); in wm2200_i2c_probe()
2231 wm2200->dsp[1].base = WM2200_DSP2_CONTROL_1; in wm2200_i2c_probe()
2232 wm2200->dsp[1].mem = wm2200_dsp2_regions; in wm2200_i2c_probe()
2233 wm2200->dsp[1].num_mems = ARRAY_SIZE(wm2200_dsp2_regions); in wm2200_i2c_probe()
2235 for (i = 0; i < ARRAY_SIZE(wm2200->dsp); i++) in wm2200_i2c_probe()
2236 wm_adsp1_init(&wm2200->dsp[i]); in wm2200_i2c_probe()
2239 wm2200->pdata = *pdata; in wm2200_i2c_probe()
2241 i2c_set_clientdata(i2c, wm2200); in wm2200_i2c_probe()
2243 for (i = 0; i < ARRAY_SIZE(wm2200->core_supplies); i++) in wm2200_i2c_probe()
2244 wm2200->core_supplies[i].supply = wm2200_core_supply_names[i]; in wm2200_i2c_probe()
2247 ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2248 wm2200->core_supplies); in wm2200_i2c_probe()
2255 ret = regulator_bulk_enable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2256 wm2200->core_supplies); in wm2200_i2c_probe()
2263 if (wm2200->pdata.ldo_ena) { in wm2200_i2c_probe()
2264 ret = devm_gpio_request_one(&i2c->dev, wm2200->pdata.ldo_ena, in wm2200_i2c_probe()
2269 wm2200->pdata.ldo_ena, ret); in wm2200_i2c_probe()
2275 if (wm2200->pdata.reset) { in wm2200_i2c_probe()
2276 ret = devm_gpio_request_one(&i2c->dev, wm2200->pdata.reset, in wm2200_i2c_probe()
2281 wm2200->pdata.reset, ret); in wm2200_i2c_probe()
2286 ret = regmap_read(wm2200->regmap, WM2200_SOFTWARE_RESET, &reg); in wm2200_i2c_probe()
2301 ret = regmap_read(wm2200->regmap, WM2200_DEVICE_REVISION, &reg); in wm2200_i2c_probe()
2307 wm2200->rev = reg & WM2200_DEVICE_REVISION_MASK; in wm2200_i2c_probe()
2309 dev_info(&i2c->dev, "revision %c\n", wm2200->rev + 'A'); in wm2200_i2c_probe()
2311 switch (wm2200->rev) { in wm2200_i2c_probe()
2314 ret = regmap_register_patch(wm2200->regmap, wm2200_reva_patch, in wm2200_i2c_probe()
2325 ret = wm2200_reset(wm2200); in wm2200_i2c_probe()
2331 for (i = 0; i < ARRAY_SIZE(wm2200->pdata.gpio_defaults); i++) { in wm2200_i2c_probe()
2332 if (!wm2200->pdata.gpio_defaults[i]) in wm2200_i2c_probe()
2335 regmap_write(wm2200->regmap, WM2200_GPIO_CTRL_1 + i, in wm2200_i2c_probe()
2336 wm2200->pdata.gpio_defaults[i]); in wm2200_i2c_probe()
2340 regmap_update_bits(wm2200->regmap, wm2200_dig_vu[i], in wm2200_i2c_probe()
2345 regmap_write(wm2200->regmap, WM2200_AUDIO_IF_1_10 + i, i); in wm2200_i2c_probe()
2346 regmap_write(wm2200->regmap, WM2200_AUDIO_IF_1_16 + i, i); in wm2200_i2c_probe()
2350 if (!wm2200->pdata.micbias[i].mb_lvl && in wm2200_i2c_probe()
2351 !wm2200->pdata.micbias[i].bypass) in wm2200_i2c_probe()
2355 if (!wm2200->pdata.micbias[i].mb_lvl) in wm2200_i2c_probe()
2356 wm2200->pdata.micbias[i].mb_lvl in wm2200_i2c_probe()
2359 val = (wm2200->pdata.micbias[i].mb_lvl -1) in wm2200_i2c_probe()
2362 if (wm2200->pdata.micbias[i].discharge) in wm2200_i2c_probe()
2365 if (wm2200->pdata.micbias[i].fast_start) in wm2200_i2c_probe()
2368 if (wm2200->pdata.micbias[i].bypass) in wm2200_i2c_probe()
2371 regmap_update_bits(wm2200->regmap, in wm2200_i2c_probe()
2379 for (i = 0; i < ARRAY_SIZE(wm2200->pdata.in_mode); i++) { in wm2200_i2c_probe()
2380 regmap_update_bits(wm2200->regmap, wm2200_mic_ctrl_reg[i], in wm2200_i2c_probe()
2383 (wm2200->pdata.in_mode[i] << in wm2200_i2c_probe()
2385 (wm2200->pdata.dmic_sup[i] << in wm2200_i2c_probe()
2392 "wm2200", wm2200); in wm2200_i2c_probe()
2394 regmap_update_bits(wm2200->regmap, in wm2200_i2c_probe()
2418 if (wm2200->pdata.reset) in wm2200_i2c_probe()
2419 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_i2c_probe()
2421 if (wm2200->pdata.ldo_ena) in wm2200_i2c_probe()
2422 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); in wm2200_i2c_probe()
2424 regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2425 wm2200->core_supplies); in wm2200_i2c_probe()
2431 struct wm2200_priv *wm2200 = i2c_get_clientdata(i2c); in wm2200_i2c_remove() local
2435 free_irq(i2c->irq, wm2200); in wm2200_i2c_remove()
2436 if (wm2200->pdata.reset) in wm2200_i2c_remove()
2437 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_i2c_remove()
2438 if (wm2200->pdata.ldo_ena) in wm2200_i2c_remove()
2439 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); in wm2200_i2c_remove()
2447 struct wm2200_priv *wm2200 = dev_get_drvdata(dev); in wm2200_runtime_suspend() local
2449 regcache_cache_only(wm2200->regmap, true); in wm2200_runtime_suspend()
2450 regcache_mark_dirty(wm2200->regmap); in wm2200_runtime_suspend()
2451 if (wm2200->pdata.ldo_ena) in wm2200_runtime_suspend()
2452 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); in wm2200_runtime_suspend()
2453 regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_runtime_suspend()
2454 wm2200->core_supplies); in wm2200_runtime_suspend()
2461 struct wm2200_priv *wm2200 = dev_get_drvdata(dev); in wm2200_runtime_resume() local
2464 ret = regulator_bulk_enable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_runtime_resume()
2465 wm2200->core_supplies); in wm2200_runtime_resume()
2472 if (wm2200->pdata.ldo_ena) { in wm2200_runtime_resume()
2473 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 1); in wm2200_runtime_resume()
2477 regcache_cache_only(wm2200->regmap, false); in wm2200_runtime_resume()
2478 regcache_sync(wm2200->regmap); in wm2200_runtime_resume()