197398d90SAndrew Baumann /* 297398d90SAndrew Baumann * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft 397398d90SAndrew Baumann * Written by Andrew Baumann 497398d90SAndrew Baumann * 56111a0c0SPhilippe Mathieu-Daudé * This work is licensed under the terms of the GNU GPL, version 2 or later. 66111a0c0SPhilippe Mathieu-Daudé * See the COPYING file in the top-level directory. 797398d90SAndrew Baumann */ 897398d90SAndrew Baumann 997398d90SAndrew Baumann #ifndef BCM2835_AUX_H 1097398d90SAndrew Baumann #define BCM2835_AUX_H 1197398d90SAndrew Baumann 1297398d90SAndrew Baumann #include "hw/sysbus.h" 134d43a603SMarc-André Lureau #include "chardev/char-fe.h" 14*db1015e9SEduardo Habkost #include "qom/object.h" 1597398d90SAndrew Baumann 1697398d90SAndrew Baumann #define TYPE_BCM2835_AUX "bcm2835-aux" 17*db1015e9SEduardo Habkost typedef struct BCM2835AuxState BCM2835AuxState; 1897398d90SAndrew Baumann #define BCM2835_AUX(obj) OBJECT_CHECK(BCM2835AuxState, (obj), TYPE_BCM2835_AUX) 1997398d90SAndrew Baumann 2097398d90SAndrew Baumann #define BCM2835_AUX_RX_FIFO_LEN 8 2197398d90SAndrew Baumann 22*db1015e9SEduardo Habkost struct BCM2835AuxState { 2397398d90SAndrew Baumann /*< private >*/ 2497398d90SAndrew Baumann SysBusDevice parent_obj; 2597398d90SAndrew Baumann /*< public >*/ 2697398d90SAndrew Baumann 2797398d90SAndrew Baumann MemoryRegion iomem; 28becdfa00SMarc-André Lureau CharBackend chr; 2997398d90SAndrew Baumann qemu_irq irq; 3097398d90SAndrew Baumann 3197398d90SAndrew Baumann uint8_t read_fifo[BCM2835_AUX_RX_FIFO_LEN]; 3297398d90SAndrew Baumann uint8_t read_pos, read_count; 3397398d90SAndrew Baumann uint8_t ier, iir; 34*db1015e9SEduardo Habkost }; 3597398d90SAndrew Baumann 3697398d90SAndrew Baumann #endif 37