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