Driver Model
The following holds information on the U-Boot device driver framework: driver-model, including the design details of itself and several driver subsystems
- Binding/unbinding a driver
- Debugging driver model
- Design Details
- Terminology
- How to try it
- Running the tests
- What is going on?
- Declaring Drivers
- Platform Data
- Device Tree
- Declaring Uclasses
- Device Sequence Numbers
- Bus Drivers
- Driver Lifecycle
- Special cases for removal
- Error codes
- Data Structures
- Tag Support
- Changes since v1
- Pre-Relocation Support
- SPL Support
- Enabling Driver Model
- Things to punt for later
- Ethernet Driver Guide
- Pre-relocation device tree manipulation
- File System Firmware Loader
- How to port an I2C driver to driver model
- Live Device Tree
- Migration Schedule
- NVMe Support
- NVM XIP Block Storage Emulation Driver
- Compiled-in Device Tree / Platform Data
- PCI with Driver Model
- PMIC framework based on Driver Model
- Remote Processor Framework
- How to port a serial driver to driver model
- SOC ID Framework
- How to port a SPI driver to driver model
- How long does this take?
- Enable driver mode for SPI and SPI flash
- Add the skeleton
- Replace ‘exynos’ in the above code with your driver name
- #ifdef out all of the code in your driver except for the above
- Add some includes
- Build
- Set up your platform data structure
- Write of_to_plat() [for device tree only]
- Add the platform data [non-device-tree only]
- Add the device private data
- Add the probe() and remove() methods
- Implement set_speed()
- Implement set_mode()
- Implement claim_bus()
- Implement release_bus()
- Implement xfer()
- Set up the per-child data and child pre-probe function
- Optional: Set up cs_info() if you want it
- Test it
- Prepare patches and send them to the mailing lists
- A little note about SPI uclass features
- How USB works with driver model
- VirtIO Support