From 3ade7c303a8ac2989a1dae2ce945abdb2e40396b Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 3 May 2017 15:47:10 -1000 Subject: [PATCH] px4fmu-v4:spi_dev_e is now uint32_t in NuttX Using new type of uint32_t for spi device and macr that define a PX4 device on a given BUS and Chip Select --- src/drivers/boards/px4fmu-v4/board_config.h | 33 ++++++++++----------- src/drivers/boards/px4fmu-v4/px4fmu_init.c | 2 +- src/drivers/boards/px4fmu-v4/px4fmu_spi.c | 10 +++---- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/drivers/boards/px4fmu-v4/board_config.h b/src/drivers/boards/px4fmu-v4/board_config.h index 3acdc60bbd..f8cecf77e4 100644 --- a/src/drivers/boards/px4fmu-v4/board_config.h +++ b/src/drivers/boards/px4fmu-v4/board_config.h @@ -134,28 +134,25 @@ #define PX4_SPI_BUS_RAMTRON 2 #define PX4_SPI_BUS_BARO PX4_SPI_BUS_RAMTRON -/* 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_MPU 4 -#define PX4_SPIDEV_HMC 5 -#define PX4_SPIDEV_ICM 6 -#define PX4_SPIDEV_LIS 7 -#define PX4_SPIDEV_BMI 8 -#define PX4_SPIDEV_BMA 9 -#define PX4_SPIDEV_ICM_20608 10 -#define PX4_SPIDEV_ICM_20602 11 -#define PX4_SPIDEV_BMI055_ACC 12 -#define PX4_SPIDEV_BMI055_GYR 13 +/* Use these in place of the uint32_t enumeration to select a specific SPI device on SPI1 */ +#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_MPU PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 4) +#define PX4_SPIDEV_HMC PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 5) +#define PX4_SPIDEV_ICM PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 6) +#define PX4_SPIDEV_LIS PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 7) +#define PX4_SPIDEV_BMI PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 8) +#define PX4_SPIDEV_BMA PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 9) +#define PX4_SPIDEV_ICM_20608 PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 10) +#define PX4_SPIDEV_ICM_20602 PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 11) +#define PX4_SPIDEV_BMI055_ACC PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 12) +#define PX4_SPIDEV_BMI055_GYR PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSORS, 13) /* onboard MS5611 and FRAM are both on bus SPI2 * spi_dev_e:SPIDEV_FLASH has the value 2 and is used in the NuttX ramtron driver - * use 3 for the barometer to differentiate + * PX4_MK_SPI_SEL differentiate by adding in PX4_SPI_DEVICE_ID */ -#define PX4_SPIDEV_BARO 3 -#if (PX4_SPIDEV_BARO == SPIDEV_FLASH) -#error PX4_SPIDEV_BARO must not be equal to SPIDEV_FLASH as they share the same bus -#endif +#define PX4_SPIDEV_BARO PX4_MK_SPI_SEL(PX4_SPI_BUS_BARO, 3) /* I2C busses */ #define PX4_I2C_BUS_EXPANSION 1 diff --git a/src/drivers/boards/px4fmu-v4/px4fmu_init.c b/src/drivers/boards/px4fmu-v4/px4fmu_init.c index 7258133d1d..fa3684c8c2 100644 --- a/src/drivers/boards/px4fmu-v4/px4fmu_init.c +++ b/src/drivers/boards/px4fmu-v4/px4fmu_init.c @@ -498,7 +498,7 @@ __EXPORT int board_app_initialize(uintptr_t arg) SPI_SETFREQUENCY(spi2, 20 * 1000 * 1000); SPI_SETBITS(spi2, 8); SPI_SETMODE(spi2, SPIDEV_MODE3); - SPI_SELECT(spi2, SPIDEV_FLASH, false); + SPI_SELECT(spi2, SPIDEV_FLASH(0), false); SPI_SELECT(spi2, PX4_SPIDEV_BARO, false); #ifdef CONFIG_MMCSD diff --git a/src/drivers/boards/px4fmu-v4/px4fmu_spi.c b/src/drivers/boards/px4fmu-v4/px4fmu_spi.c index 2dd02ba0d0..ff90c729cc 100644 --- a/src/drivers/boards/px4fmu-v4/px4fmu_spi.c +++ b/src/drivers/boards/px4fmu-v4/px4fmu_spi.c @@ -99,7 +99,7 @@ __EXPORT void stm32_spiinitialize(int mask) } -__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 */ @@ -142,19 +142,19 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, } } -__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; } #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) { /* SPI select is active low, so write !selected to select the device */ switch (devid) { - case SPIDEV_FLASH: + case SPIDEV_FLASH(0): /* Making sure the other peripherals are not selected */ stm32_gpiowrite(GPIO_SPI2_CS_MS5611, 1); stm32_gpiowrite(GPIO_SPI2_CS_FRAM, !selected); @@ -171,7 +171,7 @@ __EXPORT void stm32_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, } } -__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;