Lines Matching refs:aic31xx

158 	struct aic31xx_priv *aic31xx;  member
324 static int aic31xx_wait_bits(struct aic31xx_priv *aic31xx, unsigned int reg, in aic31xx_wait_bits() argument
330 int ret = regmap_read(aic31xx->regmap, reg, &bits); in aic31xx_wait_bits()
334 ret = regmap_read(aic31xx->regmap, reg, &bits); in aic31xx_wait_bits()
338 dev_err(aic31xx->dev, in aic31xx_wait_bits()
353 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_dapm_power_event() local
388 return aic31xx_wait_bits(aic31xx, reg, mask, mask, 5000, 100); in aic31xx_dapm_power_event()
390 return aic31xx_wait_bits(aic31xx, reg, mask, 0, 5000, 100); in aic31xx_dapm_power_event()
438 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in mic_bias_event() local
445 aic31xx->pdata.micbias_vg << in mic_bias_event()
633 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_add_controls() local
635 if (aic31xx->pdata.codec_type & AIC31XX_STEREO_CLASS_D_BIT) in aic31xx_add_controls()
650 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_add_widgets() local
653 if (aic31xx->pdata.codec_type & AIC31XX_STEREO_CLASS_D_BIT) { in aic31xx_add_widgets()
683 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_setup_pll() local
685 int mclk_p = aic31xx->sysclk / aic31xx->p_div; in aic31xx_setup_pll()
732 (aic31xx->p_div << 4) | 0x01); in aic31xx_setup_pll()
761 aic31xx->rate_div_line = i; in aic31xx_setup_pll()
766 aic31xx->p_div, aic31xx_divs[i].dosr, in aic31xx_setup_pll()
900 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_set_dai_sysclk() local
909 dev_err(aic31xx->dev, "%s: Too high mclk frequency %u\n", in aic31xx_set_dai_sysclk()
913 aic31xx->p_div = i; in aic31xx_set_dai_sysclk()
916 aic31xx_divs[i].mclk_p != freq/aic31xx->p_div; i++) in aic31xx_set_dai_sysclk()
919 dev_err(aic31xx->dev, "%s: Unsupported frequency %d\n", in aic31xx_set_dai_sysclk()
928 aic31xx->sysclk = freq; in aic31xx_set_dai_sysclk()
937 struct aic31xx_priv *aic31xx = disable_nb->aic31xx; in aic31xx_regulator_event() local
944 if (gpio_is_valid(aic31xx->pdata.gpio_reset)) in aic31xx_regulator_event()
945 gpio_set_value(aic31xx->pdata.gpio_reset, 0); in aic31xx_regulator_event()
947 regcache_mark_dirty(aic31xx->regmap); in aic31xx_regulator_event()
948 dev_dbg(aic31xx->dev, "## %s: DISABLE received\n", __func__); in aic31xx_regulator_event()
956 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_clk_on() local
961 aic31xx_divs[aic31xx->rate_div_line].rate); in aic31xx_clk_on()
966 if (aic31xx_divs[aic31xx->rate_div_line].nadc) in aic31xx_clk_on()
968 if (aic31xx_divs[aic31xx->rate_div_line].madc) in aic31xx_clk_on()
989 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_power_on() local
992 ret = regulator_bulk_enable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_on()
993 aic31xx->supplies); in aic31xx_power_on()
997 if (gpio_is_valid(aic31xx->pdata.gpio_reset)) { in aic31xx_power_on()
998 gpio_set_value(aic31xx->pdata.gpio_reset, 1); in aic31xx_power_on()
1001 regcache_cache_only(aic31xx->regmap, false); in aic31xx_power_on()
1002 ret = regcache_sync(aic31xx->regmap); in aic31xx_power_on()
1006 regcache_cache_only(aic31xx->regmap, true); in aic31xx_power_on()
1007 regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_on()
1008 aic31xx->supplies); in aic31xx_power_on()
1016 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_power_off() local
1019 regcache_cache_only(aic31xx->regmap, true); in aic31xx_power_off()
1020 ret = regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_off()
1021 aic31xx->supplies); in aic31xx_power_off()
1063 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_codec_probe() local
1066 dev_dbg(aic31xx->dev, "## %s\n", __func__); in aic31xx_codec_probe()
1068 aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_codec_probe()
1070 aic31xx->codec = codec; in aic31xx_codec_probe()
1072 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) { in aic31xx_codec_probe()
1073 aic31xx->disable_nb[i].nb.notifier_call = in aic31xx_codec_probe()
1075 aic31xx->disable_nb[i].aic31xx = aic31xx; in aic31xx_codec_probe()
1076 ret = regulator_register_notifier(aic31xx->supplies[i].consumer, in aic31xx_codec_probe()
1077 &aic31xx->disable_nb[i].nb); in aic31xx_codec_probe()
1086 regcache_cache_only(aic31xx->regmap, true); in aic31xx_codec_probe()
1087 regcache_mark_dirty(aic31xx->regmap); in aic31xx_codec_probe()
1100 struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec); in aic31xx_codec_remove() local
1103 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) in aic31xx_codec_remove()
1104 regulator_unregister_notifier(aic31xx->supplies[i].consumer, in aic31xx_codec_remove()
1105 &aic31xx->disable_nb[i].nb); in aic31xx_codec_remove()
1165 static void aic31xx_pdata_from_of(struct aic31xx_priv *aic31xx) in aic31xx_pdata_from_of() argument
1167 struct device_node *np = aic31xx->dev->of_node; in aic31xx_pdata_from_of()
1176 aic31xx->pdata.micbias_vg = value; in aic31xx_pdata_from_of()
1179 dev_err(aic31xx->dev, in aic31xx_pdata_from_of()
1182 aic31xx->pdata.micbias_vg = MICBIAS_2_0V; in aic31xx_pdata_from_of()
1187 aic31xx->pdata.gpio_reset = ret; in aic31xx_pdata_from_of()
1190 static void aic31xx_pdata_from_of(struct aic31xx_priv *aic31xx) in aic31xx_pdata_from_of() argument
1195 static int aic31xx_device_init(struct aic31xx_priv *aic31xx) in aic31xx_device_init() argument
1199 dev_set_drvdata(aic31xx->dev, aic31xx); in aic31xx_device_init()
1201 if (dev_get_platdata(aic31xx->dev)) in aic31xx_device_init()
1202 memcpy(&aic31xx->pdata, dev_get_platdata(aic31xx->dev), in aic31xx_device_init()
1203 sizeof(aic31xx->pdata)); in aic31xx_device_init()
1204 else if (aic31xx->dev->of_node) in aic31xx_device_init()
1205 aic31xx_pdata_from_of(aic31xx); in aic31xx_device_init()
1207 if (aic31xx->pdata.gpio_reset) { in aic31xx_device_init()
1208 ret = devm_gpio_request_one(aic31xx->dev, in aic31xx_device_init()
1209 aic31xx->pdata.gpio_reset, in aic31xx_device_init()
1213 dev_err(aic31xx->dev, "not able to acquire gpio\n"); in aic31xx_device_init()
1218 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) in aic31xx_device_init()
1219 aic31xx->supplies[i].supply = aic31xx_supply_names[i]; in aic31xx_device_init()
1221 ret = devm_regulator_bulk_get(aic31xx->dev, in aic31xx_device_init()
1222 ARRAY_SIZE(aic31xx->supplies), in aic31xx_device_init()
1223 aic31xx->supplies); in aic31xx_device_init()
1225 dev_err(aic31xx->dev, "Failed to request supplies: %d\n", ret); in aic31xx_device_init()
1233 struct aic31xx_priv *aic31xx; in aic31xx_i2c_probe() local
1242 aic31xx = devm_kzalloc(&i2c->dev, sizeof(*aic31xx), GFP_KERNEL); in aic31xx_i2c_probe()
1243 if (aic31xx == NULL) in aic31xx_i2c_probe()
1246 aic31xx->regmap = devm_regmap_init_i2c(i2c, regmap_config); in aic31xx_i2c_probe()
1247 if (IS_ERR(aic31xx->regmap)) { in aic31xx_i2c_probe()
1248 ret = PTR_ERR(aic31xx->regmap); in aic31xx_i2c_probe()
1253 aic31xx->dev = &i2c->dev; in aic31xx_i2c_probe()
1255 aic31xx->pdata.codec_type = id->driver_data; in aic31xx_i2c_probe()
1257 ret = aic31xx_device_init(aic31xx); in aic31xx_i2c_probe()