]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/Wpce791/LpcSio.c
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / Wpce791 / LpcSio.c
CommitLineData
3cbfba02
DW
1/** @file\r
2\r
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
9dc8036d
MK
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
3cbfba02
DW
7 \r\r
8\r
9Module Name:\r
10\r
11Module Name:\r
12\r
13 LpcSio.c\r
14\r
15Abstract: Sio implementation\r
16\r
17Revision History\r
18\r
19--*/\r
20\r
21#include "LpcDriver.h"\r
22#include <Library/S3BootScriptLib.h>\r
23\r
24VOID\r
25WriteRegister (\r
26 IN UINT8 Index,\r
27 IN UINT8 Data\r
28 );\r
29\r
30typedef struct {\r
31 UINT8 Register;\r
32 UINT8 Value;\r
33} EFI_SIO_TABLE;\r
34\r
35EFI_SIO_TABLE mSioTable[] = {\r
36 //\r
37 // Init keyboard controller\r
38 //\r
39 { REG_LOGICAL_DEVICE, SIO_KEYBOARD },\r
40 { BASE_ADDRESS_HIGH, 0x00 },\r
41 { BASE_ADDRESS_LOW, 0x60 },\r
42 { BASE_ADDRESS_HIGH2, 0x00 },\r
43 { BASE_ADDRESS_LOW2, 0x64 },\r
44 { PRIMARY_INTERRUPT_SELECT, 0x01 },\r
45 { ACTIVATE, 0x1 },\r
46\r
47 //\r
48 // Init Mouse controller\r
49 //\r
50 { REG_LOGICAL_DEVICE, SIO_MOUSE },\r
51 { BASE_ADDRESS_HIGH, 0x00 },\r
52 { BASE_ADDRESS_LOW, 0x60 },\r
53 { BASE_ADDRESS_HIGH2, 0x00 },\r
54 { BASE_ADDRESS_LOW2, 0x64 },\r
55 { PRIMARY_INTERRUPT_SELECT, 0x0c },\r
56 { ACTIVATE, 0x1 },\r
57\r
58 { REG_LOGICAL_DEVICE, SIO_COM },\r
59 { BASE_ADDRESS_HIGH, 0x03 },\r
60 { BASE_ADDRESS_LOW, 0xf8 },\r
61 { PRIMARY_INTERRUPT_SELECT, 0x04 },\r
62 { ACTIVATE, 0x1 },\r
63\r
64\r
65};\r
66\r
67VOID\r
68LPCWPCE791SetDefault ()\r
69{\r
70 UINT8 Index;\r
71\r
72 for (Index = 0; Index < sizeof(mSioTable)/sizeof(EFI_SIO_TABLE); Index++) {\r
73 WriteRegisterAndSaveToScript (mSioTable[Index].Register, mSioTable[Index].Value);\r
74 }\r
75\r
76 return;\r
77}\r
78\r
79VOID\r
80DisableLogicalDevice (\r
81 UINT8 DeviceId\r
82 )\r
83{\r
84 WriteRegisterAndSaveToScript (REG_LOGICAL_DEVICE, DeviceId);\r
85 WriteRegisterAndSaveToScript (ACTIVATE, 0);\r
86 WriteRegisterAndSaveToScript (BASE_ADDRESS_HIGH, 0);\r
87 WriteRegisterAndSaveToScript (BASE_ADDRESS_LOW, 0);\r
88\r
89 return;\r
90}\r
91\r
92VOID\r
93WriteRegister (\r
94 IN UINT8 Index,\r
95 IN UINT8 Data\r
96 )\r
97{\r
98 LpcIoWrite8(CONFIG_PORT, Index);\r
99 LpcIoWrite8(DATA_PORT, Data);\r
100\r
101 return;\r
102}\r
103\r
104VOID\r
105WriteRegisterAndSaveToScript (\r
106 IN UINT8 Index,\r
107 IN UINT8 Data\r
108 )\r
109{\r
110 UINT8 Buffer[2];\r
111\r
112 LpcIoWrite8(CONFIG_PORT, Index);\r
113 LpcIoWrite8(DATA_PORT, Data);\r
114\r
115 Buffer[0] = Index;\r
116 Buffer[1] = Data;\r
117 S3BootScriptSaveIoWrite (\r
118 EfiBootScriptWidthUint8,\r
119 INDEX_PORT,\r
120 2,\r
121 Buffer\r
122 );\r
123\r
124 return;\r
125}\r
126\r