From 08714738d2c8d7710f8fd2b7deac795f49e7d7c2 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 30 Apr 2018 22:42:39 +1000 Subject: layerscape: add Traverse LS1043-S support The Traverse LS1043-S board is a router board based on NXP/Freescale's LS1043 SoC, with 4x1GBase-T, 1 SFP and 1 SFP+, as well as miniPCIe and M.2 LTE. Unlike the Layerscape reference boards, the LS1043-S board has NAND flash and uses the mainline U-Boot. This patch implements support for the LS1043-S board, as well as the earlier LS1043-V board. It is our intention that all boards in this family (LS1043-S and later, Five64) will boot the same binary. Not included in this patchset are the hwmon drivers not in the kernel (emc1704,pac1934) or the bootloader. Signed-off-by: Mathew McBride --- .../linux/layerscape/base-files/etc/board.d/01_led | 25 ++++++ .../layerscape/base-files/etc/board.d/02_network | 21 +++++ .../base-files/etc/board.d/03_gpio_switches | 28 +++++++ .../lib/preinit/05_layerscape_reorder_eth | 28 +++++++ .../layerscape/base-files/lib/upgrade/platform.sh | 94 ++++++++++++++++++++++ 5 files changed, 196 insertions(+) create mode 100755 target/linux/layerscape/base-files/etc/board.d/01_led create mode 100755 target/linux/layerscape/base-files/etc/board.d/02_network create mode 100755 target/linux/layerscape/base-files/etc/board.d/03_gpio_switches create mode 100644 target/linux/layerscape/base-files/lib/preinit/05_layerscape_reorder_eth create mode 100644 target/linux/layerscape/base-files/lib/upgrade/platform.sh (limited to 'target/linux/layerscape/base-files') diff --git a/target/linux/layerscape/base-files/etc/board.d/01_led b/target/linux/layerscape/base-files/etc/board.d/01_led new file mode 100755 index 0000000000..b9b62a07e0 --- /dev/null +++ b/target/linux/layerscape/base-files/etc/board.d/01_led @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright (C) 2015 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh + +board_config_update + +board=$(board_name) + +case "$board" in +traverse,ls1043v) + ucidef_set_led_netdev "wan" "WAN LED" "ls1043v:yellow:wan" "eth4" + ;; +traverse,ls1043s) + ucidef_set_led_netdev "wan" "WAN LED" "ls1043s:yellow:wan" "eth4" + ucidef_set_led_netdev "xgact" "10G Activity" "ls1043s:yellow:10gact" "eth6" + ucidef_set_led_netdev "xglink" "10G Link" "ls1043s:green:10glink" "eth6" + ;; +esac + +board_config_flush + +exit 0 diff --git a/target/linux/layerscape/base-files/etc/board.d/02_network b/target/linux/layerscape/base-files/etc/board.d/02_network new file mode 100755 index 0000000000..c50b4a346a --- /dev/null +++ b/target/linux/layerscape/base-files/etc/board.d/02_network @@ -0,0 +1,21 @@ +#!/bin/sh + +. /lib/functions/system.sh +. /lib/functions/uci-defaults.sh + +board_config_update + +case "$(board_name)" in + traverse,ls1043v) + ucidef_set_interface_lan "eth0 eth1 eth2 eth3" + ucidef_set_interface_wan "eth4" + ;; + traverse,ls1043s) + ucidef_set_interface_lan "eth0 eth1 eth2 eth3 eth6" + ucidef_set_interface_wan "eth4" + ;; +esac + +board_config_flush + +exit 0 diff --git a/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches b/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches new file mode 100755 index 0000000000..7f9da08668 --- /dev/null +++ b/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Copyright (C) 2015 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh + +board_config_update + +board=$(board_name) + +case "$board" in +traverse,ls1043v) + ucidef_add_gpio_switch "lte_reset" "LTE Reset" "377" + ucidef_add_gpio_switch "lte_disable" "LTE Airplane mode" "378" + ;; +traverse,ls1043s) + ucidef_add_gpio_switch "tensfp_txdisable" "SFP+ TX Disable" "378" + ucidef_add_gpio_switch "gigsfp_txdisable" "SFP TX Disable" "381" + ucidef_add_gpio_switch "lte_reset" "LTE Reset" "502" + ucidef_add_gpio_switch "lte_disable" "LTE Airplane Mode" "394" + ucidef_add_gpio_switch "lte_power" "LTE Power" "395" + ;; +esac + +board_config_flush + +exit 0 diff --git a/target/linux/layerscape/base-files/lib/preinit/05_layerscape_reorder_eth b/target/linux/layerscape/base-files/lib/preinit/05_layerscape_reorder_eth new file mode 100644 index 0000000000..c4feec42bc --- /dev/null +++ b/target/linux/layerscape/base-files/lib/preinit/05_layerscape_reorder_eth @@ -0,0 +1,28 @@ +#!/bin/sh + +reorder_layerscape_interfaces() { + if [ ! -f /tmp/sysinfo/board_name ]; then + echo "No board name found, not doing reorder_layerscape_interfaces" + return 0 + fi + + board=$(cat /tmp/sysinfo/board_name) + case "$board" in + "traverse,ls1043v" | \ + "traverse,ls1043s") + + # Reorder ethernet interfaces to match the physical order + ip link set eth2 name fm1-mac3 + ip link set eth4 name eth2 + ip link set eth3 name fm1-mac4 + ip link set eth5 name eth3 + ip link set fm1-mac3 name eth4 + ip link set fm1-mac4 name eth5 + ;; + default) + echo "Unknown board $board" + ;; + esac +} + +boot_hook_add preinit_main reorder_layerscape_interfaces diff --git a/target/linux/layerscape/base-files/lib/upgrade/platform.sh b/target/linux/layerscape/base-files/lib/upgrade/platform.sh new file mode 100644 index 0000000000..9cc960a5fc --- /dev/null +++ b/target/linux/layerscape/base-files/lib/upgrade/platform.sh @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Copyright 2015-2018 Traverse Technologies +# +platform_do_upgrade_traverse_nandubi() { + bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}') + newbootsys=2 + if [ "$bootsys" -eq "2" ]; then + newbootsys=1 + fi + mkdir -p /tmp/image + cd /tmp/image + get_image "$1" > image.tar + ls -la image.tar + files=$(tar -tf image.tar) + echo "Files in image:" + echo $files + for f in $files + do + part_name=$(echo $f | awk -F '/' '{{print $2}}') + if [ -z "$part_name" ] || [ "$part_name" = "CONTROL" ]; then + continue + fi + + [ "$part_name" = "root" ] && part_name="rootfs" + + volume=$part_name + if [ "$part_name" = "kernel" ] || [ "$part_name" = "rootfs" ]; then + volume="${part_name}${newbootsys}" + fi + volume_id=$(ubinfo -d 0 --name $volume | awk '/Volume ID/ {print $3}') + file_size=$(tar -tvf image.tar $f | awk '{{print $3}}') + echo "$f size $file_size" + tar -xOf image.tar $f | ubiupdatevol -s $file_size /dev/ubi0_$volume_id - + + echo "$volume upgraded" + done + fw_setenv bootsys $newbootsys + echo "Upgrade complete" +} +platform_copy_config() { + bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}') + rootvol=rootfs$bootsys + volume_id=$(ubinfo -d 0 --name $rootvol | awk '/Volume ID/ {print $3}') + mkdir -p /mnt/oldsys + mount -t ubifs -o rw,noatime /dev/ubi0_$volume_id /mnt/oldsys + cp -af "$CONF_TAR" /mnt/oldsys + umount /mnt/oldsys +} +platform_check_image() { + local board=$(board_name) + + case "$board" in + traverse,ls1043v | \ + traverse,ls1043s | \ + traverse,five64) + local tar_file="$1" + local kernel_length=$( (tar xf $tar_file sysupgrade-traverse-five64/kernel -O | wc -c) 2> /dev/null) + local rootfs_length=$( (tar xf $tar_file sysupgrade-traverse-five64/root -O | wc -c) 2> /dev/null) + [ "$kernel_length" -eq 0 -o "$rootfs_length" -eq 0 ] && { + echo "The upgrade image is corrupt." + return 1 + } + return 0 + ;; + *) + echo "Sysupgrade is not currently supported on $board" + ;; + esac + + return 1 +} +platform_do_upgrade() { + local board=$(board_name) + + case "$board" in + traverse,ls1043v | \ + traverse,ls1043s | \ + traverse,five64) + platform_do_upgrade_traverse_nandubi "$ARGV" + ;; + *) + echo "Sysupgrade is not currently supported on $board" + ;; + esac +} +platform_pre_upgrade() { + # Force the creation of fw_printenv.lock + mkdir -p /var/lock + touch /var/lock/fw_printenv.lock + + export RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo ${RAMFS_COPY_BIN}" + export RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock ${RAMFS_COPY_DATA}" +} -- cgit v1.2.3