| { |
| "$schema": "http://json-schema.org/schema#", |
| "title": "JSON schema for the phosphor-regulators config file", |
| "$id": "https://github.com/openbmc/phosphor-power/tree/master/phosphor-regulators/schema/config_schema.json", |
| "description": "This schema describes the JSON format for the phosphor-regulators configuration file.", |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "rules": { "$ref": "#/definitions/rules" }, |
| "chassis": { "$ref": "#/definitions/chassis" } |
| }, |
| "required": ["chassis"], |
| "additionalProperties": false, |
| "definitions": { |
| "rule": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "id": { "$ref": "#/definitions/id" }, |
| "actions": { "$ref": "#/definitions/actions" } |
| }, |
| "required": ["id", "actions"], |
| "additionalProperties": false |
| }, |
| |
| "rules": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/rule" }, |
| "minItems": 1 |
| }, |
| |
| "comments": { |
| "type": "array", |
| "items": { "type": "string" }, |
| "minItems": 1 |
| }, |
| |
| "id": { |
| "type": "string", |
| "pattern": "^[A-Za-z0-9_]+$" |
| }, |
| |
| "action": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "and": { "$ref": "#/definitions/actions" }, |
| "compare_presence": { |
| "$ref": "#/definitions/compare_presence" |
| }, |
| "compare_vpd": { "$ref": "#/definitions/compare_vpd" }, |
| "i2c_capture_bytes": { |
| "$ref": "#/definitions/i2c_capture_bytes" |
| }, |
| "i2c_compare_bit": { "$ref": "#/definitions/i2c_bit" }, |
| "i2c_compare_byte": { "$ref": "#/definitions/i2c_byte" }, |
| "i2c_compare_bytes": { "$ref": "#/definitions/i2c_bytes" }, |
| "i2c_write_bit": { "$ref": "#/definitions/i2c_bit" }, |
| "i2c_write_byte": { "$ref": "#/definitions/i2c_byte" }, |
| "i2c_write_bytes": { "$ref": "#/definitions/i2c_bytes" }, |
| "if": { "$ref": "#/definitions/if" }, |
| "log_phase_fault": { "$ref": "#/definitions/log_phase_fault" }, |
| "not": { "$ref": "#/definitions/action" }, |
| "or": { "$ref": "#/definitions/actions" }, |
| "pmbus_read_sensor": { |
| "$ref": "#/definitions/pmbus_read_sensor" |
| }, |
| "pmbus_write_vout_command": { |
| "$ref": "#/definitions/pmbus_write_vout_command" |
| }, |
| "run_rule": { "$ref": "#/definitions/id" }, |
| "set_device": { "$ref": "#/definitions/id" } |
| }, |
| "additionalProperties": false, |
| "oneOf": [ |
| { "required": ["and"] }, |
| { "required": ["compare_presence"] }, |
| { "required": ["compare_vpd"] }, |
| { "required": ["i2c_capture_bytes"] }, |
| { "required": ["i2c_compare_bit"] }, |
| { "required": ["i2c_compare_byte"] }, |
| { "required": ["i2c_compare_bytes"] }, |
| { "required": ["i2c_write_bit"] }, |
| { "required": ["i2c_write_byte"] }, |
| { "required": ["i2c_write_bytes"] }, |
| { "required": ["if"] }, |
| { "required": ["log_phase_fault"] }, |
| { "required": ["not"] }, |
| { "required": ["or"] }, |
| { "required": ["pmbus_write_vout_command"] }, |
| { "required": ["pmbus_read_sensor"] }, |
| { "required": ["run_rule"] }, |
| { "required": ["set_device"] } |
| ] |
| }, |
| |
| "actions": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/action" }, |
| "minItems": 1 |
| }, |
| |
| "compare_presence": { |
| "type": "object", |
| "properties": { |
| "fru": { "$ref": "#/definitions/inventory_path" }, |
| "value": { "$ref": "#/definitions/boolean_value" } |
| }, |
| "required": ["fru", "value"], |
| "additionalProperties": false |
| }, |
| |
| "inventory_path": { |
| "type": "string", |
| "minLength": 1 |
| }, |
| |
| "boolean_value": { |
| "type": "boolean" |
| }, |
| |
| "compare_vpd": { |
| "type": "object", |
| "properties": { |
| "fru": { "$ref": "#/definitions/inventory_path" }, |
| "keyword": { "$ref": "#/definitions/keyword" }, |
| "value": { "$ref": "#/definitions/string_value" }, |
| "byte_values": { "$ref": "#/definitions/byte_values_min0" } |
| }, |
| "required": ["fru", "keyword"], |
| "oneOf": [ |
| { "required": ["value"] }, |
| { "required": ["byte_values"] } |
| ], |
| "additionalProperties": false |
| }, |
| |
| "keyword": { |
| "type": "string", |
| "enum": ["CCIN", "Manufacturer", "Model", "PartNumber", "HW"] |
| }, |
| |
| "string_value": { |
| "type": "string" |
| }, |
| |
| "i2c_capture_bytes": { |
| "type": "object", |
| "properties": { |
| "register": { "$ref": "#/definitions/register" }, |
| "count": { "$ref": "#/definitions/byte_count" } |
| }, |
| "required": ["register", "count"], |
| "additionalProperties": false |
| }, |
| |
| "i2c_bit": { |
| "type": "object", |
| "properties": { |
| "register": { "$ref": "#/definitions/register" }, |
| "position": { "$ref": "#/definitions/position" }, |
| "value": { "$ref": "#/definitions/bit_value" } |
| }, |
| "required": ["register", "position", "value"], |
| "additionalProperties": false |
| }, |
| |
| "register": { |
| "type": "string", |
| "pattern": "^0x[0-9A-Fa-f]{2}$" |
| }, |
| |
| "position": { |
| "type": "integer", |
| "minimum": 0, |
| "maximum": 7 |
| }, |
| |
| "bit_value": { |
| "type": "integer", |
| "minimum": 0, |
| "maximum": 1 |
| }, |
| |
| "i2c_byte": { |
| "type": "object", |
| "properties": { |
| "register": { "$ref": "#/definitions/register" }, |
| "value": { "$ref": "#/definitions/byte_value" }, |
| "mask": { "$ref": "#/definitions/byte_mask" } |
| }, |
| "required": ["register", "value"], |
| "additionalProperties": false |
| }, |
| |
| "byte_value": { |
| "type": "string", |
| "pattern": "^0x[0-9A-Fa-f]{2}$" |
| }, |
| |
| "byte_mask": { |
| "type": "string", |
| "pattern": "^0x[0-9A-Fa-f]{2}$" |
| }, |
| |
| "byte_count": { |
| "type": "integer", |
| "minimum": 1 |
| }, |
| |
| "i2c_bytes": { |
| "type": "object", |
| "properties": { |
| "register": { "$ref": "#/definitions/register" }, |
| "values": { "$ref": "#/definitions/byte_values" }, |
| "masks": { "$ref": "#/definitions/byte_masks" } |
| }, |
| "required": ["register", "values"], |
| "additionalProperties": false |
| }, |
| |
| "byte_values": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/byte_value" }, |
| "minItems": 1 |
| }, |
| |
| "byte_values_min0": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/byte_value" }, |
| "minItems": 0 |
| }, |
| |
| "byte_masks": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/byte_mask" }, |
| "minItems": 1 |
| }, |
| |
| "if": { |
| "type": "object", |
| "properties": { |
| "condition": { "$ref": "#/definitions/action" }, |
| "then": { "$ref": "#/definitions/actions" }, |
| "else": { "$ref": "#/definitions/actions" } |
| }, |
| "required": ["condition", "then"], |
| "additionalProperties": false |
| }, |
| |
| "log_phase_fault": { |
| "type": "object", |
| "properties": { |
| "type": { "$ref": "#/definitions/phase_fault_type" } |
| }, |
| "required": ["type"], |
| "additionalProperties": false |
| }, |
| |
| "phase_fault_type": { |
| "type": "string", |
| "enum": ["n+1", "n"] |
| }, |
| |
| "pmbus_write_vout_command": { |
| "type": "object", |
| "properties": { |
| "volts": { "$ref": "#/definitions/volts" }, |
| "format": { "$ref": "#/definitions/write_vout_format" }, |
| "exponent": { "$ref": "#/definitions/exponent" }, |
| "is_verified": { "$ref": "#/definitions/is_verified" } |
| }, |
| "required": ["format"], |
| "additionalProperties": false |
| }, |
| |
| "volts": { |
| "type": "number" |
| }, |
| |
| "write_vout_format": { |
| "type": "string", |
| "enum": ["linear"] |
| }, |
| |
| "exponent": { |
| "type": "integer" |
| }, |
| |
| "is_verified": { |
| "type": "boolean" |
| }, |
| |
| "pmbus_read_sensor": { |
| "type": "object", |
| "properties": { |
| "type": { "$ref": "#/definitions/pmbus_read_sensor_type" }, |
| "command": { |
| "$ref": "#/definitions/pmbus_read_sensor_command" |
| }, |
| "format": { "$ref": "#/definitions/read_sensor_format" }, |
| "exponent": { "$ref": "#/definitions/exponent" } |
| }, |
| "required": ["type", "command", "format"], |
| "additionalProperties": false |
| }, |
| |
| "pmbus_read_sensor_type": { |
| "type": "string", |
| "enum": [ |
| "iout", |
| "iout_peak", |
| "iout_valley", |
| "pout", |
| "temperature", |
| "temperature_peak", |
| "vout", |
| "vout_peak", |
| "vout_valley" |
| ] |
| }, |
| |
| "pmbus_read_sensor_command": { |
| "type": "string", |
| "pattern": "^0x[0-9a-fA-F]{2}$" |
| }, |
| |
| "read_sensor_format": { |
| "type": "string", |
| "enum": ["linear_11", "linear_16"] |
| }, |
| |
| "chassis_object": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "number": { "$ref": "#/definitions/number" }, |
| "inventory_path": { "$ref": "#/definitions/inventory_path" }, |
| "devices": { "$ref": "#/definitions/devices" } |
| }, |
| "required": ["number", "inventory_path"], |
| "additionalProperties": false |
| }, |
| |
| "chassis": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/chassis_object" }, |
| "minItems": 1 |
| }, |
| |
| "number": { |
| "type": "integer", |
| "minimum": 1 |
| }, |
| |
| "device": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "id": { "$ref": "#/definitions/id" }, |
| "is_regulator": { "$ref": "#/definitions/is_regulator" }, |
| "fru": { "$ref": "#/definitions/inventory_path" }, |
| "i2c_interface": { "$ref": "#/definitions/i2c_interface" }, |
| "presence_detection": { |
| "$ref": "#/definitions/presence_detection" |
| }, |
| "configuration": { "$ref": "#/definitions/configuration" }, |
| "phase_fault_detection": { |
| "$ref": "#/definitions/phase_fault_detection" |
| }, |
| "rails": { "$ref": "#/definitions/rails" } |
| }, |
| "required": ["id", "is_regulator", "fru", "i2c_interface"], |
| "if": { |
| "properties": { "is_regulator": { "const": false } } |
| }, |
| "then": { |
| "not": { |
| "anyOf": [ |
| { "required": ["phase_fault_detection"] }, |
| { "required": ["rails"] } |
| ] |
| } |
| }, |
| "additionalProperties": false |
| }, |
| |
| "devices": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/device" }, |
| "minItems": 1 |
| }, |
| |
| "is_regulator": { |
| "type": "boolean" |
| }, |
| |
| "i2c_interface": { |
| "type": "object", |
| "properties": { |
| "bus": { "$ref": "#/definitions/bus" }, |
| "address": { "$ref": "#/definitions/address" } |
| }, |
| "required": ["bus", "address"], |
| "additionalProperties": false |
| }, |
| |
| "bus": { |
| "type": "integer", |
| "minimum": 0 |
| }, |
| |
| "address": { |
| "type": "string", |
| "pattern": "^0x[0-9A-Fa-f]{2}$" |
| }, |
| |
| "presence_detection": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "rule_id": { "$ref": "#/definitions/id" }, |
| "actions": { "$ref": "#/definitions/actions" } |
| }, |
| "additionalProperties": false, |
| "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }] |
| }, |
| |
| "configuration": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "volts": { "$ref": "#/definitions/volts" }, |
| "rule_id": { "$ref": "#/definitions/id" }, |
| "actions": { "$ref": "#/definitions/actions" } |
| }, |
| "additionalProperties": false, |
| "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }] |
| }, |
| |
| "phase_fault_detection": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "device_id": { "$ref": "#/definitions/id" }, |
| "rule_id": { "$ref": "#/definitions/id" }, |
| "actions": { "$ref": "#/definitions/actions" } |
| }, |
| "additionalProperties": false, |
| "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }] |
| }, |
| |
| "rail": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "id": { "$ref": "#/definitions/id" }, |
| "configuration": { "$ref": "#/definitions/configuration" }, |
| "sensor_monitoring": { |
| "$ref": "#/definitions/sensor_monitoring" |
| } |
| }, |
| "required": ["id"], |
| "additionalProperties": false |
| }, |
| |
| "rails": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/rail" }, |
| "minItems": 1 |
| }, |
| |
| "sensor_monitoring": { |
| "type": "object", |
| "properties": { |
| "comments": { "$ref": "#/definitions/comments" }, |
| "rule_id": { "$ref": "#/definitions/id" }, |
| "actions": { "$ref": "#/definitions/actions" } |
| }, |
| "additionalProperties": false, |
| "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }] |
| } |
| } |
| } |