2 Register initialization table for Ich.
4 Copyright (c) 2013-2015 Intel Corporation.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #include "CommonHeader.h"
20 // All devices on bus 0.
24 // FNC 0: IOSF2AHB Bridge
26 // FNC 0: IOSF2AHB Bridge
33 // FNC 0: PCI-LPC Bridge
35 S3PciWrite32 (PCI_LIB_ADDRESS (PCI_BUS_NUMBER_QNC
, PCI_DEVICE_NUMBER_QNC_LPC
, PCI_FUNCTION_NUMBER_QNC_LPC
, R_QNC_LPC_FWH_BIOS_DEC
),
36 B_QNC_LPC_FWH_BIOS_DEC_F0
| B_QNC_LPC_FWH_BIOS_DEC_F8
|
37 B_QNC_LPC_FWH_BIOS_DEC_E0
| B_QNC_LPC_FWH_BIOS_DEC_E8
|
38 B_QNC_LPC_FWH_BIOS_DEC_D0
| B_QNC_LPC_FWH_BIOS_DEC_D8
|
39 B_QNC_LPC_FWH_BIOS_DEC_C0
| B_QNC_LPC_FWH_BIOS_DEC_C8
43 // Program SCI Interrupt for IRQ9
45 S3PciWrite8 (PCI_LIB_ADDRESS (PCI_BUS_NUMBER_QNC
, PCI_DEVICE_NUMBER_QNC_LPC
, PCI_FUNCTION_NUMBER_QNC_LPC
, R_QNC_LPC_ACTL
),
46 V_QNC_LPC_ACTL_SCIS_IRQ9
50 // Program Quark Interrupt Route Registers
52 S3MmioWrite16 ((UINTN
)PcdGet64(PcdRcbaMmioBaseAddress
) + R_QNC_RCRB_AGENT0IR
,
53 PcdGet16(PcdQuarkAgent0IR
)
55 S3MmioWrite16 ((UINTN
)PcdGet64(PcdRcbaMmioBaseAddress
) + R_QNC_RCRB_AGENT1IR
,
56 PcdGet16(PcdQuarkAgent1IR
)
58 S3MmioWrite16 ((UINTN
)PcdGet64(PcdRcbaMmioBaseAddress
) + R_QNC_RCRB_AGENT2IR
,
59 PcdGet16(PcdQuarkAgent2IR
)
61 S3MmioWrite16 ((UINTN
)PcdGet64(PcdRcbaMmioBaseAddress
) + R_QNC_RCRB_AGENT3IR
,
62 PcdGet16(PcdQuarkAgent3IR
)
66 // Program SVID and SID for QNC PCI devices. In order to boost performance, we
67 // combine two 16 bit PCI_WRITE into one 32 bit PCI_WRITE. The programmed LPC SVID
68 // will reflect on all internal devices's SVID registers
70 S3PciWrite32 (PCI_LIB_ADDRESS (PCI_BUS_NUMBER_QNC
, PCI_DEVICE_NUMBER_QNC_LPC
, PCI_FUNCTION_NUMBER_QNC_LPC
, R_EFI_PCI_SVID
),
71 (UINT32
)(V_INTEL_VENDOR_ID
+ (QUARK_V_LPC_DEVICE_ID_0
<< 16))
75 // Write once on Element Self Description Register before OS boot
77 QNCMmio32And (PcdGet64(PcdRcbaMmioBaseAddress
), 0x04, 0xFF00FFFF);