xref: /qemu/include/hw/input/pl050.h (revision 5ac034b1)
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 "hw/sysbus.h"
14 #include "migration/vmstate.h"
15 #include "hw/input/ps2.h"
16 #include "hw/irq.h"
17 
18 struct PL050DeviceClass {
19     SysBusDeviceClass parent_class;
20 
21     DeviceRealize parent_realize;
22 };
23 
24 #define TYPE_PL050 "pl050"
25 OBJECT_DECLARE_TYPE(PL050State, PL050DeviceClass, PL050)
26 
27 struct PL050State {
28     SysBusDevice parent_obj;
29 
30     MemoryRegion iomem;
31     PS2State *ps2dev;
32     uint32_t cr;
33     uint32_t clk;
34     uint32_t last;
35     int pending;
36     qemu_irq irq;
37     bool is_mouse;
38 };
39 
40 #define TYPE_PL050_KBD_DEVICE "pl050_keyboard"
41 OBJECT_DECLARE_SIMPLE_TYPE(PL050KbdState, PL050_KBD_DEVICE)
42 
43 struct PL050KbdState {
44     PL050State parent_obj;
45 
46     PS2KbdState kbd;
47 };
48 
49 #define TYPE_PL050_MOUSE_DEVICE "pl050_mouse"
50 OBJECT_DECLARE_SIMPLE_TYPE(PL050MouseState, PL050_MOUSE_DEVICE)
51 
52 struct PL050MouseState {
53     PL050State parent_obj;
54 
55     PS2MouseState mouse;
56 };
57 
58 #endif
59