/** @file
Serial IO Private Uart Lib implementation TigerLake specific.
All function in this library is available for PEI, DXE, and SMM,
But do not support UEFI RUNTIME environment call.
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
GLOBAL_REMOVE_IF_UNREFERENCED UINT16 mPchLpSerialIoUartDevId [] = {
V_VER2_PCH_LP_SERIAL_IO_CFG_UART0_DEVICE_ID,
V_VER2_PCH_LP_SERIAL_IO_CFG_UART1_DEVICE_ID,
V_VER2_PCH_LP_SERIAL_IO_CFG_UART2_DEVICE_ID,
V_VER2_PCH_LP_SERIAL_IO_CFG_UART3_DEVICE_ID
};
GLOBAL_REMOVE_IF_UNREFERENCED SERIAL_IO_CONTROLLER_DESCRIPTOR mSerialIoUartFixedAddress [] = {
{PCH_SERIAL_IO_BASE_ADDRESS + 0x1E000, PCH_SERIAL_IO_BASE_ADDRESS + 0x1F000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x20000, PCH_SERIAL_IO_BASE_ADDRESS + 0x21000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x22000, PCH_SERIAL_IO_BASE_ADDRESS + 0x23000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x24000, PCH_SERIAL_IO_BASE_ADDRESS + 0x25000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x26000, PCH_SERIAL_IO_BASE_ADDRESS + 0x27000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x28000, PCH_SERIAL_IO_BASE_ADDRESS + 0x29000},
{PCH_SERIAL_IO_BASE_ADDRESS + 0x2A000, PCH_SERIAL_IO_BASE_ADDRESS + 0x2B000}
};
/**
Gets Fixed Base Address used for BAR0
@param[in] UartNumber Serial IO device UART number
@retval Config control offset
**/
UINT32
GetSerialIoUartFixedMmioAddress (
IN UINT8 UartNumber
)
{
return mSerialIoUartFixedAddress[UartNumber].Bar0;
}
/**
Gets Fixed Address used for Pci Config Space manipulation
@param[in] UartNumber Serial IO device UART number
@retval Pci Config Address
**/
UINT32
GetSerialIoUartFixedPciCfgAddress (
IN UINT8 UartNumber
)
{
return mSerialIoUartFixedAddress[UartNumber].Bar1;
}
/**
Gets Uarts Device Id
@param[in] UartNumbe Serial IO device UART number
@retval Device Id
**/
UINT16
GetSerialIoUartDeviceId (
IN UINT8 UartNumber
)
{
return mPchLpSerialIoUartDevId[UartNumber];
}