FreeCalypso > hg > freecalypso-tools
diff target-utils/simtest/setup.c @ 457:d96ea6ae6aa5
simtest: setup implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 09 Feb 2019 17:15:57 +0000 |
parents | |
children | 06ad5e30e8d0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/simtest/setup.c Sat Feb 09 17:15:57 2019 +0000 @@ -0,0 +1,56 @@ +#include "types.h" +#include "abbdefs.h" +#include "simregs.h" + +#define WAIT_ONE_TDMA 48000 + +extern u16 abb_reg_read(); +extern void abb_reg_write(); + +u16 conf1_reg; + +void +cmd_setup(argbulk) + char *argbulk; +{ + u16 abb_sim_reg; + + abb_sim_reg = abb_reg_read(VRPCSIM); + if (!(abb_sim_reg & 2)) { + printf("ERROR: VRSIM is not enabled\n"); + return; + } + if (!(abb_sim_reg & 4)) { + printf("ERROR: VRSIM is not in proper regulation\n"); + return; + } + + /* TI's SIM_ManualStart() code follows */ + SIMREGS.conf1 = conf1_reg = 0x8004; + SIMREGS.cmd = SIM_CMD_CLKEN; + + SIMREGS.cmd = SIM_CMD_CLKEN | SIM_CMD_STOP; + wait_ARM_cycles(WAIT_ONE_TDMA * 4); + + SIMREGS.cmd = SIM_CMD_CLKEN | SIM_CMD_SWRST; + wait_ARM_cycles(WAIT_ONE_TDMA); + + SIMREGS.conf2 = 0x0940; + + //enter in manual mode to start the ATR sequence + SIMREGS.conf1 = conf1_reg |= SIM_CONF1_BYPASS; + wait_ARM_cycles(WAIT_ONE_TDMA); + + SIMREGS.conf1 = conf1_reg |= SIM_CONF1_SVCCLEV; + wait_ARM_cycles(WAIT_ONE_TDMA); + + abb_sim_reg |= 8; + abb_reg_write(VRPCSIM, abb_sim_reg); + wait_ARM_cycles(WAIT_ONE_TDMA); + + SIMREGS.conf1 = conf1_reg &= ~SIM_CONF1_SIOLOW; + wait_ARM_cycles(WAIT_ONE_TDMA); + + SIMREGS.conf1 = conf1_reg |= SIM_CONF1_SCLKEN; + SIMREGS.conf1 = conf1_reg &= ~SIM_CONF1_TXRX; //set to receive mode +}