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