SMBus Target Interface
The PCH SMBus Target interface is accessed using the SMBus. The SMBus Target logic will not generate or handle receiving the PEC byte and will only act as a Legacy Alerting Protocol device. The target interface allows the PCH to decode cycles, and allows an external micro controller to perform specific actions.
Key features and capabilities include:
- Supports decode of three types of messages: Byte Write, Byte Read, and Host Notify.
- Receive Target Address register: This is the address that the PCH decodes. A default value is provided so that the target interface can be used without the processor having to program this register.
- Receive Target Data register in the SMBus I/O space that includes the data written by the external micro controller.
- Registers that the external micro controller can read to get the state of the PCH.
If a initiator leaves the clock and data bits of the SMBus interface at 1 for 50 µs or more in the middle of a cycle, the PCH Target logic's behavior is undefined. This is interpreted as an unexpected idle and should be avoided when performing management activities to the target logic.
Format of Target Write Cycle
The external initiator performs Byte Write commands to the PCH SMBus Target I/F. The “Command” field (bits 11:18) indicate which register is being accessed. The Data field (bits 20:27) indicate the value that should be written to that register.
The table below has the values associated with the registers.
Format of Read Command
The external initiator performs Byte Read commands to the PCH SMBus Target interface. The “Command” field (bits 18:11) indicate which register is being accessed. The Data field (bits 30:37) contain the value that should be read from that register.
Bit | Description | Driven By | Comment |
---|---|---|---|
1 | Start | External Micro controller | |
2–8 | Target Address - 7 bits | External Micro controller | Must match value in Receive Target Address register |
9 | Write | External Micro controller | Always 0 |
10 | ACK | PCH | |
11–18 | Command code – 8 bits | External Micro controller | Indicates which register is being accessed. Refer to the Table below for a list of implemented registers. |
19 | ACK | PCH | |
20 | Repeated Start | External Micro controller | |
21–27 | Target Address - 7 bits | External Micro controller | Must match value in Receive Target Address register |
28 | Read | External Micro controller | Always 1 |
29 | ACK | PCH | |
30–37 | Data Byte | PCH | Value depends on register being accessed. Refer to the Table below for a list of implemented registers. |
38 | NOT ACK | External Micro controller | |
39 | Stop | External Micro controller |
- Behavioral Notes
According to SMBus protocol, Read and Write messages always begin with a Start bit—Address—Write bit sequence. When the PCH detects that the address matches the value in the Receive Target Address register, it will assume that the protocol is always followed and ignore the Write bit (Bit 9) and signal an Acknowledge during bit 10. In other words, if a Start—Address—Read occurs (which is invalid for SMBus Read or Write protocol), and the address matches the PCH’s Target Address, the PCH will still grab the cycle.
Also according to SMBus protocol, a Read cycle contains a Repeated Start—Address—Read sequence beginning at Bit 20. Once again, if the Address matches the PCH’s Receive Target Address, it will assume that the protocol is followed, ignore bit 28, and proceed with the Target Read cycle.
Target Read of RTC Time Bytes
The PCH SMBus Target interface allows external SMBus initiator to read the internal RTC’s time byte registers.
The RTC time bytes are internally latched by the PCH’s hardware whenever RTC time is not changing and SMBus is idle. This ensures that the time byte delivered to the target read is always valid and it does not change when the read is still in progress on the bus. The RTC time will change whenever hardware update is in progress, or there is a software write to the RTC time bytes.
The PCH SMBus target interface only supports Byte Read operation. The external SMBus initiator will read the RTC time bytes one after another. It is the software’s responsibility to check and manage the possible time rollover when subsequent time bytes are read.
For example, assuming the RTC time is 11 hours: 59 minutes: 59 seconds. When the external SMBus initiator reads the hour as 11, then proceeds to read the minute, it is possible that the rollover happens between the reads and the minute is read as 0. This results in 11 hours: 0 minute instead of the correct time of 12 hours: 0 minutes. Unless it is certain that rollover will not occur, software is required to detect the possible time rollover by reading multiple times such that the read time bytes can be adjusted accordingly if needed.
Format of Host Notify Command
The PCH tracks and responds to the standard Host Notify command as specified in the System Management Bus (SMBus) Specification, Version 2.0. The host address for this command is fixed to 0001000b. If the PCH already has data for a previously - received host notify command which has not been serviced yet by the host software (as indicated by the HOST_NOTIFY_STS bit), then it will NACK following the host address byte of the protocol. This allows the host to communicate non - acceptance to the initiator and retain the host notify address and data values for the previous cycle until host software completely services the interrupt.
The table below shows the Host Notify format:
Bit | Description | Driven By | Comment |
---|---|---|---|
1 | Start | External initiator | |
8:2 | SMB Host Address – 7 bits | External initiator | Always 0001_000 |
9 | Write | External initiator | Always 0 |
10 | ACK (or NACK) | PCH | PCH NACKs if HOST_NOTIFY_STS is 1 |
17:11 | Device Address – 7 bits | External initiator | Indicates the address of the initiator; loaded into the Notify Device Address Register |
18 | Unused – Always 0 | External initiator | 7 - bit - only address; this bit is inserted to complete the byte |
19 | ACK | PCH | |
27:20 | Data Byte Low – 8 bits | External initiator | Loaded into the Notify Data Low Byte Register |
28 | ACK | PCH | |
36:29 | Data Byte High – 8 bits | External initiator | Loaded into the Notify Data High Byte Register |
37 | ACK | PCH | |
38 | Stop | External initiator |
Format of Read Command
The external initiator performs Byte Read commands to the PCH SMBus Target interface. The “Command” field (bits 18:11) indicate which register is being accessed. The Data field (bits 30:37) contain the value that should be read from that register.
Bit | Description | Driven By | Comment |
---|---|---|---|
1 | Start | External Micro controller | |
2–8 | Target Address - 7 bits | External Micro controller | Must match value in Receive Target Address register |
9 | Write | External Micro controller | Always 0 |
10 | ACK | PCH | |
11–18 | Command code – 8 bits | External Micro controller | Indicates which register is being accessed. Refer to the Tale below for a list of implemented registers. |
19 | ACK | PCH | |
20 | Repeated Start | External Micro controller | |
21–27 | Target Address - 7 bits | External Micro controller | Must match value in Receive Target Address register |
28 | Read | External Micro controller | Always 1 |
29 | ACK | PCH | |
30–37 | Data Byte | PCH | Value depends on register being accessed. Refer to the Table below for a list of implemented registers. |
38 | NOT ACK | External Micro controller | |
39 | Stop | External Micro controller |
Event | INTREN (Host Control I/O Register, Offset 02h, Bit 0) | SMB_SMI_EN (Host Configuration Register, D31:F3:Offset 40h, Bit 1) | Event |
---|---|---|---|
Target Write to Wake/SMI# Command | X | X | Wake generated when asleep. Target SMI# generated when awake (SMBUS_SMI_STS) |
Target Write to SMLINK_SLAVE_SMI Command | X | X | Target SMI# generated when in the S0 state (SMBUS_SMI_STS) |
Any combination of Host Status Register [4:1] asserted | 0 | X | None |
1 | 0 | Interrupt generated | |
1 | 1 | Host SMI# generated |