Revise recent changes to serial driver error handling: Errors other than EINTR may be returned when the driver is used very early in initialization. STM32 SPI driver will now survive repeated initializations

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5026 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2012-08-14 14:42:50 +00:00
parent d7a17871b0
commit 33ae8fdc32
+33 -18
View File
@@ -1368,15 +1368,20 @@ FAR struct spi_dev_s *up_spiinitialize(int port)
priv = &g_spi1dev; priv = &g_spi1dev;
/* Configure SPI1 pins: SCK, MISO, and MOSI */ /* Only configure if the port is not already configured */
stm32_configgpio(GPIO_SPI1_SCK); if ((spi_getreg(priv, STM32_SPI_CR1_OFFSET) & SPI_CR1_SPE) == 0)
stm32_configgpio(GPIO_SPI1_MISO); {
stm32_configgpio(GPIO_SPI1_MOSI); /* Configure SPI1 pins: SCK, MISO, and MOSI */
/* Set up default configuration: Master, 8-bit, etc. */ stm32_configgpio(GPIO_SPI1_SCK);
stm32_configgpio(GPIO_SPI1_MISO);
stm32_configgpio(GPIO_SPI1_MOSI);
spi_portinitialize(priv); /* Set up default configuration: Master, 8-bit, etc. */
spi_portinitialize(priv);
}
} }
else else
#endif #endif
@@ -1387,15 +1392,20 @@ FAR struct spi_dev_s *up_spiinitialize(int port)
priv = &g_spi2dev; priv = &g_spi2dev;
/* Configure SPI2 pins: SCK, MISO, and MOSI */ /* Only configure if the port is not already configured */
stm32_configgpio(GPIO_SPI2_SCK); if ((spi_getreg(priv, STM32_SPI_CR1_OFFSET) & SPI_CR1_SPE) == 0)
stm32_configgpio(GPIO_SPI2_MISO); {
stm32_configgpio(GPIO_SPI2_MOSI); /* Configure SPI2 pins: SCK, MISO, and MOSI */
/* Set up default configuration: Master, 8-bit, etc. */ stm32_configgpio(GPIO_SPI2_SCK);
stm32_configgpio(GPIO_SPI2_MISO);
stm32_configgpio(GPIO_SPI2_MOSI);
spi_portinitialize(priv); /* Set up default configuration: Master, 8-bit, etc. */
spi_portinitialize(priv);
}
} }
else else
#endif #endif
@@ -1406,15 +1416,20 @@ FAR struct spi_dev_s *up_spiinitialize(int port)
priv = &g_spi3dev; priv = &g_spi3dev;
/* Configure SPI3 pins: SCK, MISO, and MOSI */ /* Only configure if the port is not already configured */
stm32_configgpio(GPIO_SPI3_SCK); if ((spi_getreg(priv, STM32_SPI_CR1_OFFSET) & SPI_CR1_SPE) == 0)
stm32_configgpio(GPIO_SPI3_MISO); {
stm32_configgpio(GPIO_SPI3_MOSI); /* Configure SPI3 pins: SCK, MISO, and MOSI */
/* Set up default configuration: Master, 8-bit, etc. */ stm32_configgpio(GPIO_SPI3_SCK);
stm32_configgpio(GPIO_SPI3_MISO);
stm32_configgpio(GPIO_SPI3_MOSI);
spi_portinitialize(priv); /* Set up default configuration: Master, 8-bit, etc. */
spi_portinitialize(priv);
}
} }
#endif #endif