All files related to driver components are organized in three file trees:
The 'dki' tree, populated by the ChorusOS operating system delivery and exporting the DKI set of APIs (header files only).
The 'ddi' tree, populated by the ChorusOS operating system delivery and exporting the DDI set of APIs (header files only).
The 'drv' tree, populated by generic driver components as well as processor family specific driver components. Each exports the device-specific properties header files. Generic driver components are drivers which do not use the family specific DKI APIs, and therefore are portable across all families and platforms (header and 'c' files). Processor family-specific driver components are drivers which use one family specific DKI API, and therefore can run only on this processor family (header and 'c' files).
Note that the drv tree is mainly populated by third party driver writers (although ChorusOS system deliveries contain drivers for the reference platform's devices).
The main functional components of the 'dki' tree are:
<dki/dki.h> which defines the Common DKI API
<dki/f_dki.h> which defines the processor family-specific DKI API
All other file trees are organized following the bus/device class provided APIs. In other words, there is a directory per class of bus and device, which contains the header file defining the API provided by this device class.
For drv the generic drivers are classified by DDI and are contained in corresponding directories, whereas the family-specific drivers are contained in family directories.
Listed below are some path examples (header file paths are relative to the ChorusOS operating system delivery source_dir directory):
DDI's Common bus class API
DDI's PCI bus class API
DDI's UART device class API
family specific driver component for the Motorola RAVEN PCI host bridge
Generic driver component for NS16x50 compatible UART devices