Difference between revisions of "Troubleshooting/BMC Power"
Jump to navigation
Jump to search
(Document register map) |
|||
Line 227: | Line 227: | ||
|} | |} | ||
|} | |} | ||
+ | |||
+ | [[Category:Guides]] |
Revision as of 09:19, 27 April 2019
Mainboard power sequencing is controlled by an iCE40 FPGA itself controlled by the BMC. This page provides information on how to interrogate the FPGA for status information when low-level power faults occur.
Starting points
When troubleshooting power sequencing, start by reading the key registers from the BMC shell:
$ i2cget -y 12 0x31 0x07 # Read ATX Power State $ i2cget -y 12 0x31 0x18 # Read Power Sequencer Fail Status 1 $ i2cget -y 12 0x31 0x19 # Read Power Sequencer Fail Status 2
- If either of the Power Sequencer Fail Status registers reads as nonzero, a power sequencing error or voltage regulator failure has occurred.
- The last digit of the ATX Power State register is as follows:
Value | Meaning |
---|---|
0x?0 | System off |
0x?2 | ATX power requested but not yet provided |
0x?3 | ATX power good |
0x?C | Timeout, previous or current operational fault detected |
0x?E | General fault detected in power sequencing |
- You can clear power sequencer error flags (enabling you to try powering on again) by running:
$ i2cget -y 12 0x31 0x03 # Clear errors
FPGA Register Map
The FPGA on the mainboard is used for power sequencing. It exposes a register map to the BMC over I2C (bus 12, address 0x31). (Bit 0 below refers to the least significant bit.) The below information was derived from the Verilog source code for the FPGA.
To read the FPGA registers, use this command at the BMC shell:
$ i2cget -y 12 0x31 0xREGNO
Address | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | RO | FPGA Bitstream Version. | ||||||||||||||||||
0x01 | — | (not used) | ||||||||||||||||||
0x02 | — | (not used) | ||||||||||||||||||
0x03 | R2C | Clear Error. Reading this register clears power sequencer errors. The value read is meaningless. | ||||||||||||||||||
0x04 | — | (not used) | ||||||||||||||||||
0x05 | RO | Power Good Status 1. This register indicates the 'power good' indicators of various mainboard voltage regulators.
| ||||||||||||||||||
0x06 | RO | Power Good Status 2.
| ||||||||||||||||||
0x07 | RO | ATX Power State. Bits are as follows:
| ||||||||||||||||||
0x08 | RO | Power Enable Status 1. Indicates what power rails are currently requested on. The bits correspond to those of the 'Power Good Status 1' register. | ||||||||||||||||||
0x09 | RO | Power Enable Status 2. Indicates what power rails are currently requested on. The bits correspond to those of the 'Power Good Status 2' register. | ||||||||||||||||||
0x0A | — | (not used) | ||||||||||||||||||
0x0B | — | (not used) | ||||||||||||||||||
0x0C | RO | Vendor ID Byte 1. | ||||||||||||||||||
0x0D | RO | Vendor ID Byte 2. | ||||||||||||||||||
0x0E | RO | Vendor ID Byte 3. | ||||||||||||||||||
0x0F | RO | Vendor ID Byte 4. | ||||||||||||||||||
0x10 | RW | LED Override. | ||||||||||||||||||
0x18 | RO | Power Sequencer Fail Status 1. Indicates what power rails have failed. The bits correspond to those of the 'Power Good Status 1' register. If this value is nonzero, at least one power rail failure has occurred. (The value is the XOR of the 'Power Enable Status 1' register and the 'Power Good Status 1' register.) | ||||||||||||||||||
0x19 | RO | Power Sequencer Fail Status 2. Indicates what power rails have failed. The bits correspond to those of the 'Power Good Status 2' register. If this value is nonzero, at least one power rail failure has occurred. (The value is the XOR of the 'Power Enable Status 2' register and the 'Power Good Status 2' register.) | ||||||||||||||||||
0x33 | RW | System Override.
|