Ktam3874/pitx software guide – Kontron KTAM3874-pITX User Manual

Page 61

Advertising
background image

KTD-S0057-I

Page 57 Linux® Programming Examples (DebianTM)


KTAM3874/pITX Software Guide


int open_reg_range (void)
{

fd = open ("/dev/mem", O_RDWR | O_SYNC);

if (fd < 0)

return

-1;

map_base = mmap (0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd,

TIMER_BASE

&

~MAP_MASK);

if (map_base == (void *) -1)

return

-1;

virt_addr = map_base + (TIMER_BASE & MAP_MASK);

return

0;

}


void close_reg_range (void)
{

munmap (map_base, MAP_SIZE);

close

(fd);

}


inline unsigned long read_timer_reg (unsigned long reg)
{

return *((unsigned long *) (virt_addr + reg));

}


inline void write_timer_reg (unsigned long reg, unsigned long val)
{

*((unsigned long *) (virt_addr + reg)) = val;

}


int timer_reset (void)
{
int

i;

/* Reset the timer */

write_timer_reg (TSICR, TSICR_SFT | TSICR_POSTED);

for (i = 0; i < RESET_TIMEOUT; i++)

if (! (read_timer_reg (TIOCP_CFG) & TIOCP_SOFTRES)) break;

if (i >= RESET_TIMEOUT)

return

-1;

/* Set to smart-idle mode */

write_timer_reg (TIOCP_CFG, read_timer_reg (TIOCP_CFG) | 0x200 | TIOCP_SMARTIDLE);

/* Match hardware reset default of posted mode */

write_timer_reg (TSICR, TSICR_POSTED);

Advertising
This manual is related to the following products: