Lanner LEC-2010 User Manual
Page 59
![background image](https://www.manualsdir.com/files/820382/content/doc059.png)
LEC-2010 Fanless Embedded System User’s Manual
59
help();
return -1;
}
if( strcmp(argv[1], "-wr") == 0 )
{
if( argc != 3 )
{
help();
return -1;
}
write_w83627_reg(0x8, 0xf6, 0);
//LDN=8, CRF6, stop timer first
//clear status bit
write_w83627_reg(0x8, 0xf7, read_w83627_reg(0x8, 0xf7) & 0xef);
time = atoi(argv[2]);
printf("Setting Watchdog timer for System Reset...\n");
set_watchdog(time);
return 0;
}
else
{
help();
return -1;
}
return 0;
}
int set_watchdog(int time)
{
int temp;
outportb(INDEX_PORT, 0x87);
delay(1);
outportb(INDEX_PORT, 0x87);
//Entering
W83627HF Configuration
temp = read_w83627_reg(0, 0x2b);
//LDN=0,
CR2B
temp &= 0xf3;
temp |= 0x04;
write_w83627_reg(0, 0x2b, temp);
//set watchdog pin
write_w83627_reg(0x8,
0xf6,
0);
//LDN=8, CRF6, stop timer first
write_w83627_reg(0x8, 0xf5, read_w83627_reg(0x8, 0xf5) & 0xf7);
//;set
second
write_w83627_reg(0x8, 0xf7, read_w83627_reg(0x8, 0xf7) & 0xef);
//;clear
status
write_w83627_reg(0x8, 0x30, read_w83627_reg(0x8, 0x30) | 0x01);
//;enable
LDN8
temp = time;
write_w83627_reg(0x8,
0xf6,
temp);
//LDN=8, CRF6, set
watchdog timer time-out value
outportb(INDEX_PORT, 0xaa);
//Exit
W83627HF
Configuration
return 0;
}
int read_w83627_reg(int LDN, int reg)
{
outportb(INDEX_PORT, 0x07); //LDN register
delay(1);
outportb(DATA_PORT, LDN);
delay(1);
outportb(INDEX_PORT, reg);
delay(1);
return inportb(DATA_PORT);
}