diff options
author | Dominik Sliwa <dominik.sliwa@toradex.com> | 2018-03-12 16:35:59 +0100 |
---|---|---|
committer | Dominik Sliwa <dominik.sliwa@toradex.com> | 2018-03-12 16:39:42 +0100 |
commit | 4d55f719bb2ac2875ad736e10f22a70eac7c3284 (patch) | |
tree | 7c2e423d25266a69ee2cdb71b76e78b9fad77591 /drivers/fsl_dspi.c | |
parent | 4a48136e9c6d55ff9d9427a91ef43d44d26333d7 (diff) |
can, adc fixes
CAN:
-clear CANINTF_TX on read, this improves TX performance,
-fix possible race-condition and implement errata 5641
ADC
-allow for non-bulk read
Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'drivers/fsl_dspi.c')
-rw-r--r-- | drivers/fsl_dspi.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/fsl_dspi.c b/drivers/fsl_dspi.c index 0da640a..cacb52a 100644 --- a/drivers/fsl_dspi.c +++ b/drivers/fsl_dspi.c @@ -1486,10 +1486,23 @@ void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle) /* Decrease remaining receive byte count */ --handle->remainingReceiveByteCount; - if (handle->remainingSendByteCount == 0){ + if (handle->remainingSendByteCount == 0 && handle->rxData){ if ( *(handle->rxData - 2) == APALIS_TK1_K20_READ_INST) { base->PUSHR_SLAVE = registers[dataReceived]; + switch (dataReceived) + { + case APALIS_TK1_K20_IRQREG: + registers[APALIS_TK1_K20_IRQREG] = 0; + break; + case APALIS_TK1_K20_CANREG: + registers[APALIS_TK1_K20_CANREG] &= ~0x10; + break; + case APALIS_TK1_K20_CANREG + APALIS_TK1_K20_CAN_OFFSET: + registers[APALIS_TK1_K20_CANREG + + APALIS_TK1_K20_CAN_OFFSET] &= ~0x10; + break; + } } else { @@ -1505,7 +1518,7 @@ void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle) } else { - dataSend = dataReceived; + dataSend = 0x44; } --handle->remainingSendByteCount; |