REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			390 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			390 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   PS2 Mouse Communication Interface
 | |
| 
 | |
| Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _COMMPS2_H_
 | |
| #define _COMMPS2_H_
 | |
| 
 | |
| #include "Ps2Mouse.h"
 | |
| 
 | |
| #define PS2_PACKET_LENGTH  3
 | |
| #define PS2_SYNC_MASK      0xc
 | |
| #define PS2_SYNC_BYTE      0x8
 | |
| 
 | |
| #define IS_PS2_SYNC_BYTE(byte)  ((byte & PS2_SYNC_MASK) == PS2_SYNC_BYTE)
 | |
| 
 | |
| #define PS2_READ_BYTE_ONE   0
 | |
| #define PS2_READ_DATA_BYTE  1
 | |
| #define PS2_PROCESS_PACKET  2
 | |
| 
 | |
| #define TIMEOUT      50000
 | |
| #define BAT_TIMEOUT  500000
 | |
| 
 | |
| //
 | |
| // 8042 I/O Port
 | |
| //
 | |
| #define KBC_DATA_PORT     0x60
 | |
| #define KBC_CMD_STS_PORT  0x64
 | |
| 
 | |
| //
 | |
| // 8042 Command
 | |
| //
 | |
| #define READ_CMD_BYTE   0x20
 | |
| #define WRITE_CMD_BYTE  0x60
 | |
| #define DISABLE_AUX     0xa7
 | |
| #define ENABLE_AUX      0xa8
 | |
| #define SELF_TEST       0xaa
 | |
| #define DISABLE_KB      0xad
 | |
| #define ENABLE_KB       0xae
 | |
| #define WRITE_AUX_DEV   0xd4
 | |
| 
 | |
| #define CMD_SYS_FLAG  0x04
 | |
| #define CMD_KB_STS    0x10
 | |
| #define CMD_KB_DIS    0x10
 | |
| #define CMD_KB_EN     0x0
 | |
| 
 | |
| //
 | |
| // 8042 Auxiliary Device Command
 | |
| //
 | |
| #define SETSF1_CMD   0xe6
 | |
| #define SETSF2_CMD   0xe7
 | |
| #define SETRE_CMD    0xe8
 | |
| #define READ_CMD     0xeb
 | |
| #define SETRM_CMD    0xf0
 | |
| #define SETSR_CMD    0xf3
 | |
| #define ENABLE_CMD   0xf4
 | |
| #define DISABLE_CMD  0xf5
 | |
| #define RESET_CMD    0xff
 | |
| 
 | |
| //
 | |
| // return code
 | |
| //
 | |
| #define PS2_ACK        0xfa
 | |
| #define PS2_RESEND     0xfe
 | |
| #define PS2MOUSE_BAT1  0xaa
 | |
| #define PS2MOUSE_BAT2  0x0
 | |
| 
 | |
| //
 | |
| // Keyboard Controller Status
 | |
| //
 | |
| ///
 | |
| /// Parity Error
 | |
| ///
 | |
| #define KBC_PARE  0x80
 | |
| ///
 | |
| /// General Time Out
 | |
| ///
 | |
| #define KBC_TIM  0x40
 | |
| ///
 | |
| /// Output buffer for auxiliary device (PS/2):
 | |
| ///    0 - Holds keyboard data
 | |
| ///    1 - Holds data for auxiliary device
 | |
| ///
 | |
| #define KBC_AUXB  0x20
 | |
| ///
 | |
| /// Keyboard lock status:
 | |
| ///    0 - keyboard locked
 | |
| ///    1 - keyboard free
 | |
| ///
 | |
| #define KBC_KEYL  0x10
 | |
| ///
 | |
| /// Command/Data:
 | |
| ///    0 - data byte written via port 60h
 | |
| ///    1 - command byte written via port 64h
 | |
| ///
 | |
| #define KBC_CD  0x08
 | |
| ///
 | |
| /// System Flag:
 | |
| ///    0 - power-on reset
 | |
| ///    1 - self-test successful
 | |
| ///
 | |
| #define KBC_SYSF  0x04
 | |
| ///
 | |
| /// Input Buffer Status :
 | |
| ///    0 - input buffer empty
 | |
| ///    1 - CPU data in input buffer
 | |
| ///
 | |
| #define KBC_INPB  0x02
 | |
| ///
 | |
| /// Output Buffer Status :
 | |
| ///    0 - output buffer empty
 | |
| ///    1 - keyboard controller data in output buffer
 | |
| ///
 | |
| #define KBC_OUTB  0x01
 | |
| 
 | |
