mywiki:linux:linux_bus
This is an old revision of the document!
Linux Buses/Devices/and Drivers
| Reference | Kernel Slides |
| bus | a channel between the processor and one or more devices. It is represented by struct bus_type. Commonly it can be dynamically detected, like PCI, USB It can be virtual or physical, All devices are connected to a bus A bus can be plugged into another bus E.g., USB controller is usually a PCI device |
| platform bus | a special bus which cannot be dynamically detected, like I2C, SPI, UART |
| Device | At the lowest level, every device in a Linux system is represented by an instance of struct device |
| Platform Device | devices are often not connected through a bus allowing enumeration, hotplugging, and providing unique identifiers for devices |
| Device Drivers | The device model tracks all of the drivers known to the system. The main reason for this tracking is to enable the driver core to match up drivers with new devices. It is represented by struct device_driver It is used to represent kernel drivers that can handle specific devices When a device is registered that can be handled by a particular driver, the probe function instantiates the driver for that particular device |
| framework | allows the driver to expose the hardware features in a generic way. |
Note: Platform Device must be statically described in either
- The kernel source code
- The Device Tree, a hardware description file used on some architectures.
mywiki/linux/linux_bus.1453962826.txt.gz · Last modified: (external edit)




