icE1usb fw: Add access functions for the 'time' hardware
The hardware has a tick counter (constantly incremented every cycle) and a pps counter (which is the tick counter captured at the pps edge). Signed-off-by: Sylvain Munaut <tnt@246tNt.com> Change-Id: I2122ea3d636c8a430c6eb945b0c11e26e02fee43
This commit is contained in:
parent
be5a53a4fe
commit
00b57625bc
|
@ -122,6 +122,34 @@ e1_tick_read(int port)
|
||||||
return misc_regs->e1_tick[port].tx;
|
return misc_regs->e1_tick[port].tx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
time_elapsed(uint32_t ref, unsigned int tick)
|
||||||
|
{
|
||||||
|
return ((misc_regs->time.now - ref) & 0x7fffffff) >= tick;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
delay(unsigned int ms)
|
||||||
|
{
|
||||||
|
uint32_t ref = misc_regs->time.now;
|
||||||
|
ms *= SYS_CLK_FREQ / 1000;
|
||||||
|
while (!time_elapsed(ref, ms));
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
time_pps_read(void)
|
||||||
|
{
|
||||||
|
return misc_regs->time.pps;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
time_now_read(void)
|
||||||
|
{
|
||||||
|
return misc_regs->time.now;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
reboot(int fw)
|
reboot(int fw)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,4 +36,9 @@ void e1_led_set(bool enable, uint8_t cfg);
|
||||||
|
|
||||||
uint16_t e1_tick_read(int port);
|
uint16_t e1_tick_read(int port);
|
||||||
|
|
||||||
|
bool time_elapsed(uint32_t ref, unsigned int tick);
|
||||||
|
void delay(unsigned int ms);
|
||||||
|
uint32_t time_pps_read(void);
|
||||||
|
uint32_t time_now_read(void);
|
||||||
|
|
||||||
void reboot(int fw);
|
void reboot(int fw);
|
||||||
|
|
Loading…
Reference in New Issue