Commit 96315b6f authored by Henrique Silva's avatar Henrique Silva

Include functions to update the hotswap state mask

parent 2de2e7e0
......@@ -246,8 +246,8 @@ void vTaskPayload(void *pvParmeters)
break;
case PAYLOAD_POWER_GOOD_WAIT:
sensor_array[HOT_SWAP_SENSOR].readout_value &= ~HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK;
sensor_array[HOT_SWAP_SENSOR].readout_value &= ~HOTSWAP_BACKEND_PWR_FAILURE_MASK;
hotswap_clear_mask_bit( HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK );
hotswap_clear_mask_bit( HOTSWAP_BACKEND_PWR_FAILURE_MASK );
if (QUIESCED_req) {
new_state = PAYLOAD_SWITCHING_OFF;
} else if (P1V0_good == 1) {
......@@ -284,16 +284,15 @@ void vTaskPayload(void *pvParmeters)
case PAYLOAD_SWITCHING_OFF:
setDC_DC_ConvertersON(false);
sensor_array[HOT_SWAP_SENSOR].readout_value |= HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK;
evt_msg = HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK >> 1;
ipmi_event_send(&sensor_array[HOT_SWAP_SENSOR], ASSERTION_EVENT, &evt_msg, sizeof(evt_msg));
sensor_array[HOT_SWAP_SENSOR].readout_value |= HOTSWAP_QUIESCED_MASK;
evt_msg = HOTSWAP_QUIESCED_MASK >> 1;
if ( ipmi_event_send(&sensor_array[HOT_SWAP_SENSOR], ASSERTION_EVENT, &evt_msg, sizeof(evt_msg)) == ipmb_error_success) {
/*
hotswap_set_mask_bit( HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK );
hotswap_send_event( HOTSWAP_BACKEND_PWR_SHUTDOWN_MASK );
*/
hotswap_set_mask_bit( HOTSWAP_QUIESCED_MASK );
if ( hotswap_send_event( HOTSWAP_QUIESCED_MASK ) == ipmb_error_success ) {
QUIESCED_req = 0;
new_state = PAYLOAD_NO_POWER;
sensor_array[HOT_SWAP_SENSOR].readout_value &= ~HOTSWAP_QUIESCED_MASK;
hotswap_clear_mask_bit( HOTSWAP_QUIESCED_MASK );
}
break;
......
......@@ -188,16 +188,38 @@ void vTaskHotSwap( void *Parameters )
continue;
}
evt_msg = new_state >> 1;
if ( hotswap_send_event( new_state ) == ipmb_error_success )
{
hotswap_set_mask_bit( new_state );
old_state = new_state;
}
if ( ipmi_event_send(hotswap_sensor, ASSERTION_EVENT, &evt_msg, sizeof(evt_msg)) == ipmb_error_success) {
/* Update the SDR */
hotswap_sensor->readout_value = new_state;
old_state = new_state;
}
#endif
}
}
ipmb_error hotswap_send_event( uint8_t evt )
{
uint8_t evt_msg;
evt_msg = evt >> 1;
return ipmi_event_send( hotswap_sensor, ASSERTION_EVENT, &evt_msg, sizeof( evt_msg ) );
}
void hotswap_clear_mask_bit( uint8_t mask )
{
if ( hotswap_sensor ) {
hotswap_sensor->readout_value &= ~mask;
}
}
void hotswap_set_mask_bit( uint8_t mask )
{
if ( hotswap_sensor ) {
hotswap_sensor->readout_value |= mask;
}
}
/* AMC Hot-Swap sensor SDR */
const SDR_type_02h_t SDR_HOT_SWAP = {
......
......@@ -45,3 +45,6 @@ extern const SDR_type_02h_t SDR_HOT_SWAP;
void vTaskHotSwap( void *Parameters );
void hotswap_init( void );
ipmb_error hotswap_send_event( uint8_t evt );
void hotswap_set_mask_bit( uint8_t mask );
void hotswap_clear_mask_bit( uint8_t mask );
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment