Arduino Zero TCC Capture

I am looking to count events using TCC2 (SAMD21), specifically I have a step and dir pin and would like the dir pin to change direction of count and the step pin to increment/decrease count.

I have not been able to get his working any if anyone might see my issue?

#define WAIT_TCC2_SYNC() while(TCC2->SYNCBUSY.reg)

void enableEIC(void)
{
PM->APBAMASK.reg |= PM_APBAMASK_EIC;
if (EIC->CTRL.bit.ENABLE == 0)
{
// Enable GCLK for IEC (External Interrupt Controller)
GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EIC));

// Enable EIC
EIC->CTRL.bit.ENABLE = 1;
while (EIC->STATUS.bit.SYNCBUSY == 1) { }
}
}

void setupStepEvent(void)
{
//we will set up the EIC to generate an even on rising edge of step pin
//make sure EIC is setup
enableEIC();

// Assign step pin to EIC
// Step pin is PA11, EXTINT11
pinPeripheral(PIN_STEP_INPUT, PIO_EXTINT);

//set up the direction pin PA10 to trigger external interrupt
pinPeripheral(PIN_DIR_INPUT, PIO_EXTINT); //EXTINT10

//***** setup EIC ******
EIC->EVCTRL.bit.EXTINTEO11=1; //enable event for EXTINT11
EIC->EVCTRL.bit.EXTINTEO10=1; //enable event for EXTINT10
//setup up external interurpt 11 to be rising edge triggered
//setup up external interurpt 10 to be both edge triggered
EIC->CONFIG[1].reg |= EIC_CONFIG_SENSE3_RISE | EIC_CONFIG_SENSE2_BOTH;

//diable actually generating an interrupt, we only want event triggered
EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT11;
EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT10;

//**** setup the event system ***
// Enable GCLK for EVSYS channel 0
PM->APBCMASK.reg |= PM_APBCMASK_EVSYS;

GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EVSYS_CHANNEL_0));
while (GCLK->STATUS.bit.SYNCBUSY);
GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EVSYS_CHANNEL_1));
while (GCLK->STATUS.bit.SYNCBUSY);

//setup the step pin to trigger event 0 on the TCC2 (step)
EVSYS->CHANNEL.reg=EVSYS_CHANNEL_CHANNEL(0)
| EVSYS_CHANNEL_EDGSEL_RISING_EDGE
| EVSYS_CHANNEL_EVGEN(EVSYS_ID_GEN_EIC_EXTINT_11)
| EVSYS_CHANNEL_PATH_ASYNCHRONOUS;

EVSYS->USER.reg = EVSYS_USER_CHANNEL(1)
| EVSYS_USER_USER(EVSYS_ID_USER_TCC2_EV_0);

//setup the dir pin to trigger event 2 on the TCC2 (dir change)
EVSYS->CHANNEL.reg=EVSYS_CHANNEL_CHANNEL(1)
| EVSYS_CHANNEL_EDGSEL_RISING_EDGE
| EVSYS_CHANNEL_EVGEN(EVSYS_ID_GEN_EIC_EXTINT_10)
| EVSYS_CHANNEL_PATH_ASYNCHRONOUS;

EVSYS->USER.reg = EVSYS_USER_CHANNEL(2)
| EVSYS_USER_USER(EVSYS_ID_USER_TCC2_EV_1);

//**** setup the Timer counter ******
PM->APBCMASK.reg |= PM_APBCMASK_TCC2;
// Enable GCLK for TC4 and TC5 (timer counter input clock)
GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_TCC2_TC3));
while (GCLK->STATUS.bit.SYNCBUSY);

TCC2->CTRLA.reg= TCC_CTRLA_SWRST; //reset TCC2
WAIT_TCC2_SYNC();
while(TCC2->CTRLA.bit.SWRST ==1);

TCC2->EVCTRL.reg=TCC_EVCTRL_EVACT0_COUNTEV | TCC_EVCTRL_EVACT1_DIR | TCC_EVCTRL_TCEI0 | TCC_EVCTRL_TCEI1;
WAIT_TCC2_SYNC();

TCC2->PER.reg=0x07FFFFF;
WAIT_TCC2_SYNC();

TCC2->COUNT.reg=0;
WAIT_TCC2_SYNC();

//TCC2->CTRLBSET.bit.CMD=TCC_CTRLBSET_CMD_RETRIGGER;
checkDirPin();

WAIT_TCC2_SYNC();
TCC2->CTRLA.reg |=TCC_CTRLA_ENABLE;
WAIT_TCC2_SYNC();

checkDirPin();
}