# Device Firmware

Device firmware are binary blobs containing code that are executed by device
hardware. The binary blob is available in the driver's namespace for loading.

Device firmware are stored in CIPD (Chrome Infrastructure Package Deployment)
and mirrored in Google Storage.

## Before You Start

Ensure that CIPD is available. cipd must be either in PATH or
`zircon/../buildtools/cipd`.

The buildtools repository is available
[here](https://fuchsia.googlesource.com/buildtools/).

## Create a Firmware Package

To create a firmware package, create a directory containing the following
files:

* One or more firmware files
* A license file
* [README.fuchsia](https://fuchsia.googlesource.com/docs/+/master/development/source_code/README.fuchsia.md)

README.fuchsia must contain at least the following directives:

* `Name`
* `Version`
* `Upstream Git`
* `License`
* `License File`

If this is the first time you uploaded to CIPD from the host system,
authenticate with CIPD:

```
cipd auth-login
```

Upload and tag the package in CIPD using the following command:

```
cipd create -in <package-directory> -install-mode copy \
    -name <package-name> \
    -tag git_repository:<source-git-repositry> \
    -tag git_revision:<source-git-revision>
```

`package-name` has the format `fuchsia/firmware/<name>`.

`<name>` should be a string that identifies the firmware. It may contain
any non-whitespace character. It is helpful to identify the driver that will
use the firmware in the name.

After this step, the package is uploaded to CIPD. Check the
[CIPD browser here](https://chrome-infra-packages.appspot.com/#/?path=fuchsia/firmware)
for packages under `fuchsia/firmware`.

## Adding the Firmware Package to the Build

Add the following entry in `prebuilt/zircon.ensure`:

```
@Subdir firmware/<name>
<package-name> git_revision:<source-git-revision>
```

Where `<name>`, `<package-name>` and `<source-git-revision>` matches the
values passed to `cipd create` above. The package will be downloaded to
the path specified by `@Subdir` under `prebuilt`, i.e.
`prebuilt/firmware/<name>`.

Next, update `prebuilt/zircon.versions` with the following command:

```
scripts/download-prebuilt --resolve
```

Upload this change to Gerrit and send it to the CQ.  The firmware package will
be downloaded by `scripts/download-prebuilt` along with the toolchain and QEMU.

## Using the Firmware Package in the Driver

Add the following line to the driver's `rules.mk`:

```
MODULE_FIRMWARE := <name>/<path-to-binary-blob>
```

This will install the firmware to bootfs under
`/boot/lib/firmware/$(basename $(MODULE_FIRMWARE))`.

The `load_firmware()` API, defined in [`driver.h`](../../system/ulib/ddk/include/ddk/driver.h)
loads the firmware pointed to by the path in a VMO.
