diff --git a/platforms/common/include/px4_platform_common/board_common.h b/platforms/common/include/px4_platform_common/board_common.h index 53a3eaa571..d6f83e3cb5 100644 --- a/platforms/common/include/px4_platform_common/board_common.h +++ b/platforms/common/include/px4_platform_common/board_common.h @@ -262,6 +262,7 @@ #if defined(BOARD_HAS_HW_VERSIONING) # define BOARD_HAS_VERSIONING 1 +# define HW_VER_REV(v,r) ((uint32_t)((v) & 0xff) << 8) | ((uint32_t)(r) & 0xff) #endif /* Default LED logical to color mapping */ diff --git a/platforms/common/include/px4_platform_common/spi.h b/platforms/common/include/px4_platform_common/spi.h index aa71895744..9cf48939ff 100644 --- a/platforms/common/include/px4_platform_common/spi.h +++ b/platforms/common/include/px4_platform_common/spi.h @@ -71,7 +71,7 @@ struct px4_spi_bus_t { struct px4_spi_bus_all_hw_t { px4_spi_bus_t buses[SPI_BUS_MAX_BUS_ITEMS]; - int board_hw_version{-1}; ///< 0=default, >0 for a specific revision (see board_get_hw_version), -1=unused + int board_hw_version_revision{-1}; ///< 0=default, >0 for a specific revision (see board_get_hw_version & board_get_hw_revision), -1=unused }; #if BOARD_NUM_SPI_CFG_HW_VERSIONS > 1 diff --git a/platforms/common/spi.cpp b/platforms/common/spi.cpp index 1e6afe09a4..4e507617b6 100644 --- a/platforms/common/spi.cpp +++ b/platforms/common/spi.cpp @@ -39,14 +39,19 @@ #if BOARD_NUM_SPI_CFG_HW_VERSIONS > 1 void px4_set_spi_buses_from_hw_version() { - int hw_version = board_get_hw_version(); +#if defined(BOARD_HAS_SIMPLE_HW_VERSIONING) + int hw_version_revision = board_get_hw_version(); +#else + int hw_version_revision = board_get_hw_revision(); +#endif + for (int i = 0; i < BOARD_NUM_SPI_CFG_HW_VERSIONS; ++i) { - if (!px4_spi_buses && px4_spi_buses_all_hw[i].board_hw_version == 0) { + if (!px4_spi_buses && px4_spi_buses_all_hw[i].board_hw_version_revision == 0) { px4_spi_buses = px4_spi_buses_all_hw[i].buses; } - if (px4_spi_buses_all_hw[i].board_hw_version == hw_version) { + if (px4_spi_buses_all_hw[i].board_hw_version_revision == hw_version_revision) { px4_spi_buses = px4_spi_buses_all_hw[i].buses; } } diff --git a/platforms/nuttx/src/px4/stm/stm32_common/include/px4_arch/spi_hw_description.h b/platforms/nuttx/src/px4/stm/stm32_common/include/px4_arch/spi_hw_description.h index 1a3eb8a446..d89a5be1f4 100644 --- a/platforms/nuttx/src/px4/stm/stm32_common/include/px4_arch/spi_hw_description.h +++ b/platforms/nuttx/src/px4/stm/stm32_common/include/px4_arch/spi_hw_description.h @@ -129,7 +129,8 @@ static inline constexpr SPI::bus_device_external_cfg_t initSPIConfigExternal(SPI struct px4_spi_bus_array_t { px4_spi_bus_t item[SPI_BUS_MAX_BUS_ITEMS]; }; -static inline constexpr px4_spi_bus_all_hw_t initSPIHWVersion(int hw_version, const px4_spi_bus_array_t &bus_items) +static inline constexpr px4_spi_bus_all_hw_t initSPIHWVersion(int hw_version_revision, + const px4_spi_bus_array_t &bus_items) { px4_spi_bus_all_hw_t ret{}; @@ -137,7 +138,7 @@ static inline constexpr px4_spi_bus_all_hw_t initSPIHWVersion(int hw_version, co ret.buses[i] = bus_items.item[i]; } - ret.board_hw_version = hw_version; + ret.board_hw_version_revision = hw_version_revision; return ret; } constexpr bool validateSPIConfig(const px4_spi_bus_t spi_buses_conf[SPI_BUS_MAX_BUS_ITEMS]);