Commit db66c01c authored by Tristan Gingold's avatar Tristan Gingold

testbench: minimal fc initialization.

parent bf9b1ed2
......@@ -21,6 +21,14 @@
#include "wrtd-fw-internals.h"
#ifdef SIMULATION
#define UDELAY(X)
#define MDELAY(X)
#else
#define UDELAY(X) udelay(X)
#define MDELAY(X) mdelay(X)
#endif
/**
* fd_do_reset
* The reset function (by Tomasz)
......@@ -35,21 +43,21 @@ static void fd_do_reset(int hw_reset)
/* clear RSTS_RST_FMC bit, set RSTS_RST_CORE bit*/
fd_writel( FD_RSTR_LOCK_W(0xdead) | FD_RSTR_RST_CORE_MASK,
FD_REG_RSTR);
udelay(10000);
UDELAY(10000);
fd_writel( FD_RSTR_LOCK_W(0xdead) | FD_RSTR_RST_CORE_MASK
| FD_RSTR_RST_FMC_MASK, FD_REG_RSTR);
/* TPS3307 supervisor needs time to de-assert master reset */
mdelay(600);
MDELAY(600);
return;
}
/* clear RSTS_RST_CORE bit, set RSTS_RST_FMC bit */
fd_writel( FD_RSTR_LOCK_W(0xdead) | FD_RSTR_RST_FMC_MASK,
FD_REG_RSTR);
udelay(1000);
UDELAY(1000);
fd_writel( FD_RSTR_LOCK_W(0xdead) | FD_RSTR_RST_FMC_MASK
| FD_RSTR_RST_CORE_MASK, FD_REG_RSTR);
udelay(1000);
UDELAY(1000);
}
/* Some init procedures to be intermixed with subsystems */
......@@ -71,7 +79,7 @@ int fd_reset_again()
/* Reset the FD core once we have proper reference/TDC clocks */
fd_do_reset( 0 /* not hw */);
mdelay(10);
MDELAY(10);
if (! ( fd_readl(FD_REG_GCR) & FD_GCR_DDR_LOCKED) )
{
......@@ -118,3 +126,20 @@ int fd_init(void)
return 0;
}
#ifdef SIMULATION
int fd_sim_init(void)
{
int err;
pr_debug("Initializing the Fine Delay board...\n");
fd_do_reset(1);
err = fd_reset_again();
if (err)
return err;
return 0;
}
#endif
......@@ -74,6 +74,7 @@ void fd_gpio_val(int pin, int val);
void fd_gpio_set_clr(int pin, int set);
int fd_init();
int fd_sim_init(void);
#define fd_gpio_set(pin) fd_gpio_set_clr((pin), 1)
#define fd_gpio_clr(pin) fd_gpio_set_clr((pin), 0)
......@@ -113,4 +114,4 @@ static inline uint64_t div_u64(uint64_t dividend, uint32_t divisor)
}
#endif
\ No newline at end of file
#endif
......@@ -84,11 +84,6 @@ static void wr_update_link(void)
{
int i;
if (is_simulation) {
wr_state = WR_LINK_SYNCED;
return;
}
switch(wr_state) {
case WR_LINK_OFFLINE:
for(i = 0; i < FD_NUM_CHANNELS; i++)
......@@ -994,6 +989,8 @@ static int wrtd_o_init(void)
if (!is_simulation)
fd_init();
else
fd_sim_init();
pr_debug("rt-output firmware initialized.\n\r");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment