Drivers rubric

Caution: This page may contain information that is specific to the legacy version of the driver framework (DFv1). Also the workflows documented on this page may only be specific to the Fuchsia source checkout (fuchsia.git) environment.

Overview

This document describes the rules for writing new drivers.

Location

Many drivers are located under /src/devices in folders named according to the driver type. For instance /src/devices/clock/drivers, /src/devices/usb/drivers, etc. Some functional areas include their drivers within their own directories, for instance /src/media/audio/drivers, /src/graphics/drivers, etc. New drivers must be located alongside other drivers of the same type. If there is no existing folder were a new driver should be logically placed under, then a new folder needs to be added to /src/devices, named appropriately and include a drivers folder under it.

OWNERS

As with any other code in Fuchsia an OWNER must approve the addition of a new driver. The OWNERS file to check for approval depends on the location where the driver is added.

Driver Info

When adding a driver to the Fuchsia tree, a driver info file must be created, and the fuchsia_driver_component target must include an info = <some-driver-info.json> entry. The JSON file listed in info must include at least a short_description text and an areas list with entries from areas. For example, aml-g12-tdm-dai-info.json includes:

{
    "short_description": "AMLogic g12 audio subsystem DAI TDM driver",
    "manufacturer": "AMLogic",
    "families": [
        "g12"
    ],
    "models": [
        "S905D2",
        "T931",
        "S905D3"
    ],
    "areas": [
        "Media",
        "Audio"
    ]
}

Note that this file automatically created by fx create driver, see Creating a new driver.