1dd5495cfSNaveen Moses# phosphor-buttons 2dd5495cfSNaveen Moses 3793f9b85SPatrick WilliamsPhosphor-buttons has a collection of IO event handler interfaces for physical 4793f9b85SPatrick Williamsinputs which are part of OCP front panel. 5dd5495cfSNaveen Moses 6793f9b85SPatrick WilliamsIt defines an individual dbus interface object for each physical button/switch 7793f9b85SPatrick Williamsinputs such as power button, reset button etc. Each of this button interfaces 8793f9b85SPatrick Williamsmonitors it's associated io for event changes and calls the respective event 9793f9b85SPatrick Williamshandlers. 10dd5495cfSNaveen Moses 11dd5495cfSNaveen Moses## Gpio defs config 12793f9b85SPatrick Williams 13793f9b85SPatrick WilliamsIn order to monitor a button/input interface the respective gpio config details 14793f9b85SPatrick Williamsshould be mentioned in the gpio defs json file - 15*c7645850SPatrick Williams`/etc/default/obmc/gpio/gpio_defs.json` 16dd5495cfSNaveen Moses 17dd5495cfSNaveen Moses1. The button interface type name. 18793f9b85SPatrick Williams2. An array consists of single or multiple gpio configs associated with the 19793f9b85SPatrick Williams specific button interface. 20dd5495cfSNaveen Moses 21dd5495cfSNaveen Moses## example gpio def Json config 22793f9b85SPatrick Williams 23*c7645850SPatrick Williams```json 24dd5495cfSNaveen Moses{ 25dd5495cfSNaveen Moses "gpio_definitions": [ 26dd5495cfSNaveen Moses { 27dd5495cfSNaveen Moses "name": "POWER_BUTTON", 28dd5495cfSNaveen Moses "gpio_config" :[ 29dd5495cfSNaveen Moses { 30dd5495cfSNaveen Moses "pin": "D0", 31dd5495cfSNaveen Moses "direction": "both" 32dd5495cfSNaveen Moses } 33dd5495cfSNaveen Moses ] 34dd5495cfSNaveen Moses }, 35dd5495cfSNaveen Moses { 36dd5495cfSNaveen Moses "name": "RESET_BUTTON", 37dd5495cfSNaveen Moses "gpio_config" :[ 38dd5495cfSNaveen Moses { 39dd5495cfSNaveen Moses "pin": "AB0", 40dd5495cfSNaveen Moses "direction": "both" 41dd5495cfSNaveen Moses } 42dd5495cfSNaveen Moses ] 43dd5495cfSNaveen Moses }, 44dd5495cfSNaveen Moses { 45dd5495cfSNaveen Moses "name" : "HOST_SELECTOR", 46dd5495cfSNaveen Moses 47d219fa3cSNaveen Moses "group_gpio_config" : [ 48dd5495cfSNaveen Moses { 49dd5495cfSNaveen Moses "pin": "AA4", 50dd5495cfSNaveen Moses "direction": "both" 51dd5495cfSNaveen Moses }, 52dd5495cfSNaveen Moses { 53dd5495cfSNaveen Moses "pin": "AA5", 54dd5495cfSNaveen Moses "direction": "both" 55dd5495cfSNaveen Moses }, 56dd5495cfSNaveen Moses { 57dd5495cfSNaveen Moses "pin": "AA6", 58dd5495cfSNaveen Moses "direction": "both" 59dd5495cfSNaveen Moses }, 60dd5495cfSNaveen Moses { 61dd5495cfSNaveen Moses "pin": "AA7", 62dd5495cfSNaveen Moses "direction": "both" 63dd5495cfSNaveen Moses } 64dd5495cfSNaveen Moses ] 65dd5495cfSNaveen Moses }, 66dd5495cfSNaveen Moses 67dd5495cfSNaveen Moses} 68d219fa3cSNaveen Moses``` 69793f9b85SPatrick Williams 70d219fa3cSNaveen Moses## Single gpio config 71793f9b85SPatrick Williams 72793f9b85SPatrick WilliamsThis config is original config which can be used for configs with only single 73793f9b85SPatrick Williamsgpio such as power button,reset button, OCP debug card host select button. 74793f9b85SPatrick Williams 75*c7645850SPatrick Williams```json 76d219fa3cSNaveen Moses{ 77d219fa3cSNaveen Moses "name": "POWER_BUTTON", 78d219fa3cSNaveen Moses "pin": "D0", 79d219fa3cSNaveen Moses "direction": "both" 80d219fa3cSNaveen Moses}, 81d219fa3cSNaveen Moses``` 82793f9b85SPatrick Williams 83793f9b85SPatrick Williams**Note:** this config is used by most of the other platforms so this format is 84793f9b85SPatrick Williamskept as it is so that existing gpio configs do not get affected. 85d219fa3cSNaveen Moses 86d219fa3cSNaveen Moses## Group gpio config 87793f9b85SPatrick Williams 88793f9b85SPatrick WilliamsThe following configs are related to multi-host bmc systems more info explained 89793f9b85SPatrick Williamsin the design: 90*c7645850SPatrick Williams<https://github.com/openbmc/docs/blob/master/designs/multihost-phosphor-buttons.md> 91d219fa3cSNaveen Moses 92d219fa3cSNaveen Moses### Host selector gpio config example 93793f9b85SPatrick Williams 94d219fa3cSNaveen MosesThe host selector has four gpios associated. So the related gpios are mentioned 95*c7645850SPatrick Williamsin a json array named group_gpio_config. 96d219fa3cSNaveen Moses 97793f9b85SPatrick Williams- name - This is name of the specific gpio line 98793f9b85SPatrick Williams- pin - This represents the pin number from linux dts file. 99793f9b85SPatrick Williams- polarity - polarity type of the gpio 100793f9b85SPatrick Williams- max_position - This represents the max number of hosts in the multi-host bmc 101793f9b85SPatrick Williams system. 102793f9b85SPatrick Williams- host_selector_map - This map is oem specific host position map which has how 103793f9b85SPatrick Williams the value read from the host selector gpios is mapped to the respective host 104793f9b85SPatrick Williams number. 105d219fa3cSNaveen Moses 106d219fa3cSNaveen MosesExample : The value of "7" derived from the 4 host select gpio lines are mapped 107d219fa3cSNaveen Mosesto host position 1. 108793f9b85SPatrick Williams 109*c7645850SPatrick Williams```json 110d219fa3cSNaveen Moses{ 111d219fa3cSNaveen Moses "name": "HOST_SELECTOR", 112d219fa3cSNaveen Moses 113d219fa3cSNaveen Moses "group_gpio_config": [ 114d219fa3cSNaveen Moses { 115d219fa3cSNaveen Moses "name": "host_select_0", 116d219fa3cSNaveen Moses "pin": "AA4", 117d219fa3cSNaveen Moses "direction": "both", 118d219fa3cSNaveen Moses "polarity": "active_high" 119d219fa3cSNaveen Moses }, 120d219fa3cSNaveen Moses { 121d219fa3cSNaveen Moses "name": "host_select_1", 122d219fa3cSNaveen Moses "pin": "AA5", 123d219fa3cSNaveen Moses "direction": "both", 124d219fa3cSNaveen Moses "polarity": "active_high" 125d219fa3cSNaveen Moses }, 126d219fa3cSNaveen Moses { 127d219fa3cSNaveen Moses "name": "host_select_2", 128d219fa3cSNaveen Moses "pin": "AA6", 129d219fa3cSNaveen Moses "direction": "both", 130d219fa3cSNaveen Moses "polarity": "active_high" 131d219fa3cSNaveen Moses }, 132d219fa3cSNaveen Moses { 133d219fa3cSNaveen Moses "name": "host_select_3", 134d219fa3cSNaveen Moses "pin": "AA7", 135d219fa3cSNaveen Moses "direction": "both", 136d219fa3cSNaveen Moses "polarity": "active_high" 137d219fa3cSNaveen Moses } 138d219fa3cSNaveen Moses ], 139d219fa3cSNaveen Moses "max_position": 4, 140d219fa3cSNaveen Moses "host_selector_map": { 141d219fa3cSNaveen Moses "6": 0, 142d219fa3cSNaveen Moses "7": 1, 143d219fa3cSNaveen Moses "8": 2, 144d219fa3cSNaveen Moses "9": 3, 145d219fa3cSNaveen Moses "10": 4, 146d219fa3cSNaveen Moses "11": 0, 147d219fa3cSNaveen Moses "12": 1, 148d219fa3cSNaveen Moses "13": 2, 149d219fa3cSNaveen Moses "14": 3, 150d219fa3cSNaveen Moses "15": 4 151d219fa3cSNaveen Moses } 152*c7645850SPatrick Williams} 153d219fa3cSNaveen Moses``` 154793f9b85SPatrick Williams 155d219fa3cSNaveen Moses### Serial uart mux config 156793f9b85SPatrick Williams 157793f9b85SPatrick WilliamsSimilar to host selector there are multiple gpios associated with the serial 158793f9b85SPatrick Williamsuart mux. These gpio configs are specificed as part of json array 159d219fa3cSNaveen Moses"group_gpio_config". 160d219fa3cSNaveen Moses 161793f9b85SPatrick WilliamsHere the serial uart mux output is accessed via OCP debug card. SO the OCP debug 162793f9b85SPatrick Williamscard present gpio is mentioned part of the group_gpio_config. The debug card 163793f9b85SPatrick Williamspresent gpio is identified by its name "debug_card_present". 164d219fa3cSNaveen Moses 165793f9b85SPatrick WilliamsThe other gpios part of the group gpio config is serial uart MUX gpio select 166793f9b85SPatrick Williamslines and serial_uart_rx line. 167d219fa3cSNaveen Moses 168793f9b85SPatrick Williams- name - this is name of the specific gpio line 169793f9b85SPatrick Williams- pin - this represents the pin number from linux dts file. 170793f9b85SPatrick Williams- polarity - polarity type of the gpio 171793f9b85SPatrick Williams- serial_uart_mux_map - This is the map for selected host position to the serial 172d219fa3cSNaveen Moses uart mux select output value 173793f9b85SPatrick Williams 174*c7645850SPatrick Williams```json 175d219fa3cSNaveen Moses{ 176d219fa3cSNaveen Moses "name": "SERIAL_UART_MUX", 177d219fa3cSNaveen Moses 178d219fa3cSNaveen Moses "group_gpio_config": [ 179d219fa3cSNaveen Moses { 180d219fa3cSNaveen Moses "name": "serial_uart_sel_0", 181d219fa3cSNaveen Moses "pin": "E0", 182d219fa3cSNaveen Moses "direction": "out", 183d219fa3cSNaveen Moses "polarity": "active_high" 184d219fa3cSNaveen Moses }, 185d219fa3cSNaveen Moses { 186d219fa3cSNaveen Moses "name": "serial_uart_sel_1", 187d219fa3cSNaveen Moses "pin": "E1", 188d219fa3cSNaveen Moses "direction": "out", 189d219fa3cSNaveen Moses "polarity": "active_high" 190d219fa3cSNaveen Moses }, 191d219fa3cSNaveen Moses { 192d219fa3cSNaveen Moses "name": "serial_uart_sel_2", 193d219fa3cSNaveen Moses "pin": "E2", 194d219fa3cSNaveen Moses "direction": "out", 195d219fa3cSNaveen Moses "polarity": "active_high" 196d219fa3cSNaveen Moses }, 197d219fa3cSNaveen Moses { 198d219fa3cSNaveen Moses "name": "serial_uart_sel_3", 199d219fa3cSNaveen Moses "pin": "E3", 200d219fa3cSNaveen Moses "direction": "out", 201d219fa3cSNaveen Moses "polarity": "active_high" 202d219fa3cSNaveen Moses }, 203d219fa3cSNaveen Moses { 204d219fa3cSNaveen Moses "name": "serial_uart_rx", 205d219fa3cSNaveen Moses "pin": "E4", 206d219fa3cSNaveen Moses "direction": "out", 207d219fa3cSNaveen Moses "polarity": "active_high" 208d219fa3cSNaveen Moses }, 209d219fa3cSNaveen Moses { 210d219fa3cSNaveen Moses "name": "debug_card_present", 211d219fa3cSNaveen Moses "pin": "R3", 212d219fa3cSNaveen Moses "direction": "both", 213d219fa3cSNaveen Moses "polarity": "active_high" 214d219fa3cSNaveen Moses } 215d219fa3cSNaveen Moses ], 216d219fa3cSNaveen Moses "serial_uart_mux_map": { 217d219fa3cSNaveen Moses "0": 4, 218d219fa3cSNaveen Moses "1": 0, 219d219fa3cSNaveen Moses "2": 1, 220d219fa3cSNaveen Moses "3": 2, 221d219fa3cSNaveen Moses "4": 3 222d219fa3cSNaveen Moses } 223d219fa3cSNaveen Moses} 224d219fa3cSNaveen Moses``` 225