From e38d5853ad10c635d049caf63fe628f7febd8d64 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 3 May 2017 15:47:09 -1000 Subject: [PATCH] px4fmu-v2:spi_dev_e is now uint32_t in NuttX Using new type of uint32_t for spi device and macros that define a PX4 device on a given BUS and Chip Select --- src/drivers/boards/px4fmu-v2/board_config.h | 32 +++++++++++---------- src/drivers/boards/px4fmu-v2/px4fmu2_init.c | 16 +++++++---- src/drivers/boards/px4fmu-v2/px4fmu_spi.c | 26 ++++++++--------- 3 files changed, 41 insertions(+), 33 deletions(-) diff --git a/src/drivers/boards/px4fmu-v2/board_config.h b/src/drivers/boards/px4fmu-v2/board_config.h index a8e6099bb3..1c9bde1b5f 100644 --- a/src/drivers/boards/px4fmu-v2/board_config.h +++ b/src/drivers/boards/px4fmu-v2/board_config.h @@ -184,23 +184,25 @@ /* End FMUv2 SPI chip selects and DRDY */ /*----------------------------------------------------------*/ -#define PX4_SPI_BUS_SENSORS 1 -#define PX4_SPI_BUS_RAMTRON 2 -#define PX4_SPI_BUS_EXT 4 -#define PX4_SPI_BUS_BARO PX4_SPI_BUS_SENSORS +#define PX4_SPI_BUS_SENSORS 1 +#define PX4_SPI_BUS_RAMTRON 2 +#define PX4_SPI_BUS_EXT 4 +#define PX4_SPI_BUS_BARO PX4_SPI_BUS_SENSORS -/* Use these in place of the spi_dev_e enumeration to select a specific SPI device on SPI1 */ -#define PX4_SPIDEV_GYRO 1 -#define PX4_SPIDEV_ACCEL_MAG 2 -#define PX4_SPIDEV_BARO 3 -#define PX4_SPIDEV_MPU 4 +/* Use these to select a specific SPI device on SPI1 */ -/* External bus */ -#define PX4_SPIDEV_EXT_MPU 10 -#define PX4_SPIDEV_EXT_GYRO 12 -#define PX4_SPIDEV_EXT_ACCEL_MAG 13 -#define PX4_SPIDEV_EXT_BARO 14 -#define PX4_SPIDEV_EXT_BMI 15 +#define PX4_SPIDEV_GYRO PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 1) +#define PX4_SPIDEV_ACCEL_MAG PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 2) +#define PX4_SPIDEV_BARO PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 3) +#define PX4_SPIDEV_MPU PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 4) + +/* FMUv3 SPI on external bus */ + +#define PX4_SPIDEV_EXT_GYRO PX4_MK_SPI_SEL(PX4_SPI_BUS_EXT, 1) +#define PX4_SPIDEV_EXT_ACCEL_MAG PX4_MK_SPI_SEL(PX4_SPI_BUS_EXT, 2) +#define PX4_SPIDEV_EXT_BARO PX4_MK_SPI_SEL(PX4_SPI_BUS_EXT, 3) +#define PX4_SPIDEV_EXT_MPU PX4_MK_SPI_SEL(PX4_SPI_BUS_EXT, 4) +#define PX4_SPIDEV_EXT_BMI PX4_MK_SPI_SEL(PX4_SPI_BUS_EXT, 5) /* I2C busses */ #define PX4_I2C_BUS_EXPANSION 1 diff --git a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c index 07371737df..af2b1c1ee4 100644 --- a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c +++ b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c @@ -614,10 +614,10 @@ __EXPORT int board_app_initialize(uintptr_t arg) /* Configure SPI-based devices */ - spi1 = stm32_spibus_initialize(1); + spi1 = stm32_spibus_initialize(PX4_SPI_BUS_SENSORS); if (!spi1) { - message("[boot] FAILED to initialize SPI port 1\n"); + message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_SENSORS); board_autoled_on(LED_AMBER); return -ENODEV; } @@ -630,10 +630,10 @@ __EXPORT int board_app_initialize(uintptr_t arg) /* Get the SPI port for the FRAM */ - spi2 = stm32_spibus_initialize(2); + spi2 = stm32_spibus_initialize(PX4_SPI_BUS_RAMTRON); if (!spi2) { - message("[boot] FAILED to initialize SPI port 2\n"); + message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_RAMTRON); board_autoled_on(LED_AMBER); return -ENODEV; } @@ -646,7 +646,13 @@ __EXPORT int board_app_initialize(uintptr_t arg) SPI_SETBITS(spi2, 8); SPI_SETMODE(spi2, SPIDEV_MODE3); - spi4 = stm32_spibus_initialize(4); + spi4 = stm32_spibus_initialize(PX4_SPI_BUS_EXT); + + if (!spi4) { + message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_EXT); + board_autoled_on(LED_AMBER); + return -ENODEV; + } /* Default SPI4 to 1MHz and de-assert the known chip selects. */ SPI_SETFREQUENCY(spi4, 10000000); diff --git a/src/drivers/boards/px4fmu-v2/px4fmu_spi.c b/src/drivers/boards/px4fmu-v2/px4fmu_spi.c index f7cd1ee18a..8ad297712f 100644 --- a/src/drivers/boards/px4fmu-v2/px4fmu_spi.c +++ b/src/drivers/boards/px4fmu-v2/px4fmu_spi.c @@ -107,7 +107,7 @@ static void stm32_spi1_initialize(void) # endif } -#endif +#endif // CONFIG_STM32_SPI1 #ifdef CONFIG_STM32_SPI4 /* Verification @@ -136,7 +136,7 @@ static void stm32_spi4_initialize(void) # endif } -#endif +#endif //CONFIG_STM32_SPI4 __EXPORT void stm32_spiinitialize(void) { @@ -154,7 +154,7 @@ __EXPORT void stm32_spiinitialize(void) } #ifdef CONFIG_STM32_SPI1 -__EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected) +__EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, uint32_t devid, bool selected) { /* SPI select is active low, so write !selected to select the device */ @@ -316,23 +316,23 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, break; } -# endif +# endif // defined(BOARD_HAS_VERSIONING) } -__EXPORT uint8_t stm32_spi1status(FAR struct spi_dev_s *dev, enum spi_dev_e devid) +__EXPORT uint8_t stm32_spi1status(FAR struct spi_dev_s *dev, uint32_t devid) { return SPI_STATUS_PRESENT; } -#endif +#endif // CONFIG_STM32_SPI1 #ifdef CONFIG_STM32_SPI2 -__EXPORT void stm32_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected) +__EXPORT void stm32_spi2select(FAR struct spi_dev_s *dev, uint32_t devid, bool selected) { /* there can only be one device on this bus, so always select it */ stm32_gpiowrite(GPIO_SPI2_CS_PD10, !selected); } -__EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid) +__EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, uint32_t devid) { /* FRAM is always present */ return SPI_STATUS_PRESENT; @@ -341,7 +341,7 @@ __EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devi #ifdef CONFIG_STM32_SPI4 -__EXPORT void stm32_spi4select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected) +__EXPORT void stm32_spi4select(FAR struct spi_dev_s *dev, uint32_t devid, bool selected) { /* SPI select is active low, so write !selected to select the device */ @@ -364,7 +364,7 @@ __EXPORT void stm32_spi4select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, } -#else // defined(BOARD_HAS_VERSIONING) +# else // defined(BOARD_HAS_VERSIONING) /* SPI select is active low, so write !selected to select the device */ /* Verification * PA5 PA6 PA7 PB0 PB1 PB4 PC1 PC2 PC13 PC14 PC15 PD7 PD15 PE2 PE4 PE5 PE6 @@ -443,14 +443,14 @@ __EXPORT void stm32_spi4select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, } -#endif +# endif // defined(BOARD_HAS_VERSIONING) } -__EXPORT uint8_t stm32_spi4status(FAR struct spi_dev_s *dev, enum spi_dev_e devid) +__EXPORT uint8_t stm32_spi4status(FAR struct spi_dev_s *dev, uint32_t devid) { return SPI_STATUS_PRESENT; } -#endif +#endif // CONFIG_STM32_SPI4 /* V2, V2M SPI1 All signals SPI4, V3 ALL signals */ /* Verification