version 1.2, 2007/10/29 15:10:34 |
version 1.4, 2007/11/04 22:55:58 |
|
|
* testarm Real Time Clock driver. |
* testarm Real Time Clock driver. |
*/ |
*/ |
int tartc_attach(struct device *, uint32_t loc, uint8_t flags); |
int tartc_attach(struct device *, uint32_t loc, uint8_t flags); |
|
void tartc_interrupt(struct device *); |
|
|
|
|
struct driver tartc_dr = { |
struct driver tartc_dr = { |
sizeof(struct tartc_dd), |
sizeof(struct tartc_dd), |
tartc_attach, |
tartc_attach, |
NULL |
NULL, |
|
tartc_interrupt |
}; |
}; |
|
|
|
|
|
|
|
|
printf("testarm Real Time Clock (%d seconds past Epoch)\n", seconds); |
printf("testarm Real Time Clock (%d seconds past Epoch)\n", seconds); |
|
|
|
/* XXX set timer */ |
|
bus_write_1(ddp->td_bushandlep, ddp->td_ioaddr + TARTC_OFF_TMRINTRFREQ, 1); |
|
|
return(0); |
return(0); |
|
|
|
} |
|
|
|
|
|
void |
|
tartc_interrupt(struct device *self) |
|
{ |
|
/* TODO */ |
|
struct tartc_dd *ddp = self->dv_devdata; |
|
|
|
/* acknowledge one timer intr */ |
|
bus_write_1(ddp->td_bushandlep, ddp->td_ioaddr + TARTC_OFF_TMRINTRACK, 0xff); |
|
|
|
/* |
|
* Update seconds and print it. |
|
*/ |
|
bus_write_1(ddp->td_bushandlep, ddp->td_ioaddr + TARTC_OFF_CLOCKUPDATE, 0xff); |
|
printf("tartc intr: %d seconds past Epoch\n", |
|
bus_read_4(ddp->td_bushandlep, ddp->td_ioaddr + TARTC_OFF_READSECONDS)); |
|
|
|
printf("tartc intr\n"); |
} |
} |
|
|