projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Reset interrupt flags before TX in CC1200 driver
[fw/altos]
/
src
/
lpc
/
ao_spi_lpc.c
diff --git
a/src/lpc/ao_spi_lpc.c
b/src/lpc/ao_spi_lpc.c
index 12d448723cdb81cb722c64ea06df140622ada329..bc8f9c690cbcde29a3220c3d864ec9b4b03130c3 100644
(file)
--- a/
src/lpc/ao_spi_lpc.c
+++ b/
src/lpc/ao_spi_lpc.c
@@
-21,8
+21,6
@@
static uint8_t ao_spi_mutex[LPC_NUM_SPI];
static struct lpc_ssp * const ao_lpc_ssp[LPC_NUM_SPI] = { &lpc_ssp0, &lpc_ssp1 };
static struct lpc_ssp * const ao_lpc_ssp[LPC_NUM_SPI] = { &lpc_ssp0, &lpc_ssp1 };
-static uint8_t spi_dev_null;
-
#define tx_busy(lpc_ssp) (lpc_ssp->sr & ((1 << LPC_SSP_SR_BSY) | (1 << LPC_SSP_SR_TNF))) != (1 << LPC_SSP_SR_TNF)
#define rx_busy(lpc_ssp) (lpc_ssp->sr & ((1 << LPC_SSP_SR_BSY) | (1 << LPC_SSP_SR_RNE))) != (1 << LPC_SSP_SR_RNE)
#define tx_busy(lpc_ssp) (lpc_ssp->sr & ((1 << LPC_SSP_SR_BSY) | (1 << LPC_SSP_SR_TNF))) != (1 << LPC_SSP_SR_TNF)
#define rx_busy(lpc_ssp) (lpc_ssp->sr & ((1 << LPC_SSP_SR_BSY) | (1 << LPC_SSP_SR_RNE))) != (1 << LPC_SSP_SR_RNE)
@@
-42,12
+40,12
@@
static uint8_t spi_dev_null;
/* recv a byte */ \
get lpc_ssp->dr; \
} \
/* recv a byte */ \
get lpc_ssp->dr; \
} \
- } while (0)
;
+ } while (0)
void
void
-ao_spi_send(void *block, uint16_t len, uint8_t id)
+ao_spi_send(
const
void *block, uint16_t len, uint8_t id)
{
{
-
uint8_t
*b = block;
+
const uint8_t
*b = block;
struct lpc_ssp *lpc_ssp = ao_lpc_ssp[id];
spi_loop(len, *b++, (void));
struct lpc_ssp *lpc_ssp = ao_lpc_ssp[id];
spi_loop(len, *b++, (void));
@@
-71,9
+69,9
@@
ao_spi_recv(void *block, uint16_t len, uint8_t id)
}
void
}
void
-ao_spi_duplex(void *out, void *in, uint16_t len, uint8_t id)
+ao_spi_duplex(
const
void *out, void *in, uint16_t len, uint8_t id)
{
{
-
uint8_t
*o = out;
+
const uint8_t
*o = out;
uint8_t *i = in;
struct lpc_ssp *lpc_ssp = ao_lpc_ssp[id];
uint8_t *i = in;
struct lpc_ssp *lpc_ssp = ao_lpc_ssp[id];
@@
-182,7
+180,7
@@
ao_spi_init(void)
#endif
#if SPI_MOSI1_P0_21
#endif
#if SPI_MOSI1_P0_21
- lpc_ioconf.pio
1
_21 = ao_lpc_alternate(LPC_IOCONF_FUNC_PIO0_21_MOSI1);
+ lpc_ioconf.pio
0
_21 = ao_lpc_alternate(LPC_IOCONF_FUNC_PIO0_21_MOSI1);
#define HAS_MOSI1
#endif
#if SPI_MOSI1_P1_22
#define HAS_MOSI1
#endif
#if SPI_MOSI1_P1_22
@@
-199,7
+197,8
@@
ao_spi_init(void)
/* Turn on the clock */
lpc_scb.ssp1clkdiv = 1;
/* Turn on the clock */
lpc_scb.ssp1clkdiv = 1;
- /* De-assert reset */
+ /* Reset the device */
+ lpc_scb.presetctrl &= ~(1 << LPC_SCB_PRESETCTRL_SSP1_RST_N);
lpc_scb.presetctrl |= (1 << LPC_SCB_PRESETCTRL_SSP1_RST_N);
ao_spi_channel_init(1);
#endif /* HAS_SPI_1 */
lpc_scb.presetctrl |= (1 << LPC_SCB_PRESETCTRL_SSP1_RST_N);
ao_spi_channel_init(1);
#endif /* HAS_SPI_1 */