xref: /openbmc/phosphor-power/README.md (revision dd6c3661)
1## Overview
2
3This repository contains applications for configuring and monitoring devices
4that deliver power to the system.
5
6Actively-maintained applications:
7
8- cold-redundancy: Application that makes power supplies work in Cold Redundancy
9  mode and rotates them at intervals.
10- [phosphor-power-sequencer](phosphor-power-sequencer/README.md): JSON-driven
11  application that powers the chassis on/off and monitors the power sequencer
12  device.
13- [phosphor-power-supply](phosphor-power-supply/README.md): Next generation
14  power supply monitoring application.
15- [phosphor-regulators](phosphor-regulators/README.md): JSON-driven application
16  that configures and monitors voltage regulators.
17- tools/power-utils: Power supply utilities.
18
19Legacy applications:
20
21- power-sequencer: Original power sequencer monitoring application.
22- power-supply: Original power supply monitoring application.
23
24## Build
25
26To build all applications in this repository:
27
28```
29  meson setup build
30  ninja -C build
31```
32
33To clean the repository and remove all build output:
34
35```
36  rm -rf build
37```
38
39You can specify [meson options](meson.options) to customize the build process.
40For example, you can specify:
41
42- Which applications to build and install.
43- Application-specific configuration data, such as power sequencer type.
44- Whether to build tests.
45
46## Power Supply Monitor and Util JSON config
47
48Several applications in this repository require a PSU JSON config to run. The
49JSON config file provides information for:
50
51- Where to access the pmbus attributes
52- Which attribute file in pmbus maps to which property and interface in D-Bus
53- Which kernel device directory is used on which PSU
54
55There is an example [psu.json](example/psu.json) to describe the necessary
56configurations.
57
58- `inventoryPMBusAccessType` defines the pmbus access type, which tells the
59  service which sysfs type to use to read the attributes. The possible values
60  are:
61  - Base: The base dir, e.g. `/sys/bus/i2c/devices/3-0069/`
62  - Hwmon: The hwmon dir, e.g. `/sys/bus/i2c/devices/3-0069/hwmon/hwmonX/`
63  - Debug: The pmbus debug dir, e.g. `/sys/kernel/debug/pmbus/hwmonX/`
64  - DeviceDebug: The device debug dir, e.g.
65    '/sys/kernel/debug/<driver>.<instance>/`
66  - HwmonDeviceDebug: The hwmon device debug dir, e.g.
67    `/sys/kernel/debug/pmbus/hwmonX/cffps1/`
68- `fruConfigs` defines the mapping between the attribute file and the FRU
69  inventory interface and property. The configuration example below indicates
70  that the service will read `part_number` attribute file from a directory
71  specified by the above pmbus access type, and assign to `PartNumber` property
72  in `xyz.openbmc_project.Inventory.Decorator.Asset` interface.
73  ```
74    "fruConfigs": [
75      {
76        "propertyName": "PartNumber",
77        "fileName": "part_number",
78        "interface": "xyz.openbmc_project.Inventory.Decorator.Asset"
79      }
80    ]
81  ```
82- `psuDevices` defines the kernel device dir for each PSU in inventory. The
83  configuration example below indicates that `powersupply0`'s device is located
84  in `/sys/bus/i2c/devices/3-0069`.
85  ```
86    "psuDevices": {
87      "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0" : "/sys/bus/i2c/devices/3-0069",
88    }
89  ```
90