commit | e2d0f42617d2e0c10eddee9e70e394cab4ae94ea | [log] [tgz] |
---|---|---|
author | Potin Lai <potin.lai@quantatw.com> | Tue Dec 20 13:43:58 2022 +0800 |
committer | Potin Lai <potin.lai@quantatw.com> | Tue Dec 20 13:59:41 2022 +0800 |
tree | a8f8b0c6b008f35c19d5c421d07467b3eef2fd6c | |
parent | c7645850ca6d93434a42f0492a1be21f478b98ce [diff] |
button_handler: fix invalid power event error Current power button handler handles longPowerReleased event, which should be longPowerPressed. revert back to longPowerPressed to avoid error of invalid power event. Tested on Bletchley: - Before ``` root@bletchley:~# journalctl -u phosphor-button-handler Dec 19 21:52:53 bletchley button-handler[521]: Multi-host system detected : 6 Dec 19 21:52:53 bletchley button-handler[521]: 1 is invalid power event. skipping... ``` - After ``` root@bletchley:~# journalctl -u phosphor-button-handler Dec 19 21:34:58 bletchley button-handler[418]: Multi-host system detected : 6 Dec 19 21:34:58 bletchley button-handler[418]: handlePowerEvent : handle long power button press ``` Signed-off-by: Potin Lai <potin.lai@quantatw.com> Change-Id: I77977f23f9e669cd4a8785608f1cb3ca4d148bed
Phosphor-buttons has a collection of IO event handler interfaces for physical inputs which are part of OCP front panel.
It defines an individual dbus interface object for each physical button/switch inputs such as power button, reset button etc. Each of this button interfaces monitors it's associated io for event changes and calls the respective event handlers.
In order to monitor a button/input interface the respective gpio config details should be mentioned in the gpio defs json file - /etc/default/obmc/gpio/gpio_defs.json
{ "gpio_definitions": [ { "name": "POWER_BUTTON", "gpio_config" :[ { "pin": "D0", "direction": "both" } ] }, { "name": "RESET_BUTTON", "gpio_config" :[ { "pin": "AB0", "direction": "both" } ] }, { "name" : "HOST_SELECTOR", "group_gpio_config" : [ { "pin": "AA4", "direction": "both" }, { "pin": "AA5", "direction": "both" }, { "pin": "AA6", "direction": "both" }, { "pin": "AA7", "direction": "both" } ] }, }
This config is original config which can be used for configs with only single gpio such as power button,reset button, OCP debug card host select button.
{ "name": "POWER_BUTTON", "pin": "D0", "direction": "both" },
Note: this config is used by most of the other platforms so this format is kept as it is so that existing gpio configs do not get affected.
The following configs are related to multi-host bmc systems more info explained in the design: https://github.com/openbmc/docs/blob/master/designs/multihost-phosphor-buttons.md
The host selector has four gpios associated. So the related gpios are mentioned in a json array named group_gpio_config.
Example : The value of "7" derived from the 4 host select gpio lines are mapped to host position 1.
{ "name": "HOST_SELECTOR", "group_gpio_config": [ { "name": "host_select_0", "pin": "AA4", "direction": "both", "polarity": "active_high" }, { "name": "host_select_1", "pin": "AA5", "direction": "both", "polarity": "active_high" }, { "name": "host_select_2", "pin": "AA6", "direction": "both", "polarity": "active_high" }, { "name": "host_select_3", "pin": "AA7", "direction": "both", "polarity": "active_high" } ], "max_position": 4, "host_selector_map": { "6": 0, "7": 1, "8": 2, "9": 3, "10": 4, "11": 0, "12": 1, "13": 2, "14": 3, "15": 4 } }
Similar to host selector there are multiple gpios associated with the serial uart mux. These gpio configs are specificed as part of json array "group_gpio_config".
Here the serial uart mux output is accessed via OCP debug card. SO the OCP debug card present gpio is mentioned part of the group_gpio_config. The debug card present gpio is identified by its name "debug_card_present".
The other gpios part of the group gpio config is serial uart MUX gpio select lines and serial_uart_rx line.
{ "name": "SERIAL_UART_MUX", "group_gpio_config": [ { "name": "serial_uart_sel_0", "pin": "E0", "direction": "out", "polarity": "active_high" }, { "name": "serial_uart_sel_1", "pin": "E1", "direction": "out", "polarity": "active_high" }, { "name": "serial_uart_sel_2", "pin": "E2", "direction": "out", "polarity": "active_high" }, { "name": "serial_uart_sel_3", "pin": "E3", "direction": "out", "polarity": "active_high" }, { "name": "serial_uart_rx", "pin": "E4", "direction": "out", "polarity": "active_high" }, { "name": "debug_card_present", "pin": "R3", "direction": "both", "polarity": "active_high" } ], "serial_uart_mux_map": { "0": 4, "1": 0, "2": 1, "3": 2, "4": 3 } }