Lines Matching refs:wm2200
984 static int wm2200_reset(struct wm2200_priv *wm2200) in wm2200_reset() argument
986 if (wm2200->pdata.reset) { in wm2200_reset()
987 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_reset()
988 gpio_set_value_cansleep(wm2200->pdata.reset, 1); in wm2200_reset()
992 return regmap_write(wm2200->regmap, WM2200_SOFTWARE_RESET, in wm2200_reset()
1555 struct wm2200_priv *wm2200 = snd_soc_component_get_drvdata(component); in wm2200_probe() local
1557 wm2200->component = component; in wm2200_probe()
1697 struct wm2200_priv *wm2200 = snd_soc_component_get_drvdata(component); in wm2200_hw_params() local
1717 if (!wm2200->sysclk) { in wm2200_hw_params()
1733 bclk, wm2200->sysclk); in wm2200_hw_params()
1735 if (wm2200->sysclk % 4000) in wm2200_hw_params()
1746 bclk, wm2200->sysclk); in wm2200_hw_params()
1758 wm2200->symmetric_rates) in wm2200_hw_params()
1789 struct wm2200_priv *wm2200 = snd_soc_component_get_drvdata(component); in wm2200_set_sysclk() local
1830 wm2200->sysclk = freq; in wm2200_set_sysclk()
1938 struct wm2200_priv *wm2200 = snd_soc_component_get_drvdata(component); in wm2200_set_fll() local
1946 if (wm2200->fll_fout) in wm2200_set_fll()
1949 wm2200->fll_fout = 0; in wm2200_set_fll()
2003 try_wait_for_completion(&wm2200->fll_lock); in wm2200_set_fll()
2022 &wm2200->fll_lock, in wm2200_set_fll()
2047 wm2200->fll_src = source; in wm2200_set_fll()
2048 wm2200->fll_fref = Fref; in wm2200_set_fll()
2049 wm2200->fll_fout = Fout; in wm2200_set_fll()
2059 struct wm2200_priv *wm2200 = snd_soc_component_get_drvdata(component); in wm2200_dai_probe() local
2066 wm2200->symmetric_rates = true; in wm2200_dai_probe()
2120 struct wm2200_priv *wm2200 = data; in wm2200_irq() local
2124 ret = regmap_read(wm2200->regmap, WM2200_INTERRUPT_STATUS_2, &val); in wm2200_irq()
2126 dev_err(wm2200->dev, "Failed to read IRQ status: %d\n", ret); in wm2200_irq()
2130 ret = regmap_read(wm2200->regmap, WM2200_INTERRUPT_STATUS_2_MASK, in wm2200_irq()
2133 dev_warn(wm2200->dev, "Failed to read IRQ mask: %d\n", ret); in wm2200_irq()
2140 dev_dbg(wm2200->dev, "FLL locked\n"); in wm2200_irq()
2141 complete(&wm2200->fll_lock); in wm2200_irq()
2145 regmap_write(wm2200->regmap, WM2200_INTERRUPT_STATUS_2, val); in wm2200_irq()
2191 struct wm2200_priv *wm2200; in wm2200_i2c_probe() local
2196 wm2200 = devm_kzalloc(&i2c->dev, sizeof(struct wm2200_priv), in wm2200_i2c_probe()
2198 if (wm2200 == NULL) in wm2200_i2c_probe()
2201 wm2200->dev = &i2c->dev; in wm2200_i2c_probe()
2202 init_completion(&wm2200->fll_lock); in wm2200_i2c_probe()
2204 wm2200->regmap = devm_regmap_init_i2c(i2c, &wm2200_regmap); in wm2200_i2c_probe()
2205 if (IS_ERR(wm2200->regmap)) { in wm2200_i2c_probe()
2206 ret = PTR_ERR(wm2200->regmap); in wm2200_i2c_probe()
2213 wm2200->dsp[i].type = WMFW_ADSP1; in wm2200_i2c_probe()
2214 wm2200->dsp[i].part = "wm2200"; in wm2200_i2c_probe()
2215 wm2200->dsp[i].num = i + 1; in wm2200_i2c_probe()
2216 wm2200->dsp[i].dev = &i2c->dev; in wm2200_i2c_probe()
2217 wm2200->dsp[i].regmap = wm2200->regmap; in wm2200_i2c_probe()
2218 wm2200->dsp[i].sysclk_reg = WM2200_CLOCKING_3; in wm2200_i2c_probe()
2219 wm2200->dsp[i].sysclk_mask = WM2200_SYSCLK_FREQ_MASK; in wm2200_i2c_probe()
2220 wm2200->dsp[i].sysclk_shift = WM2200_SYSCLK_FREQ_SHIFT; in wm2200_i2c_probe()
2223 wm2200->dsp[0].base = WM2200_DSP1_CONTROL_1; in wm2200_i2c_probe()
2224 wm2200->dsp[0].mem = wm2200_dsp1_regions; in wm2200_i2c_probe()
2225 wm2200->dsp[0].num_mems = ARRAY_SIZE(wm2200_dsp1_regions); in wm2200_i2c_probe()
2227 wm2200->dsp[1].base = WM2200_DSP2_CONTROL_1; in wm2200_i2c_probe()
2228 wm2200->dsp[1].mem = wm2200_dsp2_regions; in wm2200_i2c_probe()
2229 wm2200->dsp[1].num_mems = ARRAY_SIZE(wm2200_dsp2_regions); in wm2200_i2c_probe()
2231 for (i = 0; i < ARRAY_SIZE(wm2200->dsp); i++) in wm2200_i2c_probe()
2232 wm_adsp1_init(&wm2200->dsp[i]); in wm2200_i2c_probe()
2235 wm2200->pdata = *pdata; in wm2200_i2c_probe()
2237 i2c_set_clientdata(i2c, wm2200); in wm2200_i2c_probe()
2239 for (i = 0; i < ARRAY_SIZE(wm2200->core_supplies); i++) in wm2200_i2c_probe()
2240 wm2200->core_supplies[i].supply = wm2200_core_supply_names[i]; in wm2200_i2c_probe()
2243 ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2244 wm2200->core_supplies); in wm2200_i2c_probe()
2251 ret = regulator_bulk_enable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2252 wm2200->core_supplies); in wm2200_i2c_probe()
2259 if (wm2200->pdata.ldo_ena) { in wm2200_i2c_probe()
2260 ret = devm_gpio_request_one(&i2c->dev, wm2200->pdata.ldo_ena, in wm2200_i2c_probe()
2265 wm2200->pdata.ldo_ena, ret); in wm2200_i2c_probe()
2271 if (wm2200->pdata.reset) { in wm2200_i2c_probe()
2272 ret = devm_gpio_request_one(&i2c->dev, wm2200->pdata.reset, in wm2200_i2c_probe()
2277 wm2200->pdata.reset, ret); in wm2200_i2c_probe()
2282 ret = regmap_read(wm2200->regmap, WM2200_SOFTWARE_RESET, ®); in wm2200_i2c_probe()
2297 ret = regmap_read(wm2200->regmap, WM2200_DEVICE_REVISION, ®); in wm2200_i2c_probe()
2303 wm2200->rev = reg & WM2200_DEVICE_REVISION_MASK; in wm2200_i2c_probe()
2305 dev_info(&i2c->dev, "revision %c\n", wm2200->rev + 'A'); in wm2200_i2c_probe()
2307 switch (wm2200->rev) { in wm2200_i2c_probe()
2310 ret = regmap_register_patch(wm2200->regmap, wm2200_reva_patch, in wm2200_i2c_probe()
2321 ret = wm2200_reset(wm2200); in wm2200_i2c_probe()
2327 for (i = 0; i < ARRAY_SIZE(wm2200->pdata.gpio_defaults); i++) { in wm2200_i2c_probe()
2328 if (!wm2200->pdata.gpio_defaults[i]) in wm2200_i2c_probe()
2331 regmap_write(wm2200->regmap, WM2200_GPIO_CTRL_1 + i, in wm2200_i2c_probe()
2332 wm2200->pdata.gpio_defaults[i]); in wm2200_i2c_probe()
2336 regmap_update_bits(wm2200->regmap, wm2200_dig_vu[i], in wm2200_i2c_probe()
2341 regmap_write(wm2200->regmap, WM2200_AUDIO_IF_1_10 + i, i); in wm2200_i2c_probe()
2342 regmap_write(wm2200->regmap, WM2200_AUDIO_IF_1_16 + i, i); in wm2200_i2c_probe()
2346 if (!wm2200->pdata.micbias[i].mb_lvl && in wm2200_i2c_probe()
2347 !wm2200->pdata.micbias[i].bypass) in wm2200_i2c_probe()
2351 if (!wm2200->pdata.micbias[i].mb_lvl) in wm2200_i2c_probe()
2352 wm2200->pdata.micbias[i].mb_lvl in wm2200_i2c_probe()
2355 val = (wm2200->pdata.micbias[i].mb_lvl -1) in wm2200_i2c_probe()
2358 if (wm2200->pdata.micbias[i].discharge) in wm2200_i2c_probe()
2361 if (wm2200->pdata.micbias[i].fast_start) in wm2200_i2c_probe()
2364 if (wm2200->pdata.micbias[i].bypass) in wm2200_i2c_probe()
2367 regmap_update_bits(wm2200->regmap, in wm2200_i2c_probe()
2375 for (i = 0; i < ARRAY_SIZE(wm2200->pdata.in_mode); i++) { in wm2200_i2c_probe()
2376 regmap_update_bits(wm2200->regmap, wm2200_mic_ctrl_reg[i], in wm2200_i2c_probe()
2379 (wm2200->pdata.in_mode[i] << in wm2200_i2c_probe()
2381 (wm2200->pdata.dmic_sup[i] << in wm2200_i2c_probe()
2388 "wm2200", wm2200); in wm2200_i2c_probe()
2390 regmap_update_bits(wm2200->regmap, in wm2200_i2c_probe()
2414 free_irq(i2c->irq, wm2200); in wm2200_i2c_probe()
2416 if (wm2200->pdata.reset) in wm2200_i2c_probe()
2417 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_i2c_probe()
2419 if (wm2200->pdata.ldo_ena) in wm2200_i2c_probe()
2420 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); in wm2200_i2c_probe()
2422 regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_probe()
2423 wm2200->core_supplies); in wm2200_i2c_probe()
2429 struct wm2200_priv *wm2200 = i2c_get_clientdata(i2c); in wm2200_i2c_remove() local
2433 free_irq(i2c->irq, wm2200); in wm2200_i2c_remove()
2434 if (wm2200->pdata.reset) in wm2200_i2c_remove()
2435 gpio_set_value_cansleep(wm2200->pdata.reset, 0); in wm2200_i2c_remove()
2436 if (wm2200->pdata.ldo_ena) in wm2200_i2c_remove()
2437 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); in wm2200_i2c_remove()
2438 regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), in wm2200_i2c_remove()
2439 wm2200->core_supplies); 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()