xref: /openbmc/qemu/include/hw/misc/macio/gpio.h (revision 7c4166a9)
1*7c4166a9SMark Cave-Ayland /*
2*7c4166a9SMark Cave-Ayland  * PowerMac NewWorld MacIO GPIO emulation
3*7c4166a9SMark Cave-Ayland  *
4*7c4166a9SMark Cave-Ayland  * Copyright (c) 2016 Benjamin Herrenschmidt
5*7c4166a9SMark Cave-Ayland  * Copyright (c) 2018 Mark Cave-Ayland
6*7c4166a9SMark Cave-Ayland  *
7*7c4166a9SMark Cave-Ayland  * Permission is hereby granted, free of charge, to any person obtaining a copy
8*7c4166a9SMark Cave-Ayland  * of this software and associated documentation files (the "Software"), to deal
9*7c4166a9SMark Cave-Ayland  * in the Software without restriction, including without limitation the rights
10*7c4166a9SMark Cave-Ayland  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11*7c4166a9SMark Cave-Ayland  * copies of the Software, and to permit persons to whom the Software is
12*7c4166a9SMark Cave-Ayland  * furnished to do so, subject to the following conditions:
13*7c4166a9SMark Cave-Ayland  *
14*7c4166a9SMark Cave-Ayland  * The above copyright notice and this permission notice shall be included in
15*7c4166a9SMark Cave-Ayland  * all copies or substantial portions of the Software.
16*7c4166a9SMark Cave-Ayland  *
17*7c4166a9SMark Cave-Ayland  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18*7c4166a9SMark Cave-Ayland  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19*7c4166a9SMark Cave-Ayland  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20*7c4166a9SMark Cave-Ayland  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21*7c4166a9SMark Cave-Ayland  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22*7c4166a9SMark Cave-Ayland  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23*7c4166a9SMark Cave-Ayland  * THE SOFTWARE.
24*7c4166a9SMark Cave-Ayland  */
25*7c4166a9SMark Cave-Ayland 
26*7c4166a9SMark Cave-Ayland #ifndef MACIO_GPIO_H
27*7c4166a9SMark Cave-Ayland #define MACIO_GPIO_H
28*7c4166a9SMark Cave-Ayland 
29*7c4166a9SMark Cave-Ayland #define TYPE_MACIO_GPIO "macio-gpio"
30*7c4166a9SMark Cave-Ayland #define MACIO_GPIO(obj) OBJECT_CHECK(MacIOGPIOState, (obj), TYPE_MACIO_GPIO)
31*7c4166a9SMark Cave-Ayland 
32*7c4166a9SMark Cave-Ayland typedef struct MacIOGPIOState {
33*7c4166a9SMark Cave-Ayland     /*< private >*/
34*7c4166a9SMark Cave-Ayland     SysBusDevice parent;
35*7c4166a9SMark Cave-Ayland     /*< public >*/
36*7c4166a9SMark Cave-Ayland 
37*7c4166a9SMark Cave-Ayland     OpenPICState *pic;
38*7c4166a9SMark Cave-Ayland 
39*7c4166a9SMark Cave-Ayland     MemoryRegion gpiomem;
40*7c4166a9SMark Cave-Ayland     qemu_irq gpio_extirqs[10];
41*7c4166a9SMark Cave-Ayland     uint8_t gpio_levels[8];
42*7c4166a9SMark Cave-Ayland     uint8_t gpio_regs[36]; /* XXX Check count */
43*7c4166a9SMark Cave-Ayland } MacIOGPIOState;
44*7c4166a9SMark Cave-Ayland 
45*7c4166a9SMark Cave-Ayland void macio_set_gpio(MacIOGPIOState *s, uint32_t gpio, bool state);
46*7c4166a9SMark Cave-Ayland 
47*7c4166a9SMark Cave-Ayland #endif
48