| /**
 | |
|   Issue self test command via IsaIo interface.
 | |
| 
 | |
|   @return EFI_SUCCESS  Success to do keyboard self testing.
 | |
|   @return others       Fail to do keyboard self testing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| KbcSelfTest (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to enable keyboard AUX functionality.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| KbcEnableAux (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to disable keyboard AUX functionality.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| KbcDisableAux (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to enable keyboard.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| KbcEnableKb (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to disable keyboard.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| KbcDisableKb (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to check keyboard status.
 | |
| 
 | |
|   @param KeyboardEnable return whether keyboard is enable.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| CheckKbStatus (
 | |
|   OUT BOOLEAN  *KeyboardEnable
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to reset keyboard.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseReset (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to set mouse's sample rate
 | |
| 
 | |
|   @param SampleRate value of sample rate
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseSetSampleRate (
 | |
|   IN MOUSE_SR  SampleRate
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to set mouse's resolution.
 | |
| 
 | |
|   @param Resolution value of resolution
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseSetResolution (
 | |
|   IN MOUSE_RE  Resolution
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to set mouse's scaling.
 | |
| 
 | |
|   @param Scaling value of scaling
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseSetScaling (
 | |
|   IN MOUSE_SF  Scaling
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue command to enable Ps2 mouse.
 | |
| 
 | |
|   @return Status of command issuing.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseEnable (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get mouse packet . Only care first 3 bytes
 | |
| 
 | |
|   @param MouseDev  Pointer of PS2 Mouse Private Data Structure
 | |
| 
 | |
|   @retval EFI_NOT_READY  Mouse Device not ready to input data packet, or some error happened during getting the packet
 | |
|   @retval EFI_SUCCESS    The data packet is gotten successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseGetPacket (
 | |
|   PS2_MOUSE_DEV  *MouseDev
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Read data via IsaIo protocol with given number.
 | |
| 
 | |
|   @param Buffer  Buffer receive data of mouse
 | |
|   @param BufSize The size of buffer
 | |
|   @param State   Check input or read data
 | |
| 
 | |
|   @return status of reading mouse data.
 | |
| **/
 | |
| EFI_STATUS
 | |
| PS2MouseRead (
 | |
|   OUT UINT8     *Buffer,
 | |
|   IN OUT UINTN  *BufSize,
 | |
|   IN  UINTN     State
 | |
|   );
 | |
| 
 | |
| //
 | |
| // 8042 I/O function
 | |
| //
 | |
| 
 | |
| /**
 | |
|   I/O work flow of outing 8042 command.
 | |
| 
 | |
|   @param Command I/O command.
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| Out8042Command (
 | |
|   IN UINT8  Command
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow of in 8042 data.
 | |
| 
 | |
|   @param Data    Data value
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| In8042Data (
 | |
|   IN OUT UINT8  *Data
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow of outing 8042 data.
 | |
| 
 | |
|   @param Data    Data value
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| Out8042Data (
 | |
|   IN UINT8  Data
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow of outing 8042 Aux command.
 | |
| 
 | |
|   @param Command Aux I/O command
 | |
|   @param Resend  Whether need resend the Aux command.
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| Out8042AuxCommand (
 | |
|   IN UINT8    Command,
 | |
|   IN BOOLEAN  Resend
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow of in 8042 Aux data.
 | |
| 
 | |
|   @param Data    Buffer holding return value.
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| In8042AuxData (
 | |
|   IN OUT UINT8  *Data
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow of outing 8042 Aux data.
 | |
| 
 | |
|   @param Data    Buffer holding return value
 | |
| 
 | |
|   @retval EFI_SUCCESS Success to execute I/O work flow
 | |
|   @retval EFI_TIMEOUT Keyboard controller time out.
 | |
| **/
 | |
| EFI_STATUS
 | |
| Out8042AuxData (
 | |
|   IN UINT8  Data
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check keyboard controller status, if it is output buffer full and for auxiliary device.
 | |
| 
 | |
|   @retval EFI_SUCCESS   Keyboard controller is ready
 | |
|   @retval EFI_NOT_READY Keyboard controller is not ready
 | |
| **/
 | |
| EFI_STATUS
 | |
| CheckForInput (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow to wait input buffer empty in given time.
 | |
| 
 | |
|   @param Timeout Waiting time.
 | |
| 
 | |
|   @retval EFI_TIMEOUT if input is still not empty in given time.
 | |
|   @retval EFI_SUCCESS input is empty.
 | |
| **/
 | |
| EFI_STATUS
 | |
| WaitInputEmpty (
 | |
|   IN UINTN  Timeout
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   I/O work flow to wait output buffer full in given time.
 | |
| 
 | |
|   @param Timeout given time
 | |
| 
 | |
|   @retval EFI_TIMEOUT  output is not full in given time
 | |
|   @retval EFI_SUCCESS  output is full in given time.
 | |
| **/
 | |
| EFI_STATUS
 | |
| WaitOutputFull (
 | |
|   IN UINTN  Timeout
 | |
|   );
 | |
| 
 | |
| #endif
 |