add ifx adsl tools
[openwrt/svn-archive/archive.git] / package / ifxmips_adsl / src / danube_show_firmware_date.c
1 #define _IFXMIPS_ADSL_APP
2 #define u32 unsigned int
3 #define IFXMIPS_MEI_DEV "/dev/ifxmips/mei"
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <unistd.h>
8 #include <fcntl.h>
9 #include <errno.h>
10 #include <string.h>
11 #include <time.h>
12 #include <sys/types.h>
13 #include <sys/ioctl.h>
14 #include <sys/stat.h>
15 #include <sys/time.h>
16 #include <asm/ifxmips/ifxmips_mei_app_ioctl.h>
17 #include <asm/ifxmips/ifxmips_mei_app.h>
18 #include <asm/ifxmips/ifxmips_mei_ioctl.h>
19
20 u16 Message[16]__attribute__ ((aligned(4)));
21
22 void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data);
23 void makeCMV(u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data)
24 {
25 memset(Message, 0, 16*2);
26 Message[0]= (opcode<<4) + (size&0xf);
27 if(opcode == H2D_DEBUG_WRITE_DM)
28 Message[1]= (group&0x7f);
29 else
30 Message[1]= (((index==0)?0:1)<<7) + (group&0x7f);
31 Message[2]= address;
32 Message[3]= index;
33 if((opcode == H2D_CMV_WRITE)||(opcode == H2D_DEBUG_WRITE_DM))
34 memcpy(Message+4, data, size*2);
35 return;
36 }
37
38
39 int main(int argc, char **argv)
40 {
41 int fd;
42 u16 temp=0;
43 u16 rt_buildcode_lsw=0, rt_buildcode_msw=0;
44 u32 rt_buildcode = 0;
45
46 fd=open(IFXMIPS_MEI_DEV, O_RDWR);
47 if(fd<0){
48 printf("\n\n autoboot open device fail");
49 return -1;
50 }
51
52
53 makeCMV(H2D_CMV_READ, INFO, 55, 0, 1, &temp);
54 if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){
55 printf("\n\n read INFO 55 0 fail");
56 return -1;
57 }
58 rt_buildcode_lsw = Message[4];
59
60 makeCMV(H2D_CMV_READ, INFO, 55, 1, 1, &temp);
61 if(ioctl(fd, IFXMIPS_MEI_CMV_WINHOST, &Message)<0){
62 printf("\n\n read INFO 55 1 fail");
63 return -1;
64 }
65 rt_buildcode_msw = Message[4];
66
67 rt_buildcode = rt_buildcode_lsw + (rt_buildcode_msw << 16);
68 printf("date: %d, month: %d, hour: %d, minute: %d\n",
69 (rt_buildcode >> 0) & 0xFF,
70 (rt_buildcode >> 8) & 0xFF,
71 (rt_buildcode >> 16) & 0xFF,
72 (rt_buildcode >> 25) & 0xFF
73 );
74 return 0;
75 }