fw: Update the helpers in misc.{c,h} for the new tick measurement hw

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ia881fead7a40f773969a016db05bea0a1fa1604f
This commit is contained in:
Sylvain Munaut 2024-04-29 16:15:43 +02:00
parent be4564a224
commit 95a72df387
4 changed files with 43 additions and 14 deletions

View File

@ -15,10 +15,11 @@
struct misc {
uint32_t warmboot;
uint32_t _rsvd0[3];;
struct {
uint16_t rx;
uint16_t _rsvd1;
} e1_tick[2];
union {
uint32_t e1_tick_sel;
uint16_t e1_tick[2];
};
uint32_t _rsvd1;
struct {
uint32_t _rsvd2;
uint32_t now;
@ -29,10 +30,15 @@ static volatile struct misc * const misc_regs = (void*)(MISC_BASE);
void
e1_tick_read(uint16_t *ticks)
e1_tick_sel(int type)
{
ticks[0] = misc_regs->e1_tick[0].rx;
ticks[1] = misc_regs->e1_tick[1].rx;
misc_regs->e1_tick_sel = (type << 16) | type;
}
uint16_t
e1_tick_read(int port)
{
return misc_regs->e1_tick[port];
}

View File

@ -10,6 +10,14 @@
#include <stdbool.h>
#include <stdint.h>
void e1_tick_read(uint16_t *ticks);
enum e1_tick_type {
TICK_TX = 0,
TICK_RX_PULSE = 1,
TICK_RX_SAMPLE = 2,
TICK_RX_ONE = 3,
};
void e1_tick_sel(int type);
uint16_t e1_tick_read(int port);
void reboot(int fw);

View File

@ -21,11 +21,12 @@ struct misc {
uint8_t _rsvd;
} gpio;
uint32_t e1_led;
uint32_t _rsvd;
struct {
uint16_t rx;
uint16_t tx;
} e1_tick[2];
uint32_t _rsvd0;
union {
uint32_t e1_tick_sel;
uint16_t e1_tick[2];
};
uint32_t _rsvd1;
struct {
uint32_t pps;
uint32_t now;
@ -116,10 +117,16 @@ e1_platform_led_set(int port, enum e1_platform_led led,
}
void
e1_tick_sel(int type)
{
misc_regs->e1_tick_sel = (type << 16) | type;
}
uint16_t
e1_tick_read(int port)
{
return misc_regs->e1_tick[port].tx;
return misc_regs->e1_tick[port];
}

View File

@ -34,6 +34,14 @@ void e1_led_run(void);
void e1_led_pause(void);
void e1_led_set(bool enable, uint8_t cfg);
enum e1_tick_type {
TICK_TX = 0,
TICK_RX_PULSE = 1,
TICK_RX_SAMPLE = 2,
TICK_RX_ONE = 3,
};
void e1_tick_sel(int type);
uint16_t e1_tick_read(int port);
bool time_elapsed(uint32_t ref, unsigned int tick);