From 18bcbc3d284fbcf1b0a4a97170d8a57029fddb2e Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sat, 13 Oct 2012 16:56:04 -0700 Subject: [PATCH] Consolidate ssp_read and ssp_write into a single function, ssp_transfer. SSP bus transfers are bi-directional -- when bytes are written, they are also read. --- include/libopencm3/lpc43xx/ssp.h | 4 +--- lib/lpc43xx/ssp.c | 26 ++++++-------------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/include/libopencm3/lpc43xx/ssp.h b/include/libopencm3/lpc43xx/ssp.h index a60d5bda..ea10bccd 100644 --- a/include/libopencm3/lpc43xx/ssp.h +++ b/include/libopencm3/lpc43xx/ssp.h @@ -194,9 +194,7 @@ void ssp_init(ssp_num_t ssp_num, ssp_master_slave_t master_slave, ssp_slave_option_t slave_option); -uint16_t ssp_read(ssp_num_t ssp_num); - -void ssp_write(ssp_num_t ssp_num, uint16_t data); +u16 ssp_transfer(ssp_num_t ssp_num, u16 data); END_DECLS diff --git a/lib/lpc43xx/ssp.c b/lib/lpc43xx/ssp.c index 91e03241..1601c4b9 100644 --- a/lib/lpc43xx/ssp.c +++ b/lib/lpc43xx/ssp.c @@ -89,25 +89,6 @@ void ssp_init(ssp_num_t ssp_num, SSP_CR1(ssp_port) = (SSP_ENABLE | mode | master_slave | slave_option); } -/* -* This Function Wait until Data RX Ready, and return Data Read from SSP. -*/ -uint16_t ssp_read(ssp_num_t ssp_num) -{ - uint32_t ssp_port; - - if (ssp_num == SSP0_NUM) { - ssp_port = SSP0; - } else { - ssp_port = SSP1; - } - - /* Wait Until Data Received (Rx FIFO not Empty) */ - while ((SSP_SR(ssp_port) & SSP_SR_RNE) == 0); - - return SSP_DR(ssp_port); -} - void ssp_wait_until_not_busy(ssp_num_t ssp_num) { uint32_t ssp_port; @@ -122,7 +103,7 @@ void ssp_wait_until_not_busy(ssp_num_t ssp_num) } /* This Function Wait Data TX Ready, and Write Data to SSP */ -void ssp_write(ssp_num_t ssp_num, uint16_t data) +u16 ssp_transfer(ssp_num_t ssp_num, u16 data) { uint32_t ssp_port; @@ -147,6 +128,11 @@ void ssp_write(ssp_num_t ssp_num, uint16_t data) * example... */ ssp_wait_until_not_busy(ssp_num); + + /* Wait Until Data Received (Rx FIFO not Empty) */ + while( (SSP_SR(ssp_port) & SSP_SR_RNE) == 0); + + return SSP_DR(ssp_port); } /**@}*/