OpenBIC
OpenSource Bridge-IC
plat_power_seq.h File Reference
#include "hal_gpio.h"
#include "plat_gpio.h"
Include dependency graph for plat_power_seq.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _e1s_power_control_gpio
 

Macros

#define MAX_E1S_IDX   5
 
#define OPA_MAX_E1S_IDX   3
 
#define ALL_E1S   0xFF
 
#define POWER_SEQ_CTRL_STACK_SIZE   1000
 
#define CHKPWR_DELAY_MSEC   100
 
#define RETIMER_DELAY_MSEC   2000
 
#define DEV_RESET_DELAY_USEC   100
 

Typedefs

typedef struct _e1s_power_control_gpio e1s_power_control_gpio
 

Enumerations

enum  CONTROL_POWER_MODE {
  ENABLE_POWER_MODE = 0x00 , LOW_ENABLE_POWER_MODE , DISABLE_POWER_MODE , HIGH_DISABLE_POWER_MODE ,
  ENABLE_POWER_MODE = 0x00 , DISABLE_POWER_MODE
}
 
enum  POWER_ON_STAGE {
  BOARD_POWER_ON_STAGE0 = 0x00 , BOARD_POWER_ON_STAGE1 , BOARD_POWER_ON_STAGE2 , RETIMER_POWER_ON_STAGE0 ,
  RETIMER_POWER_ON_STAGE1 , E1S_POWER_ON_STAGE0 , E1S_POWER_ON_STAGE1 , E1S_POWER_ON_STAGE2 ,
  E1S_POWER_ON_STAGE3 , ASIC_POWER_ON_STAGE1 = 0x00 , ASIC_POWER_ON_STAGE2 , DIMM_POWER_ON_STAGE1 ,
  DIMM_POWER_ON_STAGE2 , DIMM_POWER_ON_STAGE3 , ASIC_POWER_ON_STAGE = 0x00 , DIMM_POWER_ON_STAGE1 ,
  DIMM_POWER_ON_STAGE2 , DIMM_POWER_ON_STAGE3 , BOARD_POWER_ON_STAGE , CLK_POWER_ON_STAGE = 0 ,
  ASIC_POWER_ON_STAGE_1 , ASIC_POWER_ON_STAGE_2 , DIMM_POWER_ON_STAGE_1 , DIMM_POWER_ON_STAGE_2 ,
  DIMM_POWER_ON_STAGE_3 , MAX_POWER_ON_STAGES , ASIC_POWER_ON_STAGE_1 = 0 , CLK_POWER_ON_STAGE ,
  ASIC_POWER_ON_STAGE_2 , ASIC_POWER_ON_STAGE_3 , DIMM_POWER_ON_STAGE_1 , DIMM_POWER_ON_STAGE_2 ,
  DIMM_POWER_ON_STAGE_3 , MAX_POWER_ON_STAGES
}
 
enum  POWER_OFF_STAGE {
  E1S_POWER_OFF_STAGE0 = 0x00 , E1S_POWER_OFF_STAGE1 , E1S_POWER_OFF_STAGE2 , E1S_POWER_OFF_STAGE3 ,
  RETIMER_POWER_OFF_STAGE0 , RETIMER_POWER_OFF_STAGE1 , RETIMER_POWER_OFF_STAGE2 , BOARD_POWER_OFF_STAGE0 ,
  BOARD_POWER_OFF_STAGE1 , BOARD_POWER_OFF_STAGE2 , DIMM_POWER_OFF_STAGE1 = 0x00 , DIMM_POWER_OFF_STAGE2 ,
  DIMM_POWER_OFF_STAGE3 , ASIC_POWER_OFF_STAGE1 , ASIC_POWER_OFF_STAGE2 , BOARD_POWER_OFF_STAGE ,
  DIMM_POWER_OFF_STAGE1 = 0x00 , DIMM_POWER_OFF_STAGE2 , DIMM_POWER_OFF_STAGE3 , ASIC_POWER_OFF_STAGE1 ,
  ASIC_POWER_OFF_STAGE2 , BOARD_POWER_OFF_STAGE , DIMM_POWER_OFF_STAGE_1 = 0 , DIMM_POWER_OFF_STAGE_2 ,
  DIMM_POWER_OFF_STAGE_3 , ASIC_POWER_OFF_STAGE_1 , ASIC_POWER_OFF_STAGE_2 , ASIC_POWER_OFF_STAGE_3 ,
  CLK_POWER_OFF_STAGE , MAX_POWER_OFF_STAGES , DIMM_POWER_OFF_STAGE_1 = 0 , DIMM_POWER_OFF_STAGE_2 ,
  DIMM_POWER_OFF_STAGE_3 , ASIC_POWER_OFF_STAGE_1 , ASIC_POWER_OFF_STAGE_2 , ASIC_POWER_OFF_STAGE_3 ,
  CLK_POWER_OFF_STAGE , MAX_POWER_OFF_STAGES
}
 
