Lines Matching defs:max98373
20 #include "max98373.h"
21 #include "max98373-sdw.h"
251 struct max98373_priv *max98373 = dev_get_drvdata(dev);
255 for (i = 0; i < max98373->cache_num; i++)
256 regmap_read(max98373->regmap, max98373->cache[i].reg, &max98373->cache[i].val);
258 regcache_cache_only(max98373->regmap, true);
268 struct max98373_priv *max98373 = dev_get_drvdata(dev);
271 if (!max98373->first_hw_init)
288 regcache_cache_only(max98373->regmap, false);
289 regcache_sync(max98373->regmap);
362 struct max98373_priv *max98373 = dev_get_drvdata(dev);
364 regcache_cache_only(max98373->regmap, false);
365 if (max98373->first_hw_init)
366 regcache_cache_bypass(max98373->regmap, true);
371 if (!max98373->first_hw_init)
378 max98373_reset(max98373, dev);
381 regmap_write(max98373->regmap, MAX98373_R2025_AUDIO_IF_MODE, 3);
383 regmap_write(max98373->regmap, MAX98373_R2047_IV_SENSE_ADC_EN, 3);
385 regmap_write(max98373->regmap, MAX98373_R2036_SOUNDWIRE_CTRL, 5);
387 regmap_write(max98373->regmap, MAX98373_R2028_PCM_SR_SETUP_2, 0x88);
389 regmap_write(max98373->regmap,
392 regmap_write(max98373->regmap,
396 regmap_write(max98373->regmap,
399 regmap_write(max98373->regmap,
403 regmap_write(max98373->regmap,
407 regmap_write(max98373->regmap,
411 regmap_write(max98373->regmap,
413 (max98373->i_slot << MAX98373_PCM_TX_CH_SRC_A_I_SHIFT |
414 max98373->v_slot) & 0xFF);
415 if (max98373->v_slot < 8)
416 regmap_update_bits(max98373->regmap,
418 1 << max98373->v_slot, 0);
420 regmap_update_bits(max98373->regmap,
422 1 << (max98373->v_slot - 8), 0);
424 if (max98373->i_slot < 8)
425 regmap_update_bits(max98373->regmap,
427 1 << max98373->i_slot, 0);
429 regmap_update_bits(max98373->regmap,
431 1 << (max98373->i_slot - 8), 0);
434 regmap_write(max98373->regmap,
436 max98373->spkfb_slot & 0xFF);
439 if (max98373->interleave_mode)
440 regmap_update_bits(max98373->regmap,
446 regmap_update_bits(max98373->regmap,
450 regmap_write(max98373->regmap, MAX98373_R20B5_BDE_EN, 1);
451 regmap_write(max98373->regmap, MAX98373_R20E2_LIMITER_EN, 1);
453 if (max98373->first_hw_init) {
454 regcache_cache_bypass(max98373->regmap, false);
455 regcache_mark_dirty(max98373->regmap);
458 max98373->first_hw_init = true;
459 max98373->hw_init = true;
491 struct max98373_priv *max98373 = dev_get_drvdata(dev);
504 regmap_write(max98373->regmap, MAX98373_R2036_SOUNDWIRE_CTRL, value);
507 regmap_write(max98373->regmap, MAX98373_R2028_PCM_SR_SETUP_2, 0x88);
520 struct max98373_priv *max98373 =
532 if (!max98373->slave)
540 if (max98373->slot) {
541 stream_config.ch_count = max98373->slot;
542 port_config.ch_mask = max98373->rx_mask;
552 ret = sdw_stream_add_slave(max98373->slave, &stream_config,
582 max98373->ch_size = snd_pcm_format_width(params_format(params));
584 regmap_update_bits(max98373->regmap,
632 regmap_update_bits(max98373->regmap,
638 regmap_update_bits(max98373->regmap,
650 struct max98373_priv *max98373 =
655 if (!max98373->slave)
658 sdw_stream_remove_slave(max98373->slave, sdw_stream);
682 struct max98373_priv *max98373 =
690 max98373->tdm_mode = false;
692 max98373->tdm_mode = true;
694 max98373->rx_mask = rx_mask;
695 max98373->slot = slots;
710 .name = "max98373-aif1",
731 struct max98373_priv *max98373;
737 max98373 = devm_kzalloc(dev, sizeof(*max98373), GFP_KERNEL);
738 if (!max98373)
741 dev_set_drvdata(dev, max98373);
742 max98373->regmap = regmap;
743 max98373->slave = slave;
745 regcache_cache_only(max98373->regmap, true);
747 max98373->cache_num = ARRAY_SIZE(max98373_sdw_cache_reg);
748 max98373->cache = devm_kcalloc(dev, max98373->cache_num,
749 sizeof(*max98373->cache),
751 if (!max98373->cache)
754 for (i = 0; i < max98373->cache_num; i++)
755 max98373->cache[i].reg = max98373_sdw_cache_reg[i];
758 max98373_slot_config(dev, max98373);
760 max98373->hw_init = false;
761 max98373->first_hw_init = false;
793 struct max98373_priv *max98373 = dev_get_drvdata(&slave->dev);
796 max98373->hw_init = false;
801 if (max98373->hw_init || status != SDW_SLAVE_ATTACHED)
852 { .compatible = "maxim,max98373", },
874 .name = "max98373",