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