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.  If the device itself is not a FRU, specify the FRU that contains it.  Specify the relative D-Bus inventory path of the FRU.  Full inventory paths begin with the root "/xyz/openbmc_project/inventory".  Specify the relative path below the root, such as "system/chassis/motherboard/regulator2". |
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| phase_fault_detection | no | [phase_fault_detection](phase_fault_detection.md) | Specifies how to detect and log redundant phase faults in this voltage regulator.  Can only be specified if the "is_regulator" property is true. |
22| rails | no | array of [rails](rail.md) | One or more voltage rails produced by this device.  Can only be specified if the "is_regulator" property is true. |
23
24## Example
25```
26{
27  "comments": [ "IR35221 regulator producing the Vdd rail" ],
28  "id": "vdd_regulator",
29  "is_regulator": true,
30  "fru": "system/chassis/motherboard/regulator2",
31  "i2c_interface": {
32    "bus": 1,
33    "address": "0x70"
34  },
35  "configuration": {
36    "rule_id": "configure_ir35221_rule"
37  },
38  "rails": [
39    {
40      "id": "vdd",
41      ... details omitted ...
42    }
43  ]
44}
45```
46