blob: 4bfea97031fccce7efbd222a833927363ee80e63 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
#!/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
[ -f /lib/functions/lantiq_dsl.sh ] && . /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
}
|