#!/bin/sh /etc/rc.common # Copyright (C) 2012 OpenWrt.org # needs to start before the atm layer which starts at 50 START=48 EXTRA_COMMANDS="status lucistat" EXTRA_HELP=" status Get DSL status information lucistat Get status information if lua friendly format" SERVICE_DAEMONIZE=1 SERVICE_WRITE_PID=1 . /lib/functions/lantiq_dsl.sh XDSL_CTRL=vdsl_cpe_control # G.992.1 Annex A # G.992.2 Annex A # G.992.3 Annex A # G.992.4 Annex A # G.992.5 Annex A # G.993.2 Annex A/B/C xtse_adsl_a="04 01 04 01 00 01 00 00" # G.992.1 Annex B # G.992.3 Annex B # G.992.5 Annex B # G.993.2 Annex A/B/C xtse_adsl_b="10 00 10 00 00 04 00 00" # G.992.1 Annex B # G.992.3 Annex B # G.992.3 Annex J # G.992.5 Annex B # G.992.5 Annex J # G.993.2 Annex A/B/C xtse_adsl_j="10 00 10 40 00 04 01 00" xtse_vdsl="00 00 00 00 00 00 00 07" xdsl_scr() { val=`echo $2 | sed "s/ / 0x/g"` echo "[WaitForConfiguration]={ #G997XTUSEC_g997xtusecs 0x$val } [WaitForLinkActivate]={ } [WaitForRestart]={ } [Common]={ }" > /tmp/$1.scr } # A43 tone_adsl_a="0x142" tone_vdsl_a="0x142" # A43 + V43 tone_adsl_av="0x142" tone_vdsl_av="0x146" # B43 tone_adsl_b="0x1" tone_vdsl_b="0x1" # B43 + V43 tone_adsl_bv="0x1" tone_vdsl_bv="0x5" lowlevel_cfg() { echo "# VRX Low Level Configuration File # # Parameters must be separated by tabs or spaces. # Empty lines and comments will be ignored. # # nFilter # # NA = -1 # OFF = 0 # ISDN = 1 # POTS = 2 # POTS_2 = 3 # POTS_3 = 4 # # (dec) -1 # nHsToneGroupMode nHsToneGroup_A nHsToneGroup_V nHsToneGroup_AV # # NA = -1 NA = -1 see see # AUTO = 0 VDSL2_B43 = 0x0001 nHsToneGroup_A nHsToneGroup_A # MANUAL = 1 VDSL2_A43 = 0x0002 # VDSL2_V43 = 0x0004 # VDSL1_V43P = 0x0008 # VDSL1_V43I = 0x0010 # ADSL1_C43 = 0x0020 # ADSL2_J43 = 0x0040 # ADSL2_B43C = 0x0080 # ADSL2_A43C = 0x0100 # # (dec) (hex) (hex) (hex) 1 $1 $2 0x0 # nBaseAddr nIrqNum # # (hex) (dec) 0x1e116000 63 # nUtopiaPhyAdr nUtopiaBusWidth nPosPhyParity # default(16b) = 0 NA = -1 # 8-bit = 1 ODD = 0 # 16-bit = 2 # # # (hex) (dec) (dec) 0xFF 0 0 # bNtrEnable # # (dec) 0" > /tmp/lowlevel.cfg } start() { local annex local firmware local tone local tone_adsl local tone_vdsl local xtse_adsl local mode config_load network config_get tone dsl tone config_get annex dsl annex config_get firmware dsl firmware config_get xfer_mode dsl xfer_mode [ -z "${xfer_mode}" ] && xfer_mode=ptm case "${xfer_mode}" in atm) insmod ltq_atm_vr9 mode=1 ;; *) insmod ltq_ptm_vr9 mode=2 ;; esac eval "xtse_adsl=\"\${xtse_adsl_$annex}\"" [ -z "${xtse_adsl}" ] && xtse_adsl=$xtse_adsl_a eval "tone_adsl=\"\${tone_adsl_$tone}\"" [ -z "${tone_adsl}" ] && tone_adsl=$tone_adsl_av eval "tone_vdsl=\"\${tone_vdsl_$tone}\"" [ -z "${tone_vdsl}" ] && tone_vdsl=$tone_vdsl_av [ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin [ -f "${firmware}" ] || { echo failed to find $firmware return 1 } xdsl_scr adsl "${xtse_adsl}" xdsl_scr vdsl "${xtse_vdsl}" lowlevel_cfg "${tone_adsl}" "${tone_vdsl}" service_start /sbin/vdsl_cpe_control \ -i `echo $xtse_adsl | sed "s/ /_/g"` \ -n /sbin/dsl_notify.sh \ -f ${firmware} \ -a /tmp/adsl.scr \ -A /tmp/vdsl.scr \ -l /tmp/lowlevel.cfg \ -M ${mode} } stop() { DSL_NOTIFICATION_TYPE="DSL_INTERFACE_STATUS" \ DSL_INTERFACE_STATUS="DOWN" \ /sbin/dsl_notify.sh service_stop /sbin/vdsl_cpe_control }