SNIU028D February 2016 – September 2020 UCD3138 , UCD3138064 , UCD3138064A , UCD3138128 , UCD3138A , UCD3138A64
The UCD3138 and UCD3138064 devices have bits called CLK_HIGH_DETECT (in PBINTM) and CLK_HIGH_TIMEOUT (in PMBST) but they are not recommended for use.
On the UCD3138A, UCD3138064A, UCD3138A64, UCD3138A64A, UCD3138128 and UCD3138128A, the Clock High Timeout function is usable. Because of the need for backward compatibility, the UCD3138A and the UCD3138064A handle it a bit differently than the other devices.
All of the devices which support Clock High Timeout have an enable/disable bit added to PMBCTRL3. On the ‘A64, ’A64A, ‘128 and ‘128A, the bit is an disable bit which defaults to a 1. On the UCD3138A and the ‘064A, it is an enable bit which defaults to a zero. This is to provide backward compatibility because bit was a zero in the non-a versions of those chips.
The name of the bit in PBINTM also changes. Here is a table of all the chips with the bit names:
PMBST | PMBINTM | PMBCTRL3 | Notes | |
---|---|---|---|---|
UCD3138 | CLK_HIGH_TIMEOUT | CLK_HIGH_DETECT | N/A | Do not use |
UCD3138064 | CLK_HIGH_TIMEOUT | CLK_HIGH_DETECT | N/A | Do not use |
UCD3138A64 | CLK_HIGH_TIMEOUT | CLK_HIGH_TIMEOUT | CLK_HI_DIS | Low to enable |
UCD3138128 | CLK_HIGH_TIMEOUT | CLK_HIGH_TIMEOUT | CLK_HI_DIS | Low to enable |
UCD3138A | CLK_HIGH_TIMEOUT | CLK_HIGH_DETECT | CLK_HI_EN | High to enable |
UCD3138064A | CLK_HIGH_TIMEOUT | CLK_HIGH_DETECT | CLK_HI_EN | High to enable |
UCD3138A64A | CLK_HIGH_TIMEOUT | CLK_HIGH_TIMEOUT | CLK_HI_DIS | Low to enable |
UCD3138128A | CLK_HIGH_TIMEOUT | CLK_HIGH_TIMEOUT | CLK_HI_DIS | Low to enable |
To enable clock high detection on the chips which support it, either set the CLK_HI_EN bit or clear the CLK_HI_DIS bit in PMBCTRL3. If the PMBus Clock pin stays high for 50 msec in the middle of a message to the UCD, the CLK_HIGH_TIMEOUT bit in PMBST will be set and the PMBus hardware will go to an idle state and wait for a new message. To enable an interrupt, clear the bit in PMBINTM.
The 50 msec time is not an official PMBus specification, but it is a useful way to determine if the bus clock is stuck high. With the hardware timeout detection, it is not necessary to use any firmware to detect timeout.