Lines Matching +full:switch +full:- +full:freq
2 * max9867.c -- max9867 ALSA SoC Audio driver
4 * Copyright 2013-15 Maxim Integrated Products
37 static DECLARE_TLV_DB_SCALE(max9860_capture_tlv, -600, 200, 0);
39 static DECLARE_TLV_DB_SCALE(max9860_adc_left_tlv, -1200, 100, 1);
40 static DECLARE_TLV_DB_SCALE(max9860_adc_right_tlv, -1200, 100, 1);
65 SOC_SINGLE("Volume Smoothing Switch", MAX9867_MODECONFIG, 6, 1, 0),
66 SOC_SINGLE("ZCD Switch", MAX9867_MODECONFIG, 5, 1, 0),
80 SOC_DAPM_SINGLE("Switch", MAX9867_PWRMAN, 6, 1, 0);
82 SOC_DAPM_SINGLE("Switch", MAX9867_PWRMAN, 5, 1, 0);
84 SOC_DAPM_SINGLE("Switch", MAX9867_LEFTLINELVL, 6, 1, 1);
123 {"Right Line", "Switch", "Input Mux"},
124 {"Left Line", "Switch", "Input Mux"},
159 return -EINVAL; in get_ni_value()
161 switch (rate) { in get_ni_value()
174 ret = -EINVAL; in get_ni_value()
182 struct snd_soc_component *component = dai->component; in max9867_dai_hw_params()
187 value = get_ni_value(max9867->sysclk, params_rate(params)); in max9867_dai_hw_params()
194 regmap_update_bits(max9867->regmap, MAX9867_AUDIOCLKHIGH, in max9867_dai_hw_params()
196 regmap_update_bits(max9867->regmap, MAX9867_AUDIOCLKLOW, in max9867_dai_hw_params()
198 if (!max9867->master) { in max9867_dai_hw_params()
203 regmap_update_bits(max9867->regmap, MAX9867_AUDIOCLKLOW, in max9867_dai_hw_params()
205 regmap_update_bits(max9867->regmap, MAX9867_AUDIOCLKHIGH, in max9867_dai_hw_params()
212 pclk_bclk_ratio = max9867->pclk/bclk_rate; in max9867_dai_hw_params()
213 switch (params_width(params)) { in max9867_dai_hw_params()
216 switch (pclk_bclk_ratio) { in max9867_dai_hw_params()
230 dev_err(component->dev, in max9867_dai_hw_params()
232 return -EINVAL; in max9867_dai_hw_params()
242 dev_err(component->dev, "unsupported sampling rate\n"); in max9867_dai_hw_params()
243 return -EINVAL; in max9867_dai_hw_params()
245 regmap_update_bits(max9867->regmap, MAX9867_IFC1B, in max9867_dai_hw_params()
253 struct snd_soc_component *component = dai->component; in max9867_mute()
257 regmap_update_bits(max9867->regmap, MAX9867_DACLEVEL, in max9867_mute()
260 regmap_update_bits(max9867->regmap, MAX9867_DACLEVEL, in max9867_mute()
266 int clk_id, unsigned int freq, int dir) in max9867_set_dai_sysclk() argument
268 struct snd_soc_component *component = codec_dai->component; in max9867_set_dai_sysclk()
273 if (freq >= 10000000 && freq <= 20000000) { in max9867_set_dai_sysclk()
275 max9867->pclk = freq; in max9867_set_dai_sysclk()
276 } else if (freq >= 20000000 && freq <= 40000000) { in max9867_set_dai_sysclk()
278 max9867->pclk = freq/2; in max9867_set_dai_sysclk()
279 } else if (freq >= 40000000 && freq <= 60000000) { in max9867_set_dai_sysclk()
281 max9867->pclk = freq/4; in max9867_set_dai_sysclk()
283 dev_err(component->dev, in max9867_set_dai_sysclk()
284 "Invalid clock frequency %uHz (required 10-60MHz)\n", in max9867_set_dai_sysclk()
285 freq); in max9867_set_dai_sysclk()
286 return -EINVAL; in max9867_set_dai_sysclk()
289 max9867->sysclk = freq; in max9867_set_dai_sysclk()
292 regmap_update_bits(max9867->regmap, MAX9867_SYSCLK, in max9867_set_dai_sysclk()
300 struct snd_soc_component *component = codec_dai->component; in max9867_dai_set_fmt()
304 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { in max9867_dai_set_fmt()
306 max9867->master = 1; in max9867_dai_set_fmt()
310 max9867->master = 0; in max9867_dai_set_fmt()
314 return -EINVAL; in max9867_dai_set_fmt()
317 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { in max9867_dai_set_fmt()
325 return -EINVAL; in max9867_dai_set_fmt()
329 switch (fmt & SND_SOC_DAIFMT_INV_MASK) { in max9867_dai_set_fmt()
342 return -EINVAL; in max9867_dai_set_fmt()
345 regmap_write(max9867->regmap, MAX9867_IFC1A, iface1A); in max9867_dai_set_fmt()
346 regmap_write(max9867->regmap, MAX9867_IFC1B, iface1B); in max9867_dai_set_fmt()
363 .name = "max9867-aif1",
408 switch (level) { in max9867_set_bias_level()
411 err = regcache_sync(max9867->regmap); in max9867_set_bias_level()
415 err = regmap_update_bits(max9867->regmap, MAX9867_PWRMAN, in max9867_set_bias_level()
422 err = regmap_update_bits(max9867->regmap, MAX9867_PWRMAN, in max9867_set_bias_level()
427 regcache_mark_dirty(max9867->regmap); in max9867_set_bias_level()
454 switch (reg) { in max9867_volatile_register()
504 max9867 = devm_kzalloc(&i2c->dev, in max9867_i2c_probe()
507 return -ENOMEM; in max9867_i2c_probe()
510 max9867->regmap = devm_regmap_init_i2c(i2c, &max9867_regmap); in max9867_i2c_probe()
511 if (IS_ERR(max9867->regmap)) { in max9867_i2c_probe()
512 ret = PTR_ERR(max9867->regmap); in max9867_i2c_probe()
513 dev_err(&i2c->dev, "Failed to allocate regmap: %d\n", ret); in max9867_i2c_probe()
516 ret = regmap_read(max9867->regmap, in max9867_i2c_probe()
519 dev_err(&i2c->dev, "Failed to read: %d\n", ret); in max9867_i2c_probe()
522 dev_info(&i2c->dev, "device revision: %x\n", reg); in max9867_i2c_probe()
523 ret = devm_snd_soc_register_component(&i2c->dev, &max9867_component, in max9867_i2c_probe()
526 dev_err(&i2c->dev, "Failed to register component: %d\n", ret); in max9867_i2c_probe()