Lines Matching defs:max98396
12 #include "max98396.h"
351 struct max98396_priv *max98396 = snd_soc_component_get_drvdata(component);
403 ret = regmap_read(max98396->regmap, MAX98396_R210F_GLOBAL_EN, &status);
408 ret = regmap_read(max98396->regmap, MAX98396_R2041_PCM_MODE_CFG, ®);
414 ret = regmap_read(max98396->regmap,
423 max98396_global_enable_onoff(max98396->regmap, false);
426 regmap_update_bits(max98396->regmap,
430 regmap_update_bits(max98396->regmap,
436 max98396_global_enable_onoff(max98396->regmap, true);
510 struct max98396_priv *max98396 = snd_soc_component_get_drvdata(component);
580 if (max98396->tdm_mode) {
581 if (params_rate(params) > max98396->tdm_max_samplerate) {
607 ret = regmap_read(max98396->regmap, MAX98396_R210F_GLOBAL_EN, &status);
612 ret = regmap_read(max98396->regmap, MAX98396_R2041_PCM_MODE_CFG, ®);
618 ret = regmap_read(max98396->regmap, MAX98396_R2043_PCM_SR_SETUP, ®);
627 max98396_global_enable_onoff(max98396->regmap, false);
631 regmap_update_bits(max98396->regmap, MAX98396_R2041_PCM_MODE_CFG,
635 regmap_update_bits(max98396->regmap, MAX98396_R2043_PCM_SR_SETUP,
639 if (max98396->interleave_mode &&
641 regmap_update_bits(max98396->regmap,
647 regmap_update_bits(max98396->regmap,
653 regmap_update_bits(max98396->regmap,
659 max98396_global_enable_onoff(max98396->regmap, true);
672 struct max98396_priv *max98396 =
681 max98396->tdm_mode = false;
683 max98396->tdm_mode = true;
694 max98396->tdm_max_samplerate = max98396_pcm_configs[ret].max_sr;
713 ret = regmap_read(max98396->regmap, MAX98396_R210F_GLOBAL_EN, &status);
718 ret = regmap_read(max98396->regmap, MAX98396_R2042_PCM_CLK_SETUP, ®);
724 ret = regmap_read(max98396->regmap, MAX98396_R2041_PCM_MODE_CFG, ®);
733 max98396_global_enable_onoff(max98396->regmap, false);
736 regmap_update_bits(max98396->regmap,
741 regmap_update_bits(max98396->regmap,
746 if (max98396->device_id == CODEC_TYPE_MAX98396) {
747 regmap_update_bits(max98396->regmap,
751 regmap_update_bits(max98396->regmap,
756 regmap_update_bits(max98396->regmap,
760 regmap_update_bits(max98396->regmap,
767 if (max98396->device_id == CODEC_TYPE_MAX98396) {
768 regmap_write(max98396->regmap,
771 regmap_write(max98396->regmap,
775 regmap_write(max98396->regmap,
778 regmap_write(max98396->regmap,
784 max98396_global_enable_onoff(max98396->regmap, true);
805 struct max98396_priv *max98396 =
810 max98396_global_enable_onoff(max98396->regmap, true);
813 max98396_global_enable_onoff(max98396->regmap, false);
815 max98396->tdm_mode = false;
959 struct max98396_priv *max98396 = snd_soc_component_get_drvdata(component);
962 if (max98396->device_id == CODEC_TYPE_MAX98396)
967 regmap_read(max98396->regmap, reg, &val);
980 struct max98396_priv *max98396 = snd_soc_component_get_drvdata(component);
991 if (max98396->device_id == CODEC_TYPE_MAX98396)
1000 regmap_update_bits(max98396->regmap, reg,
1113 struct max98396_priv *max98396 = snd_soc_component_get_drvdata(component);
1122 if (max98396->device_id == CODEC_TYPE_MAX98397) {
1138 ret = regmap_raw_read(max98396->regmap, reg, &val, 2);
1312 .name = "max98396-aif1",
1352 static void max98396_reset(struct max98396_priv *max98396, struct device *dev)
1357 ret = regmap_write(max98396->regmap,
1366 ret = regmap_read(max98396->regmap,
1367 GET_REG_ADDR_REV_ID(max98396->device_id), ®);
1379 struct max98396_priv *max98396 =
1383 max98396_reset(max98396, component->dev);
1386 if (max98396->device_id == CODEC_TYPE_MAX98396) {
1387 regmap_write(max98396->regmap,
1389 regmap_write(max98396->regmap,
1392 regmap_write(max98396->regmap,
1394 regmap_write(max98396->regmap,
1398 regmap_update_bits(max98396->regmap,
1401 (max98396->vbat == NULL) ?
1404 regmap_update_bits(max98396->regmap,
1407 regmap_update_bits(max98396->regmap,
1412 regmap_write(max98396->regmap,
1415 regmap_update_bits(max98396->regmap,
1418 regmap_update_bits(max98396->regmap,
1422 regmap_write(max98396->regmap,
1424 max98396->bypass_slot);
1426 regmap_write(max98396->regmap,
1428 max98396->v_slot);
1429 regmap_write(max98396->regmap,
1431 max98396->i_slot);
1432 regmap_write(max98396->regmap,
1434 max98396->spkfb_slot);
1436 if (max98396->v_slot < 8)
1437 if (max98396->device_id == CODEC_TYPE_MAX98396)
1438 regmap_update_bits(max98396->regmap,
1440 1 << max98396->v_slot, 0);
1442 regmap_update_bits(max98396->regmap,
1444 1 << max98396->v_slot, 0);
1446 if (max98396->device_id == CODEC_TYPE_MAX98396)
1447 regmap_update_bits(max98396->regmap,
1449 1 << (max98396->v_slot - 8), 0);
1451 regmap_update_bits(max98396->regmap,
1453 1 << (max98396->v_slot - 8), 0);
1455 if (max98396->i_slot < 8)
1456 if (max98396->device_id == CODEC_TYPE_MAX98396)
1457 regmap_update_bits(max98396->regmap,
1459 1 << max98396->i_slot, 0);
1461 regmap_update_bits(max98396->regmap,
1463 1 << max98396->i_slot, 0);
1465 if (max98396->device_id == CODEC_TYPE_MAX98396)
1466 regmap_update_bits(max98396->regmap,
1468 1 << (max98396->i_slot - 8), 0);
1470 regmap_update_bits(max98396->regmap,
1472 1 << (max98396->i_slot - 8), 0);
1475 if (max98396->interleave_mode)
1476 regmap_update_bits(max98396->regmap,
1481 regmap_update_bits(max98396->regmap,
1486 regmap_update_bits(max98396->regmap,
1489 max98396->dmon_stuck_enable ?
1492 regmap_update_bits(max98396->regmap,
1495 max98396->dmon_mag_enable ?
1498 switch (max98396->dmon_duration) {
1500 regmap_update_bits(max98396->regmap,
1505 regmap_update_bits(max98396->regmap,
1510 regmap_update_bits(max98396->regmap,
1515 regmap_update_bits(max98396->regmap,
1521 max98396->dmon_duration);
1524 switch (max98396->dmon_stuck_threshold) {
1526 regmap_update_bits(max98396->regmap,
1532 regmap_update_bits(max98396->regmap,
1538 regmap_update_bits(max98396->regmap,
1544 regmap_update_bits(max98396->regmap,
1551 max98396->dmon_stuck_threshold);
1554 switch (max98396->dmon_mag_threshold) {
1556 regmap_update_bits(max98396->regmap,
1559 (5 - max98396->dmon_mag_threshold)
1564 max98396->dmon_mag_threshold);
1568 regmap_update_bits(max98396->regmap,
1578 struct max98396_priv *max98396 = dev_get_drvdata(dev);
1580 regcache_cache_only(max98396->regmap, true);
1581 regcache_mark_dirty(max98396->regmap);
1583 max98396->core_supplies);
1584 if (max98396->pvdd)
1585 regulator_disable(max98396->pvdd);
1587 if (max98396->vbat)
1588 regulator_disable(max98396->vbat);
1595 struct max98396_priv *max98396 = dev_get_drvdata(dev);
1599 max98396->core_supplies);
1603 if (max98396->pvdd) {
1604 ret = regulator_enable(max98396->pvdd);
1609 if (max98396->vbat) {
1610 ret = regulator_enable(max98396->vbat);
1615 regcache_cache_only(max98396->regmap, false);
1616 max98396_reset(max98396, dev);
1617 regcache_sync(max98396->regmap);
1675 struct max98396_priv *max98396)
1680 max98396->v_slot = value & 0xF;
1682 max98396->v_slot = 0;
1685 max98396->i_slot = value & 0xF;
1687 max98396->i_slot = 1;
1690 max98396->spkfb_slot = value & 0xF;
1692 max98396->spkfb_slot = 2;
1695 max98396->bypass_slot = value & 0xF;
1697 max98396->bypass_slot = 0;
1699 max98396->dmon_stuck_enable =
1703 max98396->dmon_stuck_threshold = value;
1705 max98396->dmon_stuck_threshold = 15;
1707 max98396->dmon_mag_enable =
1711 max98396->dmon_mag_threshold = value;
1713 max98396->dmon_mag_threshold = 5;
1716 max98396->dmon_duration = value;
1718 max98396->dmon_duration = 64;
1723 struct max98396_priv *max98396 = priv;
1726 max98396->core_supplies);
1737 struct max98396_priv *max98396 = NULL;
1740 max98396 = devm_kzalloc(&i2c->dev, sizeof(*max98396), GFP_KERNEL);
1742 if (!max98396) {
1746 i2c_set_clientdata(i2c, max98396);
1748 max98396->device_id = id->driver_data;
1751 if (max98396->device_id == CODEC_TYPE_MAX98396)
1752 max98396->regmap = devm_regmap_init_i2c(i2c, &max98396_regmap);
1755 max98396->regmap = devm_regmap_init_i2c(i2c, &max98397_regmap);
1757 if (IS_ERR(max98396->regmap)) {
1758 ret = PTR_ERR(max98396->regmap);
1766 max98396->core_supplies[i].supply = max98396_core_supplies[i];
1769 max98396->core_supplies);
1775 max98396->vbat = devm_regulator_get_optional(&i2c->dev, "vbat");
1776 if (IS_ERR(max98396->vbat)) {
1777 if (PTR_ERR(max98396->vbat) == -EPROBE_DEFER)
1780 max98396->vbat = NULL;
1783 max98396->pvdd = devm_regulator_get_optional(&i2c->dev, "pvdd");
1784 if (IS_ERR(max98396->pvdd)) {
1785 if (PTR_ERR(max98396->pvdd) == -EPROBE_DEFER)
1788 max98396->pvdd = NULL;
1792 max98396->core_supplies);
1799 max98396);
1803 if (max98396->pvdd) {
1804 ret = regulator_enable(max98396->pvdd);
1810 max98396->pvdd);
1815 if (max98396->vbat) {
1816 ret = regulator_enable(max98396->vbat);
1822 max98396->vbat);
1829 max98396->interleave_mode = true;
1831 max98396->interleave_mode = false;
1834 max98396_read_device_property(&i2c->dev, max98396);
1837 max98396->reset_gpio = devm_gpiod_get_optional(&i2c->dev,
1839 if (IS_ERR(max98396->reset_gpio)) {
1840 ret = PTR_ERR(max98396->reset_gpio);
1845 if (max98396->reset_gpio) {
1847 gpiod_set_value_cansleep(max98396->reset_gpio, 0);
1852 ret = regmap_read(max98396->regmap,
1853 GET_REG_ADDR_REV_ID(max98396->device_id), ®);
1861 if (max98396->device_id == CODEC_TYPE_MAX98396)
1878 { "max98396", CODEC_TYPE_MAX98396},
1887 { .compatible = "adi,max98396", },
1905 .name = "max98396",