xref: /openbmc/phosphor-buttons/README.md (revision c7645850)
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