| ============ | |
| Introduction | |
| ============ | |
| The firmware API enables kernel code to request files required | |
| for functionality from userspace, the uses vary: | |
| * Microcode for CPU errata | |
| * Device driver firmware, required to be loaded onto device | |
| microcontrollers | |
| * Device driver information data (calibration data, EEPROM overrides), | |
| some of which can be completely optional. | |
| Types of firmware requests | |
| ========================== | |
| There are two types of calls: | |
| * Synchronous | |
| * Asynchronous | |
| Which one you use vary depending on your requirements, the rule of thumb | |
| however is you should strive to use the asynchronous APIs unless you also | |
| are already using asynchronous initialization mechanisms which will not | |
| stall or delay boot. Even if loading firmware does not take a lot of time | |
| processing firmware might, and this can still delay boot or initialization, | |
| as such mechanisms such as asynchronous probe can help supplement drivers. |