xref: /qemu/include/hw/ssi/pl022.h (revision eac92d316351b855ba79eb374dd21cc367f1f9c1)
11d52866fSPeter Maydell /*
21d52866fSPeter Maydell  * ARM PrimeCell PL022 Synchronous Serial Port
31d52866fSPeter Maydell  *
41d52866fSPeter Maydell  * Copyright (c) 2007 CodeSourcery.
51d52866fSPeter Maydell  * Written by Paul Brook
61d52866fSPeter Maydell  *
71d52866fSPeter Maydell  * This program is free software; you can redistribute it and/or modify
81d52866fSPeter Maydell  * it under the terms of the GNU General Public License version 2 or
91d52866fSPeter Maydell  * (at your option) any later version.
101d52866fSPeter Maydell  */
111d52866fSPeter Maydell 
12*932a8d1fSPeter Maydell /*
13*932a8d1fSPeter Maydell  * This is a model of the Arm PrimeCell PL022 synchronous serial port.
141d52866fSPeter Maydell  * The PL022 TRM is:
15*932a8d1fSPeter Maydell  * https://developer.arm.com/documentation/ddi0194/latest
161d52866fSPeter Maydell  *
171d52866fSPeter Maydell  * QEMU interface:
181d52866fSPeter Maydell  * + sysbus IRQ: SSPINTR combined interrupt line
191d52866fSPeter Maydell  * + sysbus MMIO region 0: MemoryRegion for the device's registers
201d52866fSPeter Maydell  */
211d52866fSPeter Maydell 
221d52866fSPeter Maydell #ifndef HW_SSI_PL022_H
231d52866fSPeter Maydell #define HW_SSI_PL022_H
241d52866fSPeter Maydell 
251d52866fSPeter Maydell #include "hw/sysbus.h"
26db1015e9SEduardo Habkost #include "qom/object.h"
271d52866fSPeter Maydell 
281d52866fSPeter Maydell #define TYPE_PL022 "pl022"
298063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(PL022State, PL022)
301d52866fSPeter Maydell 
31db1015e9SEduardo Habkost struct PL022State {
321d52866fSPeter Maydell     SysBusDevice parent_obj;
331d52866fSPeter Maydell 
341d52866fSPeter Maydell     MemoryRegion iomem;
351d52866fSPeter Maydell     uint32_t cr0;
361d52866fSPeter Maydell     uint32_t cr1;
371d52866fSPeter Maydell     uint32_t bitmask;
381d52866fSPeter Maydell     uint32_t sr;
391d52866fSPeter Maydell     uint32_t cpsr;
401d52866fSPeter Maydell     uint32_t is;
411d52866fSPeter Maydell     uint32_t im;
421d52866fSPeter Maydell     /* The FIFO head points to the next empty entry.  */
431d52866fSPeter Maydell     int tx_fifo_head;
441d52866fSPeter Maydell     int rx_fifo_head;
451d52866fSPeter Maydell     int tx_fifo_len;
461d52866fSPeter Maydell     int rx_fifo_len;
471d52866fSPeter Maydell     uint16_t tx_fifo[8];
481d52866fSPeter Maydell     uint16_t rx_fifo[8];
491d52866fSPeter Maydell     qemu_irq irq;
501d52866fSPeter Maydell     SSIBus *ssi;
51db1015e9SEduardo Habkost };
521d52866fSPeter Maydell 
531d52866fSPeter Maydell #endif
54