123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- /*++
- Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved
- SPDX-License-Identifier: BSD-2-Clause-Patent
- Module Name:
- PchCommonDefinitions.h
- Abstract:
- This header file provides common definitions for PCH
- --*/
- #ifndef _PCH_COMMON_DEFINITIONS_H_
- #define _PCH_COMMON_DEFINITIONS_H_
- //
- // MMIO access macros
- //
- #define PchMmioAddress(BaseAddr, Register) ((UINTN) BaseAddr + (UINTN) (Register))
- //
- // 32 bit MMIO access
- //
- #define PchMmio32Ptr(BaseAddr, Register) ((volatile UINT32 *) PchMmioAddress (BaseAddr, Register))
- #define PchMmio32(BaseAddr, Register) *PchMmio32Ptr (BaseAddr, Register)
- #define PchMmio32Or(BaseAddr, Register, OrData) \
- PchMmio32 (BaseAddr, Register) = (UINT32) \
- (PchMmio32 (BaseAddr, Register) | (UINT32) (OrData))
- #define PchMmio32And(BaseAddr, Register, AndData) \
- PchMmio32 (BaseAddr, Register) = (UINT32) \
- (PchMmio32 (BaseAddr, Register) & (UINT32) (AndData))
- #define PchMmio32AndThenOr(BaseAddr, Register, AndData, OrData) \
- PchMmio32 (BaseAddr, Register) = (UINT32) \
- ((PchMmio32 (BaseAddr, Register) & (UINT32) (AndData)) | (UINT32) (OrData))
- //
- // 16 bit MMIO access
- //
- #define PchMmio16Ptr(BaseAddr, Register) ((volatile UINT16 *) PchMmioAddress (BaseAddr, Register))
- #define PchMmio16(BaseAddr, Register) *PchMmio16Ptr (BaseAddr, Register)
- #define PchMmio16Or(BaseAddr, Register, OrData) \
- PchMmio16 (BaseAddr, Register) = (UINT16) \
- (PchMmio16 (BaseAddr, Register) | (UINT16) (OrData))
- #define PchMmio16And(BaseAddr, Register, AndData) \
- PchMmio16 (BaseAddr, Register) = (UINT16) \
- (PchMmio16 (BaseAddr, Register) & (UINT16) (AndData))
- #define PchMmio16AndThenOr(BaseAddr, Register, AndData, OrData) \
- PchMmio16 (BaseAddr, Register) = (UINT16) \
- ((PchMmio16 (BaseAddr, Register) & (UINT16) (AndData)) | (UINT16) (OrData))
- //
- // 8 bit MMIO access
- //
- #define PchMmio8Ptr(BaseAddr, Register) ((volatile UINT8 *) PchMmioAddress (BaseAddr, Register))
- #define PchMmio8(BaseAddr, Register) *PchMmio8Ptr (BaseAddr, Register)
- #define PchMmio8Or(BaseAddr, Register, OrData) \
- PchMmio8 (BaseAddr, Register) = (UINT8) \
- (PchMmio8 (BaseAddr, Register) | (UINT8) (OrData))
- #define PchMmio8And(BaseAddr, Register, AndData) \
- PchMmio8 (BaseAddr, Register) = (UINT8) \
- (PchMmio8 (BaseAddr, Register) & (UINT8) (AndData))
- #define PchMmio8AndThenOr(BaseAddr, Register, AndData, OrData) \
- PchMmio8 (BaseAddr, Register) = (UINT8) \
- ((PchMmio8 (BaseAddr, Register) & (UINT8) (AndData)) | (UINT8) (OrData))
- //
- // Memory Mapped PCI Access macros
- //
- #define PCH_PCI_EXPRESS_BASE_ADDRESS 0xE0000000
- //
- // PCI Device MM Base
- //
- #define PchPciDeviceMmBase(Bus, Device, Function) \
- ( \
- (UINTN) PCH_PCI_EXPRESS_BASE_ADDRESS + (UINTN) (Bus << 20) + (UINTN) (Device << 15) + (UINTN) \
- (Function << 12) \
- )
- //
- // PCI Device MM Address
- //
- #define PchPciDeviceMmAddress(Segment, Bus, Device, Function, Register) \
- ( \
- (UINTN) PCH_PCI_EXPRESS_BASE_ADDRESS + (UINTN) (Bus << 20) + (UINTN) (Device << 15) + (UINTN) \
- (Function << 12) + (UINTN) (Register) \
- )
- //
- // 32 bit PCI access
- //
- #define PchMmPci32Ptr(Segment, Bus, Device, Function, Register) \
- ((volatile UINT32 *) PchPciDeviceMmAddress (Segment, Bus, Device, Function, Register))
- #define PchMmPci32(Segment, Bus, Device, Function, Register) *PchMmPci32Ptr (Segment, Bus, Device, Function, Register)
- #define PchMmPci32Or(Segment, Bus, Device, Function, Register, OrData) \
- PchMmPci32 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT32) (PchMmPci32 (Segment, Bus, Device, Function, Register) | (UINT32) (OrData))
- #define PchMmPci32And(Segment, Bus, Device, Function, Register, AndData) \
- PchMmPci32 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT32) (PchMmPci32 (Segment, Bus, Device, Function, Register) & (UINT32) (AndData))
- #define PchMmPci32AndThenOr(Segment, Bus, Device, Function, Register, AndData, OrData) \
- PchMmPci32 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT32) ((PchMmPci32 (Segment, Bus, Device, Function, Register) & (UINT32) (AndData)) | (UINT32) (OrData))
- //
- // 16 bit PCI access
- //
- #define PchMmPci16Ptr(Segment, Bus, Device, Function, Register) \
- ((volatile UINT16 *) PchPciDeviceMmAddress (Segment, Bus, Device, Function, Register))
- #define PchMmPci16(Segment, Bus, Device, Function, Register) *PchMmPci16Ptr (Segment, Bus, Device, Function, Register)
- #define PchMmPci16Or(Segment, Bus, Device, Function, Register, OrData) \
- PchMmPci16 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT16) (PchMmPci16 (Segment, Bus, Device, Function, Register) | (UINT16) (OrData))
- #define PchMmPci16And(Segment, Bus, Device, Function, Register, AndData) \
- PchMmPci16 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT16) (PchMmPci16 (Segment, Bus, Device, Function, Register) & (UINT16) (AndData))
- #define PchMmPci16AndThenOr(Segment, Bus, Device, Function, Register, AndData, OrData) \
- PchMmPci16 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT16) ((PchMmPci16 (Segment, Bus, Device, Function, Register) & (UINT16) (AndData)) | (UINT16) (OrData))
- //
- // 8 bit PCI access
- //
- #define PchMmPci8Ptr(Segment, Bus, Device, Function, Register) \
- ((volatile UINT8 *) PchPciDeviceMmAddress (Segment, Bus, Device, Function, Register))
- #define PchMmPci8(Segment, Bus, Device, Function, Register) *PchMmPci8Ptr (Segment, Bus, Device, Function, Register)
- #define PchMmPci8Or(Segment, Bus, Device, Function, Register, OrData) \
- PchMmPci8 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT8) (PchMmPci8 (Segment, Bus, Device, Function, Register) | (UINT8) (OrData))
- #define PchMmPci8And(Segment, Bus, Device, Function, Register, AndData) \
- PchMmPci8 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT8) (PchMmPci8 (Segment, Bus, Device, Function, Register) & (UINT8) (AndData))
- #define PchMmPci8AndThenOr(Segment, Bus, Device, Function, Register, AndData, OrData) \
- PchMmPci8 ( \
- Segment, \
- Bus, \
- Device, \
- Function, \
- Register \
- ) = (UINT8) ((PchMmPci8 (Segment, Bus, Device, Function, Register) & (UINT8) (AndData)) | (UINT8) (OrData))
- #endif
|