1 /* 2 * Arm PrimeCell PL050 Keyboard / Mouse Interface 3 * 4 * Copyright (c) 2006-2007 CodeSourcery. 5 * Written by Paul Brook 6 * 7 * This code is licensed under the GPL. 8 */ 9 10 #ifndef HW_PL050_H 11 #define HW_PL050_H 12 13 #include "qemu/osdep.h" 14 #include "hw/sysbus.h" 15 #include "migration/vmstate.h" 16 #include "hw/input/ps2.h" 17 #include "hw/irq.h" 18 19 struct PL050DeviceClass { 20 SysBusDeviceClass parent_class; 21 22 DeviceRealize parent_realize; 23 }; 24 25 #define TYPE_PL050 "pl050" 26 OBJECT_DECLARE_TYPE(PL050State, PL050DeviceClass, PL050) 27 28 struct PL050State { 29 SysBusDevice parent_obj; 30 31 MemoryRegion iomem; 32 PS2State *ps2dev; 33 uint32_t cr; 34 uint32_t clk; 35 uint32_t last; 36 int pending; 37 qemu_irq irq; 38 bool is_mouse; 39 }; 40 41 #define TYPE_PL050_KBD_DEVICE "pl050_keyboard" 42 OBJECT_DECLARE_SIMPLE_TYPE(PL050KbdState, PL050_KBD_DEVICE) 43 44 struct PL050KbdState { 45 PL050State parent_obj; 46 }; 47 48 #define TYPE_PL050_MOUSE_DEVICE "pl050_mouse" 49 OBJECT_DECLARE_SIMPLE_TYPE(PL050MouseState, PL050_MOUSE_DEVICE) 50 51 struct PL050MouseState { 52 PL050State parent_obj; 53 }; 54 55 #endif 56