author | Jacob Stiffler <j-stiffler@ti.com> | |
Fri, 1 Nov 2019 18:53:49 +0000 (14:53 -0400) | ||
committer | Jacob Stiffler <j-stiffler@ti.com> | |
Fri, 1 Nov 2019 18:53:49 +0000 (14:53 -0400) |
Development of board-rtos has been relocated here from:
* Repo: https://git.ti.com/keystone-rtos/board
* Branch: master
* Commit ID: 6b8b37c3b92ee3be024729f347ce966fd92242ee
Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
* Repo: https://git.ti.com/keystone-rtos/board
* Branch: master
* Commit ID: 6b8b37c3b92ee3be024729f347ce966fd92242ee
Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
1351 files changed:
diff --git a/packages/ti/board/.gitignore b/packages/ti/board/.gitignore
--- /dev/null
@@ -0,0 +1,24 @@
+*.sw?
+*~
+*.bak
+*.orig
+.dlls
+.executables
+.interfaces
+.libraries
+.xdcenv.mak
+Settings.h
+Settings.xdc
+build/*/
+docs/Doxyfile
+docs/doxygen/
+example/*/*/c66/bios/src
+lib/
+package.mak
+package/
+packages/
+test/*/c66/bios/src
+Debug/
+Release/
+bin/
+utils/uniflash/target/bin/
diff --git a/packages/ti/board/Settings.xdc.xdt b/packages/ti/board/Settings.xdc.xdt
--- /dev/null
@@ -0,0 +1,39 @@
+
+%%{
+/*!
+ * This template implements the Settings.xdc
+ */
+ /* Versioning */
+ var ver = this;
+ for each(i=0;i<ver.length;i++)
+ {
+ if(String(ver[i]).length < 2)
+ {
+ ver[i]="0"+ver[i];
+ }
+ }
+
+ var packageVersion = "\""+ver[0]+"."+ver[1]+"."+ver[2]+"."+ver[3]+"\"";
+
+%%}
+
+module Settings
+{
+ config string boardVersionString = `packageVersion`;
+ config string boardName = "";
+
+ /*! This variable is to control the device library type selection.
+ * By default this variable is set to release.
+ *
+ * To use CSL to use the debug/release library, add the following lines to config
+ * file and set the library profile accordingly:
+ *
+ * var Uart Settings = xdc.useModule ('ti.Uart.Settings');
+ * UartSettings.libProfile = "debug";
+ *
+ */
+ metaonly config string libProfile = "release";
+
+}
+
+
diff --git a/packages/ti/board/board.h b/packages/ti/board/board.h
--- /dev/null
@@ -0,0 +1,442 @@
+/*
+ * Copyright (c) 2010-2018, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/**
+ * @file board.h
+ *
+ * @brief The Board Library is a thin utility
+ * layer on top of CSL and other board utilities. It provides uniform APIs
+ * for all supported boards. It aims to assist user to quickly write portable
+ * applications for its supported boards by hiding board level details
+ * from the user.
+ *
+ *
+ */
+
+#ifndef BOARD_UTILS_H_
+#define BOARD_UTILS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \defgroup BOARD_LIB_MODULE Board Library
+ *
+ * @{
+ *
+ * Board library provides set of APIs to initialize the interfaces
+ * on a given HW platform. It takes care of configuring and enabling different
+ * modules like PLL, clocks inside SoC and HW components like DDR, pinmux
+ * on the board which are required to make sure board is ready for running the
+ * application software.
+ *
+ * A common standard API Board_init() is exposed to the applications to invoke
+ * different board initialization routines. This function is common across the
+ * platforms maintaining the portability and can receive different input
+ * configuration flags based on the board capabilities allowing extendibility.
+ *
+ * Board library eliminates the use of any additional configurations like
+ * GEL files to initialize the board except the cases like DDR initialization
+ * for loading the code into DDR before calling the Board init function.
+ * Given this limitation, applications invoking board library functions to
+ * initialize PLL, DDR and pinmux are supposed to run from SoC internal memory.
+ *
+ * Additional functionality for configuring the devices like Ethernet PHYs,
+ * Flash devices and IO expanders etc is provided based on the platform need.
+ * Refer to the device/platform specific library documentation for more details.
+ *
+ */
+/* @} */
+
+
+/**
+ * \ingroup BOARD_LIB_MODULE
+ *
+ * @defgroup BOARD_LIB_MODULE_TYPES Board Data Types
+ */
+/*@{*/
+/**
+ * @brief Board Library uses basic C99 data types. The basic types used are
+ * uint32_t, int32_t, uint8_t, int8_t, uint16_t and int16_t. The standard
+ * C char is used for strings. Complex types (or typdefs) if used are defined
+ * within this header file.
+ */
+#include <stdint.h>
+
+#include <ti/csl/hw_types.h>
+#include <ti/board/board_cfg.h>
+
+/**
+ * @brief The following definitions are for handling cache alignment on the board.
+ *
+ * MAX_CACHE_LINE must be set to the cache line size of the board.
+ *
+ * When allocating memory that must be cache aligned, it must be a multiple of
+ * the cache line size. Use board_roundup to get the appropriate size.
+ *
+ * As an example to allocate a cache aligned block of memory you would do
+ * something like:
+ *
+ * buffer_len_aligned = board_roundup (buffer_len, MAX_CACHE_LINE)
+ * Malloc (buffer_len_aligned)
+ *
+ */
+/* w should be power of 2 */
+#define BOARD_CACHE_LINE_SIZE (128)
+#define board_roundup(n,w) (((n) + (w) - 1) & ~((w) - 1))
+
+/*************************************************************
+ * Return/Error values *
+ *************************************************************/
+
+/**
+ * @brief The return type for board library API calls
+ *
+ * @details Board library function calls will return this value, which contains
+ * information as to whether the function succeeded or encountered an
+ * error.
+ */
+typedef int32_t Board_STATUS;
+
+/* This file needs to be included for doing hyperflash pinmux, the file also
+ * needs Board_STATUS and hence the inclusion of the board_pinmux.h happens
+ * here
+ */
+
+#if defined (j721e_evm)
+#include <ti/board/src/j721e_evm/include/board_pinmux.h>
+#endif
+
+/** Board status OK */
+#define BOARD_SOK 0
+/** Error code for invalid parameters */
+#define BOARD_INVALID_PARAM -1
+/** Error code for unsupported feature */
+#define BOARD_UNSUPPORTED_FEATURE -2
+/** I2C handle open failed */
+#define BOARD_I2C_OPEN_FAIL -3
+/** I2C transfer call failed */
+#define BOARD_I2C_TRANSFER_FAIL -4
+/** IO Delay region not in internal memory */
+#define BOARD_PINMUX_BAD_MEM_REGION -5
+/** Error code for init clock module */
+#define BOARD_INIT_CLOCK_FAIL -6
+/** Error code for init DDR */
+#define BOARD_INIT_DDR_FAIL -7
+/** Runtime pinmux configuration mode */
+#define BOARD_PINMUX_INVALID_MODE -8
+/** Board status FAIL */
+#define BOARD_FAIL -10
+
+/*************************************************************
+ * Init/Info Definitons *
+ *************************************************************/
+
+/* Max number of characters per ID entry field */
+#define BOARD_MAX_ID_STR_LEN 20
+
+#define BOARD_BOARD_NAME_LEN (16U)
+#define BOARD_DESIGN_REV_LEN (2U)
+#define BOARD_PROC_NUM_LEN (4U)
+#define BOARD_VARIANT_LEN (2U)
+#define BOARD_PCBREV_LEN (2U)
+#define BOARD_SCHMBOM_REV_LEN (2U)
+#define BOARD_SWREV_LEN (2U)
+#define BOARD_VENDORID_LEN (2U)
+#define BOARD_BUILD_WEEK_LEN (2U)
+#define BOARD_BUILD_YEAR_LEN (2U)
+#define BOARD_BOARDID_LEN (6U)
+#define BOARD_SERIAL_NUM_LEN (4U)
+#define BOARD_MAC_ADDR_LEN (192U)
+
+
+/*************************************************************
+ * SoC Info Definitons *
+ *************************************************************/
+
+/* Default system clock value */
+#define BOARD_SYS_CLK_DEFAULT (0xFFFFFFFFU)
+
+/**
+ * @brief This structure contains board specific information
+ *
+ * This is the first generation (v1) of board ID info structure
+ * which is applicable to all the platforms prior to Keystone-III.
+ */
+typedef struct {
+
+ /* Header ID of the SOC */
+ char header[BOARD_MAX_ID_STR_LEN];
+
+ /* Name of the board */
+ char boardName[BOARD_MAX_ID_STR_LEN];
+
+ /* Board version/revision info */
+ char version[BOARD_MAX_ID_STR_LEN];
+
+ /* Board serial number */
+ char serialNum[BOARD_MAX_ID_STR_LEN];
+
+ /* Board configuration codes */
+ char configCodes[2*BOARD_MAX_ID_STR_LEN];
+
+ /* Industrial Ethernet MAC address 0 */
+ char indEthMacID0[BOARD_MAX_ID_STR_LEN];
+
+ /* Industrial Ethernet MAC address 3 */
+ char indEthMacID3[BOARD_MAX_ID_STR_LEN];
+
+} Board_IDInfo;
+
+typedef struct
+{
+ uint8_t macStructType;
+ uint16_t macLength;
+ uint16_t macControl;
+ uint8_t macAddress[BOARD_MAC_ADDR_LEN];
+} __attribute__((packed)) Board_macInfo;
+
+typedef struct
+{
+ uint8_t ddrStructType;
+ uint16_t ddrStructLen;
+ uint16_t ddrCtrl;
+} __attribute__((packed)) Board_ddrInfo;
+
+typedef struct
+{
+ uint8_t boardInfoStructType;
+ uint16_t boardInfoLength;
+ char boardName[BOARD_BOARD_NAME_LEN];
+ char designRev[BOARD_DESIGN_REV_LEN];
+ char procNum[BOARD_PROC_NUM_LEN];
+ char variant[BOARD_VARIANT_LEN];
+ char pcbRev[BOARD_PCBREV_LEN];
+ char schbomRev[BOARD_SCHMBOM_REV_LEN];
+ char swRev[BOARD_SWREV_LEN];
+ char vendorID[BOARD_VENDORID_LEN];
+ char buildWeek[BOARD_BUILD_WEEK_LEN];
+ char buildYear[BOARD_BUILD_YEAR_LEN];
+ char boardID[BOARD_BOARDID_LEN];
+ char serialNum[BOARD_SERIAL_NUM_LEN];
+} __attribute__((packed)) Board_boardInfo;
+
+typedef struct
+{
+ uint32_t magicNumber;
+ uint8_t headerStructType;
+ uint16_t payloadSize;
+} __attribute__((packed)) Board_headerInfo;
+
+/**
+ * @brief This structure contains board specific information
+ *
+ * This is the second generation (v2) of board ID info structure
+ * which is applicable to the platforms from Keystone-III and later.
+ */
+typedef struct
+{
+ /* Header info of the board */
+ Board_headerInfo headerInfo;
+
+ /* Board id Info of the board */
+ Board_boardInfo boardInfo;
+
+ /* DDR info of the board */
+ Board_ddrInfo ddrInfo;
+
+ /* Mac Info of the board */
+ Board_macInfo macInfo;
+
+ /* End of the structure */
+ uint8_t endList;
+
+} __attribute__((packed)) Board_IDInfo_v2;
+
+/**
+ * @brief This structure contains SoC specific information
+ */
+typedef struct {
+
+ /* System clock value in Hz */
+ uint32_t sysClock;
+
+} Board_SoCInfo;
+
+typedef uint32_t Board_initCfg;
+#define BOARD_INIT_ALL (0xFFFFFFFFU)
+#define BOARD_INIT_UNLOCK_MMR (1 << 1U)
+#define BOARD_INIT_PLL (1 << 2U)
+#define BOARD_INIT_PLL_MCU (1 << 3U)
+#define BOARD_INIT_PLL_MAIN (1 << 4U)
+#define BOARD_INIT_MODULE_CLOCK (1 << 5U)
+#define BOARD_INIT_MODULE_CLOCK_MCU (1 << 6U)
+#define BOARD_INIT_MODULE_CLOCK_MAIN (1 << 7U)
+#define BOARD_INIT_DDR (1 << 8U)
+#define BOARD_INIT_WATCHDOG_DISABLE (1 << 9U)
+#define BOARD_INIT_PINMUX_CONFIG (1 << 10U)
+#define BOARD_INIT_UART_STDIO (1 << 11U)
+#define BOARD_INIT_ICSS_PINMUX (1 << 12U)
+#define BOARD_INIT_ETH_PHY (1 << 13U)
+#define BOARD_INIT_ECC (1 << 14U)
+#define BOARD_INIT_PLL_OPP_HIGH (1 << 15U)
+#define BOARD_INIT_PLL_OPP_OD (1 << 16U)
+#define BOARD_INIT_PLL_OPP_NOM (1 << 17U)
+/* iceK2G requires board specific Ethernet configurations for
+ proper operation of Ethernet interfaces. Applications
+ using NSS(Gigabit) or ICSS(10/100mbps) Ethernet inteface
+ should call Board_init() with config control macro
+ 'BOARD_INIT_ETH_PHY' for initializing Gigabit Ethernet PHY and
+ 'BOARD_INIT_ICSS_ETH_PHY' to invoke the PRU_ICSS Ethernet PHY
+ initialization */
+/* Config control bit definition for 10/100 Ethernet PHY intialization */
+#define BOARD_INIT_ICSS_ETH_PHY (1 << 18U)
+/* Flag to enable EMIF pin mux configuration during Board_init.
+ EMIF pin mux is done as part of default pin mux as configuring EMIF pinmux
+ while system is running from SDRAM/DDR can corrupt the memory.
+ Use this flag only from the applications which are not running from SDRAM/DDR
+*/
+#define BOARD_INIT_EMIF_PINMUX (1 << 19U)
+/* Applies only to devices with DDR ECC support */
+#define BOARD_INIT_DDR_ECC (1 << 20U)
+/* Initializes SerDes module */
+#define BOARD_INIT_SERDES_PHY (1 << 21U)
+/* Initializes I2C controller instances used by the board */
+#define BOARD_INIT_I2C (1 << 22U)
+/* De-Initializes I2C controller instances used by the board */
+#define BOARD_DEINIT_I2C (1 << 23U)
+#define BOARD_INIT_CPSW9G_ETH_PHY (1 << 24U)
+
+/* Configures ENET Control(mac mode, delay settings) for CPSW/ICCS ports */
+#define BOARD_INIT_ENETCTRL_CPSW2G (1 << 25U)
+#define BOARD_INIT_ENETCTRL_CPSW9G (1 << 26U)
+#define BOARD_INIT_ENETCTRL_ICSS (1 << 27U)
+#define BOARD_INIT_DEFAULT BOARD_INIT_ALL
+
+#define BOARD_DEINIT_ALL (0xFFFFFFFFU)
+#define BOARD_DEINIT_LOCK_MMR (1 << 1U)
+#define BOARD_DEINIT_MODULE_CLOCK (1 << 2U)
+#define BOARD_DEINIT_UART_STDIO (1 << 3U)
+#define BOARD_DEINIT_DEFAULT BOARD_DEINIT_ALL
+
+/* @} */
+
+/**
+ * \ingroup BOARD_LIB_MODULE
+ *
+ * @defgroup BOARD_LIB_MODULE_APIS Board Standard APIs
+ */
+/*@{*/
+
+/*************************************************************
+ * APIs *
+ *************************************************************/
+
+/**
+ * @brief Get board information.
+ *
+ * @param[out] info
+ * This structure will have board information on return
+ *
+ * @return Board_STATUS Returns status on API call
+ *
+ */
+Board_STATUS Board_getIDInfo(Board_IDInfo *info);
+
+/**
+ * @brief Get board information - v2
+ *
+ * @param[out] info
+ * This structure will have board information on return
+ * @param[in] slaveAddress
+ * I2C slave address of EEPROM to be read
+ *
+ * @return Board_STATUS Returns status on API call
+ *
+ */
+Board_STATUS Board_getIDInfo_v2(Board_IDInfo_v2 *info, uint8_t slaveAddress);
+
+/**
+ * @brief Set board information - v2
+ *
+ * @param[in] info
+ * This structure will have board information
+ * @param[in] slaveAddress
+ * I2C slave address of EEPROM to be write
+ *
+ * @return Board_STATUS Returns status on API call
+ *
+ */
+Board_STATUS Board_writeIDInfo_v2(Board_IDInfo_v2 *info, uint8_t slaveAddress);
+
+/**
+ * @brief Get SoC information.
+ *
+ * @param[out] socInfo
+ * This structure will have SoC information on return
+ *
+ * @return Board_STATUS Returns status on API call
+ *
+ */
+Board_STATUS Board_getSoCInfo(Board_SoCInfo *socInfo);
+
+/**
+ * @brief Initialization functions for a specific board.
+ *
+ * @param[in] cfg
+ * Param to indicate what to initialize when calling Board_init()
+ *
+ * @return Board_STATUS Returns status on API call
+ *
+ */
+Board_STATUS Board_init(Board_initCfg cfg);
+
+/**
+ * @brief Board library deinitialization function
+ *
+ * BOARD_DEINIT_UART_STDIO -
+ * Deinitializes the UART module.
+ *
+ * @param cfg [IN] Board configuration flags
+ *
+ * @return BOARD_SOK in case of success or appropriate error code
+ */
+Board_STATUS Board_deinit(Board_initCfg cfg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* @} */
diff --git a/packages/ti/board/board_cfg.h b/packages/ti/board/board_cfg.h
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2017, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef BOARD_CFG_TOP_H
+#define BOARD_CFG_TOP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(evmAM335x)
+#include <ti/board/src/evmAM335x/include/board_cfg.h>
+
+#elif defined (icev2AM335x)
+#include <ti/board/src/icev2AM335x/include/board_cfg.h>
+
+#elif defined (iceAMIC110)
+#include <ti/board/src/iceAMIC110/include/board_cfg.h>
+
+#elif defined (skAM335x)
+#include <ti/board/src/skAM335x/include/board_cfg.h>
+
+#elif defined (bbbAM335x)
+#include <ti/board/src/bbbAM335x/include/board_cfg.h>
+
+#elif defined (idkAM437x)
+#include <ti/board/src/idkAM437x/include/board_cfg.h>
+
+#elif defined (evmAM437x)
+#include <ti/board/src/evmAM437x/include/board_cfg.h>
+
+#elif defined (skAM437x)
+#include <ti/board/src/skAM437x/include/board_cfg.h>
+
+#elif defined (evmAM572x)
+#include <ti/board/src/evmAM572x/include/board_cfg.h>
+
+#elif defined (evmOMAPL137)
+#include <ti/board/src/evmOMAPL137/include/board_cfg.h>
+
+#elif defined (lcdkOMAPL138)
+#include <ti/board/src/lcdkOMAPL138/include/board_cfg.h>
+
+#elif defined (idkAM572x)
+#include <ti/board/src/idkAM572x/include/board_cfg.h>
+
+#elif defined (idkAM574x)
+#include <ti/board/src/idkAM574x/include/board_cfg.h>
+
+#elif defined (evmAM571x)
+#include <ti/board/src/evmAM571x/include/board_cfg.h>
+
+#elif defined (idkAM571x)
+#include <ti/board/src/idkAM571x/include/board_cfg.h>
+
+#elif defined (evmK2E)
+#include <ti/board/src/evmK2E/include/board_cfg.h>
+
+#elif defined (evmK2L)
+#include <ti/board/src/evmK2L/include/board_cfg.h>
+
+#elif defined (evmK2G)
+#include <ti/board/src/evmK2G/include/board_cfg.h>
+
+#elif defined (iceK2G)
+#include <ti/board/src/iceK2G/include/board_cfg.h>
+
+#elif defined (evmK2H)
+#include <ti/board/src/evmK2H/include/board_cfg.h>
+
+#elif defined (evmK2K)
+#include <ti/board/src/evmK2H/include/board_cfg.h>
+
+#elif defined (evmC6657)
+#include <ti/board/src/evmC6657/include/board_cfg.h>
+
+#elif defined (evmC6678)
+#include <ti/board/src/evmC6678/include/board_cfg.h>
+
+#elif defined (evmDRA72x)
+#include <ti/board/src/evmDRA72x/include/board_cfg.h>
+
+#elif defined (evmDRA75x)
+#include <ti/board/src/evmDRA75x/include/board_cfg.h>
+
+#elif defined (SOC_DRA78x)
+#include <ti/board/src/evmDRA78x/include/board_cfg.h>
+
+#elif defined (am65xx_idk)
+#include <ti/board/src/am65xx_idk/include/board_cfg.h>
+
+#elif defined (am65xx_evm)
+#include <ti/board/src/am65xx_evm/include/board_cfg.h>
+
+#elif defined (j721e_sim)
+#include <ti/board/src/j721e_sim/include/board_cfg.h>
+
+#elif defined (j721e_qt)
+#include <ti/board/src/j721e_sim/include/board_cfg.h>
+
+#elif defined (j721e_evm)
+#include <ti/board/src/j721e_evm/include/board_cfg.h>
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/packages/ti/board/board_component.mk b/packages/ti/board/board_component.mk
--- /dev/null
@@ -0,0 +1,150 @@
+#
+# Copyright (c) 2017, Texas Instruments Incorporated
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of Texas Instruments Incorporated nor the names of
+# its contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+# File: board_component.mk
+# This file is component include make file of BOARD library.
+# List of variables set in this file and their purpose:
+# <mod>_RELPATH - This is the relative path of the module, typically from
+# top-level directory of the package
+# <mod>_PATH - This is the absolute path of the module. It derives from
+# absolute path of the top-level directory (set in env.mk)
+# and relative path set above
+# <mod>_INCLUDE - This is the path that has interface header files of the
+# module. This can be multiple directories (space separated)
+# <mod>_PKG_LIST - Names of the modules (and sub-modules) that are a part
+# part of this module, including itself.
+# <mod>_BOARD_DEPENDENCY - "yes": means the code for this module depends on
+# board and the compiled obj/lib has to be kept
+# under <board> directory
+# "no" or "" or if this variable is not defined: means
+# this module has no board dependent code and hence
+# the obj/libs are not kept under <board> dir.
+# <mod>_CORE_DEPENDENCY - "yes": means the code for this module depends on
+# core and the compiled obj/lib has to be kept
+# under <core> directory
+# "no" or "" or if this variable is not defined: means
+# this module has no core dependent code and hence
+# the obj/libs are not kept under <core> dir.
+# <mod>_APP_STAGE_FILES - List of source files that belongs to the module
+# <mod>, but that needs to be compiled at application
+# build stage (in the context of the app). This is
+# primarily for link time configurations or if the
+# source file is dependent on options/defines that are
+# application dependent. This can be left blank or
+# not defined at all, in which case, it means there
+# no source files in the module <mod> that are required
+# to be compiled in the application build stage.
+#
+ifeq ($(board_component_make_include), )
+
+board_lib_BOARDLIST = evmAM335x icev2AM335x iceAMIC110 skAM335x bbbAM335x evmAM437x idkAM437x skAM437x evmAM572x idkAM571x idkAM572x evmK2H evmK2K evmK2E evmK2L evmK2G iceK2G \
+ evmC6678 evmC6657 tda2xx-evm evmDRA75x tda2ex-evm evmDRA72x tda3xx-evm evmDRA78x evmOMAPL137 lcdkOMAPL138 idkAM574x am65xx_evm am65xx_idk j721e_sim j721e_qt j721e_evm
+board_lib_tda2xx_CORELIST = a15_0 ipu1_0 c66x
+board_lib_tda2ex_CORELIST = a15_0 ipu1_0 c66x
+board_lib_tda3xx_CORELIST = ipu1_0 c66x
+board_lib_dra72x_CORELIST = a15_0 ipu1_0 c66x
+board_lib_dra75x_CORELIST = a15_0 ipu1_0 c66x
+board_lib_dra78x_CORELIST = ipu1_0 c66x
+board_lib_am572x_CORELIST = c66x a15_0 ipu1_0
+board_lib_am574x_CORELIST = c66x a15_0 ipu1_0
+board_lib_am571x_CORELIST = c66x a15_0 ipu1_0
+board_lib_k2h_CORELIST = c66x a15_0
+board_lib_k2k_CORELIST = c66x a15_0
+board_lib_k2l_CORELIST = c66x a15_0
+board_lib_k2e_CORELIST = c66x a15_0
+board_lib_k2g_CORELIST = c66x a15_0
+board_lib_c6678_CORELIST = c66x
+board_lib_c6657_CORELIST = c66x
+board_lib_am437x_CORELIST = a9host
+board_lib_am335x_CORELIST = a8host
+board_lib_omapl137_CORELIST = arm9_0 c674x
+board_lib_omapl138_CORELIST = arm9_0 c674x
+board_lib_am65xx_CORELIST = mpu1_0 mcu1_0
+board_lib_j721e_CORELIST = mpu1_0 mcu1_0 mcu1_1 mcu2_0 mcu2_1 mcu3_0 mcu3_1 c66xdsp_1 c66xdsp_2 c7x_1
+
+
+############################
+# board package
+# List of components included under board lib
+# The components included here are built and will be part of board lib
+############################
+board_LIB_LIST = board
+board_lib_LIB_LIST = $(board_LIB_LIST)
+
+############################
+# board examples
+# List of examples under board
+# All the tests mentioned in list are built when test target is called
+# List below all examples for allowed values
+############################
+board_EXAMPLE_LIST =
+
+#
+# BOARD Modules
+#
+
+# BOARD LIB
+board_COMP_LIST = board
+board_RELPATH = ti/board
+board_PATH = $(PDK_BOARD_COMP_PATH)
+board_LIBNAME = ti.board
+exp