xref: /openbmc/entity-manager/schemas/firmware.json (revision a182cb7c338c70e65bf6f8a828cb7176ffde152d)
1{
2    "$schema": "http://json-schema.org/draft-07/schema#",
3    "$defs": {
4        "FirmwareInfoDef": {
5            "description": "This indicates the properties which apply to all firmwares",
6            "type": "object",
7            "additionalProperties": false,
8            "properties": {
9                "VendorIANA": {
10                    "description": "The IANA Enterprise Id of the hardware vendor",
11                    "type": "number"
12                },
13                "CompatibleHardware": {
14                    "description": "The compatible hardware with name format com.<vendor>.Hardware.<XXX> specified by vendor in phosphor-dbus-interfaces",
15                    "type": "string"
16                }
17            },
18            "required": ["VendorIANA", "CompatibleHardware"]
19        },
20        "MuxOutputs": {
21            "description": "The pin names and values for the mux which toggles the flash to BMC",
22            "type": "array",
23            "items": {
24                "type": "object",
25                "additionalProperties": false,
26                "properties": {
27                    "Name": {
28                        "$ref": "legacy.json#/$defs/Types/Name"
29                    },
30                    "Polarity": {
31                        "$ref": "legacy.json#/$defs/Types/Polarity"
32                    }
33                },
34                "required": ["Name", "Polarity"]
35            }
36        },
37        "I2CVRFirmware": {
38            "description": "Required information to complete I2C voltage regulator firmware update",
39            "object": "object",
40            "additionalProperties": false,
41            "properties": {
42                "Name": {
43                    "description": "Name of the firmware",
44                    "type": "string"
45                },
46                "Type": {
47                    "description": "The type of configuration object",
48                    "enum": [
49                        "XDPE1X2XXFirmware",
50                        "ISL69269Firmware",
51                        "MP2X6XXFirmware",
52                        "MP292XFirmware",
53                        "MP297XFirmware",
54                        "MP5998Firmware",
55                        "MP994XFirmware",
56                        "RAA22XGen2Firmware",
57                        "RAA22XGen3p5Firmware",
58                        "TDA38640AFirmware"
59                    ]
60                },
61                "Bus": {
62                    "$ref": "legacy.json#/$defs/Types/Bus"
63                },
64                "Address": {
65                    "$ref": "legacy.json#/$defs/Types/Address"
66                },
67                "FirmwareInfo": {
68                    "$ref": "#/$defs/FirmwareInfoDef"
69                }
70            },
71            "required": ["Name", "Type", "Bus", "Address", "FirmwareInfo"]
72        },
73        "BIOS": {
74            "description": "Required information to complete the host fw update process.",
75            "type": "object",
76            "additionalProperties": false,
77            "properties": {
78                "Type": {
79                    "description": "The type of configuration object. IntelSPIFlash implies Intel Flash Descriptor.",
80                    "enum": ["IntelSPIFlash", "SPIFlash"]
81                },
82                "Name": {
83                    "description": "The name of the firmware.",
84                    "type": "string"
85                },
86                "SPIControllerIndex": {
87                    "description": "The index of the SPI controller",
88                    "type": "number"
89                },
90                "SPIDeviceIndex": {
91                    "description": "The index of the SPI device connected to that controller",
92                    "type": "number"
93                },
94                "MuxOutputs": {
95                    "$ref": "#/$defs/MuxOutputs"
96                },
97                "FirmwareInfo": {
98                    "$ref": "#/$defs/FirmwareInfoDef"
99                }
100            },
101            "required": [
102                "Name",
103                "Type",
104                "SPIControllerIndex",
105                "SPIDeviceIndex",
106                "MuxOutputs",
107                "FirmwareInfo"
108            ]
109        },
110        "EEPROMDeviceFirmware": {
111            "description": "Required information to complete the EEPROM device firmware update process",
112            "type": "object",
113            "additionalProperties": false,
114            "properties": {
115                "Name": {
116                    "description": "Unique identifier or label for the EEPROM device",
117                    "type": "string"
118                },
119                "Type": {
120                    "description": "The type of configuration object",
121                    "enum": ["PT5161LFirmware"]
122                },
123                "Bus": {
124                    "$ref": "legacy.json#/$defs/Types/Bus"
125                },
126                "Address": {
127                    "$ref": "legacy.json#/$defs/Types/Address"
128                },
129                "FirmwareDevice": {
130                    "description": "The device that stores the EEPROM device firmware",
131                    "type": "string"
132                },
133                "MuxOutputs": {
134                    "$ref": "#/$defs/MuxOutputs"
135                },
136                "FirmwareInfo": {
137                    "$ref": "#/$defs/FirmwareInfoDef"
138                }
139            },
140            "required": [
141                "Name",
142                "Type",
143                "Bus",
144                "Address",
145                "FirmwareDevice",
146                "FirmwareInfo"
147            ]
148        },
149        "TPMFirmware": {
150            "description": "Required information to complete the TPM firmware update process",
151            "type": "object",
152            "additionalProperties": false,
153            "properties": {
154                "Name": {
155                    "description": "Unique identifier or label for the TPM device",
156                    "type": "string"
157                },
158                "TPMIndex": {
159                    "description": "The index of the TPM device",
160                    "type": "number"
161                },
162                "Type": {
163                    "description": "The type of configuration object",
164                    "enum": ["TPM2Firmware"]
165                },
166                "FirmwareInfo": {
167                    "$ref": "#/$defs/FirmwareInfoDef"
168                }
169            },
170            "required": ["Name", "TPMIndex", "Type", "FirmwareInfo"]
171        }
172    }
173}
174