Lines Matching full:max98390
3 * max98390.c -- MAX98390 ALSA Soc Audio driver
25 #include "max98390.h"
169 struct max98390_priv *max98390 = in max98390_dai_set_fmt() local
182 max98390->master = true; in max98390_dai_set_fmt()
190 regmap_update_bits(max98390->regmap, in max98390_dai_set_fmt()
206 regmap_update_bits(max98390->regmap, in max98390_dai_set_fmt()
229 regmap_update_bits(max98390->regmap, in max98390_dai_set_fmt()
255 struct max98390_priv *max98390 = in max98390_set_clock() local
268 if (max98390->master) { in max98390_set_clock()
272 if (rate_table[i] >= max98390->sysclk) in max98390_set_clock()
280 regmap_update_bits(max98390->regmap, in max98390_set_clock()
286 if (!max98390->tdm_mode) { in max98390_set_clock()
295 regmap_update_bits(max98390->regmap, in max98390_set_clock()
309 struct max98390_priv *max98390 = in max98390_dai_hw_params() local
332 regmap_update_bits(max98390->regmap, in max98390_dai_hw_params()
375 regmap_update_bits(max98390->regmap, in max98390_dai_hw_params()
390 struct max98390_priv *max98390 = in max98390_dai_tdm_slot() local
397 max98390->tdm_mode = false; in max98390_dai_tdm_slot()
399 max98390->tdm_mode = true; in max98390_dai_tdm_slot()
402 "Tdm mode : %d\n", max98390->tdm_mode); in max98390_dai_tdm_slot()
412 regmap_update_bits(max98390->regmap, in max98390_dai_tdm_slot()
434 regmap_update_bits(max98390->regmap, in max98390_dai_tdm_slot()
439 regmap_write(max98390->regmap, in max98390_dai_tdm_slot()
442 regmap_write(max98390->regmap, in max98390_dai_tdm_slot()
447 regmap_write(max98390->regmap, in max98390_dai_tdm_slot()
450 regmap_write(max98390->regmap, in max98390_dai_tdm_slot()
461 struct max98390_priv *max98390 = in max98390_dai_set_sysclk() local
464 max98390->sysclk = freq; in max98390_dai_set_sysclk()
480 struct max98390_priv *max98390 = in max98390_dac_event() local
485 regmap_update_bits(max98390->regmap, in max98390_dac_event()
488 regmap_update_bits(max98390->regmap, in max98390_dac_event()
493 regmap_update_bits(max98390->regmap, in max98390_dac_event()
496 regmap_update_bits(max98390->regmap, in max98390_dac_event()
542 struct max98390_priv *max98390 = in max98390_ref_rdc_put() local
545 max98390->ref_rdc_value = ucontrol->value.integer.value[0]; in max98390_ref_rdc_put()
547 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE0, in max98390_ref_rdc_put()
548 max98390->ref_rdc_value & 0x000000ff); in max98390_ref_rdc_put()
549 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE1, in max98390_ref_rdc_put()
550 (max98390->ref_rdc_value >> 8) & 0x000000ff); in max98390_ref_rdc_put()
551 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE2, in max98390_ref_rdc_put()
552 (max98390->ref_rdc_value >> 16) & 0x000000ff); in max98390_ref_rdc_put()
562 struct max98390_priv *max98390 = in max98390_ref_rdc_get() local
565 ucontrol->value.integer.value[0] = max98390->ref_rdc_value; in max98390_ref_rdc_get()
575 struct max98390_priv *max98390 = in max98390_ambient_temp_put() local
578 max98390->ambient_temp_value = ucontrol->value.integer.value[0]; in max98390_ambient_temp_put()
580 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE1, in max98390_ambient_temp_put()
581 (max98390->ambient_temp_value >> 8) & 0x000000ff); in max98390_ambient_temp_put()
582 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE0, in max98390_ambient_temp_put()
583 (max98390->ambient_temp_value) & 0x000000ff); in max98390_ambient_temp_put()
593 struct max98390_priv *max98390 = in max98390_ambient_temp_get() local
596 ucontrol->value.integer.value[0] = max98390->ambient_temp_value; in max98390_ambient_temp_get()
618 struct max98390_priv *max98390 = in max98390_adaptive_rdc_get() local
621 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE1, &rdc); in max98390_adaptive_rdc_get()
622 regmap_read(max98390->regmap, THERMAL_RDC_RD_BACK_BYTE0, &rdc0); in max98390_adaptive_rdc_get()
735 .name = "max98390-aif1",
760 struct max98390_priv *max98390 = in max98390_dsm_init() local
782 "max98390: param fw size %zd\n", in max98390_dsm_init()
801 regmap_write(max98390->regmap, MAX98390_R203A_AMP_EN, 0x80); in max98390_dsm_init()
803 regmap_bulk_write(max98390->regmap, param_start_addr, in max98390_dsm_init()
805 regmap_write(max98390->regmap, MAX98390_R23E1_DSP_GLOBAL_EN, 0x01); in max98390_dsm_init()
817 struct max98390_priv *max98390 = in max98390_dsm_calibrate() local
820 regmap_write(max98390->regmap, MAX98390_R203A_AMP_EN, 0x81); in max98390_dsm_calibrate()
821 regmap_write(max98390->regmap, MAX98390_R23FF_GLOBAL_EN, 0x01); in max98390_dsm_calibrate()
823 regmap_read(max98390->regmap, in max98390_dsm_calibrate()
825 regmap_read(max98390->regmap, in max98390_dsm_calibrate()
829 max98390->ref_rdc_value = 268435456U / rdc_cal_result; in max98390_dsm_calibrate()
831 regmap_read(max98390->regmap, MAX98390_MEAS_ADC_CH2_READ, &temp); in max98390_dsm_calibrate()
832 max98390->ambient_temp_value = temp * 52 - 1188; in max98390_dsm_calibrate()
841 regmap_write(max98390->regmap, MAX98390_R23FF_GLOBAL_EN, 0x00); in max98390_dsm_calibrate()
842 regmap_write(max98390->regmap, MAX98390_R203A_AMP_EN, 0x80); in max98390_dsm_calibrate()
849 struct max98390_priv *max98390 = in max98390_init_regs() local
852 regmap_write(max98390->regmap, MAX98390_CLK_MON, 0x6f); in max98390_init_regs()
853 regmap_write(max98390->regmap, MAX98390_DAT_MON, 0x00); in max98390_init_regs()
854 regmap_write(max98390->regmap, MAX98390_PWR_GATE_CTL, 0x00); in max98390_init_regs()
855 regmap_write(max98390->regmap, MAX98390_PCM_RX_EN_A, 0x03); in max98390_init_regs()
856 regmap_write(max98390->regmap, MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x0e); in max98390_init_regs()
857 regmap_write(max98390->regmap, MAX98390_BOOST_BYPASS1, 0x46); in max98390_init_regs()
858 regmap_write(max98390->regmap, MAX98390_FET_SCALING3, 0x03); in max98390_init_regs()
863 struct max98390_priv *max98390 = in max98390_probe() local
866 regmap_write(max98390->regmap, MAX98390_SOFTWARE_RESET, 0x01); in max98390_probe()
876 if (max98390->ref_rdc_value) { in max98390_probe()
877 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE0, in max98390_probe()
878 max98390->ref_rdc_value & 0x000000ff); in max98390_probe()
879 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE1, in max98390_probe()
880 (max98390->ref_rdc_value >> 8) & 0x000000ff); in max98390_probe()
881 regmap_write(max98390->regmap, DSM_TPROT_RECIP_RDC_ROOM_BYTE2, in max98390_probe()
882 (max98390->ref_rdc_value >> 16) & 0x000000ff); in max98390_probe()
884 if (max98390->ambient_temp_value) { in max98390_probe()
885 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE1, in max98390_probe()
886 (max98390->ambient_temp_value >> 8) & 0x000000ff); in max98390_probe()
887 regmap_write(max98390->regmap, DSM_TPROT_ROOM_TEMPERATURE_BYTE0, in max98390_probe()
888 (max98390->ambient_temp_value) & 0x000000ff); in max98390_probe()
897 struct max98390_priv *max98390 = dev_get_drvdata(dev); in max98390_suspend() local
901 regcache_cache_only(max98390->regmap, true); in max98390_suspend()
902 regcache_mark_dirty(max98390->regmap); in max98390_suspend()
909 struct max98390_priv *max98390 = dev_get_drvdata(dev); in max98390_resume() local
913 regcache_cache_only(max98390->regmap, false); in max98390_resume()
914 regcache_sync(max98390->regmap); in max98390_resume()
955 struct max98390_priv *max98390 = NULL; in max98390_i2c_probe() local
966 max98390 = devm_kzalloc(&i2c->dev, sizeof(*max98390), GFP_KERNEL); in max98390_i2c_probe()
967 if (!max98390) { in max98390_i2c_probe()
971 i2c_set_clientdata(i2c, max98390); in max98390_i2c_probe()
974 &max98390->ambient_temp_value); in max98390_i2c_probe()
980 &max98390->ref_rdc_value); in max98390_i2c_probe()
988 __func__, max98390->ref_rdc_value, in max98390_i2c_probe()
989 max98390->ambient_temp_value); in max98390_i2c_probe()
992 max98390->regmap = devm_regmap_init_i2c(i2c, &max98390_regmap); in max98390_i2c_probe()
993 if (IS_ERR(max98390->regmap)) { in max98390_i2c_probe()
994 ret = PTR_ERR(max98390->regmap); in max98390_i2c_probe()
1001 ret = regmap_read(max98390->regmap, in max98390_i2c_probe()
1009 dev_info(&i2c->dev, "MAX98390 revisionID: 0x%02X\n", reg); in max98390_i2c_probe()
1019 { "max98390", 0},
1027 { .compatible = "maxim,max98390", },
1043 .name = "max98390",
1054 MODULE_DESCRIPTION("ALSA SoC MAX98390 driver");