The System Management Controller (SMC) is a microcontroller located in the Xenon Southbridge. It provides reliable and robust system control functions. The SMC is always powered from the regulators fed by the standby rail in Xenon’s external power supply brick. It communicates with the system CPU via the System Management Module (SMM). This interface is described in XBox 360 Southbridge System
Management Module (SMM) Design Specification. The SMC detects many of the errors explained in this
document and the SMC shall behave as described in the error classes section below.
6.2 SMC Duties
A few of the duties of the SMC include the following • System power supply and voltage regulator control • System reset and clock control
• Audio clamp control
• XSS access to the hardware real time clock (RTC) • Decode Infrared (IR) remote protocol
• Temperature monitoring and fan control
• Front panel IO (power, eject and binding buttons) • Console orientation detection (tilt switch)
• Communication with Front Panel Module (NV storage, LEDs) • Audio/Video Interface Port (AVIP) monitoring
• Control of and access to system I2C Bus • Control of and access to AV Pack I2C Bus • Optical Disk Drive (ODD) tray control • Southbridge PCI Express PLL programming • Rudimentary system tests and diagnostics
6.3 Power Up Sequence
This section is included only for general purpose understanding and may not be accurate. Please refer to the Error.doc, XBox 360 Firmware Requirements.doc, and POR Diagram for complete and accurate descriptions.
SMC controls powering up the console. See also the SMC section. • After ANA_V12P0_PWRGD is detected2
, or after tPSU has expired past asserting PSU_V12P0_EN, the SMC shall detect a low value on ANA_V12P0_PWRGD. A low value on this signal shall cause the SMC to immediately enter the error state #ERROR_V_12P0 .
• After VREG_GPU_PWRGD is detected, or after tVGPURAMP has expired past asserting
VREG_GPU_EN_N, the SMC shall detect a low value on VREG_GPU_PWRGD. A low value on this signal shall cause the SMC to immediately enter the error state ERROR_V_GPUCORE.
2
The SMC shall wait at least 2ms and not more than 25ms after detecting the rising edge of
ANA_V12P0_PWRGD before assuming that V12P0 is in regulation, and enabling the fault detect for ANA_V12P0_PWRGD.
• After VREG_CPU_PWRGD is detected, or after tVCPURAMP has expired past asserting
VREG_CPU_EN, the SMC shall detect a low value on VREG_CPU_PWRGD. A low value on this signal shall cause the SMC to immediately enter the error state #ERROR_V_CPUCORE.
• After VREG_V3P3_EN_N has been asserted and allowed to become stable (20ms), the SMC shall detect if a backup clock chip is present, and if one is found it shall enable spread spectrum clocking. This happens as follows:
o The SMC shall attempt an SMBus Block Read
o If the SMBus Block Read is successful the SMC shall program the ICS clock chip as follows: Perform an SMBus Block Write of size 1 to register 0x2 of the device addressed
0x69 (7-bit address). The data to write is 0xFF.
o If the low nibble of register 0x6 (logically anded with 0x0F) reads back as 0x08, the SMC shall program the Cypress clock chip as follows:
Perform an SMBus Block Write of size 1 to register 0x1 of the device addressed 0x69 (7-bit address). The data to write is 0x83.
Perform an SMBus Block Write of size 1 to register 0x4 of the device addressed 0x69 (7-bit address). The data to write is 0xF8.
o If the low nibble reads back as anything else, or if the read fails, the SMC shall perform no further transactions to the device addressed 0x69 (7-bit address) until it has passed through StandbyInit again. Upon giving up the SMC will immediately enter the error state
ERROR_NO_CLOCKCHIP
6.4 Reset Sequence
SMC controls negating reset to the chips in the console.
• The SMC shall maintain a count of the number of attempts it has tried to bring the console out of reset. This count shall be initialized to zero at the start.
• After GPU_RST_N is negated, the SMC shall monitor GPU_RST_DONE before proceeding go the next step in the reset sequence.
o If GPU_RST_DONE is detected, the SMC shall progress to the next step in the reset negation sequence.
o If GPU_RST_DONE is not detected within tGPURMAX time, the SMC shall increment the reset attempts counter. The SMC shall log an ErrorGPUResetDone. If the reset attempts counter has reached MAX_UNRESET_ERRS, the SMC shall immediately enter the error state
ERROR_GPU_RST_DONE. If the reset attempts counter is less than
MAX_UNRESET_ERRS, the SMC shall run seqReset, and retry seqUnReset without initializing the retry counter.
• After GPU_RST_DONE is asserted, the SMC shall monitor the PCIE_L0_STATUS bits of SFR SFNC to determine when the PCI Express link enters the L0 state.
o If the SMC detects that the PCI-E link has entered the L0 state, (as defined in the SB SMC
Design Specification) the SMC shall progress to the next step in the reset negation
sequence.
o If L0 is not detected as set within tLINKTRAIN time, the SMC shall increment the reset attempts counter. The SMC shall log an ErrorLinktrain. If the reset attempts counter has reached MAX_UNRESET_ERRS, the SMC shall immediately enter the error state
ERROR_NO_PCIE. If the reset attempts counter is less than MAX_UNRESET_ERRS, the SMC shall run seqReset, and retry seqUnReset without initializing the retry counter. • After the PCI-E link has entered the L0 state, the SMC shall negate CPU_RST_N. The SMC shall
expect XSS to read the power up cause as a part of XSS’s initialization sequence.
o If a GetPowerUpCause message is not received within tCPURMAX of CPU_RST_N being negated, the SMC shall log an ErrorCPUReset. If the reset attempts counter has reached MAX_UNRESET_ERRS, the SMC shall immediately enter the error state
ERROR_NO_HANDSHAKE. If the reset attempts counter is less than
MAX_UNRESET_ERRS, the SMC shall run seqReset, and retry seqUnReset without initializing the retry counter.
6.5 Error Class Behavior
Error codes listed in the SMC-Detected Error List are grouped into classes. Each class is further explained below. This section is included only for general purpose understanding and may not be accurate. Please refer to the Error.doc, XBox 360 Firmware Requirements.doc, POR Diagram for complete and accurate descriptions.
EC_FATAL
• EC_FATAL is tripped whenever the PWRGD signal of a monitored voltage supply has a falling edge when the supply is enabled. EC_FATAL is also tripped when the SMC cannot read temperature data from Ana. Note that Ana not responding is not necessary a voltage error, but the desired behavior is the same. If Ana cannot be reached, the SMC cannot monitor system temperature, and the console cannot be operated safely. In this case, the console should never be allowed to boot (if detected pre-boot), or should be shut down immediately upon detection.
• When detected all devices shall be put into reset immediately, and all controllable voltages shall be turned off this shall include programming Ana to turn off the thermal sensor and fan op-amps. The SMC shall not wait for the ODD tray to close, to ensure that the power down happens as quickly and safely as possible.
• The ODD tray shall remain non-functional (there will be no power to the tray).
• The console shall remain in this error state indefinitely until a power off event occurs. After a power off event the front panel LED error pattern shall be cleared, and the console shall return to Standby mode.
EC_THERMAL
• When detected, all devices shall be put into reset immediately, and all controllable voltages with the exception of V_12P0 shall be turned off. The SMC shall not wait for the ODD tray to close, to ensure that the power down happens as quickly and safely as possible.
• The fans shall be set to run at their full speed.
• The ODD tray shall remain non-functional (there will be no power to the tray).
• The console shall wait in a Thermal Overload Recovery state for one of the following conditions to occur:
o any monitored chip temperature continues to exceed its specified maximum for more than five seconds
o all monitored component temperatures reach the safe turn-off temperature. o the maximum thermal recovery time of two minutes has passed
o any EC_FATAL error occurs. EC_FATAL errors that occur here shall not be reported as EC_FATAL errors, but shall just exit the Thermal Overload Recovery state as the rest of these bullets do.
• Until one of the above conditions is met, power off events shall be ignored. When one of these conditions is met, the console shall finish this shall include programming Ana to turn off the thermal sensor and fan op-amps, and enter an error state similar to the end of EC_FATAL.
• The console shall remain in this error state indefinitely until a power off event occurs. After a power off event the front panel LED error pattern shall be cleared, and the console shall return to Standby mode.
EC_BOOT
• An EC_FATAL_class error causes the console to boot improperly, and is detected by the SMC. • If the SMC has unreset retries left, the SMC shall run seqReset and seqUnreset when this error
occurs.
• If there are no unreset retries left, the SMC shall abort the rest of the unResetSequence, and proceed to FullOn mode. The console shall remain powered.
• The thermal algorithm shall continue to control the fans, as normal. • The ODD tray shall continue to work as normal.
• When a power-off event occurs, the console shall proceed to Standby mode, closing the ODD tray, and clearing the error pattern.
EC_XSS
• EC_XSS errors are reported to the SMC via the OS module XSS.
• Before the handshake, it is assumed that the error causes the console to boot improperly. It’s behavior is:
o If there are reset retries left, the SMC shall consume a reset retry and attempt to boot the console again. The SMC shall not notify XSS of the impending seqReset, as the SetError received pre-handshake implicity causes the reset.
o If there are no unreset retries left, the SMC shall treat this error as if it had been reported after the handshake (see below). The SMC shall not finish the unReset sequence if it is interrupted.
• After the handshake:
o The SMC shall display the error pattern on the front panel.
o The console shall continue to FullOn mode from GoingFullOn mode, and remain in FullOn mode as normal, with the exception that the front panel LEDs are displaying an error. o XSS continues to run, and may display a UEM on the screen.