]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkSouthCluster/Include/Ioh.h
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Include / Ioh.h
CommitLineData
9b6bbcdb
MK
1/** @file\r
2Header file for QuarkSCSocId Ioh.\r
3Copyright (c) 2013-2015 Intel Corporation.\r
4\r
c9f231d0 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
9b6bbcdb
MK
6\r
7\r
8**/\r
9#ifndef _IOH_H_\r
10#define _IOH_H_\r
11\r
12#ifndef BIT0\r
13#define BIT0 0x01\r
14#define BIT1 0x02\r
15#define BIT2 0x04\r
16#define BIT3 0x08\r
17#define BIT4 0x10\r
18#define BIT5 0x20\r
19#define BIT6 0x40\r
20#define BIT7 0x80\r
21#define BIT8 0x100\r
22#define BIT9 0x200\r
23#define BIT00 0x00000001\r
24#define BIT01 0x00000002\r
25#define BIT02 0x00000004\r
26#define BIT03 0x00000008\r
27#define BIT04 0x00000010\r
28#define BIT05 0x00000020\r
29#define BIT06 0x00000040\r
30#define BIT07 0x00000080\r
31#define BIT08 0x00000100\r
32#define BIT09 0x00000200\r
33#define BIT10 0x00000400\r
34#define BIT11 0x00000800\r
35#define BIT12 0x00001000\r
36#define BIT13 0x00002000\r
37#define BIT14 0x00004000\r
38#define BIT15 0x00008000\r
39#define BIT16 0x00010000\r
40#define BIT17 0x00020000\r
41#define BIT18 0x00040000\r
42#define BIT19 0x00080000\r
43#define BIT20 0x00100000\r
44#define BIT21 0x00200000\r
45#define BIT22 0x00400000\r
46#define BIT23 0x00800000\r
47#define BIT24 0x01000000\r
48#define BIT25 0x02000000\r
49#define BIT26 0x04000000\r
50#define BIT27 0x08000000\r
51#define BIT28 0x10000000\r
52#define BIT29 0x20000000\r
53#define BIT30 0x40000000\r
54#define BIT31 0x80000000\r
55#endif\r
56\r
57#define IOH_PCI_CFG_ADDRESS(bus,dev,func,reg) \\r
58 ((UINT32) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + \\r
59 (((UINTN)func) << 8) + ((UINTN)reg) ))& 0x00000000ffffffff\r
60\r
61//----------------------------------------------------------------------------\r
62\r
63#define INTEL_VENDOR_ID 0x8086 // Intel Vendor ID\r
64\r
65//----------------------------------------------------------------------------\r
66// Pci Configuration Map Register Offsets\r
67//----------------------------------------------------------------------------\r
68#define PCI_REG_VID 0x00 // Vendor ID Register\r
69#define PCI_REG_DID 0x02 // Device ID Register\r
70#define PCI_REG_PCICMD 0x04 // PCI Command Register\r
71#define PCI_REG_PCISTS 0x06 // PCI Status Register\r
72#define PCI_REG_RID 0x08 // PCI Revision ID Register\r
73#define PCI_REG_PI 0x09 // Programming Interface\r
74#define PCI_REG_SCC 0x0a // Sub Class Code Register\r
75#define PCI_REG_BCC 0x0b // Base Class Code Register\r
76#define PCI_REG_PMLT 0x0d // Primary Master Latnecy Timer\r
77#define PCI_REG_HDR 0x0e // Header Type Register\r
78#define PCI_REG_PBUS 0x18 // Primary Bus Number Register\r
79#define PCI_REG_SBUS 0x19 // Secondary Bus Number Register\r
80#define PCI_REG_SUBUS 0x1a // Subordinate Bus Number Register\r
81#define PCI_REG_SMLT 0x1b // Secondary Master Latnecy Timer\r
82#define PCI_REG_IOBASE 0x1c // I/O base Register\r
83#define PCI_REG_IOLIMIT 0x1d // I/O Limit Register\r
84#define PCI_REG_SECSTATUS 0x1e // Secondary Status Register\r
85#define PCI_REG_MEMBASE 0x20 // Memory Base Register\r
86#define PCI_REG_MEMLIMIT 0x22 // Memory Limit Register\r
87#define PCI_REG_PRE_MEMBASE 0x24 // Prefretchable memory Base register\r
88#define PCI_REG_PRE_MEMLIMIT 0x26 // Prefretchable memory Limit register\r
89#define PCI_REG_SVID0 0x2c // Subsystem Vendor ID low byte\r
90#define PCI_REG_SVID1 0x2d // Subsystem Vendor ID high byte\r
91#define PCI_REG_SID0 0x2e // Subsystem ID low byte\r
92#define PCI_REG_SID1 0x2f // Subsystem ID high byte\r
93#define PCI_REG_IOBASE_U 0x30 // I/O base Upper Register\r
94#define PCI_REG_IOLIMIT_U 0x32 // I/O Limit Upper Register\r
95#define PCI_REG_INTLINE 0x3c // Interrupt Line Register\r
96#define PCI_REG_BRIDGE_CNTL 0x3e // Bridge Control Register\r
97\r
98//---------------------------------------------------------------------------\r
99// QuarkSCSocId Packet Hub definitions\r
100//---------------------------------------------------------------------------\r
101\r
102#define PCIE_BRIDGE_VID_DID 0x88008086\r
103\r
104//---------------------------------------------------------------------------\r
105// Quark South Cluster definitions.\r
106//---------------------------------------------------------------------------\r
107\r
108#define IOH_BUS 0\r
109#define IOH_PCI_IOSF2AHB_0_DEV_NUM 0x14\r
110#define IOH_PCI_IOSF2AHB_0_MAX_FUNCS 7\r
111#define IOH_PCI_IOSF2AHB_1_DEV_NUM 0x15\r
112#define IOH_PCI_IOSF2AHB_1_MAX_FUNCS 3\r
113\r
114//---------------------------------------------------------------------------\r
115// Quark South Cluster USB definitions.\r
116//---------------------------------------------------------------------------\r
117\r
118#define IOH_USB_BUS_NUMBER IOH_BUS\r
119#define IOH_USB_CONTROLLER_MMIO_RANGE 0x1000\r
120#define IOH_MAX_OHCI_USB_CONTROLLERS 1\r
121#define IOH_MAX_EHCI_USB_CONTROLLERS 1\r
122#define IOH_MAX_USBDEVICE_USB_CONTROLLERS 1\r
123\r
124#define R_IOH_USB_VENDOR_ID 0x00\r
125#define V_IOH_USB_VENDOR_ID INTEL_VENDOR_ID\r
126#define R_IOH_USB_DEVICE_ID 0x02\r
127#define R_IOH_USB_COMMAND 0x04\r
128#define B_IOH_USB_COMMAND_BME BIT2\r
129#define B_IOH_USB_COMMAND_MSE BIT1\r
130#define B_IOH_USB_COMMAND_ISE BIT0\r
131#define R_IOH_USB_MEMBAR 0x10\r
132#define B_IOH_USB_MEMBAR_ADDRESS_MASK 0xFFFFF000 // [31:12].\r
133#define R_IOH_USB_OHCI_HCCABAR 0x18\r
134\r
135//---------------------------------------------------------------------------\r
136// Quark South Cluster OHCI definitions\r
137//---------------------------------------------------------------------------\r
138#define IOH_USB_OHCI_DEVICE_NUMBER IOH_PCI_IOSF2AHB_0_DEV_NUM\r
139#define IOH_OHCI_FUNCTION_NUMBER 0x04\r
140\r
141//---------------------------------------------------------------------------\r
142// Quark South Cluster EHCI definitions\r
143//---------------------------------------------------------------------------\r
144#define IOH_USB_EHCI_DEVICE_NUMBER IOH_PCI_IOSF2AHB_0_DEV_NUM\r
145#define IOH_EHCI_FUNCTION_NUMBER 0x03\r
146\r
147//\r
148// EHCI memory mapped registers offset from memory BAR0.\r
149//\r
150#define R_IOH_EHCI_CAPLENGTH 0x00\r
151#define R_IOH_EHCI_INSNREG01 0x94\r
152#define B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_BP (16)\r
153#define B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_MASK (0xff << B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_BP)\r
154#define B_IOH_EHCI_INSNREG01_IN_THRESHOLD_BP (0)\r
155#define B_IOH_EHCI_INSNREG01_IN_THRESHOLD_MASK (0xff << B_IOH_EHCI_INSNREG01_IN_THRESHOLD_BP)\r
156\r
157//\r
158// EHCI memory mapped registers offset from memory BAR0 + Cap length value.\r
159//\r
160#define R_IOH_EHCI_CONFIGFLAGS 0x40\r
161\r
162//---------------------------------------------------------------------------\r
163// Quark South Cluster USB Device definitions\r
164//---------------------------------------------------------------------------\r
165#define IOH_USBDEVICE_DEVICE_NUMBER IOH_PCI_IOSF2AHB_0_DEV_NUM\r
166#define IOH_USBDEVICE_FUNCTION_NUMBER 0x02\r
167\r
168//\r
169// USB Device memory mapped registers offset from memory BAR0.\r
170//\r
171#define R_IOH_USBDEVICE_D_INTR_UDC_REG 0x40c\r
172#define R_IOH_USBDEVICE_D_INTR_MSK_UDC_REG 0x410\r
173#define B_IOH_USBDEVICE_D_INTR_MSK_UDC_REG_MASK1_MASK 0xff\r
174#define R_IOH_USBDEVICE_EP_INTR_UDC_REG 0x414\r
175#define R_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG 0x418\r
176#define B_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG_OUT_EP_MASK 0x000f0000\r
177#define B_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG_IN_EP_MASK 0x0000000f\r
178\r
179//---------------------------------------------------------------------------\r
180// Quark South Cluster 10/100 Mbps Ethernet Device definitions.\r
181//---------------------------------------------------------------------------\r
182#define IOH_MAC0_BUS_NUMBER IOH_BUS\r
183#define IOH_MAC0_DEVICE_NUMBER IOH_PCI_IOSF2AHB_0_DEV_NUM\r
184#define IOH_MAC0_FUNCTION_NUMBER 0x06\r
185#define IOH_MAC1_BUS_NUMBER IOH_BUS\r
186#define IOH_MAC1_DEVICE_NUMBER IOH_PCI_IOSF2AHB_0_DEV_NUM\r
187#define IOH_MAC1_FUNCTION_NUMBER 0x07\r
188\r
189//\r
190// MAC Device PCI config registers.\r
191//\r
192#define R_IOH_MAC_DEVICE_ID 0x02\r
193#define V_IOH_MAC_VENDOR_ID INTEL_VENDOR_ID\r
194#define R_IOH_MAC_DEVICE_ID 0x02\r
195#define V_IOH_MAC_DEVICE_ID 0x0937\r
196#define R_IOH_MAC_COMMAND 0x04\r
197#define B_IOH_MAC_COMMAND_BME BIT2\r
198#define B_IOH_MAC_COMMAND_MSE BIT1\r
199#define B_IOH_MAC_COMMAND_ISE BIT0\r
200#define R_IOH_MAC_MEMBAR 0x10\r
201#define B_IOH_MAC_MEMBAR_ADDRESS_MASK 0xFFFFF000\r
202\r
203//\r
204// LAN Device memory mapped registers offset from memory BAR0.\r
205//\r
206#define R_IOH_MAC_GMAC_REG_8 0x20\r
207#define B_IOH_MAC_USERVER_MASK 0x0000FF00\r
208#define B_IOH_MAC_SNPSVER_MASK 0x000000FF\r
209#define R_IOH_MAC_GMAC_REG_16 0x40\r
210#define B_IOH_MAC_ADDRHI_MASK 0x0000FFFF\r
211#define B_IOH_MAC_AE BIT31\r
212#define R_IOH_MAC_GMAC_REG_17 0x44\r
213#define B_IOH_MAC_ADDRLO_MASK 0xFFFFFFFF\r
214\r
215//---------------------------------------------------------------------------\r
216// Quark I2C / GPIO definitions\r
217//---------------------------------------------------------------------------\r
218\r
219#define V_IOH_I2C_GPIO_VENDOR_ID INTEL_VENDOR_ID\r
220#define V_IOH_I2C_GPIO_DEVICE_ID 0x0934\r
221\r
222#define R_IOH_I2C_MEMBAR 0x10\r
223#define B_IOH_I2C_GPIO_MEMBAR_ADDR_MASK 0xFFFFF000 // [31:12].\r
224\r
225#define GPIO_SWPORTA_DR 0x00\r
226#define GPIO_SWPORTA_DDR 0x04\r
227#define GPIO_INTEN 0x30\r
228#define GPIO_INTMASK 0x34\r
229#define GPIO_INTTYPE_LEVEL 0x38\r
230#define GPIO_INT_POLARITY 0x3C\r
231#define GPIO_INTSTATUS 0x40\r
232#define GPIO_RAW_INTSTATUS 0x44\r
233#define GPIO_DEBOUNCE 0x48\r
234#define GPIO_PORTA_EOI 0x4C\r
235#define GPIO_EXT_PORTA 0x50\r
236#define GPIO_EXT_PORTB 0x54\r
237#define GPIO_LS_SYNC 0x60\r
238#define GPIO_CONFIG_REG2 0x70\r
239#define GPIO_CONFIG_REG1 0x74\r
240\r
241//---------------------------------------------------------------------------\r
242// Quark South Cluster UART definitions.\r
243//---------------------------------------------------------------------------\r
244\r
245#define R_IOH_UART_MEMBAR 0x10\r
246#define B_IOH_UART_MEMBAR_ADDRESS_MASK 0xFFFFF000 // [31:12].\r
247\r
248#endif\r