]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ASoC: sgtl5000: Fix VDDA and VDDIO comparison
authorMarek Vasut <marex@denx.de>
Fri, 20 Dec 2019 16:44:50 +0000 (17:44 +0100)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Mon, 16 Mar 2020 11:27:28 +0000 (12:27 +0100)
BugLink: https://bugs.launchpad.net/bugs/1867051
commit e19ecbf105b236a6334fab64d8fd5437b12ee019 upstream.

Comparing the voltage of VDDA and VDDIO to determine whether or not to
enable VDDC manual override is insufficient. This is a problem in case
the VDDA is supplied from different regulator than VDDIO, while both
report the same voltage to the regulator framework. In that case where
VDDA and VDDIO is supplied by different regulators, the VDDC manual
override must not be applied.

Fixes: b6319b061ba2 ("ASoC: sgtl5000: Fix charge pump source assignment")
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Igor Opaniuk <igor.opaniuk@toradex.com>
Cc: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Link: https://lore.kernel.org/r/20191220164450.1395038-2-marex@denx.de
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
sound/soc/codecs/sgtl5000.c

index 8e5e48f6a24bef9bc36349c7a72cbf545e8e69fc..2208ca8ec37ede941f26f0583cf120827aaa4928 100644 (file)
@@ -1343,7 +1343,8 @@ static int sgtl5000_set_power_regs(struct snd_soc_component *component)
                 * if vddio == vdda the source of charge pump should be
                 * assigned manually to VDDIO
                 */
-               if (vddio == vdda) {
+               if (regulator_is_equal(sgtl5000->supplies[VDDA].consumer,
+                                      sgtl5000->supplies[VDDIO].consumer)) {
                        lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD;
                        lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO <<
                                    SGTL5000_VDDC_MAN_ASSN_SHIFT;