qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

lasips2.h (1700B)


      1 /*
      2  * QEMU LASI PS/2 emulation
      3  *
      4  * Copyright (c) 2019 Sven Schnelle
      5  *
      6  */
      7 
      8 /*
      9  * QEMU interface:
     10  * + sysbus MMIO region 0: MemoryRegion defining the LASI PS2 keyboard
     11  *   registers
     12  * + sysbus MMIO region 1: MemoryRegion defining the LASI PS2 mouse
     13  *   registers
     14  * + sysbus IRQ 0: LASI PS2 output irq
     15  * + Named GPIO input "lasips2-port-input-irq[0..1]": set to 1 if the downstream
     16  *   LASIPS2Port has asserted its irq
     17  */
     18 
     19 #ifndef HW_INPUT_LASIPS2_H
     20 #define HW_INPUT_LASIPS2_H
     21 
     22 #include "exec/hwaddr.h"
     23 #include "hw/sysbus.h"
     24 #include "hw/input/ps2.h"
     25 
     26 #define TYPE_LASIPS2_PORT "lasips2-port"
     27 OBJECT_DECLARE_TYPE(LASIPS2Port, LASIPS2PortDeviceClass, LASIPS2_PORT)
     28 
     29 struct LASIPS2PortDeviceClass {
     30     DeviceClass parent;
     31 
     32     DeviceRealize parent_realize;
     33 };
     34 
     35 typedef struct LASIPS2State LASIPS2State;
     36 
     37 struct LASIPS2Port {
     38     DeviceState parent_obj;
     39 
     40     LASIPS2State *lasips2;
     41     MemoryRegion reg;
     42     PS2State *ps2dev;
     43     uint8_t id;
     44     uint8_t control;
     45     uint8_t buf;
     46     bool loopback_rbne;
     47     qemu_irq irq;
     48 };
     49 
     50 #define TYPE_LASIPS2_KBD_PORT "lasips2-kbd-port"
     51 OBJECT_DECLARE_SIMPLE_TYPE(LASIPS2KbdPort, LASIPS2_KBD_PORT)
     52 
     53 struct LASIPS2KbdPort {
     54     LASIPS2Port parent_obj;
     55 
     56     PS2KbdState kbd;
     57 };
     58 
     59 #define TYPE_LASIPS2_MOUSE_PORT "lasips2-mouse-port"
     60 OBJECT_DECLARE_SIMPLE_TYPE(LASIPS2MousePort, LASIPS2_MOUSE_PORT)
     61 
     62 struct LASIPS2MousePort {
     63     LASIPS2Port parent_obj;
     64 
     65     PS2MouseState mouse;
     66 };
     67 
     68 struct LASIPS2State {
     69     SysBusDevice parent_obj;
     70 
     71     LASIPS2KbdPort kbd_port;
     72     LASIPS2MousePort mouse_port;
     73     uint8_t int_status;
     74     qemu_irq irq;
     75 };
     76 
     77 #define TYPE_LASIPS2 "lasips2"
     78 OBJECT_DECLARE_SIMPLE_TYPE(LASIPS2State, LASIPS2)
     79 
     80 #endif /* HW_INPUT_LASIPS2_H */