0001 ============
0002 Introduction
0003 ============
0004
0005 The firmware API enables kernel code to request files required
0006 for functionality from userspace, the uses vary:
0007
0008 * Microcode for CPU errata
0009 * Device driver firmware, required to be loaded onto device
0010 microcontrollers
0011 * Device driver information data (calibration data, EEPROM overrides),
0012 some of which can be completely optional.
0013
0014 Types of firmware requests
0015 ==========================
0016
0017 There are two types of calls:
0018
0019 * Synchronous
0020 * Asynchronous
0021
0022 Which one you use vary depending on your requirements, the rule of thumb
0023 however is you should strive to use the asynchronous APIs unless you also
0024 are already using asynchronous initialization mechanisms which will not
0025 stall or delay boot. Even if loading firmware does not take a lot of time
0026 processing firmware might, and this can still delay boot or initialization,
0027 as such mechanisms such as asynchronous probe can help supplement drivers.