Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
openMMC
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
openMMC
Commits
96315b6f
Commit
96315b6f
authored
Feb 22, 2016
by
Henrique Silva
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Include functions to update the hotswap state mask
parent
2de2e7e0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
16 deletions
+40
-16
payload.c
modules/payload.c
+9
-10
hotswap.c
modules/sensors/hotswap.c
+28
-6
hotswap.h
modules/sensors/hotswap.h
+3
-0
No files found.
modules/payload.c
View file @
96315b6f
...
...
@@ -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
;
...
...
modules/sensors/hotswap.c
View file @
96315b6f
...
...
@@ -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
=
{
...
...
modules/sensors/hotswap.h
View file @
96315b6f
...
...
@@ -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
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment