1# device
2
3## Description
4A hardware device within the chassis.
5
6The following devices should be defined in the config file:
7* Voltage regulators that require configuration or monitoring.
8* Other devices that are required to configure or monitor regulators.  For
9  example, an I/O expander may provide necessary information about a regulator.
10
11## Properties
12| Name | Required | Type | Description |
13| :--- | :------: | :--- | :---------- |
14| comments | no | array of strings | One or more comment lines describing this device. |
15| id | yes | string | Unique ID for this device.  Can only contain letters (A-Z, a-z), numbers (0-9), and underscore (\_). |
16| is_regulator | yes | boolean (true or false) | Indicates whether this device is a voltage regulator (phase controller). |
17| fru | yes | string | Field-Replaceable Unit (FRU) for this device.  Specify the D-Bus inventory path of the FRU.  If the device itself is not a FRU, specify the FRU that contains it. |
18| i2c_interface | yes | [i2c_interface](i2c_interface.md) | I2C interface to this device. |
19| presence_detection | no | [presence_detection](presence_detection.md) | Specifies how to detect whether this device is present.  If this property is not specified, the device is assumed to always be present. |
20| configuration | no | [configuration](configuration.md) | Specifies configuration changes that should be applied to this device.  These changes usually override hardware default settings.  The configuration changes are applied during the boot before regulators are enabled. |
21| rails | no | array of [rails](rail.md) | One or more voltage rails produced by this device.  This property can only be specified if the "is_regulator" property is true. |
22
23## Example
24```
25{
26  "comments": [ "IR35221 regulator producing the Vdd rail" ],
27  "id": "vdd_regulator",
28  "is_regulator": true,
29  "fru": "/system/chassis/motherboard/regulator2",
30  "i2c_interface": {
31    "bus": 1,
32    "address": "0x70"
33  },
34  "configuration": {
35    "rule_id": "configure_ir35221_rule"
36  },
37  "rails": [
38    {
39      "id": "vdd",
40      ... details omitted ...
41    }
42  ]
43}
44```
45