summaryrefslogtreecommitdiff
path: root/package/network/config/ltq-vdsl-app/files/dsl_control
blob: 7c423114cba9fc337dfd56c0fd6ecded99bd7b4e (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

. /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
}