diff options
| -rw-r--r-- | package/ifxmips_adsl/Makefile | 45 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/Makefile | 10 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/cmvread.c | 216 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/cmvwrite.c | 221 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/danube_autoboot_daemon.c | 1011 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/danube_mei_debug.c | 84 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/danube_show_firmware_date.c | 75 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/model_config.sh | 14 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/sysconfig.sh | 90 | ||||
| -rw-r--r-- | package/ifxmips_adsl/src/translate.c | 848 | 
10 files changed, 0 insertions, 2614 deletions
| diff --git a/package/ifxmips_adsl/Makefile b/package/ifxmips_adsl/Makefile deleted file mode 100644 index 7445b9ec6..000000000 --- a/package/ifxmips_adsl/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (C) 2007 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# -# $Id$ - -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk - -PKG_NAME:=ifxmips_adsl -PKG_RELEASE:=1 -PKG_VERSION:=1.0 - -include $(INCLUDE_DIR)/package.mk - -define Package/ifxmips_adsl -  SECTION:=net -  CATEGORY:=Network -  DEPENDS:=@TARGET_ifxmips -  TITLE:=ifxmips adsl firmware loader -endef - -define Package/ifxmips_adsl/description - ifxmips adsl firmware loader -endef - -define Build/Prepare -	mkdir -p $(PKG_BUILD_DIR) -	$(CP) ./src/* $(PKG_BUILD_DIR)/ -endef - -define Build/Compile -	$(MAKE) -C $(PKG_BUILD_DIR) \ -		$(TARGET_CONFIGURE_OPTS) \ -		CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include/" -endef - -define Package/ifxmips_adsl/install -	$(INSTALL_DIR) $(1)/usr/bin -	$(INSTALL_BIN) $(PKG_BUILD_DIR)/{translate,danube_autoboot_daemon,danube_mei_debug,danube_show_firmware_date,cmvread,cmvwrite} $(1)/usr/bin/ -endef - -$(eval $(call BuildPackage,ifxmips_adsl)) diff --git a/package/ifxmips_adsl/src/Makefile b/package/ifxmips_adsl/src/Makefile deleted file mode 100644 index 2f69a425c..000000000 --- a/package/ifxmips_adsl/src/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -CFLAGS?=
 -
 -TARGET = translate danube_autoboot_daemon danube_mei_debug danube_show_firmware_date cmvread cmvwrite
 -
 -all: $(TARGET)
 -
 -.PHONY: clean 
 -clean:
 -	-rm -f $(DEPS) $(OBJS) $(TARGET)
 -
 diff --git a/package/ifxmips_adsl/src/cmvread.c b/package/ifxmips_adsl/src/cmvread.c deleted file mode 100644 index 7e5eecd0f..000000000 --- a/package/ifxmips_adsl/src/cmvread.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - *   This program is free software; you can redistribute it and/or modify - *   it under the terms of the GNU General Public License as published by - *   the Free Software Foundation; either version 2 of the License, or - *   (at your option) any later version. - * - *   This program is distributed in the hope that it will be useful, - *   but WITHOUT ANY WARRANTY; without even the implied warranty of - *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *   GNU General Public License for more details. - * - *   You should have received a copy of the GNU General Public License - *   along with this program; if not, write to the Free Software - *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ -//----------------------------------------------------------------------- -//Description:	 -// read the CMV register under Linux for Amazon -//----------------------------------------------------------------------- -//Author:	Joe.Lin@infineon.com -//Created:	31-December-2004 -//----------------------------------------------------------------------- -/* History - * Last changed on: - *  000002:tc.chen 2005/06/10 add get_adsl_rate and ifx_makeCMV api - * Last changed by:  - * -*/ - -#define _IFXMIPS_ADSL_APP -//#define DEBUG -#define u32 unsigned int -#define u16 unsigned short -#define u8  unsigned char -#define IFXMIPS_MEI_DEV  "/dev/ifxmips/mei" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <time.h> -#include <getopt.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/mman.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> -#include <asm/ifxmips/ifxmips_mei.h> - -#ifdef IFX_MULTILIB_UTIL  -#define main	cmvread_main -#define	display_version	cmvread_display_version -#endif - -/*============================definitions======================*/ -#define OPTN 5 -#define CNFG 8 -#define CNTL 1 -#define STAT 2 -#define RATE 6 -#define PLAM 7 -#define INFO 3 -#define TEST 4 - -typedef unsigned short UINT16; -typedef unsigned long UINT32; - - - -/*=============================================================*/ - - -/*=============================global variables================*/ -int c=0; -int input_flag=0; -int digit_optind=0; -FILE* script_file; -void (*func)()=NULL; -int fd; - -UINT16 var16[8]; -UINT32 var32[8]; -UINT16 Message[16]; - -/*=============================================================*/ - -int ifx_makeCMV(unsigned char opcode, unsigned char group, unsigned short address, unsigned short index, int size, unsigned short * data, unsigned short *Message, int msg_len) -{ -        if (msg_len < 16*2) -                return -1; -        memset(Message, 0, 16*2); -        Message[0]= (opcode<<4) + (size&0xf); -        if(opcode == H2D_DEBUG_WRITE_DM) -                Message[1]= (group&0x7f); -        else -                Message[1]= (((index==0)?0:1)<<7) + (group&0x7f); -        Message[2]= address; -        Message[3]= index; -        if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM)) -                memcpy(Message+4, data, size*2); - -        return 0; -} - -void display_version() -{ -   printf("adsl cmv reader version1.0\nby Joe Lin \nJoe.Lin@infineon.com\n"); -   return; -} - - -void cmvreader_help() -{ -    printf("Usage:cmvread [options] [group name][address][index][size] ...\n"); -    printf("options:\n"); -    printf("	-h --help            Display help information\n");        -    printf("	-v --version         Display version information\n"); -    printf("group name:			--group name of CMV to read\n"); -    printf("	OPTN --Read CMV Group 5 \n"); -    printf("	CNFG --Read CMV Group 8 \n"); -    printf("	CNTL --Read CMV Group 1 \n");  -    printf("	STAT --Read CMV Group 2 \n");   -    printf("	RATE --Read CMV Group 6 \n");   -    printf("	PLAM --Read CMV Group 7 \n");   -    printf("	INFO --Read CMV Group 3 \n");   -    printf("	TEST --REad CMV Group 4 \n");   -    printf("address --address value of CMV to read\n");  -    printf("index --index value of CMV to read\n");      -    printf("size  --number of words(16bits) to read \n");         -    -     -  -    return; -} - -int main (int argc, char** argv) { -      -	UINT16 Message[16]; //000002:tc.chen -  	char *endptr;  -        int group=0,address,index,size; - - 	if (argc < 2) -	{ -	  cmvreader_help(); -	  return; -	} -  - 	if (strstr(argv[1], "-h") != NULL){ - 	  cmvreader_help(); -	  return; - 	} -  -  	if (strstr(argv[1], "-v") != NULL){ - 	  display_version(); -	  return; - 	} -  -        fd=open(IFXMIPS_MEI_DEV, O_RDWR); -        if(fd<0){ -                printf("\n\n autoboot open device fail\n"); -                return -1; -        } -         -	if((strcmp(argv[1],"optn")==0)||(strcmp(argv[1],"OPTN")==0)) -	group=OPTN; -	else if((strcmp(argv[1],"cnfg")==0)||(strcmp(argv[1],"CNFG")==0)) -	group=CNFG; -	else if((strcmp(argv[1],"cntl")==0)||(strcmp(argv[1],"CNTL")==0)) -	group=CNTL; -	else if((strcmp(argv[1],"stat")==0)||(strcmp(argv[1],"STAT")==0)) -	group=STAT; -	else if((strcmp(argv[1],"rate")==0)||(strcmp(argv[1],"RATE")==0)) -	group=RATE; -	else if((strcmp(argv[1],"plam")==0)||(strcmp(argv[1],"PLAM")==0)) -	group=PLAM; -	else if((strcmp(argv[1],"info")==0)||(strcmp(argv[1],"INFO")==0)) -	group=INFO; -	else if((strcmp(argv[1],"test")==0)||(strcmp(argv[1],"TEST")==0)) -	group=TEST; -	else  -	 { -	   printf("wrong group type!\nplease slect group:OPTN CNFG CNTL STAT RATE PLAM INFO TEST \n"); -                close(fd); -                exit(0); -	 } -	  -	address = strtoul(argv[2], &endptr, 0); -	index = strtoul(argv[3], &endptr, 0); -	size = strtoul(argv[4], &endptr, 0); -        //makeCMV(H2D_CMV_READ, group, address, index, size, NULL); -        ifx_makeCMV(H2D_CMV_READ, group, address, index, size, NULL,Message,sizeof(Message)); -        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                printf("cr read %d %d %d fail",group,address,index); -                close(fd); -                exit(0); -        } - -	int i; -	for (i=0;i<size;i++) printf ("0x%X\n",Message[i+4]); -	 -         -//	return Message[4]; -         -         -         -    -	close(fd); - 	return 0;	      -} - - - diff --git a/package/ifxmips_adsl/src/cmvwrite.c b/package/ifxmips_adsl/src/cmvwrite.c deleted file mode 100644 index 4d68cc6b1..000000000 --- a/package/ifxmips_adsl/src/cmvwrite.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - *   This program is free software; you can redistribute it and/or modify - *   it under the terms of the GNU General Public License as published by - *   the Free Software Foundation; either version 2 of the License, or - *   (at your option) any later version. - * - *   This program is distributed in the hope that it will be useful, - *   but WITHOUT ANY WARRANTY; without even the implied warranty of - *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *   GNU General Public License for more details. - * - *   You should have received a copy of the GNU General Public License - *   along with this program; if not, write to the Free Software - *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ -//----------------------------------------------------------------------- -//Description:	 -// read the CMV register under Linux for Amazon -//----------------------------------------------------------------------- -//Author:	Joe.Lin@infineon.com -//Created:	31-December-2004 -//----------------------------------------------------------------------- -/* History - * Last changed on: - *  507051:linmars 2005/07/5 fix makeCMV problem - * Last changed by:  - * -*/ - -#define _IFXMIPS_ADSL_APP -//#define DEBUG -#define u32 unsigned int -#define u16 unsigned short -#define u8  unsigned char -#define IFXMIPS_MEI_DEV  "/dev/ifxmips/mei" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <time.h> -#include <getopt.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/mman.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> -#include <asm/ifxmips/ifxmips_mei.h> - -#ifdef IFX_MULTILIB_UTIL -#define	main	cmvwrite_main -#define	display_version	cmvwrite_display_version -#endif - -/*============================definitions======================*/ -#define OPTN 5 -#define CNFG 8 -#define CNTL 1 -#define STAT 2 -#define RATE 6 -#define PLAM 7 -#define INFO 3 -#define TEST 4 - -typedef unsigned short UINT16; -typedef unsigned long UINT32; - -/*=============================================================*/ - - -/*=============================global variables================*/ -#ifdef IFX_MULTILIB_UTIL -extern int c; -extern int input_flag; -extern int digit_optind; -extern FILE* script_file; -extern void (*func)(); -extern int fd; - -UINT16 var16[8]; -UINT32 var32[8]; -UINT16 Message[16]; -#else -int c=0; -int input_flag=0; -int digit_optind=0; -FILE* script_file; -void (*func)()=NULL; -int fd; - -UINT16 var16[8]; -UINT32 var32[8]; -UINT16 Message[16]; -#endif -/*=============================================================*/ -/*165001:henryhsu 2005/9/7 Modify some error in cmvwrite utility*/ -int ifx_makeCMV(unsigned char opcode, unsigned char group, unsigned short address, unsigned short index, int size, unsigned short * data, unsigned short *Message, int msg_len) -{ -        if (msg_len < 16*2) -                return -1; -        memset(Message, 0, 16*2); -        Message[0]= (opcode<<4) + (size&0xf); -        if(opcode == H2D_DEBUG_WRITE_DM) -                Message[1]= (group&0x7f); -        else -                Message[1]= (((index==0)?0:1)<<7) + (group&0x7f); -        Message[2]= address; -        Message[3]= index; -        if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM)) -                memcpy(Message+4, data, size*2); - -        return 0; -} - - -void display_version() -{ -   printf("adsl cmv write version1.0\nby Joe Lin \nJoe.Lin@infineon.com\n"); -   return; -} - -//165001:henryhsu 2005/9/7 No need to check this any more -//#ifndef IFX_MULTILIB_UTIL - -//void cmvreader_help() -void cmvwrite_help() -{ -    printf("Usage:cmvwrite [options] [group name][address][index][data] ...\n"); -    printf("options:\n"); -    printf("	-h --help            Display help information\n");        -    printf("	-v --version         Display version information\n"); -    printf("group name:			--group name of CMV to read\n"); -    printf("	OPTN -- CMV Group 5 \n"); -    printf("	CNFG -- CMV Group 8 \n"); -    printf("	CNTL -- CMV Group 1 \n");  -    printf("	STAT -- CMV Group 2 \n");   -    printf("	RATE -- CMV Group 6 \n");   -    printf("	PLAM -- CMV Group 7 \n");   -    printf("	INFO -- CMV Group 3 \n");   -    printf("	TEST -- CMV Group 4 \n");   -    printf("address --address value of CMV to write\n");  -    printf("index --index value of CMV to write\n");      -    printf("data  --data to write in Hex.\n");         -  -    return; -} - -int main (int argc, char** argv) { -      -  	char *endptr;  -  	unsigned short value; - 	if (argc < 2) -	{ -	  cmvwrite_help(); -	  return; -	} -  - 	if (strstr(argv[1], "-h") != NULL){ - 	  cmvwrite_help(); -	  return; - 	} -  -  	if (strstr(argv[1], "-v") != NULL){ - 	  display_version(); -	  return; - 	} -  -  -        fd=open(IFXMIPS_MEI_DEV, O_RDWR); -        if(fd<0){ -                printf("\n\n autoboot open device fail\n"); -                return -1; -        } -         -         -         -        int group=0,address,index,size; -	if((strcmp(argv[1],"optn")==0)||(strcmp(argv[1],"OPTN")==0)) -	group=OPTN; -	else if((strcmp(argv[1],"cnfg")==0)||(strcmp(argv[1],"CNFG")==0)) -	group=CNFG; -	else if((strcmp(argv[1],"cntl")==0)||(strcmp(argv[1],"CNTL")==0)) -	group=CNTL; -	else if((strcmp(argv[1],"stat")==0)||(strcmp(argv[1],"STAT")==0)) -	group=STAT; -	else if((strcmp(argv[1],"rate")==0)||(strcmp(argv[1],"RATE")==0)) -	group=RATE; -	else if((strcmp(argv[1],"plam")==0)||(strcmp(argv[1],"PLAM")==0)) -	group=PLAM; -	else if((strcmp(argv[1],"info")==0)||(strcmp(argv[1],"INFO")==0)) -	group=INFO; -	else if((strcmp(argv[1],"test")==0)||(strcmp(argv[1],"TEST")==0)) -	group=TEST; -	else  -	 { -	   printf("wrong group type!\nplease slect group:OPTN CNFG CNTL STAT RATE PLAM INFO TEST \n"); -                close(fd); -                exit(0); -	 } -	  -	address = strtoul(argv[2], &endptr, 10); -	index = strtoul(argv[3], &endptr, 10); -  -	value = strtoul(argv[4],NULL,0); -        ifx_makeCMV(H2D_CMV_WRITE, group, address, index, 1, &value, Message, sizeof(Message)); -        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                printf("cr read %d %d %d fail",group,address,index); -                close(fd); -                exit(0); -        } - -	printf ("write %s %d %d 0x%X\n",argv[1],address,index,value); -	 -	close(fd); - 	return 0;	      -} - diff --git a/package/ifxmips_adsl/src/danube_autoboot_daemon.c b/package/ifxmips_adsl/src/danube_autoboot_daemon.c deleted file mode 100644 index 9563b5bbc..000000000 --- a/package/ifxmips_adsl/src/danube_autoboot_daemon.c +++ /dev/null @@ -1,1011 +0,0 @@ -/**************************************************************************** - -                            Copyright (c) 2005 -                         Infineon Technologies AG -               St. Martin Strasse 53; 81669 Munich, Germany - -  Any use of this Software is subject to the conclusion of a respective -  License Agreement. Without such a License Agreement no rights to the -  Software are granted. - -*****************************************************************************/ -/**  -History: -1.02: -09/08/2006 Removed DEMO_ONLY define -1.03: -31/08/2006 Add IOCTL AUTOBOOT_ENABLE_SET -1.04: -14/09/2006 Add min snr margin check for in Annex B DMT mode -1.05: -18/09/2006 Add G.lite support -1.06: 611101:tc.chen -10/11/2006 change quiet mode and showtime lock implement mechanism (old: using cmv, new: using ioctl to kernel mode, and the mei driver keep the value) per the mail from Oliver Salomon on 08/11/2006 -1.07:  -13/11/2006 TC Chen: Fix minimal snr issue for ADSL Annex B. -1.08: -08/12/2006 TC Chen: Fix loop diagnostic warning issue -1.09: -27/12/2006 TC Chen: Fix the issue that "The autoboot daemon will call "./translate" which is a problem when started through scripts." -1.10" -1/09/2007 Bing Tao: Fix AnnexJ issue -*/ - -#define _IFXMIPS_ADSL_APP -//#define IFXMIPS_PORT_RTEMS 1 -#define __LINUX__ - -#if defined(IFXMIPS_PORT_RTEMS) -#include "ifxmips_mei_rtems.h" -#define KERNEL_SPACE_APPLICATION 1 -#endif - -#define u32	unsigned int -  -#define VERSION_MAJOR	1 -#define VERSION_MINOR	10 -  -#if defined(__LINUX__) -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <fcntl.h> -#include <errno.h> - -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> -#include <sys/types.h> -#include <string.h> -#include <time.h> - -#define IFXMIPS_MEI_DEV 	"/dev/ifxmips/mei" -#endif - -#if defined(KERNEL_SPACE_APPLICATION) -#include "ifxmips_adsl_fw.h" -#endif - -#define IFXMIPS_GPIO_DEVICE	"/dev/ifxmips_port" -#undef DEMO_ONLY //todo: remove for normal release - -#define SEGMENT_SIZE (64*1024) - -#define MODE_ALL	0 -#define MODE_992_1A	1 -#define MODE_992_1B	2 -#define MODE_992_3A	3 -#define MODE_992_3B	4 -#define MODE_992_5A	5 -#define MODE_992_5B	6 - -#define MODE_992_3I 7 -#define MODE_992_3J 8 -#define MODE_992_3M 9 -#define MODE_992_5I 10 -#define MODE_992_5J 11 -#define MODE_992_5M 12 -#define MODE_M_ALL 13  -#define MODE_B_ALL 14  -#define MODE_M_B_ALL 15 - - -#if defined(KERNEL_SPACE_APPLICATION) -extern int mei_ioctl(int ino, int * fil, unsigned int command, unsigned long lon); -#define ioctl(fd,cmd,arg) mei_ioctl(1,0,cmd,(unsigned long)arg) -extern void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data,u16 *CMVMSG); -#endif - -static u16 Message[16]__attribute__ ((aligned(4)));  - -#if !defined(KERNEL_SPACE_APPLICATION) -void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data, u16 *CMVMSG); -void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data, u16 *CMVMSG) -{ -	memset(CMVMSG, 0, 16*2); -	CMVMSG[0]= (opcode<<4) + (size&0xf); -	if(opcode == H2D_DEBUG_WRITE_DM) -		CMVMSG[1]= (group&0x7f); -	else -		CMVMSG[1]= (((index==0)?0:1)<<7) + (group&0x7f); -	CMVMSG[2]= address; -	CMVMSG[3]= index; -	if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM)) -		memcpy(CMVMSG+4, data, size*2); -	return; -} -#endif - -void print_usage(char *program_name) -{ -	printf("Usage: %s ADSL_Firmware ADSL_MODE \n",program_name); -	printf("\tADSL_Firmeare: Specify the ADSL firmware file to use.\n"); -	printf("\tADSL_MODE:Specify the ADSL mode to use for training.\n"); -	printf("\t\tSupported Mode: all,1a,3a,5a,1b,3b,5b,3i,3j,3m,5i,5j,5m,m_all,b_all,mb_all\n"); - -} - -#if defined(KERNEL_SPACE_APPLICATION) - -int Download_Firmware(char *filename, int fd_mei) -{ -	extern ssize_t mei_write(char * filp, const char * buf, size_t size, loff_t * loff); -	extern unsigned long cgi_pFileData_modemfw_bin[];  -	unsigned long offset=0; -	 -	mei_write(0,(char *)cgi_pFileData_modemfw_bin,sizeof(cgi_pFileData_modemfw_bin),&offset); -	return 0; -} -#else -int Download_Firmware(char *filename, int fd_mei) -{ -	int fd_image=0; -	char *buf=NULL; -	int size=0,read_size = SEGMENT_SIZE; -	struct stat file_stat; - -        fd_image=open(filename, O_RDONLY); -	if (fd_image<=0) -	{ -                printf("\n open %s fail.\n",filename); -                return -1; -	} -        if(lstat(filename, &file_stat)<0){ -                printf("\n lstat error"); -                return -1; -        } -        size=file_stat.st_size; -        buf=malloc(read_size); -        if(buf==NULL){ -                printf("\n malloc failed in MEI main()"); -                return -1; -        } - -        lseek(fd_image, 0, SEEK_SET); -        lseek(fd_mei, 0, SEEK_SET); -        while(size>0) -        { -                static flag=1; -                if (size>SEGMENT_SIZE) -                        read_size=SEGMENT_SIZE; -                else -                        read_size=size; -                if(read(fd_image, buf, read_size)<=0){ -                        printf("\n amazon_mei_image not present"); -                        return -1; -                } -                if(write(fd_mei, buf, read_size)!=read_size){ -                        printf("\n write to mei driver fail"); -                        free(buf); -                        return -1; -                } -                size-=read_size; -        } -        free(buf); -        close(fd_image); -} -#endif - -// 609141:tc.chen :read min margin from CO for Annex B in DMT mode -int read_min_snr_margin(int fd, s16 *rt_ne_ds_min_margin) -{ -	makeCMV(H2D_CMV_READ,STAT, 1, 0, 1, NULL, Message); -        if (ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)!=0) -		return -1; -        if (Message[4] == 0x8) //992.1 AnnexB -        { -             	u16 min_margin; -             	makeCMV(H2D_CMV_READ,INFO, 33, 1, 1, NULL, Message); -            	if (ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)!=0) -		{ -			return -1; -		} -		// INFO 33 is 6 bits sign value -                min_margin = (Message[4] & 0x3f); -                if (min_margin > 31) -                { -                	*rt_ne_ds_min_margin = min_margin - 64; -                }else -                { -                        *rt_ne_ds_min_margin = min_margin ; -                } -        }else -	{ -		*rt_ne_ds_min_margin = 0; -	} -	return 0; -} -// 609141:tc.chen  end - -#if !defined(KERNEL_SPACE_APPLICATION) -int main(int argc, char **argv) -#else -int ifxmips_autoboot_main (int argc, char **argv) -#endif -{ -        int fd; -	int i,j; -	char systemstr[50]; -	u16 all_data = 0; -	u16 zero = 0x0; -	u16 one=0x1; -	u16 mw = 0x10; -	u16 link = 0x2; -	u16 temp=0; -	u16 rt_macrostate; -	meireg meiregister; -	int reboot_flag, rt_ne_los_flag; -	u16 rt_ne_failure_flags=0; -	s16 rt_ne_ds_margin=0; -	s16 rt_ne_ds_min_margin=0; //609141:tc.chen: -	u16 rt_buildcode_lsw=0, rt_buildcode_msw=0; -	u32 rt_buildcode = 0; -	int FarEndResponseReceived; -	time_t start_time; -	int timeout_limit; -	int     tmpShowTimeLockEnabled = 0;  - 	u16 nFECS_L_count=0; -  	u16 nES_L_count=0;  - 	u16 nSES_L_count=0; -	u16 nLOSS_L_count=0; 	 -	u16 first_power_on=1; -	int mode = -1; -	int pre_loop_diagnostics_mode=0; -	int loop_diagnostics_mode=0; -	 -	if ((argc < 2) || (argc > 5) ) -	{	printf("\n Wrong Argument\n"); -		print_usage(argv[0]); -		return -1; -	} - -//KD -// translate is called with "./translate -ef", but if the autoboot daemon -// is started during system boot, the current directory is "/", which -// makes the "system" call fail. -// Thus we make the program's directory the working directory. -        { -         char *argv0, *prog_dir; -         int argv0_size; -         /* The dirname system call might change its argument, -            thus we need a local copy */ -         argv0_size = strlen(argv[0]) + 1; -         argv0 = malloc(argv0_size); -         if (argv0 == 0) { -           printf("\n Insufficient memory\n"); -           return -1; -         } -         /* make sure there is no buffer overflow and -            the string is null-terminated */ -         strncpy(argv0, argv[0], argv0_size); -         argv0[argv0_size-1] = '\0'; - -         prog_dir = dirname(argv0); -         chdir(prog_dir); -         free(argv0); -         argv0 = 0; -        } - -	//display version info or download firmware -	if(argc==2)  -	{ -		if ((strncmp(argv[1], "ver", 3)==0) || (strncmp(argv[1], "VER", 3)==0)){ -			printf("\n ifxmips_autoboot_daemon version: %d.%02d.00\n",VERSION_MAJOR,VERSION_MINOR);	 -		}else -		{ -#if !defined(KERNEL_SPACE_APPLICATION)		 -			fd=open(IFXMIPS_MEI_DEV, O_RDWR); -			if(fd<0){ -				printf("autoboot open %s fail\n",IFXMIPS_MEI_DEV); -				return -1; -			} -#endif -			// Notify mei driver that it is controlled by autoboot daemon -			i = 1; -			if (ioctl(fd, AUTOBOOT_ENABLE_SET, &i)<0){ -				printf("\n\n mei ioctl AUTOBOOT_ENABLE_SET fail.\n"); -			} - -			Download_Firmware(argv[1],fd); -			if (ioctl(fd, IFXMIPS_MEI_START,NULL)<0){ -				printf("\n\n mei start fail.\n"); -#if !defined(KERNEL_SPACE_APPLICATION)			 -				close(fd); -#endif			 -				return -1; -			} -#if !defined(KERNEL_SPACE_APPLICATION)			 -			close(fd); -#endif			 -		} -		return 0; -	} - -	if (strncmp(argv[2], "all", 3) == 0) -		mode = MODE_ALL; -	else if ((strncmp(argv[2], "1a", 2) == 0) || (strncmp(argv[2], "1A", 2) == 0)) -		mode = MODE_992_1A; -	else if ((strncmp(argv[2], "1b", 2) == 0) || (strncmp(argv[2], "1B", 2) == 0)) -		mode = MODE_992_1B; -	else if ((strncmp(argv[2], "3a", 2) == 0) || (strncmp(argv[2], "3A", 2) == 0)) -		mode = MODE_992_3A; -	else if ((strncmp(argv[2], "3b", 2) == 0) || (strncmp(argv[2], "3B", 2) == 0)) -		mode = MODE_992_3B; -	else if ((strncmp(argv[2], "5a", 2) == 0) || (strncmp(argv[2], "5A", 2) == 0)) -		mode = MODE_992_5A; -	else if ((strncmp(argv[2], "5b", 2) == 0) || (strncmp(argv[2], "5B", 2) == 0)) -		mode = MODE_992_5B; - -	else if ((strncmp(argv[2], "3i",2) == 0) || (strncmp(argv[2], "3I",2) == 0)) -		mode = MODE_992_3I; -	else if ((strncmp(argv[2], "3j",2) == 0) || (strncmp(argv[2], "3J",2) == 0)) -		mode = MODE_992_3J; -	else if ((strncmp(argv[2], "3m",2) == 0) || (strncmp(argv[2], "3M",2) == 0)) -		mode = MODE_992_3M; -	else if ((strncmp(argv[2], "5i",2) == 0) || (strncmp(argv[2], "5I",2) == 0)) -		mode = MODE_992_5I; -	else if ((strncmp(argv[2], "5j",2) == 0) || (strncmp(argv[2], "5J",2) == 0)) -		mode = MODE_992_5J; -	else if ((strncmp(argv[2], "5m",2) == 0) || (strncmp(argv[2], "5M",2) == 0)) -		mode = MODE_992_5M; -        else if (strncmp(argv[2], "m_all",5) == 0)  -        	mode = MODE_M_ALL;  -        else if (strncmp(argv[2], "b_all",5) == 0)  -                mode = MODE_B_ALL;  -	else if (strncmp(argv[2], "mb_all",6) == 0)  -                mode = MODE_M_B_ALL;  - -	if (mode == -1) -	{	printf("\n Wrong Argument\n"); -		print_usage(argv[0]); -		return -1; -	} - -#if !defined(KERNEL_SPACE_APPLICATION) -	fd=open(IFXMIPS_MEI_DEV, O_RDWR); -	if(fd<0){ -		printf("autoboot open %s fail\n",IFXMIPS_MEI_DEV); -		return -1; -	} -#endif -fw_download: -	i = 1; -	if (ioctl(fd, AUTOBOOT_ENABLE_SET, &i)<0){ -		printf("\n\n mei ioctl AUTOBOOT_ENABLE_SET fail.\n"); -	} -	Download_Firmware(argv[1],fd); - -	if (ioctl(fd, IFXMIPS_MEI_START,NULL)<0){ -		printf("\n\n mei start fail.\n"); -		ioctl(fd, IFXMIPS_MEI_REBOOT,NULL); -		goto fw_download; -	} - -	// test Annex A or B -	makeCMV(H2D_CMV_READ, INFO, 54,1, 1, &temp, Message); -	if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -		printf("\n\n read INFO 54 1 fail"); -		return -1; -	} - -	if(((Message[4]>>8)&0x3f)==0x1){//Annex A -		all_data = 0x9105;  -		if ((mode == MODE_992_1B) || (mode == MODE_992_3B) || (mode == MODE_992_5B)) -		{	printf("\n\nWrong Argument, Annex A is running!\n\n"); -			return -1; -		} -	} -	else if(((Message[4]>>8)&0x3f)==0x2){// Annex B -		all_data=0x4208; -		if ( (mode == MODE_992_1A) || (mode == MODE_992_3A) || (mode == MODE_992_5A)\ -// changed by xu bingtao 09/01/2007 -/* -		|| (mode == MODE_992_3I) || (mode == MODE_992_3J) ||(mode == MODE_992_3M)\ -		|| (mode == MODE_992_5I) || (mode == MODE_992_5J) || (mode == MODE_992_5M)) -*/ -		|| (mode == MODE_992_3I) ||(mode == MODE_992_3M)\ -		|| (mode == MODE_992_5I) || (mode == MODE_992_5M)) -// changed by xu bingtao 09/01/2007 -		{	printf("\n\nWrong Argument, Annex B is running!\n\n"); -			return -1;	 -		} -	} -	else{ -		printf("\n\n Firmware Neither Annex A nor B\n\n"); -		return -1; -	} - -	/* add by tc chen */ -	system("echo \"0\" > /tmp/adsl_status"); - -	makeCMV(H2D_CMV_READ, INFO, 55, 0, 1, &temp, Message); -	if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -		printf("\n\n read INFO 55 0 fail"); -		return -1; -	} - -	rt_buildcode_lsw = Message[4]; -	 -	makeCMV(H2D_CMV_READ, INFO, 55, 1, 1, &temp, Message); -	if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -		printf("\n\n read INFO 55 1 fail"); -		return -1; -	} -	rt_buildcode_msw = Message[4]; - -	rt_buildcode = rt_buildcode_lsw + (rt_buildcode_msw << 16); -	printf("date: %d, month: %d, hour: %d, minute: %d\n", -		(rt_buildcode >> 0) & 0xFF, -		(rt_buildcode >> 8) & 0xFF, -		(rt_buildcode >> 16) & 0xFF, -		(rt_buildcode >> 25) & 0xFF -	      ); - -	while(1){ -		makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &zero, Message); -		if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -			printf("\n\n write OPTN 0 0 fail"); -			goto rt_reboot; -		} -		if (mode == MODE_992_1A) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x4; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_3A) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x100; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_5A) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x8100; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_1B) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x8; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_3B) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x200; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_5B) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x4200; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} - -		else if (mode == MODE_992_3I) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x400; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_3J) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x800; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_3M) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x2000; -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_5I) -		{	makeCMV(H2D_CMV_READ, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 7 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x1; -			makeCMV(H2D_CMV_WRITE, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 7 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_5J) -		{	makeCMV(H2D_CMV_READ, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 7 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x2; -			makeCMV(H2D_CMV_WRITE, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 7 0 fail"); -				goto rt_reboot; -			} -		} -		else if (mode == MODE_992_5M) -		{	makeCMV(H2D_CMV_READ, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 7 0 fail"); -				goto rt_reboot; -			} -			temp = Message[4]; -			temp|=0x4; -			makeCMV(H2D_CMV_WRITE, OPTN, 7, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 7 0 fail"); -				goto rt_reboot; -			} -		} -                else if (mode == MODE_M_ALL){ -			makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n read OPTN 0 0 fail"); -                                goto rt_reboot; -                        } -                        temp = Message[4]; -                        temp|=0x2000; -                        makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n write OPTN 0 0 fail"); -                                goto rt_reboot; -                        } - -                        makeCMV(H2D_CMV_READ, OPTN, 7, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n read OPTN 7 0 fail"); -                                goto rt_reboot; -                        } -                        temp = Message[4]; -                        temp|=0x4; -                        makeCMV(H2D_CMV_WRITE, OPTN, 7, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n write OPTN 7 0 fail"); -                                goto rt_reboot; -                        } -                } -                else if (mode == MODE_B_ALL){ -                        makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n read OPTN 0 0 fail"); -                                goto rt_reboot; -                        } -                        temp = Message[4]; -                        temp|=0x4208; -                        makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n write OPTN 0 0 fail"); -                                goto rt_reboot; -                        } -                }else if (mode == MODE_M_B_ALL){ -                        makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n read OPTN 0 0 fail"); -                                goto rt_reboot; -                } -                        temp = Message[4]; -                        temp|=0x6208; -                        makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n write OPTN 0 0 fail"); -                                goto rt_reboot; -                        } -                } -		else if (mode == MODE_ALL) -		{	makeCMV(H2D_CMV_READ, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 0 0 fail"); -				goto rt_reboot;  -			} -			temp = Message[4]; -			temp|=all_data; -			temp|= 2; //609181:tc.chen support G.lite - -			makeCMV(H2D_CMV_WRITE, OPTN, 0, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 0 0 fail"); -				goto rt_reboot;  -			} -		} - -		if(ioctl(fd, GET_ADSL_LOOP_DIAGNOSTICS_MODE, &j)<0){ -			printf("\n\n ioctl GET_ADSL_LOOP_DIAGNOSTICS_MODE fail"); -			goto rt_reboot; -		} -		if (j == 1) // LOOP DIAGNOSTICS enabled -		{ -			makeCMV(H2D_CMV_READ, OPTN, 9, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n read OPTN 9 0 fail"); -				goto rt_reboot;  -			} -			temp = Message[4]; -			temp |= 1<<2; -			//temp = 1<<2; -			makeCMV(H2D_CMV_WRITE, OPTN, 9, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n write OPTN 9 0 fail"); -				goto rt_reboot;  -			} -		} - -		/************ remove in future ***********/		 - -		if(argc==4){	//execute script file -			strncpy(systemstr, "./translate -ef ",16); -			strcpy(systemstr+16, argv[3]); -			system(systemstr); -		} - -#ifdef DEMO_ONLY -		if (mode == MODE_992_1A) -			temp=0x303; -		else -			temp=0x300; -		makeCMV(H2D_CMV_WRITE, OPTN, 1, 0, 1, &temp, Message); -		if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -			printf("\n\n write OPTN 1 0 fail"); -			return -1; -		} -		temp=0x8f78; -		makeCMV(H2D_CMV_WRITE, OPTN, 2, 0, 1, &temp, Message); -		if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -			printf("\n\n write OPTN 2 0 fail"); -			return -1; -		} -#endif - -		makeCMV(H2D_CMV_WRITE, CNTL, 0, 0, 1, &link, Message); -		if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -			printf("\n\n set CNTL 0 0 fail"); -			goto rt_reboot; -		} -		 -		FarEndResponseReceived=0; -		time(&start_time);		 -		timeout_limit=60; -			 -		while(1){ -			int	tmpQuietModeEnabled; -			tmpQuietModeEnabled = 0; -                        if(ioctl(fd, QUIET_MODE_GET, &tmpQuietModeEnabled)<0){ -                                printf("\n\n ioctl QUIET_MODE_GET fail"); -                                goto rt_reboot; -                        } -#if 0 // 611101:tc.chen : change to use ioctl QUIET_MODE_GET -                        makeCMV(H2D_CMV_READ, INFO, 94, 0, 1, &temp, Message); -                        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                                printf("\n\n INFO 94 0 read fail"); -                                goto rt_reboot; -                        } -			if( Message[4] == 0x0 ) -				tmpQuietModeEnabled = 1; -#endif -			// check if loop diagnostic mode is changed -			if(ioctl(fd, GET_ADSL_LOOP_DIAGNOSTICS_MODE, &loop_diagnostics_mode)<0) -			{ -				printf("\n\n ioctl GET_ADSL_LOOP_DIAGNOSTICS_MODE fail"); -				goto rt_reboot; -			} -			if (loop_diagnostics_mode != pre_loop_diagnostics_mode) -			{ -				pre_loop_diagnostics_mode = loop_diagnostics_mode; -				goto rt_reboot; -			} - -			makeCMV(H2D_CMV_READ, STAT, 0, 0, 1, &rt_macrostate, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n STAT read fail"); -				goto rt_reboot; -			} -	 -			if(Message[4]==2) -			{ -				if( tmpQuietModeEnabled == 0 )  -					break; -			}  -		 -			if((FarEndResponseReceived==0) && ((Message[4]==5) || (Message[4]==6))){ -				FarEndResponseReceived=1; -				timeout_limit=60; -				time(&start_time); -			} -			 -			if(Message[4]==9){ -				timeout_limit=120; -				if(FarEndResponseReceived==0){ -					FarEndResponseReceived=1; -					time(&start_time); -				} -			} - -			if(Message[4]==3){ -				if( tmpQuietModeEnabled == 0 ){  -					sleep(5); -					break; -				}  -			} - -			if(Message[4]==7){ -				break; -			} -			 -			if(time((time_t *)0)-start_time > timeout_limit){ -				if( tmpQuietModeEnabled == 0 )  -					break; -			} -			usleep(100000); -		} -		 -		if (Message[4] != 7) -		{ -			if (Message[4] == 3) // Done with loop diagnostics -			{ -				ioctl(fd,LOOP_DIAGNOSTIC_MODE_COMPLETE,NULL); -				while(1) -				{ -					if(ioctl(fd, GET_ADSL_LOOP_DIAGNOSTICS_MODE, &loop_diagnostics_mode)<0) -					{ -						printf("\n\n ioctl GET_ADSL_LOOP_DIAGNOSTICS_MODE fail"); -						goto rt_reboot; -					} -					if (loop_diagnostics_mode == 0) -					{ -						pre_loop_diagnostics_mode = loop_diagnostics_mode; -						goto rt_reboot; -					} -					sleep(1); -				} -			}else -			{ -				printf("\n\n Keep trying to reboot!");  -				goto rt_reboot;	 -			} -		} - -		j=0; -		reboot_flag=0; -		while(reboot_flag==0){ -			if(ioctl(fd, GET_ADSL_LOOP_DIAGNOSTICS_MODE, &loop_diagnostics_mode)<0) -			{ -				printf("\n\n ioctl GET_ADSL_LOOP_DIAGNOSTICS_MODE fail"); -				goto rt_reboot; -			} -			if (loop_diagnostics_mode != pre_loop_diagnostics_mode) -			{ -				pre_loop_diagnostics_mode = loop_diagnostics_mode; -				goto rt_reboot; -			} - -			makeCMV(H2D_CMV_READ, PLAM, 0, 0, 1, &rt_ne_failure_flags, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n PLAM 0 0 read fail"); -				goto rt_reboot; -			} - -			rt_ne_failure_flags = Message[4]; -			rt_ne_los_flag=rt_ne_failure_flags & 0x1; -			 -#ifndef DEMO_ONLY -			// MIB count start -			ioctl(fd, IFXMIPS_MIB_LO_ATUC, (u32*)rt_ne_failure_flags); -			makeCMV(H2D_CMV_READ, PLAM, 1, 0, 1, &temp, Message); -			 -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n PLAM 1 0 read fail"); -				goto rt_reboot; -			} - -			ioctl(fd, IFXMIPS_MIB_LO_ATUR, (u32*)Message[4]); -			//MIB count end -#endif -			 -			rt_ne_ds_margin = 0; -			makeCMV(H2D_CMV_READ, PLAM, 46, 0, 1, &rt_ne_ds_margin, Message); -			 -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n PLAM 46 0 read fail"); -				goto rt_reboot; -			} - -			rt_ne_ds_margin = (s16)Message[4]; - -			if(ioctl(fd, SHOWTIME_LOCK_GET, &tmpShowTimeLockEnabled)<0){ -				printf("\n\n ioctl SHOWTIME_LOCK_GET fail!"); -				goto rt_reboot; -			} -#if 0 //611101:tc.chen change to ioctl SHOWTIME_LOCK -			makeCMV(H2D_CMV_READ, TEST, 29, 0, 1, &temp, Message); -			if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -				printf("\n\n TEST 29 0 read fail"); -				goto rt_reboot; -			} -			if( Message[4] == 0xffff ) -				tmpShowTimeLockEnabled = 1; -#endif -			/* rt_ne_ds_margin is SNR *2  */	 -			if((rt_ne_los_flag!=0)|| ( rt_ne_ds_margin<(rt_ne_ds_min_margin * 2))){ -				if(tmpShowTimeLockEnabled == 1) { -// changed by xu bingtao 09/01/2007  -/* -					printf("NE_LOS or NE_DS_MARGIN detected but no rebooting because of the showtime lock\n"); -*/ -					printf("NE_LOS or NE_DS_MARGIN detected but no rebooting because of the showtime lock\n"); -					printf("  Minimum Margin: %d/2 dB  -  Expected Margin: %d dB -  LOS : %d\n",rt_ne_ds_margin, rt_ne_ds_min_margin, rt_ne_los_flag);	 -// changed by xu bingtao 09/01/2007  -				} -				else -					reboot_flag=1; -			} - -			usleep(1500000); - -			if(j<3){//wait for several seconds before setting showtime -				makeCMV(H2D_CMV_READ, STAT, 4, 0, 1, &temp, Message); -				if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -					printf("\n\n STAT 4 0 read fail"); -					goto rt_reboot; -				} -				if((Message[4]&0x2)==0x2){ -					printf("\n\n setting showtime to driver\n\n"); -					system("/etc/rc.d/adsl_up &"); //000001:tc.chen -					system("echo \"7\" > /tmp/adsl_status"); -					printf("ADSL SHOWTIME!!\n"); -					sleep(1);			 -//joelin 04/16/2005 -#ifndef DEMO_ONLY -					if (!first_power_on){ -		 -						makeCMV(H2D_CMV_WRITE,PLAM, 6, 0, 1, &nFECS_L_count, Message);  -						ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); -	 	 -						makeCMV(H2D_CMV_WRITE,PLAM, 7, 0, 1, &nES_L_count, Message);  -						ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); -	  -	 		 		 -				 		makeCMV(H2D_CMV_WRITE,PLAM, 8, 0, 1, &nSES_L_count, Message);  -						ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); -	 -	 		 -						makeCMV(H2D_CMV_WRITE,PLAM, 9, 0, 1, &nLOSS_L_count, Message);  -						ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); -			  		}									 -#endif -					ioctl(fd, IFXMIPS_MEI_SHOWTIME,NULL); 	//set showtime=1 in driver			 -					// 609141:tc.chen :read min margin from CO for Annex B in DMT mode -					// read adsl link mode -					read_min_snr_margin(fd, &rt_ne_ds_min_margin); -					j=1000;				 -				} -				j++; -				if(j==3){//timeout, set showtimei -					printf("\n\n timeout, setting showtime to driver\n\n"); -					//system("echo \"7\" > /tmp/adsl_status"); -					printf("ADSL SHOWTIME!!\n"); -					sleep(1);			 -					ioctl(fd, IFXMIPS_MEI_SHOWTIME,NULL); 	//set showtime=1 in driver -					// 609141:tc.chen :read min margin from CO for Annex B in DMT mode -					// read adsl link mode -					read_min_snr_margin( fd, &rt_ne_ds_min_margin); -				}								 -			} -		} -rt_reboot: -			         -#ifndef DEMO_ONLY -		makeCMV(H2D_CMV_READ,PLAM, 6, 0, 1, &temp, Message);  -		ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); - 		nFECS_L_count=nFECS_L_count+Message[4]; - 	 -		makeCMV(H2D_CMV_READ,PLAM, 7, 0, 1, &temp, Message);  -		ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); - 		nES_L_count=nES_L_count+Message[4];  - 		 		 - 		makeCMV(H2D_CMV_READ,PLAM, 8, 0, 1, &temp, Message);  -		ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); - 		nSES_L_count=nSES_L_count+Message[4]; - 		 -		makeCMV(H2D_CMV_READ,PLAM, 9, 0, 1, &temp, Message);  -		ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message); - 		nLOSS_L_count=nLOSS_L_count+Message[4];  -#endif - -		/* add by tc chen */ -		system("echo \"0\" > /tmp/adsl_status"); -		printf("\n Rebooting ARC\n"); -reboot_adsl: -		ioctl(fd, IFXMIPS_MEI_REBOOT,NULL); -		Download_Firmware(argv[1],fd); -		if (ioctl(fd, IFXMIPS_MEI_START,NULL)<0){ -			printf("\n\n mei start fail.\n"); -			goto reboot_adsl; -		} -	} - -#if !defined(KERNEL_SPACE_APPLICATION)			 -	close(fd); -#endif -        return 0; -} diff --git a/package/ifxmips_adsl/src/danube_mei_debug.c b/package/ifxmips_adsl/src/danube_mei_debug.c deleted file mode 100644 index e3247f66a..000000000 --- a/package/ifxmips_adsl/src/danube_mei_debug.c +++ /dev/null @@ -1,84 +0,0 @@ -#define _IFXMIPS_ADSL_APP -#define u32	unsigned int -#define IFXMIPS_MEI_DEV 	"/dev/ifxmips/mei" - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> - -#define SEGMENT_SIZE (64*1024) -#if 0 -#define u8 unsigned char  -#define u16 unsigned short -#endif - -int main(int argc, char **argv) -{ -        int fd_image, fd_mei; -        char *buf; -	struct stat state; -	int i,j; -	char * filename;   -	int size,read_size=SEGMENT_SIZE; -	u16 temp=0; -	u16 Message[16]__attribute__ ((aligned(4)));  -	meidebug dbg_data; -	int rw_flag =0; -	   -	if(argc<4){ -		printf("\nWrong Arguments! Usage: %s r/w address size/value\n",argv[0]); -		return -1; -	} - -	fd_mei=open(IFXMIPS_MEI_DEV, O_RDWR); -	if(fd_mei<0) -		printf("\n open device fail"); - -	dbg_data.iAddress = strtoul(argv[2],NULL,0); -	printf("Address = %08X\n",dbg_data.iAddress); -	if(argv[1][0]=='w') -	{ -		dbg_data.buffer[0]=strtoul(argv[3],NULL,0); - -		dbg_data.iCount = 1; -		rw_flag = 1; -	}else -	{ -		dbg_data.iCount =strtoul(argv[3],NULL,0); -	} -	if (rw_flag==1) -	{ -		if(ioctl(fd_mei, IFXMIPS_MEI_WRITEDEBUG,&dbg_data)!=MEI_SUCCESS){ -			printf("\n IFXMIPS_MEI_WRITEDEBUG() failed"); -			close(fd_mei); -			return -1; -		} -		printf("Writing %08X with data %X!\n",dbg_data.iAddress,dbg_data.buffer[0]); -	}else -	{ -		if(ioctl(fd_mei, IFXMIPS_MEI_READDEBUG,&dbg_data)!=MEI_SUCCESS){ -			printf("\n IFXMIPS_MEI_READDEBUG() failed"); -			close(fd_mei); -			return -1; -		} -		printf("Read %08X .\nResult:",dbg_data.iAddress); -		for (i=0;i<dbg_data.iCount;i++) -		{ -			printf("%08X ",dbg_data.buffer[i]); -			if(i%4==3) -				printf("\n"); -		} -		printf("\n"); -	} -	close(fd_mei); -} diff --git a/package/ifxmips_adsl/src/danube_show_firmware_date.c b/package/ifxmips_adsl/src/danube_show_firmware_date.c deleted file mode 100644 index 94abc32ae..000000000 --- a/package/ifxmips_adsl/src/danube_show_firmware_date.c +++ /dev/null @@ -1,75 +0,0 @@ -#define _IFXMIPS_ADSL_APP -#define u32	unsigned int -#define IFXMIPS_MEI_DEV 	"/dev/ifxmips/mei" -  -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <time.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> - -u16 Message[16]__attribute__ ((aligned(4)));  - -void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data); -void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data) -{ -	memset(Message, 0, 16*2); -	Message[0]= (opcode<<4) + (size&0xf); -	if(opcode == H2D_DEBUG_WRITE_DM) -		Message[1]= (group&0x7f); -	else -		Message[1]= (((index==0)?0:1)<<7) + (group&0x7f); -	Message[2]= address; -	Message[3]= index; -	if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM)) -		memcpy(Message+4, data, size*2); -	return; -} - - -int main(int argc, char **argv) -{ -        int fd; -	u16 temp=0; -	u16 rt_buildcode_lsw=0, rt_buildcode_msw=0; -	u32 rt_buildcode = 0; -		 -	fd=open(IFXMIPS_MEI_DEV, O_RDWR); -	if(fd<0){ -		printf("\n\n autoboot open device fail"); -		return -1; -	} - - -	makeCMV(H2D_CMV_READ, INFO, 55, 0, 1, &temp); -	if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -		printf("\n\n read INFO 55 0 fail"); -		return -1; -	} -	rt_buildcode_lsw = Message[4]; -	 -	makeCMV(H2D_CMV_READ, INFO, 55, 1, 1, &temp); -	if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -		printf("\n\n read INFO 55 1 fail"); -		return -1; -	} -	rt_buildcode_msw = Message[4]; - -	rt_buildcode = rt_buildcode_lsw + (rt_buildcode_msw << 16); -	printf("date: %d, month: %d, hour: %d, minute: %d\n", -		(rt_buildcode >> 0) & 0xFF, -		(rt_buildcode >> 8) & 0xFF, -		(rt_buildcode >> 16) & 0xFF, -		(rt_buildcode >> 25) & 0xFF -	      ); -	return 0; -} diff --git a/package/ifxmips_adsl/src/model_config.sh b/package/ifxmips_adsl/src/model_config.sh deleted file mode 100644 index b7dada369..000000000 --- a/package/ifxmips_adsl/src/model_config.sh +++ /dev/null @@ -1,14 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -# CONFIG_AMZ is not set -CONFIG_DNB=y -IFX_CONFIG_CPU="IFXMIPS" -IFX_CONFIG_FUTURE_SET="V33WT_SM" -IFX_CONFIG_MEMORY_SIZE=32 -IFX_CONFIG_FLASH_SIZE=4 -IFX_UBOOT_RAM_TEXT_BASE=0xa0400000 -IFX_HEAD_FLASH_TEXT_BASE=0xb0000000 -IFX_IN_PAD_LEN=25000 - -####    End of Configuration   #### diff --git a/package/ifxmips_adsl/src/sysconfig.sh b/package/ifxmips_adsl/src/sysconfig.sh deleted file mode 100644 index 34707b332..000000000 --- a/package/ifxmips_adsl/src/sysconfig.sh +++ /dev/null @@ -1,90 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# - -# -# General Setup -# -CONFIG_TC_3_3_6=y -TOOLCHAIN_DIR="/opt/uclibc-toolchain/ifx-lxdb-1-2" -BUILD_DIR="/mnt/the-noob/build" -BUILD_VOB="n" -# COPY_TFTP is not set -TOPDIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/" -KERNEL_SOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/kernel/opensource/linux-2.4.31/" -BUILD_ROOTFS_DIR="/mnt/the-noob/build/root_filesystem/" -UBOOT_SOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/u-boot/" -USER_SOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/" -USER_IFXSOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/" -USER_OPENSOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/opensource/" -IFX_APIS_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/IFXAPIs/" -KERNEL_IFX_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/kernel/ifx/" -BUILD_TOOLS_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//tools/build_tools/" -KERNEL_CONFIG="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/kernel/opensource/linux-2.4.31//.config" -TOOLS_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/tools/build_tools" -VER_FILE="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/tools/build_tools/versions" -IFX_HOSTCC="gcc" -BUILD="i686-pc-linux-gnu" -HOSTUTILS_PATH="/opt/uclibc-toolchain/ifx-lxdb-1-2/hostutils/bin" -FAKE_ENV="/mnt/the-noob/build/fakeroot.env" -DEV_FILE="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/tools/build_tools/device_table.txt" - -# -# Platform Configuration -# -# CONFIG_AMZ is not set -# CONFIG_AMZ_SE is not set -CONFIG_DNB=y -CONFIG_G0432V33_BSP=y -PLATFORM_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/platforms/Danube" -MODEL="G0432V33_BSP" -CONFIG_MIPS=y -CONFIG_UIMAGE_LZMA=y -CONFIG_FS_OTHER=y -PLATFORM_NAME="Danube" -BSP_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0/platforms/Danube/source/kernel/ifx" -CONFIG_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//config" -IFXAPI_SRC_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/IFXAPIs//src" -IFXAPI_INC_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/IFXAPIs//include" -CONFIG_MGMT_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx//ConfigManagementProcess" -IFX_HTTPD_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx//ifx_httpd" -IFX_UTIL_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx//utilities" -IFX_NFEXT_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx//nfext" -IFX_ROOTFS_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/rootfs.bsp/" -ROOTFS_SOURCE_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/rootfs.bsp/flashdisk" -IFX_CFLAGS="-Os -mips32 -mtune=4kc -I/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx//IFXAPIs/include" -IFX_LDFLAGS="-L/mnt/the-noob/build/root_filesystem//lib -Wl,-rpath-link,/mnt/the-noob/build/root_filesystem//lib" -VOIP_SRC_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/gateway-sip" -TR69_SRC_DIR="/mnt/CD1_BSP/software/ReleasePackage/3.3.0//source/user/ifx/tr69" -CONFIG_ENDIAN="mips" -COMPILER_PREFIX="mips-linux-" -TOOLCHAIN_PATH="/opt/uclibc-toolchain/ifx-lxdb-1-2/gcc-3.3.6/toolchain-mips/bin" -COMPILER_PREFIX="mips-linux-" -LIBPATH="/opt/uclibc-toolchain/ifx-lxdb-1-2/gcc-3.3.6/toolchain-mips/lib" -CCACHE_PATH="/opt/uclibc-toolchain/ifx-lxdb-1-2/gcc-3.3.6/toolchain-mips/bin-ccache" -IFX_CC="mips-linux-gcc" -IFX_AR="mips-linux-ar" -IFX_AS="mips-linux-as" -IFX_LD="mips-linux-ld" -IFX_NM="mips-linux-nm" -IFX_STRIP="mips-linux-strip" -IFX_RANLIB="mips-linux-ranlib" -IFX_CXX="mips-linux-g++" -IFX_CPP="mips-linux-cpp" -IFX_OBJCOPY="mips-linux-objcopy" -IFX_OBJDUMP="mips-linux-objdump" -TARGET="mips-linux" -HOST="mips-linux" - -# -# Library Configuration -# -# CONFIG_LIB_FEATURE is not set -RECONFIG=y -# NEW_DEFAULTS is not set -# NEW_MODEL is not set - -####    End of Configuration   #### - -. /mnt/CD1_BSP/software/ReleasePackage/3.3.0/tools/build_tools/.gen_funcs -. /mnt/CD1_BSP/software/ReleasePackage/3.3.0/tools/build_tools/.board_funcs diff --git a/package/ifxmips_adsl/src/translate.c b/package/ifxmips_adsl/src/translate.c deleted file mode 100644 index 164f4396c..000000000 --- a/package/ifxmips_adsl/src/translate.c +++ /dev/null @@ -1,848 +0,0 @@ -/* - *   This program is free software; you can redistribute it and/or modify - *   it under the terms of the GNU General Public License as published by - *   the Free Software Foundation; either version 2 of the License, or - *   (at your option) any later version. - * - *   This program is distributed in the hope that it will be useful, - *   but WITHOUT ANY WARRANTY; without even the implied warranty of - *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *   GNU General Public License for more details. - * - *   You should have received a copy of the GNU General Public License - *   along with this program; if not, write to the Free Software - *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ -//----------------------------------------------------------------------- -//Description:	 -// winhost script translation tool under Linux for Danube -//----------------------------------------------------------------------- -//Author:	Qi-Ming.Wu@infineon.com -//Created:	29-October-2004 -//----------------------------------------------------------------------- -/* History - * Last changed on: - * Last changed by:  - * -*/ - -#define _IFXMIPS_ADSL_APP -//#define DEBUG -#define u32 unsigned int -#define u16 unsigned short -#define u8  unsigned char -#define IFXMIPS_MEI_DEV  "/dev/ifxmips/mei" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <time.h> -#include <getopt.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/mman.h> - -#include <asm/ifxmips/ifxmips.h> -#include <asm/ifxmips/ifxmips_mei_app_ioctl.h> -#include <asm/ifxmips/ifxmips_mei_app.h> -#include <asm/ifxmips/ifxmips_mei_ioctl.h> -#include <asm/ifxmips/ifxmips_mei.h> - - -/*============================definitions======================*/ -#define OPTN 5 -#define CNFG 8 -#define CNTL 1 -#define STAT 2 -#define RATE 6 -#define PLAM 7 -#define INFO 3 -#define TEST 4 - -typedef unsigned short UINT16; -typedef unsigned long UINT32; - - - -/*=============================================================*/ - - -/*=============================global variables================*/ -int c=0; -int input_flag=0; -int digit_optind=0; -FILE* script_file; -void (*func)()=NULL; -int fd; - -UINT16 var16[8]; -UINT32 var32[8]; -UINT16 Message[16]; - -/*=============================================================*/ - - - - -void display_version() -{ -   printf("translate version1.0\nby Wu Qi Ming\nQi-Ming.Wu@infineon.com\n"); -   return; -} - - -void translate_help() -{ -    printf("Usage:translate [options] [parameter] ...\n"); -    printf("options:\n"); -    printf("-h --help            Display help information\n");        -    printf("-v --version         Display version information\n"); -    printf("-f --file            Specify the script file\n"); -    printf("-e --execute         Execute the specified script file\n"); -    //printf("-c --check           Check the script file\n"); -    return; -} - -/* -print the content in buf excluding the command "echo" itself. -*/ - -void echo(char* buf) -{ -       int i; -       char msg[128]; -       for(i=0;i<128;i++) -       { -          if((buf[i]!=0)&&(buf[i]!=32)) -	  { -	    sscanf(buf+i,"%s",&msg); -	    if(strcmp(msg,"echo")==0) -	    i+=4; -	    else break; -	  } -	   -       } -       for(i;i<128;i++) -       { -          if(buf[i]!=0&&(buf[i]!=10)) -	  { -	    printf("%c",buf[i]); -          } -       } -        -        -    printf("\n"); -    return; - -} - -static void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data) -{ -         -        memset(Message, 0, 16*2); -        Message[0]= (opcode<<4) + (size&0xf); -        if(opcode == H2D_DEBUG_WRITE_DM) -                Message[1]= (group&0x7f); -        else -                Message[1]= (((index==0)?0:1)<<7) + (group&0x7f); -        Message[2]= address; -        Message[3]= index; -        if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM)) -                memcpy(Message+4, data, size*2); -         -	return; -} - - - -UINT16 CMV_read(char* str_group,int address,int index) -{ -        int group=0; -	if(strcmp(str_group,"optn")==0) -	group=OPTN; -	else if(strcmp(str_group,"cnfg")==0) -	group=CNFG; -	else if(strcmp(str_group,"cntl")==0) -	group=CNTL; -	else if(strcmp(str_group,"stat")==0) -	group=STAT; -	else if(strcmp(str_group,"rate")==0) -	group=RATE; -	else if(strcmp(str_group,"plam")==0) -	group=PLAM; -	else if(strcmp(str_group,"info")==0) -	group=INFO; -	else if(strcmp(str_group,"test")==0) -	group=TEST; -	else  -	 { -	   printf("wrong group type!\ncheck script file please!\n"); -	   exit(0); -	 } -	 -#ifndef DEBUG	 -        makeCMV(H2D_CMV_READ, group, address, index, 1, NULL); -        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                printf("cr read %d %d %d fail",group,address,index); -                exit(0); -        } -#endif  -         -	return Message[4]; - -	 -}  - - -int CMV_write(char* str_group,int address,int index,UINT16 value) -{ -        int group=0; -	if(strcmp(str_group,"optn")==0) -	group=OPTN; -	else if(strcmp(str_group,"cnfg")==0) -	group=CNFG; -	else if(strcmp(str_group,"cntl")==0) -	group=CNTL; -	else if(strcmp(str_group,"stat")==0) -	group=STAT; -	else if(strcmp(str_group,"rate")==0) -	group=RATE; -	else if(strcmp(str_group,"plam")==0) -	group=PLAM; -	else if(strcmp(str_group,"info")==0) -	group=INFO; -	else if(strcmp(str_group,"test")==0) -	group=TEST; -	else  -	 { -	   printf("wrong group type!\ncheck script file please!\n"); -	   exit(0); -	 } -	 -#ifndef DEBUG	 -        makeCMV(H2D_CMV_WRITE, group, address, index, 1, &value); -        if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                printf("cw %d %d %d fail",group,address,index); -                return -1; -        } -#endif  -         -	return 0; - -	 -}  - -void execute_script() -{ -   char buf[128]; -   char str_command[20]={0}; -   char str_group[20]={0}; -   char str_value[128]={0}; -   char op1[40],op2[40]; -   int  address,index; -   int  n=0; -   UINT16 value=0; -   if(!script_file) return; -    -   while(fgets(buf,128,script_file))/*scan one line into buffer, 128 bytes at most*/ -      { -      if(sscanf(buf,"%s",&str_command)==0) continue; -      /*if the line is empty, then go on to the next*/ -      if(strcmp(str_command,"cr")==0)/*cr command*/ -      { -        sscanf(buf,"%s %s %d %d %s",&str_command,\ -                                   &str_group,\ -				   &address,\ -				   &index,\ -				   &str_value); -       if(strncmp(str_value,"$",1)!=0)  -       { -          printf("error:cr parameter type mismatch!\n"); -	  break; -       } -       n=strtoul(str_value+1,NULL,0); -       var16[n]=CMV_read(str_group,address,index); -       printf("read %s %d %d, value=%04x\n",str_group, address, index,var16[n]); -      } -      else if(strcmp(str_command,"cw")==0)/*cw command*/ -      { -        sscanf(buf,"%s %s %d %d %s",&str_command,\ -                                   &str_group,\ -				   &address,\ -				   &index,\ -				   &str_value); -        n=strtoul(str_value+1,NULL,0); -	if(strncmp(str_value,"$",1)==0) -	 { -	   value=var16[n];    -	 } -	else if(strncmp(str_value,"#",1)==0) -	 { -	   value=strtoul(str_value+1,NULL,0); -	 } -	else -	 { -	    value=strtoul(str_value,NULL,0); -	 }  	 -        if(CMV_write(str_group,address,index,value)<0) -	 { -	   break; -	 } -      } -       -      else if(strcmp(str_command,"mw")==0)/*mr command*/ -      { -         -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &str_value); -          -	 n=strtoul(str_value+1,NULL,0); -	 address=strtoul(op1,NULL,0); -	 if(strncmp(str_value,"$",1)==0) -	 { -	   value=var16[n];    -	 } -	 else if(strncmp(str_value,"#",1)==0) -	 { -	   value=strtoul(str_value+1,NULL,0); -	 } -	 else -	 { -	   value=strtoul(str_value,NULL,0); -	  -	 } -	  -	 makeCMV(H2D_DEBUG_WRITE_DM, 0x0, address>>16, (address)&(0xffff), 1, &value); -         if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                        printf("mw %08x fail",address); -			break; -              -          } -	  -      } -       -      else if(strcmp(str_command,"mr")==0)/*mr command*/ -      { -         -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &str_value); -         address=strtoul(op1,NULL,0); -	 n=strtoul(str_value+1,NULL,0); -	 if(strncmp(str_value,"$",1)!=0)  -         { -          printf("error:mr parameter type mismatch!\n"); -	  break; -         } -         makeCMV(H2D_DEBUG_READ_DM, 0x0, address>>16, (address)&(0xffff), 1, NULL); -         if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){ -                        printf("mw %08x fail",address); -			break; -          } -	 value=Message[4]; -         var16[n]=value;	  -      } -       -       -       -      else if(strcmp(str_command,"meiw")==0)/*meiw command*/ -      { -         meireg regrdwr; -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         regrdwr.iAddress=strtoul(op1,NULL,0)+IFXMIPS_MEI_BASE_ADDR; -	  -	  -	 if(strncmp(op2,"#",1)==0) regrdwr.iData=strtoul(op1+1,NULL,0); -	 else if(strncmp(op2,"$",1)==0) regrdwr.iData=var16[strtoul(op2+1,NULL,0)]; -	 else if(strncmp(op2,"@",1)==0) regrdwr.iData=var32[strtoul(op2+1,NULL,0)]; -         else regrdwr.iData=strtoul(op1,NULL,0); -	 //printf("address=%08x\n", regrdwr.iAddress);    -	 if(ioctl(fd, IFXMIPS_MEI_CMV_WRITE, ®rdwr)<0){ -                printf("meiw fail\n"); -                break;; -        } -	  -      } -       -      else if(strcmp(str_command,"meir")==0)/*meir command*/ -      { -         meireg regrdwr; -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         regrdwr.iAddress=strtoul(op1,NULL,0)+IFXMIPS_MEI_BASE_ADDR; -         if(ioctl(fd, IFXMIPS_MEI_CMV_READ, ®rdwr)<0){ -                printf("meir fail\n"); -                break; -         } -	 if(strncmp(op2,"$",1)==0) var16[strtoul(op2+1,NULL,0)]=regrdwr.iData; -	 else if(strncmp(op2,"@",1)==0) var32[strtoul(op2+1,NULL,0)]=regrdwr.iData; -         else -	   { -	     printf("meir grammar error!\n"); -	     break;  -	   } -	  -      } -       -       -      else if(strcmp(str_command,"lst")==0)/*lst command*/ -      { -          -         sscanf(buf,"%s %s",&str_command,\ -                            &str_value);		     -          -	 if(strncmp(str_value,"$",1)==0) -	  { -	      n=strtoul(str_value+1,NULL,0); -	      printf("$%d=0x%04x\n",n,var16[n]); -	   -	  } -	 else if(strncmp(str_value,"@",1)==0) -	  { -	      n=strtoul(str_value+1,NULL,0); -	      printf("$%d=0x%08x\n",n,var32[n]); -	  -	  } -	 else -	  { -	    printf("lst grammar error!\n"); -	    break;   -	  } -      } -       -      else if(strcmp(str_command,"echo")==0)/*echo command*/ -      { -         echo(buf); -      }  -      else if(strcmp(str_command,"mov")==0)/*mov command*/ -      { -          sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -	  if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]=strtoul(op2+1,NULL,0); -	    } -	    else -	    { -	       var16[strtoul(op1+1,NULL,0)]=strtoul(op2,NULL,0); -	     -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -       -       -      } -       -       -      else if(strcmp(str_command,"or")==0)/*or command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]|=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]|= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]|=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]|=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]|= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]|=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -      } -  -       else if(strcmp(str_command,"and")==0)/*and command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]&=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]&= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]&=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]&=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]&= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]&=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -         } -        else if(strcmp(str_command,"not")==0)/*not command*/ -        { -         sscanf(buf,"%s %s",&str_command,\ -                               &op1); -	 if(strncmp(op1,"$",1)==0) -	 {  -	   var16[strtoul(op1+1,NULL,0)]=~var16[strtoul(op1+1,NULL,0)]; -	 } -	 else if(strncmp(op1,"@",1)==0) -	 {  -	   var32[strtoul(op1+1,NULL,0)]=~var32[strtoul(op1+1,NULL,0)]; -	 } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  }		        -        } -	 else if(strcmp(str_command,"shl")==0)/*shl command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]<<=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]<<= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]<<=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]<<=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]<<= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]<<=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -         } -	  -	else if(strcmp(str_command,"shr")==0)/*shr command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]>>=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]>>= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]>>=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]>>=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]>>= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]>>=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -         }  -	  -	else if(strcmp(str_command,"add")==0)/*add command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]+=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]+= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]+=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]+=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]+= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]+=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -         }   -	else if(strcmp(str_command,"sub")==0)/*sub command*/ -      { -         sscanf(buf,"%s %s %s",&str_command,\ -                               &op1,\ -			       &op2); -         if(strncmp(op1,"$",1)==0) -          { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]-=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]-= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var16[strtoul(op1+1,NULL,0)]-=strtoul(op2+1,NULL,0); -	    } -	  } -	 else if(strncmp(op1,"@",1)==0) -	  { -	    if(strncmp(op2,"$",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]-=var16[strtoul(op2+1,NULL,0)]; -	    } -	    else if(strncmp(op2,"@",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]-= var32[strtoul(op2+1,NULL,0)]; -	     -	    } -	    else if(strncmp(op2,"#",1)==0) -	    { -	       var32[strtoul(op1+1,NULL,0)]-=strtoul(op2+1,NULL,0); -	    } -	  } -	 else -	  { -	    printf("grammar error!\n"); -	    break;   -	  } -         }    -	 -      memset(str_command,0,20); -      memset(buf,0,128);   -   }   -   return; -} - -int main (int argc, char** argv) { -      -#ifndef DEBUG -        fd=open(IFXMIPS_MEI_DEV, O_RDWR); -        if(fd<0){ -                printf("\n\n autoboot open device fail\n"); -                return -1; -        } -#endif -     while(1) { -       int option_index=0; -       static struct option long_options[] ={ -           {"help",0,0,0}, -	   {"version",0,0,0}, -	   {"file",1,0,0}, -	   {"execute",0,0,0}    -       }; -        -       c = getopt_long(argc,argv, "hvf:e", -                      long_options, &option_index); -        -       //printf("c=%d option_index=%d\n",c,option_index);	 -       if(c==-1) -         { -	  if(input_flag==0) -	  { -	   printf("translate:please specify parameters\n"); -	   func=&translate_help; -          } -	  if(func) -	   (*func)(); -	  else -	   { -ERROR:      translate_help(); -	   }  -	  break; -	 } -       input_flag=1; -       switch (c) { -            case 0: -	       if(option_index==0) -	        { -		 func=&translate_help; -		 break;  -	        }  -	       if(option_index==1)  -	        { -		    func=&display_version; -		    break; -                }  -	       if(option_index==2) -	        { -	            goto FILE; -		    break; -	        } -	       if(option_index==3) -	        { -	            goto EXECUTE; -		    break;  -	        } -	    case 'h': -	       func=&translate_help; -	       break;     -	    case 'v': -	       func=&display_version; -	       break; -	    case 'f': -FILE:	       if(!optarg) goto ERROR; -	       script_file=fopen((char*)optarg,"r"); -               if(!script_file) perror("fopen"); -	       break; -	    case 'e': -EXECUTE:       func=&execute_script; -               break; -	    }      -	 -	     -     } -            if(script_file) fclose(script_file); -#ifndef DEBUG	     -	    close(fd); -#endif	      -} - - - | 
