ltq-vdsl-app: load the vrx200 firmware or patch it
authorFelix Fietkau <nbd@openwrt.org>
Mon, 7 Mar 2016 11:03:13 +0000 (11:03 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 7 Mar 2016 11:03:13 +0000 (11:03 +0000)
This checks for the VRX firmware provided in the OpenWrt package.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 48940

package/network/config/ltq-vdsl-app/Makefile
package/network/config/ltq-vdsl-app/files/dsl_control

index bfacccd..ffaf942 100644 (file)
@@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-app
 PKG_VERSION:=4.16.6.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_BASE_NAME:=dsl_cpe_control
 PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
index fc100cf..c4c3c0d 100644 (file)
@@ -153,6 +153,48 @@ start_service() {
                ;;
        esac
 
+       if [ -z "${firmware}" ]; then
+               # search for the firmware provided by dsl-vrx200-firmware-xdsl-*
+               if grep -qE "system type.*: (VR9|xRX200)" /proc/cpuinfo; then
+                       case "${annex}" in
+                       a|l|m)
+                               if [ -f "/lib/firmware/lantiq-vrx200-a.bin" ]; then
+                                       firmware="/lib/firmware/lantiq-vrx200-a.bin"
+                               elif [ -f "/tmp/lantiq-vrx200-a.bin" ]; then
+                                       firmware="/tmp/lantiq-vrx200-a.bin"
+                               elif [ -f "/lib/firmware/lantiq-vrx200-b.bin" ] && [ -f "/lib/firmware/lantiq-vrx200-b-to-a.bspatch" ]; then
+                                       bspatch /lib/firmware/lantiq-vrx200-b.bin \
+                                               /tmp/lantiq-vrx200-a.bin \
+                                               /lib/firmware/lantiq-vrx200-b-to-a.bspatch
+                                       firmware="/tmp/lantiq-vrx200-a.bin"
+                               else
+                                       echo "firmware for annex a not found"
+                                       return 1
+                               fi
+                               ;;
+                       b|j)
+                               if [ -f "/lib/firmware/lantiq-vrx200-b.bin" ]; then
+                                       firmware="/lib/firmware/lantiq-vrx200-b.bin"
+                               elif [ -f "/tmp/lantiq-vrx200-b.bin" ]; then
+                                       firmware="/tmp/lantiq-vrx200-b.bin"
+                               elif [ -f "/lib/firmware/lantiq-vrx200-a.bin" ] && [ -f "/lib/firmware/lantiq-vrx200-a-to-b.bspatch" ]; then
+                                       bspatch /lib/firmware/lantiq-vrx200-a.bin \
+                                               /tmp/lantiq-vrx200-b.bin \
+                                               /lib/firmware/lantiq-vrx200-a-to-b.bspatch
+                                       firmware="/tmp/lantiq-vrx200-b.bin"
+                               else
+                                       echo "firmware for annex b not found"
+                                       return 1
+                               fi
+                               ;;
+                       *)
+                               echo "annex type not supported use a or b"
+                               return 1
+                               ;;
+                       esac
+               fi
+       fi
+
        [ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
        [ -f "${firmware}" ] || {
                echo failed to find $firmware