Add LX2160A SocLib Signed-off-by: Pankaj Bansal <pankaj.ban...@nxp.com> --- Silicon/NXP/Chassis3V2/LX2160A/Include/Soc.h | 39 +++++++++ Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec | 23 ++++++ .../NXP/Chassis3V2/LX2160A/LX2160A.dsc.inc | 34 ++++++++ .../LX2160A/Library/SocLib/SocLib.c | 79 +++++++++++++++++++ .../LX2160A/Library/SocLib/SocLib.inf | 31 ++++++++ 5 files changed, 206 insertions(+) create mode 100644 Silicon/NXP/Chassis3V2/LX2160A/Include/Soc.h create mode 100644 Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec create mode 100644 Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dsc.inc create mode 100644 Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.c create mode 100644 Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.inf
diff --git a/Silicon/NXP/Chassis3V2/LX2160A/Include/Soc.h b/Silicon/NXP/Chassis3V2/LX2160A/Include/Soc.h new file mode 100644 index 0000000000..cc1f91272d --- /dev/null +++ b/Silicon/NXP/Chassis3V2/LX2160A/Include/Soc.h @@ -0,0 +1,39 @@ +/** @file + + Copyright 2020 NXP + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#ifndef __SOC_H__ +#define __SOC_H__ + +#include <Chassis.h> + +/** + Soc Memory Map +**/ +#define LX2160A_CCSR_PHYS_ADDRESS 0x1000000 +#define LX2160A_CCSR_SIZE 0xF000000 + +#define LX2160A_FLEXSPI_PHYS_ADDRESS 0x20000000 +#define LX2160A_FLEXSPI_SIZE SIZE_256MB + +#define LX2160A_DCFG_ADDRESS NXP_LAYERSCAPE_CHASSIS3V2_DCFG_ADDRESS + +#define LX2160A_DRAM0_PHYS_ADDRESS 0x80000000 +#define LX2160A_DRAM0_SIZE SIZE_2GB +#define LX2160A_DRAM1_PHYS_ADDRESS 0x2080000000 +#define LX2160A_DRAM1_SIZE 0x1F80000000 // 128 GB + +#define LX2160A_I2C0_PHYS_ADDRESS 0x2000000 + +/** + Reset Control Word (RCW) Bits +**/ +#define SYS_PLL_RAT(x) (((x) & 0x7c) >> 2) // Bits 2-6 + +typedef NXP_LAYERSCAPE_CHASSIS3V2_DEVICE_CONFIG LX2160A_DEVICE_CONFIG; + +#endif + diff --git a/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec b/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec new file mode 100644 index 0000000000..106b118188 --- /dev/null +++ b/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec @@ -0,0 +1,23 @@ +#/** @file +# NXP Layerscape processor package. +# +# Copyright 2020 NXP +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +#**/ + +[Defines] + DEC_SPECIFICATION = 1.27 + PACKAGE_VERSION = 0.1 + +################################################################################ +# +# Include Section - list of Include Paths that are provided by this package. +# Comments are used for Keywords and Module Types. +# +# +################################################################################ +[Includes.common] + Include # Root include for the package + diff --git a/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dsc.inc b/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dsc.inc new file mode 100644 index 0000000000..f786a57ebc --- /dev/null +++ b/Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dsc.inc @@ -0,0 +1,34 @@ +# @file +# +# Copyright 2020 NXP +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# + +[LibraryClasses.common] + SocLib|Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.inf + SerialPortLib|Silicon/NXP/Library/PL011SerialPortLib/PL011SerialPortLib.inf + +################################################################################ +# +# Pcd Section - list of all EDK II PCD Entries defined by this Platform +# +################################################################################ +[PcdsFeatureFlag.common] + gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE + +[PcdsFixedAtBuild.common] +## PL011 Serial Terminal + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x21c0000 + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|0 + gArmPlatformTokenSpaceGuid.PcdCoreCount|16 + +[PcdsDynamicDefault.common] + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemSize|0x20000000 + gNxpQoriqLsTokenSpaceGuid.PcdReservedMemAlignment|0x20000000 + # + # ARM General Interrupt Controller + gArmTokenSpaceGuid.PcdGicDistributorBase|0x6000000 + gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x6200000 + gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x0c0c0000 diff --git a/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.c b/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.c new file mode 100644 index 0000000000..2c19c72b5f --- /dev/null +++ b/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.c @@ -0,0 +1,79 @@ +/** @file + + Copyright 2017-2020 NXP + + SPDX-License-Identifier: BSD-2-Clause-Patent + **/ +#include <Soc.h> +#include <Library/ChassisLib.h> +#include <Library/SocLib.h> + +/** + Return the input clock frequency to an IP Module. + This function reads the RCW bits and calculates the PLL multipler/divider values to be applied + to various IP modules. + If a module is disabled or doesn't exist on platform, then return zero. + + @param[in] BaseClock Base clock to which PLL multipler/divider values is to be applied. + @param[in] ClockType IP modules whose clock value is to be retrieved + @param[in] Args Variable Args lists that is parsed based on the ClockType + e.g. if there are multiple modules of same type then this value tells the + instance of module for which clock is to be retrieved. + (e.g. if there are four i2c controllers in SOC, then this value can be 1, 2, 3, 4) + for IP modules which have only single instance in SOC (e.g. one QSPI controller) + this value can be null (i.e. no arg) + + @return > 0 Return the input clock frequency to an IP Module + 0 either IP module doesn't exist in SOC + or IP module instance doesn't exist in SOC + or IP module instance is disabled. i.e. no input clock is provided to IP module instance. +**/ +UINT64 +SocGetClock ( + IN UINT64 BaseClock, + IN UINT32 ClockType, + IN VA_LIST Args + ) +{ + LX2160A_DEVICE_CONFIG *Dcfg; + UINT32 RcwSr; + UINT64 ReturnValue; + + ReturnValue = 0; + Dcfg = (LX2160A_DEVICE_CONFIG *)LX2160A_DCFG_ADDRESS; + + switch (ClockType) { + case NXP_UART_CLOCK: + RcwSr = DcfgRead32 ((UINTN)&Dcfg->RcwSr[0]); + ReturnValue = BaseClock * SYS_PLL_RAT (RcwSr); + ReturnValue >>= 3; // platform pll / 8 + break; + case NXP_I2C_CLOCK: + RcwSr = DcfgRead32 ((UINTN)&Dcfg->RcwSr[0]); + ReturnValue = BaseClock * SYS_PLL_RAT (RcwSr); + ReturnValue >>= 4; // platform pll / 16 + break; + default: + break; + } + + return ReturnValue; +} + +/** + Function to initialize SoC specific constructs + CPU Info + SoC Personality + Board Personality + RCW prints + **/ +VOID +SocInit ( + VOID + ) +{ + ChassisInit (); + + return; +} + diff --git a/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.inf b/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.inf new file mode 100644 index 0000000000..ea9d45a021 --- /dev/null +++ b/Silicon/NXP/Chassis3V2/LX2160A/Library/SocLib/SocLib.inf @@ -0,0 +1,31 @@ +#@file +# +# Component description file for SocLib module +# +# Copyright 2017-2020 NXP +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + + +[Defines] + INF_VERSION = 0x0001000A + BASE_NAME = SocLib + FILE_GUID = 9b046753-2b4f-42d8-bfb3-468892fe17d4 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SocLib + +[Sources.common] + SocLib.c + +[Packages] + MdePkg/MdePkg.dec + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + Silicon/NXP/NxpQoriqLs.dec + Silicon/NXP/Chassis3V2/Chassis3V2.dec + Silicon/NXP/Chassis3V2/LX2160A/LX2160A.dec + +[LibraryClasses] + ChassisLib -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#54024): https://edk2.groups.io/g/devel/message/54024 Mute This Topic: https://groups.io/mt/71046342/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-