+++ /dev/null
-/** @file\r
-Macros to simplify and abstract the interface to PCI configuration.\r
-\r
-Copyright (c) 2013-2015 Intel Corporation.\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-**/\r
-\r
-#ifndef _QNC_ACCESS_H_\r
-#define _QNC_ACCESS_H_\r
-\r
-#include "QuarkNcSocId.h"\r
-#include "QNCCommonDefinitions.h"\r
-\r
-#define EFI_LPC_PCI_ADDRESS( Register ) \\r
- EFI_PCI_ADDRESS(PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, PCI_FUNCTION_NUMBER_QNC_LPC, Register)\r
-\r
-//\r
-// QNC Controller PCI access macros\r
-//\r
-#define QNC_RCRB_BASE (QNCMmio32 (PciDeviceMmBase (0, PCI_DEVICE_NUMBER_QNC_LPC, 0), R_QNC_LPC_RCBA) & B_QNC_LPC_RCBA_MASK)\r
-\r
-//\r
-// Device 0x1f, Function 0\r
-//\r
-\r
-#define LpcPciCfg32( Register ) \\r
- QNCMmPci32(0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register )\r
-\r
-#define LpcPciCfg32Or( Register, OrData ) \\r
- QNCMmPci32Or( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, OrData )\r
-\r
-#define LpcPciCfg32And( Register, AndData ) \\r
- QNCMmPci32And( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData )\r
-\r
-#define LpcPciCfg32AndThenOr( Register, AndData, OrData ) \\r
- QNCMmPci32AndThenOr( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData, OrData )\r
-\r
-#define LpcPciCfg16( Register ) \\r
- QNCMmPci16( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register )\r
-\r
-#define LpcPciCfg16Or( Register, OrData ) \\r
- QNCMmPci16Or( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, OrData )\r
-\r
-#define LpcPciCfg16And( Register, AndData ) \\r
- QNCMmPci16And( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData )\r
-\r
-#define LpcPciCfg16AndThenOr( Register, AndData, OrData ) \\r
- QNCMmPci16AndThenOr( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData, OrData )\r
-\r
-#define LpcPciCfg8( Register ) \\r
- QNCMmPci8( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register )\r
-\r
-#define LpcPciCfg8Or( Register, OrData ) \\r
- QNCMmPci8Or( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, OrData )\r
-\r
-#define LpcPciCfg8And( Register, AndData ) \\r
- QNCMmPci8And( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData )\r
-\r
-#define LpcPciCfg8AndThenOr( Register, AndData, OrData ) \\r
- QNCMmPci8AndThenOr( 0,PCI_BUS_NUMBER_QNC, PCI_DEVICE_NUMBER_QNC_LPC, 0, Register, AndData, OrData )\r
-\r
-//\r
-// Root Complex Register Block\r
-//\r
-\r
-#define MmRcrb32( Register ) \\r
- QNCMmio32( QNC_RCRB_BASE, Register )\r
-\r
-#define MmRcrb32Or( Register, OrData ) \\r
- QNCMmio32Or( QNC_RCRB_BASE, Register, OrData )\r
-\r
-#define MmRcrb32And( Register, AndData ) \\r
- QNCMmio32And( QNC_RCRB_BASE, Register, AndData )\r
-\r
-#define MmRcrb32AndThenOr( Register, AndData, OrData ) \\r
- QNCMmio32AndThenOr( QNC_RCRB_BASE, Register, AndData, OrData )\r
-\r
-#define MmRcrb16( Register ) \\r
- QNCMmio16( QNC_RCRB_BASE, Register )\r
-\r
-#define MmRcrb16Or( Register, OrData ) \\r
- QNCMmio16Or( QNC_RCRB_BASE, Register, OrData )\r
-\r
-#define MmRcrb16And( Register, AndData ) \\r
- QNCMmio16And( QNC_RCRB_BASE, Register, AndData )\r
-\r
-#define MmRcrb16AndThenOr( Register, AndData, OrData ) \\r
- QNCMmio16AndThenOr( QNC_RCRB_BASE, Register, AndData, OrData )\r
-\r
-#define MmRcrb8( Register ) \\r
- QNCMmio8( QNC_RCRB_BASE, Register )\r
-\r
-#define MmRcrb8Or( Register, OrData ) \\r
- QNCMmio8Or( QNC_RCRB_BASE, Register, OrData )\r
-\r
-#define MmRcrb8And( Register, AndData ) \\r
- QNCMmio8And( QNC_RCRB_BASE, Register, AndData )\r
-\r
-#define MmRcrb8AndThenOr( Register, AndData, OrData ) \\r
- QNCMmio8AndThenOr( QNC_RCRB_BASE, Register, AndData, OrData )\r
-\r
-//\r
-// Memory Controller PCI access macros\r
-//\r
-\r
-//\r
-// Device 0, Function 0\r
-//\r
-\r
-#define McD0PciCfg64(Register) QNCMmPci32 (0, MC_BUS, 0, 0, Register)\r
-#define McD0PciCfg64Or(Register, OrData) QNCMmPci32Or (0, MC_BUS, 0, 0, Register, OrData)\r
-#define McD0PciCfg64And(Register, AndData) QNCMmPci32And (0, MC_BUS, 0, 0, Register, AndData)\r
-#define McD0PciCfg64AndThenOr(Register, AndData, OrData) QNCMmPci32AndThenOr (0, MC_BUS, 0, 0, Register, AndData, OrData)\r
-\r
-#define McD0PciCfg32(Register) QNCMmPci32 (0, MC_BUS, 0, 0, Register)\r
-#define McD0PciCfg32Or(Register, OrData) QNCMmPci32Or (0, MC_BUS, 0, 0, Register, OrData)\r
-#define McD0PciCfg32And(Register, AndData) QNCMmPci32And (0, MC_BUS, 0, 0, Register, AndData)\r
-#define McD0PciCfg32AndThenOr(Register, AndData, OrData) QNCMmPci32AndThenOr (0, MC_BUS, 0, 0, Register, AndData, OrData)\r
-\r
-#define McD0PciCfg16(Register) QNCMmPci16 (0, MC_BUS, 0, 0, Register)\r
-#define McD0PciCfg16Or(Register, OrData) QNCMmPci16Or (0, MC_BUS, 0, 0, Register, OrData)\r
-#define McD0PciCfg16And(Register, AndData) QNCMmPci16And (0, MC_BUS, 0, 0, Register, AndData)\r
-#define McD0PciCfg16AndThenOr(Register, AndData, OrData) QNCMmPci16AndThenOr (0, MC_BUS, 0, 0, Register, AndData, OrData)\r
-\r
-#define McD0PciCfg8(Register) QNCMmPci8 (0, MC_BUS, 0, 0, Register)\r
-#define McD0PciCfg8Or(Register, OrData) QNCMmPci8Or (0, MC_BUS, 0, 0, Register, OrData)\r
-#define McD0PciCfg8And(Register, AndData) QNCMmPci8And (0, MC_BUS, 0, 0, Register, AndData)\r
-#define McD0PciCfg8AndThenOr( Register, AndData, OrData ) QNCMmPci8AndThenOr (0, MC_BUS, 0, 0, Register, AndData, OrData)\r
-\r
-\r
-//\r
-// Memory Controller Hub Memory Mapped IO register access ???\r
-//\r
-#define MCH_REGION_BASE (McD0PciCfg64 (MC_MCHBAR_OFFSET) & ~BIT0)\r
-#define McMmioAddress(Register) ((UINTN) MCH_REGION_BASE + (UINTN) (Register))\r
-\r
-#define McMmio32Ptr(Register) ((volatile UINT32*) McMmioAddress (Register))\r
-#define McMmio64Ptr(Register) ((volatile UINT64*) McMmioAddress (Register))\r
-\r
-#define McMmio64(Register) *McMmio64Ptr( Register )\r
-#define McMmio64Or(Register, OrData) (McMmio64 (Register) |= (UINT64)(OrData))\r
-#define McMmio64And(Register, AndData) (McMmio64 (Register) &= (UINT64)(AndData))\r
-#define McMmio64AndThenOr(Register, AndData, OrData) (McMmio64 ( Register ) = (McMmio64( Register ) & (UINT64)(AndData)) | (UINT64)(OrData))\r
-\r
-#define McMmio32(Register) *McMmio32Ptr (Register)\r
-#define McMmio32Or(Register, OrData) (McMmio32 (Register) |= (UINT32)(OrData))\r
-#define McMmio32And(Register, AndData) (McMmio32 (Register) &= (UINT32)(AndData))\r
-#define McMmio32AndThenOr(Register, AndData, OrData) (McMmio32 (Register) = (McMmio32 (Register) & (UINT32) (AndData)) | (UINT32) (OrData))\r
-\r
-#define McMmio16Ptr(Register) ((volatile UINT16*) McMmioAddress (Register))\r
-#define McMmio16(Register) *McMmio16Ptr (Register)\r
-#define McMmio16Or(Register, OrData) (McMmio16 (Register) |= (UINT16) (OrData))\r
-#define McMmio16And(Register, AndData) (McMmio16 (Register) &= (UINT16) (AndData))\r
-#define McMmio16AndThenOr(Register, AndData, OrData) (McMmio16 (Register) = (McMmio16 (Register) & (UINT16) (AndData)) | (UINT16) (OrData))\r
-\r
-#define McMmio8Ptr(Register) ((volatile UINT8 *)McMmioAddress (Register))\r
-#define McMmio8(Register) *McMmio8Ptr (Register)\r
-#define McMmio8Or(Register, OrData) (McMmio8 (Register) |= (UINT8) (OrData))\r
-#define McMmio8And(Register, AndData) (McMmio8 (Register) &= (UINT8) (AndData))\r
-#define McMmio8AndThenOr(Register, AndData, OrData) (McMmio8 (Register) = (McMmio8 (Register) & (UINT8) (AndData)) | (UINT8) (OrData))\r
-\r
-//\r
-// QNC memory mapped related data structure deifinition\r
-//\r
-typedef enum {\r
- QNCMmioWidthUint8 = 0,\r
- QNCMmioWidthUint16 = 1,\r
- QNCMmioWidthUint32 = 2,\r
- QNCMmioWidthUint64 = 3,\r
- QNCMmioWidthMaximum\r
-} QNC_MEM_IO_WIDTH;\r
-\r
-#endif\r
-\r