source: src/router/services/sysinit/sysinit-alpine.c @ 31526

Last change on this file since 31526 was 31526, checked in by brainslayer, 4 weeks ago

fixes

File size: 12.0 KB
Line 
1/*
2 *
3 * Copyright (C) 2006 Sebastian Gottschall <gottschall@dd-wrt.com>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 *
19 * $Id:
20 */
21#include <stdio.h>
22#include <stdlib.h>
23#include <limits.h>
24#include <time.h>
25#include <unistd.h>
26#include <errno.h>
27#include <syslog.h>
28#include <signal.h>
29#include <string.h>
30#include <termios.h>
31#include <sys/klog.h>
32#include <sys/types.h>
33#include <sys/mount.h>
34#include <sys/reboot.h>
35#include <sys/stat.h>
36#include <sys/sysmacros.h>
37#include <sys/time.h>
38#include <sys/utsname.h>
39#include <sys/wait.h>
40#include <sys/ioctl.h>
41
42#include <bcmnvram.h>
43#include <shutils.h>
44#include <utils.h>
45#include <cymac.h>
46
47#include <arpa/inet.h>
48#include <sys/socket.h>
49#include <linux/if.h>
50#include <linux/sockios.h>
51#include <linux/mii.h>
52#include "devices/wireless.c"
53
54void start_sysinit(void)
55{
56        char buf[PATH_MAX];
57        struct stat tmp_stat;
58        time_t tm = 0;
59        FILE *fp = NULL;
60        if (!nvram_matchi("disable_watchdog", 1))
61                eval("watchdog");
62
63        /*
64         * Setup console
65         */
66
67        cprintf("sysinit() klogctl\n");
68        klogctl(8, NULL, nvram_geti("console_loglevel"));
69        cprintf("sysinit() get router\n");
70
71        char mtdpath[64];
72        int board = getRouterBrand();
73
74        eval("ifconfig", "eth0", "up");
75        eval("ifconfig", "eth1", "up");
76        eval("ifconfig", "eth2", "up");
77
78        int mtd = getMTD("ART");
79        char *maddr = NULL;
80        sprintf(mtdpath, "/dev/mtdblock/%d", mtd);
81        fp = fopen(mtdpath, "rb");
82        if (fp != NULL) {
83                fseek(fp, 0x1000, SEEK_SET);
84                char *smem = malloc(0x8000);
85                fread(smem, 0x8000, 1, fp);
86
87                fclose(fp);
88                eval("rm", "-f", "/tmp/board1.bin");
89                fp = fopen("/tmp/board1.bin", "wb");
90                fwrite(smem, 12064, 1, fp);
91                fclose(fp);
92                fp = fopen("/tmp/board2.bin", "wb");
93                fwrite(&smem[0x4000], 12064, 1, fp);
94                fclose(fp);
95                free(smem);
96
97        }
98
99        detect_wireless_devices();
100
101        int s;
102        struct ifreq ifr;
103        if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW))) {
104                char eabuf[32];
105
106                strncpy(ifr.ifr_name, "eth1", IFNAMSIZ);
107                ioctl(s, SIOCGIFHWADDR, &ifr);
108                char macaddr[32];
109
110                strcpy(macaddr, ether_etoa((char *)ifr.ifr_hwaddr.sa_data, eabuf));
111                nvram_set("et0macaddr", macaddr);
112                nvram_set("et0macaddr_safe", macaddr);
113
114                strncpy(ifr.ifr_name, "eth0", IFNAMSIZ);
115                ioctl(s, SIOCGIFHWADDR, &ifr);
116                strcpy(macaddr, ether_etoa((char *)ifr.ifr_hwaddr.sa_data, eabuf));
117
118                close(s);
119
120                eval("ifconfig", "eth2", "hw", "ether", macaddr);
121        }
122
123        insmod("mii_gpio");
124        insmod("gpio-pca953x");
125        insmod("qca-ssdk");
126
127        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x10", "0x002613a0", "4");
128        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0xe0", "0xc74164de", "4");
129        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0xe4", "0x000ea545", "4");
130        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x4", "0x07680000", "4");
131        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x8", "0x07600000", "4");
132        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0xc", "0x80", "4");
133        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x624", "0x007f7f7f", "4");
134        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x7c", "0x4e", "4");
135        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x90", "0x4e", "4");
136        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x94", "0x4e", "4");
137
138//      #CPU -->","(P0/5)QCA8337A(P4/6)--->(P0/5)QCA8337B
139//      #remove trunking on -0/5
140        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x700", "0xd000", "4");
141        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x704", "0x00ec0000", "4");
142
143        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x660", "0x0014017e", "4");
144        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x66c", "0x0014017d", "4");
145        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x678", "0x0014017b", "4");
146        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x684", "0x00140177", "4");
147        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x690", "0x0014016f", "4");
148        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x69c", "0x0014015f", "4");
149        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x6a8", "0x0014013f", "4");
150
151        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x420", "0x00010001", "4");
152//      #change","p5","vid","-->2
153        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x448", "0x00020001", "4");
154        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x428", "0x00010001", "4");
155        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x430", "0x00010001", "4");
156        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x440", "0x00010001", "4");
157        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x450", "0x00010001", "4");
158
159        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x438", "0x00020001", "4");
160
161        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x424", "0x00002040", "4");
162        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x44c", "0x00002040", "4");
163        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x42c", "0x00001040", "4");
164        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x434", "0x00001040", "4");
165        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x43c", "0x00001040", "4");
166        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x444", "0x00001040", "4");
167        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x454", "0x00001040", "4");
168
169//      #VLAN1-0t/1/2/4/5t/6,VLAN2-0t/3/5t
170//      #vlan1-0t/1/2/4/6 vlan2-3/5t
171        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x610", "0x0019dd50", "4");
172        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x614", "0x80010002", "4");
173        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x610", "0x001b77f0", "4");
174        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x614", "0x80020002", "4");
175
176//      #","do","not","learn","mac","address","on","internal","trunk","5
177        eval("ssdk_sh_id", "0", "fdb", "portLearn", "set", "5", "disable");
178        eval("ssdk_sh_id", "0", "fdb", "fdb", "entry", "flush", "0");
179
180//      # For rfc packet lose issue
181        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x94", "0x7e", "4");
182        eval("ssdk_sh_id", "1", "debug", "reg", "set", "0x7c", "0x7e", "4");
183
184        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x700", "0xd000", "4");
185        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x704", "0xec0000", "4");
186        eval("ssdk_sh_id", "1", "debug", "reg", "set", "0x620", "0x1000f0", "4");
187
188        eval("ssdk_sh_id", "0", "debug", "reg", "set", "0x808", "0x7f004e", "4");
189        eval("ssdk_sh_id", "1", "debug", "reg", "set", "0x808", "0x7f004e", "4");
190
191        eval("ssdk_sh_id", "0", "debug", "phy", "set", "0x3", "0xd", "0x7");
192        eval("ssdk_sh_id", "0", "debug", "phy", "set", "0x3", "0xe", "0x3c");
193        eval("ssdk_sh_id", "0", "debug", "phy", "set", "0x3", "0xd", "0x4007");
194        eval("ssdk_sh_id", "0", "debug", "phy", "set", "0x3", "0xe", "0x00");
195        eval("ssdk_sh_id", "0", "debug", "phy", "set", "0x3", "0x00", "0x1200");
196
197        eval("ssdk_sh_id", "1", "debug", "phy", "set", "0x4", "0xd", "0x7");
198        eval("ssdk_sh_id", "1", "debug", "phy", "set", "0x4", "0xe", "0x3c");
199        eval("ssdk_sh_id", "1", "debug", "phy", "set", "0x4", "0xd", "0x4007");
200        eval("ssdk_sh_id", "1", "debug", "phy", "set", "0x4", "0xe", "0x00");
201        eval("ssdk_sh_id", "1", "debug", "phy", "set", "0x4", "0x00", "0x1200");
202
203        eval("ethtool", "-K", "eth1", "gro", "on");
204        eval("ssdk_sh_id", "0", "0", "vlan", "entry", "flush");
205        eval("ssdk_sh_id", "1", "0", "vlan", "entry", "flush");
206        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "0", "1");
207        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "0", "check");
208        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "0", "tagged");
209        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "4", "1");
210        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "4", "check");
211        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "4", "tagged");
212        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "6", "1");
213        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "6", "check");
214        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "6", "tagged");
215        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "2", "1");
216        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "2", "check");
217        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "2", "untagged");
218        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "1", "1");
219        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "1", "check");
220        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "1", "untagged");
221        eval("ssdk_sh_id", "0", "vlan", "entry", "create", "1");
222        eval("ssdk_sh_id", "0", "vlan", "member", "add", "1", "0", "tagged");
223        eval("ssdk_sh_id", "0", "vlan", "member", "add", "1", "4", "tagged");
224        eval("ssdk_sh_id", "0", "vlan", "member", "add", "1", "6", "tagged");
225        eval("ssdk_sh_id", "0", "vlan", "member", "add", "1", "2", "untagged");
226        eval("ssdk_sh_id", "0", "vlan", "member", "add", "1", "1", "untagged");
227        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "0", "1");
228        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "0", "check");
229        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "0", "tagged");
230        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "5", "1");
231        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "5", "check");
232        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "5", "tagged");
233        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "4", "1");
234        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "4", "check");
235        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "4", "untagged");
236        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "3", "1");
237        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "3", "check");
238        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "3", "untagged");
239        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "2", "1");
240        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "2", "check");
241        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "2", "untagged");
242        eval("ssdk_sh_id", "1", "portvlan", "defaultCVid", "set", "1", "1");
243        eval("ssdk_sh_id", "1", "portvlan", "ingress", "set", "1", "check");
244        eval("ssdk_sh_id", "1", "portvlan", "egress", "set", "1", "untagged");
245        eval("ssdk_sh_id", "1", "vlan", "entry", "create", "1");
246        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "0", "tagged");
247        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "5", "tagged");
248        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "4", "untagged");
249        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "3", "untagged");
250        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "2", "untagged");
251        eval("ssdk_sh_id", "1", "vlan", "member", "add", "1", "1", "untagged");
252        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "5", "2");
253        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "5", "check");
254        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "5", "tagged");
255        eval("ssdk_sh_id", "0", "portvlan", "defaultCVid", "set", "3", "2");
256        eval("ssdk_sh_id", "0", "portvlan", "ingress", "set", "3", "check");
257        eval("ssdk_sh_id", "0", "portvlan", "egress", "set", "3", "untagged");
258        eval("ssdk_sh_id", "0", "vlan", "entry", "create", "2");
259        eval("ssdk_sh_id", "0", "vlan", "member", "add", "2", "5", "tagged");
260        eval("ssdk_sh_id", "0", "vlan", "member", "add", "2", "3", "untagged");
261        eval("ssdk_sh_id", "1", "vlan", "entry", "create", "2");
262
263        eval("/sbin/vconfig", "set_name_type", "VLAN_PLUS_VID_NO_PAD");
264        eval("/sbin/vconfig", "add", "eth1", "1");
265        eval("/sbin/vconfig", "add", "eth2", "2");
266
267        set_smp_affinity(258, 3);
268        set_smp_affinity(259, 2);
269
270        switch (board) {
271        case ROUTER_NETGEAR_R9000:
272                set_gpio(29, 1);        //WIFI button led
273                set_gpio(30, 1);        //10G led
274                set_gpio(504, 1);
275                break;
276        default:
277                break;
278        }
279
280        /*
281           ","*","Set","a","sane","date","
282           "," */
283        stime(&tm);
284        nvram_set("wl0_ifname", "ath0");
285        nvram_set("wl1_ifname", "ath1");
286}
287
288int check_cfe_nv(void)
289{
290        return 0;
291}
292
293int check_pmon_nv(void)
294{
295        return 0;
296}
297
298void start_overclocking(void)
299{
300}
301
302void enable_dtag_vlan(int enable)
303{
304
305}
Note: See TracBrowser for help on using the repository browser.