Lines Matching refs:max98390
3 * max98390.c -- MAX98390 ALSA Soc Audio driver
25 #include "max98390.h"
167 struct max98390_priv *max98390 =
180 max98390->provider = true;
188 regmap_update_bits(max98390->regmap,
204 regmap_update_bits(max98390->regmap,
227 regmap_update_bits(max98390->regmap,
253 struct max98390_priv *max98390 =
266 if (max98390->provider) {
270 if (rate_table[i] >= max98390->sysclk)
278 regmap_update_bits(max98390->regmap,
284 if (!max98390->tdm_mode) {
293 regmap_update_bits(max98390->regmap,
307 struct max98390_priv *max98390 =
330 regmap_update_bits(max98390->regmap,
373 regmap_update_bits(max98390->regmap,
388 struct max98390_priv *max98390 =
395 max98390->tdm_mode = false;
397 max98390->tdm_mode = true;
400 "Tdm mode : %d\n", max98390->tdm_mode);
410 regmap_update_bits(max98390->regmap,
432 regmap_update_bits(max98390->regmap,
437 regmap_write(max98390->regmap,
440 regmap_write(max98390->regmap,
445 regmap_write(max98390->regmap,
448 regmap_write(max98390->regmap,
459 struct max98390_priv *max98390 =
462 max98390->sysclk = freq;
478 struct max98390_priv *max98390 =
483 regmap_update_bits(max98390->regmap,
486 regmap_update_bits(max98390->regmap,
491 regmap_update_bits(max98390->regmap,
494 regmap_update_bits(max98390->regmap,
540 struct max98390_priv *max98390 =
543 max98390->ref_rdc_value = ucontrol->value.integer.value[0];
545 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE0,
546 max98390->ref_rdc_value & 0x000000ff);
547 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE1,
548 (max98390->ref_rdc_value >> 8) & 0x000000ff);
549 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE2,
550 (max98390->ref_rdc_value >> 16) & 0x000000ff);
560 struct max98390_priv *max98390 =
563 ucontrol->value.integer.value[0] = max98390->ref_rdc_value;
573 struct max98390_priv *max98390 =
576 max98390->ambient_temp_value = ucontrol->value.integer.value[0];
578 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE1,
579 (max98390->ambient_temp_value >> 8) & 0x000000ff);
580 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE0,
581 (max98390->ambient_temp_value) & 0x000000ff);
591 struct max98390_priv *max98390 =
594 ucontrol->value.integer.value[0] = max98390->ambient_temp_value;
616 struct max98390_priv *max98390 =
619 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE1, &rdc);
620 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE0, &rdc0);
637 struct max98390_priv *max98390 = snd_soc_component_get_drvdata(component);
643 regmap_read(max98390->regmap, MAX98390_R23FF_GLOBAL_EN, &val);
646 regmap_update_bits(max98390->regmap, MAX98390_R203A_AMP_EN,
648 regmap_update_bits(max98390->regmap, MAX98390_R23FF_GLOBAL_EN,
652 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE1, &rdc);
653 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE0, &rdc_cal_result);
654 regmap_read(max98390->regmap, MAX98390_MEAS_ADC_CH2_READ, &temp);
658 regmap_update_bits(max98390->regmap, MAX98390_R23FF_GLOBAL_EN,
660 regmap_update_bits(max98390->regmap, MAX98390_R203A_AMP_EN,
668 max98390->ref_rdc_value = 268435456U / rdc_cal_result;
670 max98390->ambient_temp_value = temp * 52 - 1188;
771 .name = "max98390-aif1",
796 struct max98390_priv *max98390 =
804 if (!strcmp(max98390->dsm_param_name, "default")) {
813 max98390->dsm_param_name);
827 "max98390: param fw size %zd\n",
846 regmap_write(max98390->regmap, MAX98390_R203A_AMP_EN, 0x80);
848 regmap_bulk_write(max98390->regmap, param_start_addr,
850 regmap_write(max98390->regmap, MAX98390_R23E1_DSP_GLOBAL_EN, 0x01);
860 struct max98390_priv *max98390 =
863 regmap_write(max98390->regmap, MAX98390_CLK_MON, 0x6f);
864 regmap_write(max98390->regmap, MAX98390_DAT_MON, 0x00);
865 regmap_write(max98390->regmap, MAX98390_PWR_GATE_CTL, 0x00);
866 regmap_write(max98390->regmap, MAX98390_PCM_RX_EN_A, 0x03);
867 regmap_write(max98390->regmap, MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x0e);
868 regmap_write(max98390->regmap, MAX98390_BOOST_BYPASS1, 0x46);
869 regmap_write(max98390->regmap, MAX98390_FET_SCALING3, 0x03);
872 regmap_write(max98390->regmap,
874 (max98390->i_l_slot << 4 |
875 max98390->v_l_slot)&0xFF);
877 if (max98390->v_l_slot < 8) {
878 regmap_update_bits(max98390->regmap,
880 1 << max98390->v_l_slot, 0);
881 regmap_update_bits(max98390->regmap,
883 1 << max98390->v_l_slot,
884 1 << max98390->v_l_slot);
886 regmap_update_bits(max98390->regmap,
888 1 << (max98390->v_l_slot - 8), 0);
889 regmap_update_bits(max98390->regmap,
891 1 << (max98390->v_l_slot - 8),
892 1 << (max98390->v_l_slot - 8));
895 if (max98390->i_l_slot < 8) {
896 regmap_update_bits(max98390->regmap,
898 1 << max98390->i_l_slot, 0);
899 regmap_update_bits(max98390->regmap,
901 1 << max98390->i_l_slot,
902 1 << max98390->i_l_slot);
904 regmap_update_bits(max98390->regmap,
906 1 << (max98390->i_l_slot - 8), 0);
907 regmap_update_bits(max98390->regmap,
909 1 << (max98390->i_l_slot - 8),
910 1 << (max98390->i_l_slot - 8));
916 struct max98390_priv *max98390 =
919 regmap_write(max98390->regmap, MAX98390_SOFTWARE_RESET, 0x01);
929 if (max98390->ref_rdc_value) {
930 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE0,
931 max98390->ref_rdc_value & 0x000000ff);
932 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE1,
933 (max98390->ref_rdc_value >> 8) & 0x000000ff);
934 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE2,
935 (max98390->ref_rdc_value >> 16) & 0x000000ff);
937 if (max98390->ambient_temp_value) {
938 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE1,
939 (max98390->ambient_temp_value >> 8) & 0x000000ff);
940 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE0,
941 (max98390->ambient_temp_value) & 0x000000ff);
950 struct max98390_priv *max98390 = dev_get_drvdata(dev);
954 regcache_cache_only(max98390->regmap, true);
955 regcache_mark_dirty(max98390->regmap);
962 struct max98390_priv *max98390 = dev_get_drvdata(dev);
966 regcache_cache_only(max98390->regmap, false);
967 regcache_sync(max98390->regmap);
1002 struct max98390_priv *max98390)
1008 max98390->v_l_slot = value & 0xF;
1010 max98390->v_l_slot = 0;
1013 max98390->i_l_slot = value & 0xF;
1015 max98390->i_l_slot = 1;
1023 struct max98390_priv *max98390 = NULL;
1035 max98390 = devm_kzalloc(&i2c->dev, sizeof(*max98390), GFP_KERNEL);
1036 if (!max98390) {
1040 i2c_set_clientdata(i2c, max98390);
1043 &max98390->ambient_temp_value);
1049 &max98390->ref_rdc_value);
1057 __func__, max98390->ref_rdc_value,
1058 max98390->ambient_temp_value);
1061 &max98390->dsm_param_name);
1063 max98390->dsm_param_name = "default";
1066 max98390_slot_config(i2c, max98390);
1069 max98390->regmap = devm_regmap_init_i2c(i2c, &max98390_regmap);
1070 if (IS_ERR(max98390->regmap)) {
1071 ret = PTR_ERR(max98390->regmap);
1089 ret = regmap_read(max98390->regmap,
1107 { "max98390", 0},
1115 { .compatible = "maxim,max98390", },
1131 .name = "max98390",