]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkSouthCluster/Library/IohLib/IohLib.c
QuarkSocPkg: Fix typos in comments
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Library / IohLib / IohLib.c
CommitLineData
9b6bbcdb
MK
1/** @file\r
2Lib function for Pei Quark South Cluster.\r
3\r
74c6a103 4Copyright (c) 2013-2016 Intel Corporation.\r
9b6bbcdb
MK
5\r
6This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15#include "CommonHeader.h"\r
16\r
17/**\r
18 Program SVID/SID the same as VID/DID*\r
19**/\r
20EFI_STATUS\r
21EFIAPI\r
22InitializeIohSsvidSsid (\r
23 IN UINT8 Bus,\r
24 IN UINT8 Device,\r
25 IN UINT8 Func\r
26 )\r
27{\r
28 UINTN Index;\r
29\r
30 for (Index = 0; Index <= IOH_PCI_IOSF2AHB_0_MAX_FUNCS; Index++) {\r
31 if (((Device == IOH_PCI_IOSF2AHB_1_DEV_NUM) && (Index >= IOH_PCI_IOSF2AHB_1_MAX_FUNCS))) {\r
32 continue;\r
33 }\r
34\r
35 IohMmPci32(0, Bus, Device, Index, PCI_REG_SVID0) = IohMmPci32(0, Bus, Device, Index, PCI_REG_VID);\r
36 }\r
37\r
38 return EFI_SUCCESS;\r
39}\r
40\r
41/* Enable memory, io, and bus master for USB controller */\r
42VOID\r
43EFIAPI\r
44EnableUsbMemIoBusMaster (\r
45 IN UINT8 UsbBusNumber\r
46 )\r
47{\r
48 UINT16 CmdReg;\r
49\r
50 CmdReg = PciRead16 (PCI_LIB_ADDRESS (UsbBusNumber, IOH_USB_OHCI_DEVICE_NUMBER, IOH_OHCI_FUNCTION_NUMBER, PCI_REG_PCICMD));\r
51 CmdReg = (UINT16) (CmdReg | EFI_PCI_COMMAND_MEMORY_SPACE | EFI_PCI_COMMAND_IO_SPACE | EFI_PCI_COMMAND_BUS_MASTER);\r
52 PciWrite16 (PCI_LIB_ADDRESS (UsbBusNumber, IOH_USB_OHCI_DEVICE_NUMBER, IOH_OHCI_FUNCTION_NUMBER, PCI_REG_PCICMD), CmdReg);\r
53\r
54 CmdReg = PciRead16 (PCI_LIB_ADDRESS (UsbBusNumber, IOH_USB_EHCI_DEVICE_NUMBER, IOH_EHCI_FUNCTION_NUMBER, PCI_REG_PCICMD));\r
55 CmdReg = (UINT16) (CmdReg | EFI_PCI_COMMAND_MEMORY_SPACE | EFI_PCI_COMMAND_IO_SPACE | EFI_PCI_COMMAND_BUS_MASTER);\r
56 PciWrite16 (PCI_LIB_ADDRESS (UsbBusNumber, IOH_USB_EHCI_DEVICE_NUMBER, IOH_EHCI_FUNCTION_NUMBER, PCI_REG_PCICMD), CmdReg);\r
57}\r
58\r
59/**\r
60 Read south cluster GPIO input from Port A.\r
61\r
62**/\r
63UINT32\r
64EFIAPI\r
65ReadIohGpioValues (\r
66 VOID\r
67 )\r
68{\r
69 UINT32 GipData;\r
70 UINT32 GipAddr;\r
71 UINT32 TempBarAddr;\r
72 UINT16 SaveCmdReg;\r
73 UINT32 SaveBarReg;\r
74\r
75 TempBarAddr = (UINT32) PcdGet64(PcdIohGpioMmioBase);\r
76\r
77 GipAddr = PCI_LIB_ADDRESS(\r
78 PcdGet8 (PcdIohGpioBusNumber),\r
79 PcdGet8 (PcdIohGpioDevNumber),\r
80 PcdGet8 (PcdIohGpioFunctionNumber), 0);\r
81\r
82 //\r
83 // Save current settings for PCI CMD/BAR registers.\r
84 //\r
85 SaveCmdReg = PciRead16 (GipAddr + PCI_COMMAND_OFFSET);\r
86 SaveBarReg = PciRead32 (GipAddr + PcdGet8 (PcdIohGpioBarRegister));\r
87\r
88 DEBUG ((EFI_D_INFO, "SC GPIO temporary enable at %08X\n", TempBarAddr));\r
89\r
74c6a103 90 // Use predefined temporary memory resource.\r
9b6bbcdb
MK
91 PciWrite32 ( GipAddr + PcdGet8 (PcdIohGpioBarRegister), TempBarAddr);\r
92 PciWrite8 ( GipAddr + PCI_COMMAND_OFFSET, EFI_PCI_COMMAND_MEMORY_SPACE);\r
93\r
94 // Read GPIO configuration\r
95 GipData = MmioRead32(TempBarAddr + GPIO_EXT_PORTA);\r
96\r
97 //\r
98 // Restore settings for PCI CMD/BAR registers.\r
99 //\r
100 PciWrite32 ((GipAddr + PcdGet8 (PcdIohGpioBarRegister)), SaveBarReg);\r
101 PciWrite16 (GipAddr + PCI_COMMAND_OFFSET, SaveCmdReg);\r
102\r
103 // Only 8 bits valid.\r
104 return GipData & 0x000000FF;\r
105}\r