diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
---|---|---|
committer | <> | 2014-05-08 15:03:54 +0000 |
commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Devices/Input/PS2Dev.h | |
parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
download | VirtualBox-master.tar.gz |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/Devices/Input/PS2Dev.h')
-rw-r--r-- | src/VBox/Devices/Input/PS2Dev.h | 55 |
1 files changed, 44 insertions, 11 deletions
diff --git a/src/VBox/Devices/Input/PS2Dev.h b/src/VBox/Devices/Input/PS2Dev.h index 392095a7..bdb32430 100644 --- a/src/VBox/Devices/Input/PS2Dev.h +++ b/src/VBox/Devices/Input/PS2Dev.h @@ -17,35 +17,68 @@ #ifndef PS2DEV_H #define PS2DEV_H -/* Must be at least as big as the real struct. */ -#define PS2K_STRUCT_FILLER 768 +/** The size of the PS2K/PS2M structure fillers. + * @note Must be at least as big as the real struct. Compile time assert + * makes sure this is so. */ +#define PS2K_STRUCT_FILLER 512 +#define PS2M_STRUCT_FILLER 512 /* Hide the internal structure. */ #if !(defined(IN_PS2K) || defined(VBOX_DEVICE_STRUCT_TESTCASE)) -typedef struct PS2K { +typedef struct PS2K +{ uint8_t abFiller[PS2K_STRUCT_FILLER]; } PS2K; #endif +#if !(defined(IN_PS2M) || defined(VBOX_DEVICE_STRUCT_TESTCASE)) +typedef struct PS2M +{ + uint8_t abFiller[PS2M_STRUCT_FILLER]; +} PS2M; +#endif + +/* Internal PS/2 Keyboard interface. */ typedef struct PS2K *PPS2K; int PS2KByteToKbd(PPS2K pThis, uint8_t cmd); int PS2KByteFromKbd(PPS2K pThis, uint8_t *pVal); -int PS2KConstruct(PPDMDEVINS pDevIns, PPS2K pThis, void *pParent, int iInstance); -int PS2KAttach(PPDMDEVINS pDevIns, PPS2K pThis, unsigned iLUN, uint32_t fFlags); +int PS2KConstruct(PPS2K pThis, PPDMDEVINS pDevIns, void *pParent, int iInstance); +int PS2KAttach(PPS2K pThis, PPDMDEVINS pDevIns, unsigned iLUN, uint32_t fFlags); void PS2KReset(PPS2K pThis); -void PS2KRelocate(PPS2K pThis, RTGCINTPTR offDelta); -void PS2KSaveState(PSSMHANDLE pSSM, PPS2K pThis); -int PS2KLoadState(PSSMHANDLE pSSM, PPS2K pThis, uint32_t uVersion); +void PS2KRelocate(PPS2K pThis, RTGCINTPTR offDelta, PPDMDEVINS pDevIns); +void PS2KSaveState(PPS2K pThis, PSSMHANDLE pSSM); +int PS2KLoadState(PPS2K pThis, PSSMHANDLE pSSM, uint32_t uVersion); +int PS2KLoadDone(PPS2K pThis, PSSMHANDLE pSSM); + +PS2K *KBDGetPS2KFromDevIns(PPDMDEVINS pDevIns); + + +/* Internal PS/2 Auxiliary device interface. */ +typedef struct PS2M *PPS2M; + +int PS2MByteToAux(PPS2M pThis, uint8_t cmd); +int PS2MByteFromAux(PPS2M pThis, uint8_t *pVal); + +int PS2MConstruct(PPS2M pThis, PPDMDEVINS pDevIns, void *pParent, int iInstance); +int PS2MAttach(PPS2M pThis, PPDMDEVINS pDevIns, unsigned iLUN, uint32_t fFlags); +void PS2MReset(PPS2M pThis); +void PS2MRelocate(PPS2M pThis, RTGCINTPTR offDelta, PPDMDEVINS pDevIns); +void PS2MSaveState(PPS2M pThis, PSSMHANDLE pSSM); +int PS2MLoadState(PPS2M pThis, PSSMHANDLE pSSM, uint32_t uVersion); + +PS2M *KBDGetPS2MFromDevIns(PPDMDEVINS pDevIns); + +/* Shared keyboard/aux internal interface. */ void KBCUpdateInterrupts(void *pKbc); -PS2K *GetPS2KFromDevIns(PPDMDEVINS pDevIns); -//@todo: This should live with the KBC implementation. +///@todo: This should live with the KBC implementation. /** AT to PC scancode translator state. */ -typedef enum { +typedef enum +{ XS_IDLE, /**< Starting state. */ XS_BREAK, /**< F0 break byte was received. */ XS_HIBIT /**< Break code still active. */ |