1bb3d5ea8SPhilippe Mathieu-Daudé #ifndef HW_PARALLEL_H 2bb3d5ea8SPhilippe Mathieu-Daudé #define HW_PARALLEL_H 3bb3d5ea8SPhilippe Mathieu-Daudé 4*8ff98e09SBernhard Beschow #include "exec/memory.h" 5bb3d5ea8SPhilippe Mathieu-Daudé #include "hw/isa/isa.h" 6*8ff98e09SBernhard Beschow #include "hw/irq.h" 7*8ff98e09SBernhard Beschow #include "chardev/char-fe.h" 8bb3d5ea8SPhilippe Mathieu-Daudé #include "chardev/char.h" 9bb3d5ea8SPhilippe Mathieu-Daudé 10*8ff98e09SBernhard Beschow typedef struct ParallelState { 11*8ff98e09SBernhard Beschow MemoryRegion iomem; 12*8ff98e09SBernhard Beschow uint8_t dataw; 13*8ff98e09SBernhard Beschow uint8_t datar; 14*8ff98e09SBernhard Beschow uint8_t status; 15*8ff98e09SBernhard Beschow uint8_t control; 16*8ff98e09SBernhard Beschow qemu_irq irq; 17*8ff98e09SBernhard Beschow int irq_pending; 18*8ff98e09SBernhard Beschow CharBackend chr; 19*8ff98e09SBernhard Beschow int hw_driver; 20*8ff98e09SBernhard Beschow int epp_timeout; 21*8ff98e09SBernhard Beschow uint32_t last_read_offset; /* For debugging */ 22*8ff98e09SBernhard Beschow /* Memory-mapped interface */ 23*8ff98e09SBernhard Beschow int it_shift; 24*8ff98e09SBernhard Beschow } ParallelState; 25*8ff98e09SBernhard Beschow 26bb3d5ea8SPhilippe Mathieu-Daudé void parallel_hds_isa_init(ISABus *bus, int n); 27bb3d5ea8SPhilippe Mathieu-Daudé 28bb3d5ea8SPhilippe Mathieu-Daudé bool parallel_mm_init(MemoryRegion *address_space, 29bb3d5ea8SPhilippe Mathieu-Daudé hwaddr base, int it_shift, qemu_irq irq, 30bb3d5ea8SPhilippe Mathieu-Daudé Chardev *chr); 31bb3d5ea8SPhilippe Mathieu-Daudé 32bb3d5ea8SPhilippe Mathieu-Daudé #endif 33