ZHCSKK3B December 2019 – February 2022 TPS6594-Q1
PRODUCTION DATA
The configuration memory is loaded from NVM into an SRAM. Figure 8-41 shows an example configuration memory with only two configured sequences.
As soon as the PMIC state reaches the mission states, it starts reading from the configuration memory until it hits the first END command. Setting up the triggers (1-28) must be the first section of the configuration memory, as well as the first set of trigger configurations. The trigger configurations are read and mapped to an internal lookup table, which contains the starting address associated with each trigger in the configuration memory. If the trigger destination is an FFSM state then the address contains the fixed state value. After the trigger configurations are read and mapped into the SRAM, these triggers control the execution flow of the state transitions. The signal source of each trigger is listed under Table 8-15.
When a trigger or multiple triggers are activated, the PFSM execution engine looks up the starting address associated with the highest priority trigger which is unmasked, and starts executing commands until it hits an END command. The last commands before END statement is generally the TRIG_MASK command, which directs the PFSM to a new set of unmasked trigger configurations, and the trigger with the highest priority in the new set is serviced next. Trigger priority is determined by the Trigger ID associated with each trigger. The priority of the trigger decreases as the associated trigger ID increases. As a result, the critical error triggers are usually located at the lowest trigger IDs.
The TRIG_SET commands specify if a trigger is immediate or non-immediate. Immediate triggers are serviced immediately, which involves branching from the current sequence of commands to reach a new target destination. The non-immediate triggers are accumulated and serviced in the order of priority through the execution of each given sequence until the END command in reached. Therefore, the trigger ID assignment for each trigger can be arranged to produce the desired PFSM behavior.
The TRIG_MASK command determines which triggers are active at the end of each sequence, and is usually placed just before the END instruction. The TRIG_MASK takes a 28 bit input to allow any combination of triggers to be enabled with a single command. Through the definition of the active triggers after each sequence execution the TRIG_MASK command can be conceptualized as establishing a power state.
The above sequence of waiting for triggers and executing the sequence associated with an activated trigger is the normal operating condition of the PFSM execution engine when the PMIC is in the MISSION state. The FFSM state machine takes over control from the execution engine each time an event occurs that requires a transition from the MISSION state of the PMIC to a fixed device state.
Trigger Name | Trigger Source |
---|---|
IMMEDIATE_SHUTDOWN | An error event causes one of the triggers defined in the FSM_TRIG_SEL_1/2 register to activate, and the intended action for the activated trigger is to immediate shutdown the device |
MCU_POWER_ERROR | Output failure detection from a regulator which is assigned to the MCU rail group (x_GRP_SEL = '01') |
ORDERLY_SHUTDOWN | An event which causes MODERATE_ERR_INT = '1' |
FORCE_STANDBY | nPWRON long-press event when NPOWRON_SEL = '01', or ENABLE = '0' when NPOWERON_SEL = '00' |
SPMI_WD_BIST_DONE | Completion of SPMI WatchDog BIST |
ESM_MCU_ERROR | An event which causes ESM_MCU_FAIL_INT |
WD_ERROR | An event which causes WD_INT |
SOC_POWER_ERROR | Output failure detection from a regulator which is assigned to the SOC rail group (x_GRP_SEL = '10') |
ESM_SOC_ERROR | An event which causes ESM_SOC_FAIL_INT |
A | NSLEEP2 and NSLEEP1 = '11'. More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3 |
WKUP1 | A rising or falling edge detection on a GPIO pin which is configured as WKUP1 or LP_WKUP1 |
SU_ACTIVE | A valid On-Request detection when STARTUP_DEST = '11' |
B | NSLEEP2 and NSLEEP1 = '10'. More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3 |
WKUP2 | A rising or falling edge detection on a GPIO pin which is configured as WKUP2 or LP_WKUP2 |
SU_MCU_ONLY | A valid On-Request detection when STARTUP_DEST = '10' |
C | NSLEEP2 and NSLEEP1 = '01', More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3 |
D | NSLEEP2 and NSLEEP1 = '00'. More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3 |
SU_STANDBY | A valid On-Request detection when STARTUP_DEST = '00' |
SU_X | A valid On-Request detection when STARTUP_DEST = '01' |
WAIT_TIMEOUT | PFSM WAIT command condition timed out. More information regarding the WAIT command can be found under Section 8.4.1.2.1.11 |
GPIO1 | Input detection at GPIO1 pin |
GPIO2 | Input detection at GPIO2 pin |
GPIO3 | Input detection at GPIO3 pin |
GPIO4 | Input detection at GPIO4 pin |
GPIO5 | Input detection at GPIO5 pin |
GPIO6 | Input detection at GPIO6 pin |
GPIO7 | Input detection at GPIO7 pin |
GPIO8 | Input detection at GPIO8 pin |
GPIO9 | Input detection at GPIO9 pin |
GPIO10 | Input detection at GPIO10 pin |
GPIO11 | Input detection at GPIO11 pin |
I2C_0 | Input detection of TRIGGER_I2C_0 bit |
I2C_1 | Input detection of TRIGGER_I2C_1 bit |
I2C_2 | Input detection of TRIGGER_I2C_2 bit |
I2C_3 | Input detection of TRIGGER_I2C_3 bit |
I2C_4 | Input detection of TRIGGER_I2C_4 bit |
I2C_5 | Input detection of TRIGGER_I2C_5 bit |
I2C_6 | Input detection of TRIGGER_I2C_6 bit |
I2C_7 | Input detection of TRIGGER_I2C_7 bit |
SREG0_0 | Input detection of SCRATCH_PAD_REG_0 bit 0 |
SREG0_1 | Input detection of SCRATCH_PAD_REG_0 bit 1 |
SREG0_2 | Input detection of SCRATCH_PAD_REG_0 bit 2 |
SREG0_3 | Input detection of SCRATCH_PAD_REG_0 bit 3 |
SREG0_4 | Input detection of SCRATCH_PAD_REG_0 bit 4 |
SREG0_5 | Input detection of SCRATCH_PAD_REG_0 bit 5 |
SREG0_6 | Input detection of SCRATCH_PAD_REG_0 bit 6 |
SREG0_7 | Input detection of SCRATCH_PAD_REG_0 bit 7 |
0 | Always '0' |
1 | Always '1' |