]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mfd: cs42l43: Prepare support for updated bios patch
authorMaciej Strozek <mstrozek@opensource.cirrus.com>
Thu, 5 Dec 2024 11:58:19 +0000 (11:58 +0000)
committerLee Jones <lee@kernel.org>
Tue, 17 Dec 2024 13:17:25 +0000 (13:17 +0000)
Newer bios patch firmware versions now require use of the shadow register
interface, which was previously only required by the full firmware, update
the check accordingly.

Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20241205115822.2371719-1-ckeepax@opensource.cirrus.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/cs42l43.c

index e5f17fc430e4879b52bf4758af3313ee66614692..11a1b7f1e121dfd57eb19d0731a2feb45fb38782 100644 (file)
@@ -48,6 +48,7 @@
 
 #define CS42L43_MCU_SUPPORTED_REV              0x2105
 #define CS42L43_MCU_SHADOW_REGS_REQUIRED_REV   0x2200
+#define CS42L43_BIOS_SHADOW_REGS_REQUIRED_REV  0x1002
 #define CS42L43_MCU_SUPPORTED_BIOS_REV         0x0001
 
 #define CS42L43_VDDP_DELAY_US                  50
@@ -773,7 +774,8 @@ static int cs42l43_mcu_update_step(struct cs42l43 *cs42l43)
         * Later versions of the firmwware require the driver to access some
         * features through a set of shadow registers.
         */
-       shadow = mcu_rev >= CS42L43_MCU_SHADOW_REGS_REQUIRED_REV;
+       shadow = (mcu_rev >= CS42L43_MCU_SHADOW_REGS_REQUIRED_REV) ||
+                (bios_rev >= CS42L43_BIOS_SHADOW_REGS_REQUIRED_REV);
 
        ret = regmap_read(cs42l43->regmap, CS42L43_BOOT_CONTROL, &secure_cfg);
        if (ret) {