Skip to content
  • Inaky Perez-Gonzalez's avatar
    wimax/i2400m: add the ability to fallback to other firmware files if the default is not there · 1039abbc
    Inaky Perez-Gonzalez authored
    
    
    In order to support backwards compatibility with older firmwares when
    a driver is updated by a new kernel release, the i2400m bus drivers
    can declare a list of firmware files they can work with (in general
    these will be each a different version). The firmware loader will try
    them in sequence until one loads.
    
    Thus, if a user doesn't have the latest and greatest firmware that a
    newly installed kernel would require, the driver would fall back to
    the firmware from a previous release.
    
    To support this, the i2400m->bus_fw_name is changed to be a NULL
    terminated array firmware file names (and renamed to bus_fw_names) and
    we add a new entry (i2400m->fw_name) that points to the name of the
    firmware being currently used. All code that needs to print the
    firmware file name uses i2400m->fw_name instead of the old
    i2400m->bus_fw_name.
    
    The code in i2400m_dev_bootstrap() that loads the firmware is changed
    with an iterator over the firmware file name list that tries to load
    each form user space, using the first one that succeeds in
    request_firmware() (and thus stopping the iteration).
    
    The USB and SDIO bus drivers are updated to take advantage of this and
    reflect which firmwares they support.
    
    Signed-off-by: default avatarInaky Perez-Gonzalez <inaky@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1039abbc