17c4166a9SMark Cave-Ayland /* 27c4166a9SMark Cave-Ayland * PowerMac NewWorld MacIO GPIO emulation 37c4166a9SMark Cave-Ayland * 47c4166a9SMark Cave-Ayland * Copyright (c) 2016 Benjamin Herrenschmidt 57c4166a9SMark Cave-Ayland * Copyright (c) 2018 Mark Cave-Ayland 67c4166a9SMark Cave-Ayland * 77c4166a9SMark Cave-Ayland * Permission is hereby granted, free of charge, to any person obtaining a copy 87c4166a9SMark Cave-Ayland * of this software and associated documentation files (the "Software"), to deal 97c4166a9SMark Cave-Ayland * in the Software without restriction, including without limitation the rights 107c4166a9SMark Cave-Ayland * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 117c4166a9SMark Cave-Ayland * copies of the Software, and to permit persons to whom the Software is 127c4166a9SMark Cave-Ayland * furnished to do so, subject to the following conditions: 137c4166a9SMark Cave-Ayland * 147c4166a9SMark Cave-Ayland * The above copyright notice and this permission notice shall be included in 157c4166a9SMark Cave-Ayland * all copies or substantial portions of the Software. 167c4166a9SMark Cave-Ayland * 177c4166a9SMark Cave-Ayland * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 187c4166a9SMark Cave-Ayland * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 197c4166a9SMark Cave-Ayland * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 207c4166a9SMark Cave-Ayland * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 217c4166a9SMark Cave-Ayland * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 227c4166a9SMark Cave-Ayland * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 237c4166a9SMark Cave-Ayland * THE SOFTWARE. 247c4166a9SMark Cave-Ayland */ 257c4166a9SMark Cave-Ayland 267c4166a9SMark Cave-Ayland #ifndef MACIO_GPIO_H 277c4166a9SMark Cave-Ayland #define MACIO_GPIO_H 287c4166a9SMark Cave-Ayland 29ec150c7eSMarkus Armbruster #include "hw/ppc/openpic.h" 30ec150c7eSMarkus Armbruster #include "hw/sysbus.h" 31db1015e9SEduardo Habkost #include "qom/object.h" 32ec150c7eSMarkus Armbruster 337c4166a9SMark Cave-Ayland #define TYPE_MACIO_GPIO "macio-gpio" 34*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(MacIOGPIOState, MACIO_GPIO) 357c4166a9SMark Cave-Ayland 36db1015e9SEduardo Habkost struct MacIOGPIOState { 377c4166a9SMark Cave-Ayland /*< private >*/ 387c4166a9SMark Cave-Ayland SysBusDevice parent; 397c4166a9SMark Cave-Ayland /*< public >*/ 407c4166a9SMark Cave-Ayland 417c4166a9SMark Cave-Ayland OpenPICState *pic; 427c4166a9SMark Cave-Ayland 437c4166a9SMark Cave-Ayland MemoryRegion gpiomem; 447c4166a9SMark Cave-Ayland qemu_irq gpio_extirqs[10]; 457c4166a9SMark Cave-Ayland uint8_t gpio_levels[8]; 467c4166a9SMark Cave-Ayland uint8_t gpio_regs[36]; /* XXX Check count */ 47db1015e9SEduardo Habkost }; 487c4166a9SMark Cave-Ayland 497c4166a9SMark Cave-Ayland void macio_set_gpio(MacIOGPIOState *s, uint32_t gpio, bool state); 507c4166a9SMark Cave-Ayland 517c4166a9SMark Cave-Ayland #endif 52