Hi,
I am using MAX98390 ALSA Soc Audio driver in Linux 6.1.36 (Yocto Mickledore). I want to modify 3 registers.
0x2043 Boost Current Control change from 0x80 (4.1A) to 0x01 (0.5A) to limit current at 0.5A
0x2041 Boost Control change from 0x1c to 0x80 to set to 6.5V to disable Boost drive voltage
0x2076 Vout Headroom change from 0x0e to 0x1c to adjust Boost voltage output headroom for envelope tracker
Below are my changes in the max98390.c:
diff --git a/sound/soc/codecs/max98390.c b/sound/soc/codecs/max98390.c
index 7a5260ff8d6b..1446b68203cb 100644
--- a/sound/soc/codecs/max98390.c
+++ b/sound/soc/codecs/max98390.c
@@ -68,9 +68,9 @@ static struct reg_default max98390_reg_defaults[] = {
{MAX98390_SSM_CFG, 0x85},
{MAX98390_MEAS_EN, 0x03},
{MAX98390_MEAS_DSP_CFG, 0x0f},
- {MAX98390_BOOST_CTRL0, 0x1c},
+ {MAX98390_BOOST_CTRL0, 0x80},
{MAX98390_BOOST_CTRL3, 0x01},
- {MAX98390_BOOST_CTRL1, 0x40},
+ {MAX98390_BOOST_CTRL1, 0x01},
{MAX98390_MEAS_ADC_CFG, 0x07},
{MAX98390_MEAS_ADC_BASE_MSB, 0x00},
{MAX98390_MEAS_ADC_BASE_LSB, 0x23},
@@ -113,7 +113,7 @@ static struct reg_default max98390_reg_defaults[] = {
{MAX98390_BROWNOUT_LIM_HLD, 0x00},
{MAX98390_BROWNOUT_CLIP_HLD, 0x00},
{MAX98390_BROWNOUT_GAIN_HLD, 0x00},
- {MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x0f},
+ {MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x1c},
{MAX98390_ENV_TRACK_BOOST_VOUT_DELAY, 0x80},
{MAX98390_ENV_TRACK_REL_RATE, 0x07},
{MAX98390_ENV_TRACK_HOLD_RATE, 0x07},
But the values are not changing in the device. Below are the outputs of i2ctransfer:
~$ sudo /usr/sbin/i2ctransfer -f -y 2 w2@0x38 0x20 0x41 r1@0x38
0x1c
~$ sudo /usr/sbin/i2ctransfer -f -y 2 w2@0x38 0x20 0x43 r1@0x38
0x40
~$ sudo /usr/sbin/i2ctransfer -f -y 2 w2@0x38 0x20 0x76 r1@0x38
0x0e
How can I modify the registers?
Thanks
Chris