diff options
Diffstat (limited to 'package/network/config/ltq-vdsl-app/files/dsl_control')
-rw-r--r-- | package/network/config/ltq-vdsl-app/files/dsl_control | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control index fc100cfb0e..c4c3c0d601 100644 --- a/package/network/config/ltq-vdsl-app/files/dsl_control +++ b/package/network/config/ltq-vdsl-app/files/dsl_control @@ -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 |