Lines Matching defs:tas5805m

188 static void tas5805m_refresh(struct tas5805m_priv *tas5805m)
190 struct regmap *rm = tas5805m->regmap;
192 dev_dbg(&tas5805m->i2c->dev, "refresh: is_muted=%d, vol=%d/%d\n",
193 tas5805m->is_muted, tas5805m->vol[0], tas5805m->vol[1]);
203 set_dsp_scale(rm, 0x24, tas5805m->vol[0]);
204 set_dsp_scale(rm, 0x28, tas5805m->vol[1]);
211 (tas5805m->is_muted ? DCTRL2_MUTE : 0) |
231 struct tas5805m_priv *tas5805m =
234 mutex_lock(&tas5805m->lock);
235 ucontrol->value.integer.value[0] = tas5805m->vol[0];
236 ucontrol->value.integer.value[1] = tas5805m->vol[1];
237 mutex_unlock(&tas5805m->lock);
252 struct tas5805m_priv *tas5805m =
260 mutex_lock(&tas5805m->lock);
261 if (tas5805m->vol[0] != ucontrol->value.integer.value[0] ||
262 tas5805m->vol[1] != ucontrol->value.integer.value[1]) {
263 tas5805m->vol[0] = ucontrol->value.integer.value[0];
264 tas5805m->vol[1] = ucontrol->value.integer.value[1];
266 tas5805m->vol[0], tas5805m->vol[1],
267 tas5805m->is_powered);
268 if (tas5805m->is_powered)
269 tas5805m_refresh(tas5805m);
272 mutex_unlock(&tas5805m->lock);
306 struct tas5805m_priv *tas5805m =
314 schedule_work(&tas5805m->work);
331 struct tas5805m_priv *tas5805m =
333 struct regmap *rm = tas5805m->regmap;
335 dev_dbg(&tas5805m->i2c->dev, "DSP startup\n");
337 mutex_lock(&tas5805m->lock);
346 send_cfg(rm, tas5805m->dsp_cfg_data, tas5805m->dsp_cfg_len);
348 tas5805m->is_powered = true;
349 tas5805m_refresh(tas5805m);
350 mutex_unlock(&tas5805m->lock);
357 struct tas5805m_priv *tas5805m =
359 struct regmap *rm = tas5805m->regmap;
365 cancel_work_sync(&tas5805m->work);
367 mutex_lock(&tas5805m->lock);
368 if (tas5805m->is_powered) {
369 tas5805m->is_powered = false;
384 mutex_unlock(&tas5805m->lock);
416 struct tas5805m_priv *tas5805m =
419 mutex_lock(&tas5805m->lock);
421 mute, tas5805m->is_powered);
423 tas5805m->is_muted = mute;
424 if (tas5805m->is_powered)
425 tas5805m_refresh(tas5805m);
426 mutex_unlock(&tas5805m->lock);
438 .name = "tas5805m-amplifier",
464 struct tas5805m_priv *tas5805m;
477 tas5805m = devm_kzalloc(dev, sizeof(struct tas5805m_priv), GFP_KERNEL);
478 if (!tas5805m)
481 tas5805m->i2c = i2c;
482 tas5805m->pvdd = devm_regulator_get(dev, "pvdd");
483 if (IS_ERR(tas5805m->pvdd)) {
485 PTR_ERR(tas5805m->pvdd));
486 return PTR_ERR(tas5805m->pvdd);
489 dev_set_drvdata(dev, tas5805m);
490 tas5805m->regmap = regmap;
491 tas5805m->gpio_pdn_n = devm_gpiod_get(dev, "pdn", GPIOD_OUT_LOW);
492 if (IS_ERR(tas5805m->gpio_pdn_n)) {
494 PTR_ERR(tas5805m->gpio_pdn_n));
495 return PTR_ERR(tas5805m->gpio_pdn_n);
522 tas5805m->dsp_cfg_len = fw->size;
523 tas5805m->dsp_cfg_data = devm_kmemdup(dev, fw->data, fw->size, GFP_KERNEL);
524 if (!tas5805m->dsp_cfg_data) {
541 tas5805m->vol[0] = TAS5805M_VOLUME_MIN;
542 tas5805m->vol[1] = TAS5805M_VOLUME_MIN;
544 ret = regulator_enable(tas5805m->pvdd);
551 gpiod_set_value(tas5805m->gpio_pdn_n, 1);
554 INIT_WORK(&tas5805m->work, do_work);
555 mutex_init(&tas5805m->lock);
564 gpiod_set_value(tas5805m->gpio_pdn_n, 0);
565 regulator_disable(tas5805m->pvdd);
575 struct tas5805m_priv *tas5805m = dev_get_drvdata(dev);
577 cancel_work_sync(&tas5805m->work);
579 gpiod_set_value(tas5805m->gpio_pdn_n, 0);
581 regulator_disable(tas5805m->pvdd);
585 { "tas5805m", },
592 { .compatible = "ti,tas5805m", },
603 .name = "tas5805m",