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