Skip to content

Commit

Permalink
[POWERPC] PS3: Update sys-manager button events
Browse files Browse the repository at this point in the history
PS3 firmware 1.94 added the source of power and reset events to the
payload of the system manager POWER_PRESSED and RESET_PRESSED events.

Signed-off-by: Geoff Levand <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
  • Loading branch information
Geoff Levand authored and paulusmack committed Feb 14, 2008
1 parent 50dad90 commit ea24608
Showing 1 changed file with 23 additions and 6 deletions.
29 changes: 23 additions & 6 deletions drivers/ps3/ps3-sys-manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,11 @@ enum ps3_sys_manager_attr {

/**
* enum ps3_sys_manager_event - External event type, reported by system manager.
* @PS3_SM_EVENT_POWER_PRESSED: payload.value not used.
* @PS3_SM_EVENT_POWER_PRESSED: payload.value =
* enum ps3_sys_manager_button_event.
* @PS3_SM_EVENT_POWER_RELEASED: payload.value = time pressed in millisec.
* @PS3_SM_EVENT_RESET_PRESSED: payload.value not used.
* @PS3_SM_EVENT_RESET_PRESSED: payload.value =
* enum ps3_sys_manager_button_event.
* @PS3_SM_EVENT_RESET_RELEASED: payload.value = time pressed in millisec.
* @PS3_SM_EVENT_THERMAL_ALERT: payload.value = thermal zone id.
* @PS3_SM_EVENT_THERMAL_CLEARED: payload.value = thermal zone id.
Expand All @@ -157,6 +159,17 @@ enum ps3_sys_manager_event {
/* no info on controller events */
};

/**
* enum ps3_sys_manager_button_event - Button event payload values.
* @PS3_SM_BUTTON_EVENT_HARD: Hardware generated event.
* @PS3_SM_BUTTON_EVENT_SOFT: Software generated event.
*/

enum ps3_sys_manager_button_event {
PS3_SM_BUTTON_EVENT_HARD = 0,
PS3_SM_BUTTON_EVENT_SOFT = 1,
};

/**
* enum ps3_sys_manager_next_op - Operation to perform after lpar is destroyed.
*/
Expand Down Expand Up @@ -416,8 +429,10 @@ static int ps3_sys_manager_handle_event(struct ps3_system_bus_device *dev)

switch (event.type) {
case PS3_SM_EVENT_POWER_PRESSED:
dev_dbg(&dev->core, "%s:%d: POWER_PRESSED\n",
__func__, __LINE__);
dev_dbg(&dev->core, "%s:%d: POWER_PRESSED (%s)\n",
__func__, __LINE__,
(event.value == PS3_SM_BUTTON_EVENT_SOFT ? "soft"
: "hard"));
ps3_sm_force_power_off = 1;
/*
* A memory barrier is use here to sync memory since
Expand All @@ -432,8 +447,10 @@ static int ps3_sys_manager_handle_event(struct ps3_system_bus_device *dev)
__func__, __LINE__, event.value);
break;
case PS3_SM_EVENT_RESET_PRESSED:
dev_dbg(&dev->core, "%s:%d: RESET_PRESSED\n",
__func__, __LINE__);
dev_dbg(&dev->core, "%s:%d: RESET_PRESSED (%s)\n",
__func__, __LINE__,
(event.value == PS3_SM_BUTTON_EVENT_SOFT ? "soft"
: "hard"));
ps3_sm_force_power_off = 0;
/*
* A memory barrier is use here to sync memory since
Expand Down

0 comments on commit ea24608

Please sign in to comment.