enum  CHECK_POWER_SEQ_NUM_MAPPING {
  CHECK_POWER_SEQ_01 = FM_EXP_MAIN_PWR_EN , CHECK_POWER_SEQ_02 = PWRGD_P12V_MAIN , CHECK_POWER_SEQ_03 = OPA_PWRGD_P1V8_VR , CHECK_POWER_SEQ_04 = OPA_PWRGD_P0V9_VR ,
  CHECK_POWER_SEQ_05 = OPA_PWRGD_EXP_PWR , CHECK_POWER_SEQ_06 = OPA_CLKBUF_RTM_OE_N , CHECK_POWER_SEQ_07 = OPA_RESET_BIC_RTM_N , CHECK_POWER_SEQ_08 = OPA_PERST_BIC_RTM_N ,
  CHECK_POWER_SEQ_01 = P0V8_ASICA_PWRGD , CHECK_POWER_SEQ_02 = P0V8_ASICD_PWRGD , CHECK_POWER_SEQ_03 = P0V9_ASICA_PWRGD , CHECK_POWER_SEQ_04 = P1V8_ASIC_PG_R ,
  CHECK_POWER_SEQ_05 = PVPP_AB_PG_R , CHECK_POWER_SEQ_06 = PVPP_CD_PG_R , CHECK_POWER_SEQ_07 = PWRGD_PVDDQ_AB , CHECK_POWER_SEQ_08 = PWRGD_PVDDQ_CD ,
  CHECK_POWER_SEQ_09 = PVTT_AB_PG_R , CHECK_POWER_SEQ_10 = PVTT_CD_PG_R
}
 
enum  E1S_POWER_ON_STATUS { E1S_POWER_SUCCESS = 0 , E1S_PERST_SUCCESS = 1 }
 

Functions

bool get_e1s_present (uint8_t index)
 
bool get_e1s_power_good (uint8_t index)
 
bool get_edge_power_good ()
 
uint8_t get_e1s_pcie_reset_status (uint8_t index)
 
void init_sequence_status ()
 
void set_sequence_status (uint8_t index, bool status)
 
bool is_all_sequence_done (uint8_t status)
 
bool is_retimer_done (void)
 
void abort_e1s_power_thread (uint8_t index)
 
void e1s_power_on_thread (uint8_t index, uint8_t initial_stage)
 
void e1s_power_off_thread (uint8_t index)
 
void control_power_on_sequence (void *initial_stage, void *arvg0, void *arvg1)
 
void control_power_off_sequence ()
 
void control_power_stage (uint8_t control_mode, uint8_t control_seq)
 
int check_power_stage (uint8_t check_mode, uint8_t check_seq)
 
bool e1s_power_on_handler (uint8_t initial_stage, e1s_power_control_gpio *e1s_gpio, uint8_t device_index)
 
bool e1s_power_off_handler (uint8_t initial_stage, e1s_power_control_gpio *e1s_gpio, uint8_t device_index)
 
bool power_on_handler (uint8_t initial_stage)
 
bool power_off_handler (uint8_t initial_stage)
 
bool notify_cpld_e1s_present (uint8_t index, uint8_t present)
 
void abort_cpu_perst_low_thread ()
 
void cpu_perst_low_thread ()
 

Variables

e1s_power_control_gpio opa_e1s_power_control_gpio []
 
e1s_power_control_gpio opb_e1s_power_control_gpio []
 

Macro Definition Documentation

◆ ALL_E1S

#define ALL_E1S   0xFF

◆ CHKPWR_DELAY_MSEC

#define CHKPWR_DELAY_MSEC   100

◆ DEV_RESET_DELAY_USEC

#define DEV_RESET_DELAY_USEC   100

◆ MAX_E1S_IDX

#define MAX_E1S_IDX   5

◆ OPA_MAX_E1S_IDX

#define OPA_MAX_E1S_IDX   3

◆ POWER_SEQ_CTRL_STACK_SIZE

#define POWER_SEQ_CTRL_STACK_SIZE   1000

◆ RETIMER_DELAY_MSEC

#define RETIMER_DELAY_MSEC   2000

Typedef Documentation

◆ e1s_power_control_gpio

Enumeration Type Documentation

◆ CHECK_POWER_SEQ_NUM_MAPPING

Enumerator
CHECK_POWER_SEQ_01 
CHECK_POWER_SEQ_02 
CHECK_POWER_SEQ_03 
CHECK_POWER_SEQ_04 
CHECK_POWER_SEQ_05 
CHECK_POWER_SEQ_06 
CHECK_POWER_SEQ_07 
CHECK_POWER_SEQ_08 
CHECK_POWER_SEQ_01 
CHECK_POWER_SEQ_02 
CHECK_POWER_SEQ_03 
CHECK_POWER_SEQ_04 
CHECK_POWER_SEQ_05 
CHECK_POWER_SEQ_06 
CHECK_POWER_SEQ_07 
CHECK_POWER_SEQ_08 
CHECK_POWER_SEQ_09 
CHECK_POWER_SEQ_10 

◆ CONTROL_POWER_MODE

Enumerator
ENABLE_POWER_MODE 
LOW_ENABLE_POWER_MODE 
DISABLE_POWER_MODE 
HIGH_DISABLE_POWER_MODE 
ENABLE_POWER_MODE 
DISABLE_POWER_MODE 

◆ E1S_POWER_ON_STATUS

Enumerator
E1S_POWER_SUCCESS 
E1S_PERST_SUCCESS 

◆ POWER_OFF_STAGE

Enumerator
E1S_POWER_OFF_STAGE0 
E1S_POWER_OFF_STAGE1 
E1S_POWER_OFF_STAGE2 
E1S_POWER_OFF_STAGE3 
RETIMER_POWER_OFF_STAGE0 
RETIMER_POWER_OFF_STAGE1 
RETIMER_POWER_OFF_STAGE2 
BOARD_POWER_OFF_STAGE0 
BOARD_POWER_OFF_STAGE1 
BOARD_POWER_OFF_STAGE2 
DIMM_POWER_OFF_STAGE1 
DIMM_POWER_OFF_STAGE2 
DIMM_POWER_OFF_STAGE3 
ASIC_POWER_OFF_STAGE1 
ASIC_POWER_OFF_STAGE2 
BOARD_POWER_OFF_STAGE 
DIMM_POWER_OFF_STAGE1 
DIMM_POWER_OFF_STAGE2 
DIMM_POWER_OFF_STAGE3 
ASIC_POWER_OFF_STAGE1 
ASIC_POWER_OFF_STAGE2 
BOARD_POWER_OFF_STAGE 
DIMM_POWER_OFF_STAGE_1 
DIMM_POWER_OFF_STAGE_2 
DIMM_POWER_OFF_STAGE_3 
ASIC_POWER_OFF_STAGE_1 
ASIC_POWER_OFF_STAGE_2 
ASIC_POWER_OFF_STAGE_3 
CLK_POWER_OFF_STAGE 
MAX_POWER_OFF_STAGES 
DIMM_POWER_OFF_STAGE_1 
DIMM_POWER_OFF_STAGE_2 
DIMM_POWER_OFF_STAGE_3 
ASIC_POWER_OFF_STAGE_1 
ASIC_POWER_OFF_STAGE_2 
ASIC_POWER_OFF_STAGE_3 
CLK_POWER_OFF_STAGE 
MAX_POWER_OFF_STAGES 

◆ POWER_ON_STAGE

