]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Wpce791/LpcSio.c
Upload BSD-licensed Vlv2TbltDevicePkg and Vlv2DeviceRefCodePkg to
[mirror_edk2.git] / Vlv2TbltDevicePkg / Wpce791 / LpcSio.c
1 /** @file
2
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
4
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13
14 Module Name:
15
16 Module Name:
17
18 LpcSio.c
19
20 Abstract: Sio implementation
21
22 Revision History
23
24 --*/
25
26 #include "LpcDriver.h"
27 #include <Library/S3BootScriptLib.h>
28
29 VOID
30 WriteRegister (
31 IN UINT8 Index,
32 IN UINT8 Data
33 );
34
35 typedef struct {
36 UINT8 Register;
37 UINT8 Value;
38 } EFI_SIO_TABLE;
39
40 EFI_SIO_TABLE mSioTable[] = {
41 //
42 // Init keyboard controller
43 //
44 { REG_LOGICAL_DEVICE, SIO_KEYBOARD },
45 { BASE_ADDRESS_HIGH, 0x00 },
46 { BASE_ADDRESS_LOW, 0x60 },
47 { BASE_ADDRESS_HIGH2, 0x00 },
48 { BASE_ADDRESS_LOW2, 0x64 },
49 { PRIMARY_INTERRUPT_SELECT, 0x01 },
50 { ACTIVATE, 0x1 },
51
52 //
53 // Init Mouse controller
54 //
55 { REG_LOGICAL_DEVICE, SIO_MOUSE },
56 { BASE_ADDRESS_HIGH, 0x00 },
57 { BASE_ADDRESS_LOW, 0x60 },
58 { BASE_ADDRESS_HIGH2, 0x00 },
59 { BASE_ADDRESS_LOW2, 0x64 },
60 { PRIMARY_INTERRUPT_SELECT, 0x0c },
61 { ACTIVATE, 0x1 },
62
63 { REG_LOGICAL_DEVICE, SIO_COM },
64 { BASE_ADDRESS_HIGH, 0x03 },
65 { BASE_ADDRESS_LOW, 0xf8 },
66 { PRIMARY_INTERRUPT_SELECT, 0x04 },
67 { ACTIVATE, 0x1 },
68
69
70 };
71
72 VOID
73 LPCWPCE791SetDefault ()
74 {
75 UINT8 Index;
76
77 for (Index = 0; Index < sizeof(mSioTable)/sizeof(EFI_SIO_TABLE); Index++) {
78 WriteRegisterAndSaveToScript (mSioTable[Index].Register, mSioTable[Index].Value);
79 }
80
81 return;
82 }
83
84 VOID
85 DisableLogicalDevice (
86 UINT8 DeviceId
87 )
88 {
89 WriteRegisterAndSaveToScript (REG_LOGICAL_DEVICE, DeviceId);
90 WriteRegisterAndSaveToScript (ACTIVATE, 0);
91 WriteRegisterAndSaveToScript (BASE_ADDRESS_HIGH, 0);
92 WriteRegisterAndSaveToScript (BASE_ADDRESS_LOW, 0);
93
94 return;
95 }
96
97 VOID
98 WriteRegister (
99 IN UINT8 Index,
100 IN UINT8 Data
101 )
102 {
103 LpcIoWrite8(CONFIG_PORT, Index);
104 LpcIoWrite8(DATA_PORT, Data);
105
106 return;
107 }
108
109 VOID
110 WriteRegisterAndSaveToScript (
111 IN UINT8 Index,
112 IN UINT8 Data
113 )
114 {
115 UINT8 Buffer[2];
116
117 LpcIoWrite8(CONFIG_PORT, Index);
118 LpcIoWrite8(DATA_PORT, Data);
119
120 Buffer[0] = Index;
121 Buffer[1] = Data;
122 S3BootScriptSaveIoWrite (
123 EfiBootScriptWidthUint8,
124 INDEX_PORT,
125 2,
126 Buffer
127 );
128
129 return;
130 }
131