The first component of the device model is the bus driver
One bus driver for each type of bus: USB, PCI, SPI, MMC, I2C, etc.
It is responsible for
Registering the bus type (struct bus_type)
Allowing the registration of adapter drivers (USB controllers, I2C adapters, etc.), able of detecting the connected devices, and providing a communication mechanism with the devices
Allowing the registration of device drivers (USB devices, I2C devices, PCI devices, etc.), managing the devices
Matching the device drivers against the devices detected by the adapter drivers.
Provides an API to both adapter drivers and device drivers
Defining driver and device specific structure, typically xxx_driver and xxx_device