Fix backward wait condition in KL24Z SPI driver

This commit is contained in:
Gregory Nutt 2013-06-20 17:39:42 -06:00
parent d5a0c75bbb
commit 76f9df2941
3 changed files with 32 additions and 16 deletions

View File

@ -488,7 +488,7 @@ static uint16_t spi_send(FAR struct spi_dev_s *dev, uint16_t wd)
/* Make sure that the transmit buffer is empty */ /* Make sure that the transmit buffer is empty */
while ((spi_getreg(priv, KL_SPI_S_OFFSET) & SPI_S_SPTEF) != 0); while ((spi_getreg(priv, KL_SPI_S_OFFSET) & SPI_S_SPTEF) == 0);
/* Write the data to transmitted to the SPI Data Register */ /* Write the data to transmitted to the SPI Data Register */
@ -555,7 +555,7 @@ static void spi_exchange(FAR struct spi_dev_s *dev, FAR const void *txbuffer,
* to the serializer. * to the serializer.
*/ */
while ((spi_getreg(priv, KL_SPI_S_OFFSET) & SPI_S_SPTEF) != 0); while ((spi_getreg(priv, KL_SPI_S_OFFSET) & SPI_S_SPTEF) == 0);
/* Write the data to transmitted to the Transmit Data Register (TDR) */ /* Write the data to transmitted to the Transmit Data Register (TDR) */
@ -675,7 +675,7 @@ FAR struct spi_dev_s *up_spiinitialize(int port)
/* Enable clocking */ /* Enable clocking */
regval = getreg32(KL_SIM_SCGC4); regval = getreg32(KL_SIM_SCGC4);
regval |= SIM_SCGC4_SPI0; regval |= SIM_SCGC4_SPI0;
putreg32(regval, KL_SIM_SCGC4); putreg32(regval, KL_SIM_SCGC4);
} }
@ -694,7 +694,7 @@ FAR struct spi_dev_s *up_spiinitialize(int port)
/* Enable clocking */ /* Enable clocking */
regval = getreg32(KL_SIM_SCGC4); regval = getreg32(KL_SIM_SCGC4);
regval |= SIM_SCGC4_SPI1; regval |= SIM_SCGC4_SPI1;
putreg32(regval, KL_SIM_SCGC4); putreg32(regval, KL_SIM_SCGC4);
} }

View File

@ -66,7 +66,7 @@ extern "C" {
* Public Function Prototypes * Public Function Prototypes
************************************************************************************/ ************************************************************************************/
/**************************************************************************** /************************************************************************************
* Name: up_spiinitialize * Name: up_spiinitialize
* *
* Description: * Description:
@ -78,7 +78,7 @@ extern "C" {
* Returned Value: * Returned Value:
* Valid SPI device structure reference on succcess; a NULL on failure * Valid SPI device structure reference on succcess; a NULL on failure
* *
****************************************************************************/ ************************************************************************************/
struct spi_dev_s; struct spi_dev_s;
FAR struct spi_dev_s *up_spiinitialize(int port); FAR struct spi_dev_s *up_spiinitialize(int port);

View File

@ -116,7 +116,7 @@ is configured to work with the OpenSDA USB CDC/ACM port:
Pin 27 PTA1/TSI0_CH2/UART0_RX/FTM2_CH0 UART1_RX_TGTMCU and D0 (PTA1) Pin 27 PTA1/TSI0_CH2/UART0_RX/FTM2_CH0 UART1_RX_TGTMCU and D0 (PTA1)
Pin 28 PTA2/TSI0_CH3/UART0_TX/FTM2_CH1 UART1_TX_TGTMCU and D1 (PTA2) Pin 28 PTA2/TSI0_CH3/UART0_TX/FTM2_CH1 UART1_TX_TGTMCU and D1 (PTA2)
But the UART Tx/Rx signals are also available on J1: But the UART0 Tx/Rx signals are also available on J1:
---------------- --------- ---------------- ---------
UART0 SIGNAL J1 pin UART0 SIGNAL J1 pin
@ -124,6 +124,8 @@ But the UART Tx/Rx signals are also available on J1:
UART0_RX (PTA1) J1, pin 2 UART0_RX (PTA1) J1, pin 2
UART0_TX (PTA2) J1, pin 4 UART0_TX (PTA2) J1, pin 4
Ground is available on J2 pin 14. 3.3V is available on J3 and J4.
mbed mbed
==== ====
@ -306,16 +308,25 @@ Where <subdir> is one of the following:
CONFIG_ARMV6M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows CONFIG_ARMV6M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows
3. Serial Console. A serial console is required to see the OS test 3. Serial Console. A serial console is required to see the OS test
output. The serial console is configured on UART1 which is available output. The serial console is configured on UART0 which is available
on JP5: on J1:
UART1 RX signal (RXD1) is on PB.4, pin 8, and ---------------- ---------
UART1 TX signal (TXD1) is on PB.5, pin 9. UART0 SIGNAL J1 pin
---------------- ---------
UART0_RX (PTA1) J1, pin 2
UART0_TX (PTA2) J1, pin 4
Ground is available on J2 pin 14. 3.3V is available on J3 and J4.
It is possible to configure NSH to use a USB serial console instead
of an RS-232 serial console. However, that configuration has not
been impelmented as of this writing.
nsh: nsh:
--- ---
Configures the NuttShell (nsh) located at apps/examples/nsh. The Configures the NuttShell (nsh) located at apps/examples/nsh. The
Configuration enables the serial interfaces on UART1. Support for Configuration enables the serial interface on UART0. Support for
builtin applications is disabled. builtin applications is disabled.
NOTES: NOTES:
@ -338,11 +349,16 @@ Where <subdir> is one of the following:
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows
3. Serial Console. A serial console is necessary to interrupt with 3. Serial Console. A serial console is necessary to interrupt with
NSH. The serial console is configured on UART1 which is available NSH. The serial console is configured on UART0 which is available
on JP5: on J1:
UART1 RX signal (RXD1) is on PB.4, pin 8, and ---------------- ---------
UART1 TX signal (TXD1) is on PB.5, pin 9. UART0 SIGNAL J1 pin
---------------- ---------
UART0_RX (PTA1) J1, pin 2
UART0_TX (PTA2) J1, pin 4
Ground is available on J2 pin 14. 3.3V is available on J3 and J4.
It is possible to configure NSH to use a USB serial console instead It is possible to configure NSH to use a USB serial console instead
of an RS-232 serial console. However, that configuration has not of an RS-232 serial console. However, that configuration has not