summaryrefslogtreecommitdiffstats
path: root/bsp/meta-ti/recipes-bsp/pru
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-ti/recipes-bsp/pru')
-rw-r--r--bsp/meta-ti/recipes-bsp/pru/pru-icss_git.bb82
-rw-r--r--bsp/meta-ti/recipes-bsp/pru/pru-pwm-fw_git.bb39
-rw-r--r--bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-add-Makefile-for-building-firmware.patch145
-rw-r--r--bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-remove-dependency-on-PDK-CSL.patch54
-rw-r--r--bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw_git.bb40
5 files changed, 356 insertions, 4 deletions
diff --git a/bsp/meta-ti/recipes-bsp/pru/pru-icss_git.bb b/bsp/meta-ti/recipes-bsp/pru/pru-icss_git.bb
index a36bce05..88d28f37 100644
--- a/bsp/meta-ti/recipes-bsp/pru/pru-icss_git.bb
+++ b/bsp/meta-ti/recipes-bsp/pru/pru-icss_git.bb
@@ -2,15 +2,15 @@ DESCRIPTION = "Programmable Real-time Unit Software Package"
HOMEPAGE = "http://processors.wiki.ti.com/index.php/PRU-ICSS"
LICENSE = "BSD-3-Clause & GPL-2.0 & PD"
-LIC_FILES_CHKSUM = "file://PRU-Package-v5.0-Manifest.html;md5=a86a37c8b6396ad0ad6ae752f1aa8fcc"
+LIC_FILES_CHKSUM = "file://PRU-Package-v6.0-Manifest.html;md5=ea854230556f47609efdaedca174b44c"
inherit update-alternatives
BRANCH = "master"
SRC_URI = "git://git.ti.com/pru-software-support-package/pru-software-support-package.git;protocol=git;branch=${BRANCH}"
-SRCREV = "99b1bfd8ca8780fd2306c2c939f3fd477b2e5218"
+SRCREV = "ff252a5e174f1b6aa42931744939f20d25d8e070"
-PV = "5.4.0"
+PV = "5.6.0"
PR = "r1"
require recipes-ti/includes/ti-paths.inc
@@ -33,6 +33,7 @@ DEPENDS = "ti-cgt-pru-native"
S = "${WORKDIR}/git"
export PRU_CGT = "${TI_CGT_PRU_INSTALL_DIR}"
+export PRU_SSP = "${S}"
SUBDIRS = "examples pru_cape/pru_fw lib/src labs"
@@ -41,6 +42,7 @@ PLATFORM_ti43x = "am437x"
PLATFORM_omap-a15 = "am572x"
PLATFORM_k2g = "k2g"
PLATFORM_am65xx = "am65x"
+PLATFORM_j7-evm = "j721e"
do_compile() {
for dir in ${SUBDIRS}
@@ -50,9 +52,17 @@ do_compile() {
}
do_install() {
+ CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
install -d ${D}/lib/firmware/pru
+ install -d ${D}${includedir}
+ cp ${CP_ARGS} ${S}/include/* ${D}${includedir}
+ install -d ${D}${libdir}
+ install -m 0644 ${S}/lib/rpmsg_lib.lib ${D}${libdir}
}
+FILES_${PN}-staticdev = "${libdir}"
+FILES_${PN}-dev = "${includedir}"
+
do_install_append_ti33x() {
install -m 644 ${S}/examples/${PLATFORM}/PRU_Halt/gen/PRU_Halt.out \
${D}/lib/firmware/pru
@@ -123,7 +133,31 @@ do_install_append_am65xx() {
done
}
-FILES_${PN}-halt = "/lib/firmware/pru/PRU_Halt* /lib/firmware/pru/RTU_Halt*"
+do_install_append_j7-evm() {
+ for i in 0 1
+ do
+ install -m 644 ${S}/examples/${PLATFORM}/PRU_Halt/gen/PRU${i}/PRU_Halt_${i}.out \
+ ${D}/lib/firmware/pru
+ install -m 644 ${S}/examples/${PLATFORM}/RTU_Halt/gen/RTU${i}/RTU_Halt_${i}.out \
+ ${D}/lib/firmware/pru
+ install -m 644 ${S}/examples/${PLATFORM}/TX_PRU_Halt/gen/TX_PRU${i}/TX_PRU_Halt_${i}.out \
+ ${D}/lib/firmware/pru
+ done
+ for i in 0 1
+ do
+ for j in 0 1
+ do
+ install -m 0644 ${S}/examples/j721e/PRU_RPMsg_Echo_Interrupt${j}/gen/icssg${i}/PRU_RPMsg_Echo_Interrupt${i}_${j}.out \
+ ${D}/lib/firmware/pru
+ install -m 0644 ${S}/examples/j721e/RTU_RPMsg_Echo_Interrupt${j}/gen/icssg${i}/RTU_RPMsg_Echo_Interrupt${i}_${j}.out \
+ ${D}/lib/firmware/pru
+
+ done
+ done
+}
+
+
+FILES_${PN}-halt = "/lib/firmware/pru/PRU_Halt* /lib/firmware/pru/RTU_Halt* /lib/firmware/pru/TX_PRU_Halt*"
FILES_${PN}-rpmsg-echo = "/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt* /lib/firmware/pru/RTU_RPMsg_Echo_Interrupt*"
# Set up names for the firmwares
@@ -132,6 +166,7 @@ PRU_ICSS_ALTERNATIVES_ti43x = "am437x-pru0_0-fw am437x-pru0_1-fw am437x-pru1_
PRU_ICSS_ALTERNATIVES_omap-a15 = "am57xx-pru1_0-fw am57xx-pru1_1-fw am57xx-pru2_0-fw am57xx-pru2_1-fw"
PRU_ICSS_ALTERNATIVES_k2g = "k2g-pru0_0-fw k2g-pru0_1-fw k2g-pru1_0-fw k2g-pru1_1-fw"
PRU_ICSS_ALTERNATIVES_am65xx = "am65x-pru0_0-fw am65x-pru0_1-fw am65x-pru1_0-fw am65x-pru1_1-fw am65x-pru2_0-fw am65x-pru2_1-fw am65x-rtu0_0-fw am65x-rtu0_1-fw am65x-rtu1_0-fw am65x-rtu1_1-fw am65x-rtu2_0-fw am65x-rtu2_1-fw"
+PRU_ICSS_ALTERNATIVES_j7-evm = "j7-pru0_0-fw j7-pru0_1-fw j7-pru1_0-fw j7-pru1_1-fw j7-rtu0_0-fw j7-rtu0_1-fw j7-rtu1_0-fw j7-rtu1_1-fw"
# Set up link names for the firmwares
ALTERNATIVE_LINK_NAME[am335x-pru0-fw] = "/lib/firmware/am335x-pru0-fw"
@@ -165,9 +200,25 @@ ALTERNATIVE_LINK_NAME[am65x-rtu1_1-fw] = "/lib/firmware/am65x-rtu1_1-fw"
ALTERNATIVE_LINK_NAME[am65x-rtu2_0-fw] = "/lib/firmware/am65x-rtu2_0-fw"
ALTERNATIVE_LINK_NAME[am65x-rtu2_1-fw] = "/lib/firmware/am65x-rtu2_1-fw"
+ALTERNATIVE_LINK_NAME[j7-pru0_0-fw] = "/lib/firmware/j7-pru0_0-fw"
+ALTERNATIVE_LINK_NAME[j7-pru0_1-fw] = "/lib/firmware/j7-pru0_1-fw"
+ALTERNATIVE_LINK_NAME[j7-pru1_0-fw] = "/lib/firmware/j7-pru1_0-fw"
+ALTERNATIVE_LINK_NAME[j7-pru1_1-fw] = "/lib/firmware/j7-pru1_1-fw"
+ALTERNATIVE_LINK_NAME[j7-rtu0_0-fw] = "/lib/firmware/j7-rtu0_0-fw"
+ALTERNATIVE_LINK_NAME[j7-rtu0_1-fw] = "/lib/firmware/j7-rtu0_1-fw"
+ALTERNATIVE_LINK_NAME[j7-rtu1_0-fw] = "/lib/firmware/j7-rtu1_0-fw"
+ALTERNATIVE_LINK_NAME[j7-rtu1_1-fw] = "/lib/firmware/j7-rtu1_1-fw"
+ALTERNATIVE_LINK_NAME[j7-txpru0_0-fw] = "/lib/firmware/j7-txpru0_0-fw"
+ALTERNATIVE_LINK_NAME[j7-txpru0_1-fw] = "/lib/firmware/j7-txpru0_1-fw"
+ALTERNATIVE_LINK_NAME[j7-txpru1_0-fw] = "/lib/firmware/j7-txpru1_0-fw"
+ALTERNATIVE_LINK_NAME[j7-txpru1_1-fw] = "/lib/firmware/j7-txpru1_1-fw"
+
# Create the pru-icss-halt firmware alternatives
ALTERNATIVE_pru-icss-halt = "${PRU_ICSS_ALTERNATIVES}"
+# Only Halt firmware images are supported for the Tx_PRU cores
+ALTERNATIVE_pru-icss-halt_append_j7-evm = " j7-txpru0_0-fw j7-txpru0_1-fw j7-txpru1_0-fw j7-txpru1_1-fw"
+
ALTERNATIVE_TARGET_pru-icss-halt[am335x-pru0-fw] = "/lib/firmware/pru/PRU_Halt.out"
ALTERNATIVE_TARGET_pru-icss-halt[am335x-pru1-fw] = "/lib/firmware/pru/PRU_Halt.out"
@@ -199,6 +250,20 @@ ALTERNATIVE_TARGET_pru-icss-halt[am65x-rtu1_1-fw] = "/lib/firmware/pru/RTU_Halt_
ALTERNATIVE_TARGET_pru-icss-halt[am65x-rtu2_0-fw] = "/lib/firmware/pru/RTU_Halt_0.out"
ALTERNATIVE_TARGET_pru-icss-halt[am65x-rtu2_1-fw] = "/lib/firmware/pru/RTU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-pru0_0-fw] = "/lib/firmware/pru/PRU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-pru0_1-fw] = "/lib/firmware/pru/PRU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-pru1_0-fw] = "/lib/firmware/pru/PRU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-pru1_1-fw] = "/lib/firmware/pru/PRU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-rtu0_0-fw] = "/lib/firmware/pru/RTU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-rtu0_1-fw] = "/lib/firmware/pru/RTU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-rtu1_0-fw] = "/lib/firmware/pru/RTU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-rtu1_1-fw] = "/lib/firmware/pru/RTU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-txpru0_0-fw] = "/lib/firmware/pru/TX_PRU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-txpru0_1-fw] = "/lib/firmware/pru/TX_PRU_Halt_1.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-txpru1_0-fw] = "/lib/firmware/pru/TX_PRU_Halt_0.out"
+ALTERNATIVE_TARGET_pru-icss-halt[j7-txpru1_1-fw] = "/lib/firmware/pru/TX_PRU_Halt_1.out"
+
+
ALTERNATIVE_PRIORITY_pru-icss-halt = "50"
# Create the pru-icss-rpmsg-echo firmware alternatives
@@ -235,6 +300,15 @@ ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[am65x-rtu1_1-fw] = "/lib/firmware/pru/RTU
ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[am65x-rtu2_0-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt2_0.out"
ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[am65x-rtu2_1-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt2_1.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-pru0_0-fw] = "/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt0_0.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-pru0_1-fw] = "/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt0_1.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-pru1_0-fw] = "/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_0.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-pru1_1-fw] = "/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_1.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-rtu0_0-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt0_0.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-rtu0_1-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt0_1.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-rtu1_0-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt1_0.out"
+ALTERNATIVE_TARGET_pru-icss-rpmsg-echo[j7-rtu1_1-fw] = "/lib/firmware/pru/RTU_RPMsg_Echo_Interrupt1_1.out"
+
ALTERNATIVE_PRIORITY_pru-icss-rpmsg-echo = "100"
ALLOW_EMPTY_${PN} = "1"
diff --git a/bsp/meta-ti/recipes-bsp/pru/pru-pwm-fw_git.bb b/bsp/meta-ti/recipes-bsp/pru/pru-pwm-fw_git.bb
new file mode 100644
index 00000000..a8c71034
--- /dev/null
+++ b/bsp/meta-ti/recipes-bsp/pru/pru-pwm-fw_git.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Programmable Real-time Unit PWM Firmware"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://main.c;beginline=1;endline=32;md5=893d6a0cf1644338ea96642c0db97f59"
+
+require recipes-ti/includes/ti-paths.inc
+
+COMPATIBLE_MACHINE = "am65xx"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+
+
+inherit ti-pdk-fetch
+
+TI_PDK_COMP = "ti.drv.pruss.example.apps.icssg_pwm.firmware.src"
+
+PE = "1"
+
+DEPENDS = "ti-cgt-pru-native pru-icss common-csl-ip-rtos"
+
+
+EXTRA_OEMAKE += " \
+ PRU_CGT="${TI_CGT_PRU_INSTALL_DIR}" \
+ PRU_SSP="${STAGING_DIR_TARGET}/usr" \
+ PDK_INSTALL_DIR="${STAGING_DATADIR}/ti/ti-pdk-tree/packages" \
+"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}/lib/firmware/ti-pruss
+ install -m 0644 ${S}/gen/pwm.out ${D}/lib/firmware/ti-pruss/am65x-pru0-pwm-fw.elf
+}
+
+FILES_${PN} = "/lib/firmware"
+
+INSANE_SKIP_${PN} = "arch"
diff --git a/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-add-Makefile-for-building-firmware.patch b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-add-Makefile-for-building-firmware.patch
new file mode 100644
index 00000000..8414d945
--- /dev/null
+++ b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-add-Makefile-for-building-firmware.patch
@@ -0,0 +1,145 @@
+From d37359e7b2bd26da4d04fc97a94967cf457558e9 Mon Sep 17 00:00:00 2001
+From: Denys Dmytriyenko <denys@ti.com>
+Date: Tue, 6 Aug 2019 19:50:59 -0400
+Subject: [PATCH] icss_uart: add Makefile for building firmware
+
+Signed-off-by: Denys Dmytriyenko <denys@ti.com>
+---
+ firmware/icss_uart/src/Makefile | 125 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 125 insertions(+)
+ create mode 100644 firmware/icss_uart/src/Makefile
+
+diff --git a/firmware/icss_uart/src/Makefile b/firmware/icss_uart/src/Makefile
+new file mode 100644
+index 0000000..4764622
+--- /dev/null
++++ b/firmware/icss_uart/src/Makefile
+@@ -0,0 +1,125 @@
++# PRU_CGT environment variable must point to the TI PRU code gen tools directory. E.g.:
++#(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y
++#(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y
++#(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru
++#
++# *ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in
++# order to use the same Makefile
++#(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin
++
++ifndef PRU_CGT
++define ERROR_BODY
++
++*******************************************************************************
++PRU_CGT environment variable is not set. Examples given:
++(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2
++(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2
++(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru
++
++*ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in
++order to use the same Makefile
++(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin
++*******************************************************************************
++
++endef
++$(error $(ERROR_BODY))
++endif
++
++# PRU_SSP environment variable must point to the PRU Software Support Package. E.g.:
++#(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package
++#(Windows) set PRU_SSP=C:/path/to/pru_software_support_package
++#(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package
++
++ifndef PRU_SSP
++define ERROR_BODY
++
++*******************************************************************************
++PRU_SSP environment variable must point to the PRU Software Support Package. E.g.:
++(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package
++(Windows) set PRU_SSP=C:/path/to/pru_software_support_package
++(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package
++PRU_CGT environment variable is not set. Examples given:
++*******************************************************************************
++
++endef
++$(error $(ERROR_BODY))
++endif
++
++MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
++CURRENT_DIR := $(notdir $(patsubst %/,%,$(dir $(MKFILE_PATH))))
++PROJ_NAME=$(CURRENT_DIR)
++LINKER_COMMAND_FILE=./AM335x_PRU.cmd
++LIBS=--library=$(PRU_SSP)/lib/rpmsg_lib.lib
++INCLUDE=--include_path=$(PRU_SSP)/include --include_path=$(PRU_SSP)/include/am335x
++STACK_SIZE=0x100
++HEAP_SIZE=0x100
++GEN_DIR=gen
++
++#Common compiler and linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide)
++CFLAGS=-v3 -o2 --display_error_number --endian=little --hardware_mac=on --asm_directory=$(GEN_DIR) --obj_directory=$(GEN_DIR) --pp_directory=$(GEN_DIR) -ppd -ppa -DICSS_REV2
++#Linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide)
++LFLAGS=--reread_libs --warn_sections --stack_size=$(STACK_SIZE) --heap_size=$(HEAP_SIZE)
++
++TARGET=$(GEN_DIR)/$(PROJ_NAME).out
++MAP=$(GEN_DIR)/$(PROJ_NAME).map
++OBJECTS=$(patsubst %.asm,$(GEN_DIR)/%.object,$(wildcard *.asm))
++OBJECTS+=$(patsubst %.c,$(GEN_DIR)/%.object,$(wildcard *.c))
++
++
++all: printStart $(TARGET) printEnd
++
++printStart:
++ @echo ''
++ @echo '************************************************************'
++ @echo 'Building project: $(PROJ_NAME)'
++
++printEnd:
++ @echo ''
++ @echo 'Output files can be found in the "$(GEN_DIR)" directory'
++ @echo ''
++ @echo 'Finished building project: $(PROJ_NAME)'
++ @echo '************************************************************'
++ @echo ''
++
++# Invokes the linker (-z flag) to make the .out file
++$(TARGET): $(OBJECTS) $(LINKER_COMMAND_FILE)
++ @echo ''
++ @echo 'Building target: $@'
++ @echo 'Invoking: PRU Linker'
++ $(PRU_CGT)/bin/clpru $(CFLAGS) -z -i$(PRU_CGT)/lib -i$(PRU_CGT)/include $(LFLAGS) -o $(TARGET) $(OBJECTS) -m$(MAP) $(LINKER_COMMAND_FILE) --library=libc.a $(LIBS)
++ @echo 'Finished building target: $@'
++
++# Invokes the compiler on all assembly files in the directory to create the object files
++$(GEN_DIR)/%.object: %.asm
++ @mkdir -p $(GEN_DIR)
++ @echo ''
++ @echo 'Building file: $<'
++ @echo 'Invoking: PRU Compiler'
++ $(PRU_CGT)/bin/clpru --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $<
++
++# Invokes the compiler on all c files in the directory to create the object files
++$(GEN_DIR)/%.object: %.c
++ @mkdir -p $(GEN_DIR)
++ @echo ''
++ @echo 'Building file: $<'
++ @echo 'Invoking: PRU Compiler'
++ $(PRU_CGT)/bin/clpru -k --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $<
++
++.PHONY: all clean
++
++# Remove the $(GEN_DIR) directory
++clean:
++ @echo ''
++ @echo '************************************************************'
++ @echo 'Cleaning project: $(PROJ_NAME)'
++ @echo ''
++ @echo 'Removing files in the "$(GEN_DIR)" directory'
++ @rm -rf $(GEN_DIR)
++ @echo ''
++ @echo 'Finished cleaning project: $(PROJ_NAME)'
++ @echo '************************************************************'
++ @echo ''
++
++# Includes the dependencies that the compiler creates (-ppd and -ppa flags)
++-include $(OBJECTS:%.object=%.pp)
++
+--
+2.7.4
+
diff --git a/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-remove-dependency-on-PDK-CSL.patch b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-remove-dependency-on-PDK-CSL.patch
new file mode 100644
index 00000000..b565ba0e
--- /dev/null
+++ b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-remove-dependency-on-PDK-CSL.patch
@@ -0,0 +1,54 @@
+From 1b853cfd6194d3855310f47d43cb8c9f498b6182 Mon Sep 17 00:00:00 2001
+From: Bin Liu <b-liu@ti.com>
+Date: Wed, 27 Feb 2019 14:38:43 -0600
+Subject: [PATCH] icss_uart: remove dependency on PDK/CSL
+
+Signed-off-by: Bin Liu <b-liu@ti.com>
+---
+ firmware/icss_uart/src/icss_ctrl_regs.h | 32 ++++----------------------------
+ 1 file changed, 4 insertions(+), 28 deletions(-)
+
+diff --git a/firmware/icss_uart/src/icss_ctrl_regs.h b/firmware/icss_uart/src/icss_ctrl_regs.h
+index ce640f5..99ec90d 100644
+--- a/firmware/icss_uart/src/icss_ctrl_regs.h
++++ b/firmware/icss_uart/src/icss_ctrl_regs.h
+@@ -39,32 +39,8 @@
+ .if !$isdefed("__icss_ctrl_regs_h")
+ __icss_ctrl_regs_h .set 1
+
+- .cdecls C,NOLIST
+-%{
+-#include "cslr_icss.h"
+-%}
+-
+- .if $defined("ICSS_REV1")
+-ICSS_PRU_CTRL_CONTROL .set (CSL_ICSSM_PRU_CTRL_CONTROL)
+-ICSS_PRU_CTRL_STATUS .set (CSL_ICSSM_PRU_CTRL_STATUS)
+-ICSS_PRU_CTRL_WAKEUP_EN .set (CSL_ICSSM_PRU_CTRL_WAKEUP_EN)
+-ICSS_PRU_CTRL_CYCLE .set (CSL_ICSSM_PRU_CTRL_CYCLE)
+-ICSS_PRU_CTRL_STALL .set (CSL_ICSSM_PRU_CTRL_STALL)
+-ICSS_PRU_CTRL_CTBIR0 .set (CSL_ICSSM_PRU_CTRL_CTBIR0)
+-ICSS_PRU_CTRL_CTBIR1 .set (CSL_ICSSM_PRU_CTRL_CTBIR1)
+-ICSS_PRU_CTRL_CTPPR0 .set (CSL_ICSSM_PRU_CTRL_CTPPR0)
+-ICSS_PRU_CTRL_CTPPR1 .set (CSL_ICSSM_PRU_CTRL_CTPPR1)
+- .endif ;ICSS_REV1
+-
+- .if $defined("ICSS_REV2")
+-ICSS_PRU_CTRL_CONTROL .set (CSL_ICSSPRUCTRL_CONTROL)
+-ICSS_PRU_CTRL_STATUS .set (CSL_ICSSPRUCTRL_STATUS)
+-ICSS_PRU_CTRL_WAKEUP_EN .set (CSL_ICSSPRUCTRL_WAKEUP_EN)
+-ICSS_PRU_CTRL_CYCLE .set (CSL_ICSSPRUCTRL_CYCLE)
+-ICSS_PRU_CTRL_STALL .set (CSL_ICSSPRUCTRL_STALL)
+-ICSS_PRU_CTRL_CTBIR0 .set (CSL_ICSSPRUCTRL_CTBIR0)
+-ICSS_PRU_CTRL_CTBIR1 .set (CSL_ICSSPRUCTRL_CTBIR1)
+-ICSS_PRU_CTRL_CTPPR0 .set (CSL_ICSSPRUCTRL_CTPPR0)
+-ICSS_PRU_CTRL_CTPPR1 .set (CSL_ICSSPRUCTRL_CTPPR1)
+- .endif ;ICSS_REV2
++ICSS_PRU_CTRL_CONTROL .set (0x0U)
++ICSS_PRU_CTRL_STATUS .set (0x4U)
++ICSS_PRU_CTRL_WAKEUP_EN .set (0x8U)
++ICSS_PRU_CTRL_CYCLE .set (0xcU)
+ .endif
+--
+2.7.4
+
diff --git a/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw_git.bb b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw_git.bb
new file mode 100644
index 00000000..1cb51f38
--- /dev/null
+++ b/bsp/meta-ti/recipes-bsp/pru/pru-swuart-fw_git.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Programmable Real-time Unit Software UART Firmware"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://COPYING.txt;beginline=1;endline=31;md5=94b6a199da1caf777f6756cb70aca4a7"
+
+require recipes-ti/includes/ti-paths.inc
+
+COMPATIBLE_MACHINE = "ti33x"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+
+inherit ti-pdk-fetch
+
+TI_PDK_COMP = "ti.drv.uart"
+
+PE = "1"
+
+SRC_URI_append = " \
+ file://0001-icss_uart-add-Makefile-for-building-firmware.patch \
+ file://0001-icss_uart-remove-dependency-on-PDK-CSL.patch \
+"
+
+DEPENDS = "ti-cgt-pru-native pru-icss"
+
+
+export PRU_CGT = "${TI_CGT_PRU_INSTALL_DIR}"
+export PRU_SSP = "${STAGING_DIR_TARGET}/usr"
+
+do_compile() {
+ oe_runmake -C firmware/icss_uart/src
+}
+
+do_install() {
+ install -d ${D}/lib/firmware/ti-pruss
+ install -m 0644 ${S}/firmware/icss_uart/src/gen/src.out ${D}/lib/firmware/ti-pruss/pru_swuart-fw.elf
+}
+
+FILES_${PN} = "/lib/firmware"
+
+INSANE_SKIP_${PN} = "arch"