=====================
Firmware lookup order
=====================

Different functionality is available to enable firmware to be found.
Below is chronological order of how firmware will be looked for once
a driver issues a firmware API call.

* The ''Built-in firmware'' is checked first, if the firmware is present we
  return it immediately
* The ''Firmware cache'' is looked at next. If the firmware is found we
  return it immediately
* The ''Direct filesystem lookup'' is performed next, if found we
  return it immediately
* The ''Platform firmware fallback'' is performed next, but only when
  firmware_request_platform() is used, if found we return it immediately
* If no firmware has been found and the fallback mechanism was enabled
  the sysfs interface is created. After this either a kobject uevent
  is issued or the custom firmware loading is relied upon for firmware
  loading up to the timeout value.
