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