xref: /qemu/include/hw/char/bcm2835_aux.h (revision db1015e92e04835c9eb50c29625fe566d1202dbd)
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