• Richard Fitzgerald's avatar
    ALSA: hda: cs35l56: Firmware file must match the version of preloaded firmware · 6f8ad048
    Richard Fitzgerald authored
    Check whether the firmware is already patched. If so, include the
    firmware version in the firmware file name.
    
    If the firmware has already been patched by the BIOS the driver
    can only replace it if it has control of hard RESET.
    
    If the driver cannot replace the firmware, it can still load a wmfw
    (for ALSA control definitions) and/or a bin (for additional tunings).
    But these must match the version of firmware that is running on the
    CS35L56.
    
    The firmware is pre-patched if either:
     - FIRMWARE_MISSING == 0, or
     - it is a secured CS35L56 (which implies that is was already patched),
    
    cs35l56_hw_init() will set preloaded_fw_ver to the (non-zero)
    firmware version if either of these conditions is true.
    
    Normal (unpatched or replaceable firmware):
       cs35l56-rev-dsp1-misc[-system_name].[wmfw|bin]
    
    Preloaded firmware:
       cs35l56-rev[-s]-VVVVVV-dsp1-misc[-system_name].[wmfw|bin]
    
    Where:
       [-s] is an optional -s added into the name for a secured CS35L56
       VVVVVV is the 24-bit firmware version in hexadecimal.
    
    Backport note:
    This won't apply to kernel versions older than v6.6.
    Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
    Fixes: 73cfbfa9 ("ALSA: hda/cs35l56: Add driver for Cirrus Logic CS35L56 amplifier")
    Link: https://msgid.link/r/20240129162737.497-18-rf@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    6f8ad048
cs35l56_hda.c 30 KB