Enumerator
BOARD_POWER_ON_STAGE0 
BOARD_POWER_ON_STAGE1 
BOARD_POWER_ON_STAGE2 
RETIMER_POWER_ON_STAGE0 
RETIMER_POWER_ON_STAGE1 
E1S_POWER_ON_STAGE0 
E1S_POWER_ON_STAGE1 
E1S_POWER_ON_STAGE2 
E1S_POWER_ON_STAGE3 
ASIC_POWER_ON_STAGE1 
ASIC_POWER_ON_STAGE2 
DIMM_POWER_ON_STAGE1 
DIMM_POWER_ON_STAGE2 
DIMM_POWER_ON_STAGE3 
ASIC_POWER_ON_STAGE 
DIMM_POWER_ON_STAGE1 
DIMM_POWER_ON_STAGE2 
DIMM_POWER_ON_STAGE3 
BOARD_POWER_ON_STAGE 
CLK_POWER_ON_STAGE 
ASIC_POWER_ON_STAGE_1 
ASIC_POWER_ON_STAGE_2 
DIMM_POWER_ON_STAGE_1 
DIMM_POWER_ON_STAGE_2 
DIMM_POWER_ON_STAGE_3 
MAX_POWER_ON_STAGES 
ASIC_POWER_ON_STAGE_1 
CLK_POWER_ON_STAGE 
ASIC_POWER_ON_STAGE_2 
ASIC_POWER_ON_STAGE_3 
DIMM_POWER_ON_STAGE_1 
DIMM_POWER_ON_STAGE_2 
DIMM_POWER_ON_STAGE_3 
MAX_POWER_ON_STAGES 

Function Documentation

◆ abort_cpu_perst_low_thread()

void abort_cpu_perst_low_thread ( )

◆ abort_e1s_power_thread()

void abort_e1s_power_thread ( uint8_t  index)

◆ check_power_stage()

int check_power_stage ( uint8_t  check_mode,
uint8_t  check_seq 
)
Here is the call graph for this function:

◆ control_power_off_sequence()

void control_power_off_sequence ( )

◆ control_power_on_sequence()

void control_power_on_sequence ( void *  initial_stage,
void *  arvg0,
void *  arvg1 
)
Here is the call graph for this function:

◆ control_power_stage()

void control_power_stage ( uint8_t  control_mode,
uint8_t  control_seq 
)

◆ cpu_perst_low_thread()

void cpu_perst_low_thread ( )
Here is the call graph for this function:

◆ e1s_power_off_handler()

bool e1s_power_off_handler ( uint8_t  initial_stage,
e1s_power_control_gpio e1s_gpio,
uint8_t  device_index 
)

◆ e1s_power_off_thread()

void e1s_power_off_thread ( uint8_t  index)
Here is the call graph for this function:

◆ e1s_power_on_handler()

bool e1s_power_on_handler ( uint8_t  initial_stage,
e1s_power_control_gpio e1s_gpio,
uint8_t  device_index 
)

◆ e1s_power_on_thread()

void e1s_power_on_thread ( uint8_t  index,
uint8_t  initial_stage 
)
Here is the call graph for this function:

◆ get_e1s_pcie_reset_status()

uint8_t get_e1s_pcie_reset_status ( uint8_t  index)

◆ get_e1s_power_good()

bool get_e1s_power_good ( uint8_t  index)

◆ get_e1s_present()

bool get_e1s_present ( uint8_t  index)

◆ get_edge_power_good()

bool get_edge_power_good ( )

◆ init_sequence_status()

void init_sequence_status ( )

◆ is_all_sequence_done()

bool is_all_sequence_done ( uint8_t  status)

◆ is_retimer_done()

bool is_retimer_done ( void  )

◆ notify_cpld_e1s_present()

bool notify_cpld_e1s_present ( uint8_t  index,
uint8_t  present 
)

◆ power_off_handler()

bool power_off_handler ( uint8_t  initial_stage)

◆ power_on_handler()

bool power_on_handler ( uint8_t  initial_stage)

◆ set_sequence_status()

void set_sequence_status ( uint8_t  index,
bool  status 
)

Variable Documentation

◆ opa_e1s_power_control_gpio

e1s_power_control_gpio opa_e1s_power_control_gpio[]
extern

◆ opb_e1s_power_control_gpio

e1s_power_control_gpio opb_e1s_power_control_gpio[]
extern