From 54bd0a9f2aff4fb5b99e52c295230e1603273093 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Fri, 23 Jun 2017 13:04:05 -1000 Subject: [PATCH] px4fmu-v5:Using arch agnostic gpio init Define the GPIO pin list use the board_gpio_init --- src/drivers/boards/px4fmu-v5/board_config.h | 33 +++++++++++++ src/drivers/boards/px4fmu-v5/px4fmu_init.c | 54 +++------------------ src/drivers/boards/px4fmu-v5/px4fmu_spi.c | 48 +++--------------- 3 files changed, 46 insertions(+), 89 deletions(-) diff --git a/src/drivers/boards/px4fmu-v5/board_config.h b/src/drivers/boards/px4fmu-v5/board_config.h index c31bab0802..48630457d2 100644 --- a/src/drivers/boards/px4fmu-v5/board_config.h +++ b/src/drivers/boards/px4fmu-v5/board_config.h @@ -515,6 +515,39 @@ __BEGIN_DECLS #define BOARD_DMA_ALLOC_POOL_SIZE 5120 +/* The list of GPIO that will be initialized */ + +#define PX4_GPIO_PWM_INIT_LIST { \ + GPIO_GPIO7_INPUT, \ + GPIO_GPIO6_INPUT, \ + GPIO_GPIO5_INPUT, \ + GPIO_GPIO4_INPUT, \ + GPIO_GPIO3_INPUT, \ + GPIO_GPIO2_INPUT, \ + GPIO_GPIO1_INPUT, \ + GPIO_GPIO0_INPUT, \ + } + +#define PX4_GPIO_INIT_LIST { \ + PX4_ADC_GPIO, \ + GPIO_HEATER, \ + GPIO_CAN1_SILENT_S0, \ + GPIO_CAN2_SILENT_S1, \ + GPIO_CAN3_SILENT_S2, \ + GPIO_POWER_IN_A, \ + GPIO_POWER_IN_B, \ + GPIO_POWER_IN_C, \ + GPIO_VDD_BRICK_VALID, \ + GPIO_nVDD_5V_PERIPH_EN, \ + GPIO_VDD_3V3_SENSORS_EN, \ + GPIO_VDD_3V3V_SD_CARD_EN, \ + GPIO_VDD_5V_RC_EN, \ + GPIO_VDD_5V_WIFI_EN, \ + GPIO_VDD_3V3_SPEKTRUM_POWER_EN, \ + GPIO_nSAFETY_SWITCH_LED_OUT, \ + GPIO_SAFETY_SWITCH_IN, \ + } + /**************************************************************************************************** * Public Types ****************************************************************************************************/ diff --git a/src/drivers/boards/px4fmu-v5/px4fmu_init.c b/src/drivers/boards/px4fmu-v5/px4fmu_init.c index a705ff3f45..082a89a437 100644 --- a/src/drivers/boards/px4fmu-v5/px4fmu_init.c +++ b/src/drivers/boards/px4fmu-v5/px4fmu_init.c @@ -205,59 +205,19 @@ __EXPORT void board_peripheral_reset(int ms) __EXPORT void stm32_boardinitialize(void) { + board_on_reset(-1); /* Reset PWM first thing */ + /* configure LEDs */ + board_autoled_initialize(); - /* configure the GPIO pins to outputs and keep them low */ - stm32_configgpio(GPIO_GPIO0_OUTPUT); - stm32_configgpio(GPIO_GPIO1_OUTPUT); - stm32_configgpio(GPIO_GPIO2_OUTPUT); - stm32_configgpio(GPIO_GPIO3_OUTPUT); - stm32_configgpio(GPIO_GPIO4_OUTPUT); - stm32_configgpio(GPIO_GPIO5_OUTPUT); + /* configure pins */ - /* configure ADC pins */ - stm32_configgpio(GPIO_ADC1_IN0); /* ADC_BATTERY_VOLTAGE_CHANNEL */ - stm32_configgpio(GPIO_ADC1_IN1); /* ADC_BATTERY_CURRENT_CHANNEL */ - stm32_configgpio(GPIO_ADC1_IN2); /* ADC_BATTERY1_VOLTAGE_CHANNEL */ - stm32_configgpio(GPIO_ADC1_IN3); /* ADC_BATTERY1_CURRENT_CHANNEL */ - stm32_configgpio(GPIO_ADC1_IN4); /* ADC_5V_RAIL_SENSE */ - stm32_configgpio(GPIO_ADC1_IN8); /* ADC_RC_RSSI_CHANNEL */ - stm32_configgpio(GPIO_ADC1_IN10); /* ADC_INT_1 */ - stm32_configgpio(GPIO_ADC1_IN11); /* ADC_INT_2 */ - stm32_configgpio(GPIO_ADC1_IN12); /* ADC_INT_3 */ - stm32_configgpio(GPIO_ADC1_IN13); /* ADC_INT_4 */ - stm32_configgpio(GPIO_ADC1_IN14); /* ADC_INT_5 */ - - /* Configure the HEATER off */ - - stm32_configgpio(GPIO_HEATER); - - - /* Configure the CAN Silent Control pins and keep them low */ - - stm32_configgpio(GPIO_CAN1_SILENCE); - stm32_configgpio(GPIO_CAN2_SILENCE); - stm32_configgpio(GPIO_CAN3_SILENCE); - - /* configure power supply control/sense pins */ - - stm32_configgpio(GPIO_POWER_IN_A); - stm32_configgpio(GPIO_POWER_IN_B); - stm32_configgpio(GPIO_POWER_IN_C); - - stm32_configgpio(GPIO_VDD_BRICK_VALID); - stm32_configgpio(GPIO_nVDD_5V_PERIPH_EN); - stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN); - stm32_configgpio(GPIO_VDD_3V3V_SD_CARD_EN); - stm32_configgpio(GPIO_VDD_5V_RC_EN); - stm32_configgpio(GPIO_VDD_5V_WIFI_EN); - stm32_configgpio(GPIO_VDD_3V3_SPEKTRUM_POWER_EN); - - stm32_configgpio(GPIO_nSAFETY_SWITCH_LED_OUT); - stm32_configgpio(GPIO_SAFETY_SWITCH_IN); + const uint32_t gpio[] = PX4_GPIO_INIT_LIST; + board_gpio_init(gpio, arraySize(gpio)); /* configure SPI interfaces */ + stm32_spiinitialize(); } diff --git a/src/drivers/boards/px4fmu-v5/px4fmu_spi.c b/src/drivers/boards/px4fmu-v5/px4fmu_spi.c index 1af4fce66d..35308be89e 100644 --- a/src/drivers/boards/px4fmu-v5/px4fmu_spi.c +++ b/src/drivers/boards/px4fmu-v5/px4fmu_spi.c @@ -109,59 +109,23 @@ static const uint32_t spi6selects_gpio[] = PX4_EXTERNAL2_BUS_CS_GPIO; __EXPORT void stm32_spiinitialize(void) { #ifdef CONFIG_STM32F7_SPI1 - - for (int cs = 0; cs < arraySize(spi1selects_gpio); cs++) { - if (spi1selects_gpio[cs] != 0) { - stm32_configgpio(spi1selects_gpio[cs]); - } - } - + board_gpio_init(spi1selects_gpio, arraySize(spi1selects_gpio)); #endif #ifdef CONFIG_STM32F7_SPI2 - - for (int cs = 0; cs < arraySize(spi2selects_gpio); cs++) { - if (spi2selects_gpio[cs] != 0) { - stm32_configgpio(spi2selects_gpio[cs]); - } - } - + board_gpio_init(spi2selects_gpio, arraySize(spi2selects_gpio)); #endif #ifdef CONFIG_STM32F7_SPI3 - - for (int cs = 0; cs < arraySize(spi3selects_gpio); cs++) { - if (spi3selects_gpio[cs] != 0) { - stm32_configgpio(spi3selects_gpio[cs]); - } - } - + board_gpio_init(spi3selects_gpio, arraySize(spi3selects_gpio)); #endif #ifdef CONFIG_STM32F7_SPI4 - - for (int cs = 0; cs < arraySize(spi4selects_gpio); cs++) { - if (spi4selects_gpio[cs] != 0) { - stm32_configgpio(spi4selects_gpio[cs]); - } - } - + board_gpio_init(spi4selects_gpio, arraySize(spi4selects_gpio)); #endif #ifdef CONFIG_STM32F7_SPI5 - - for (int cs = 0; cs < arraySize(spi5selects_gpio); cs++) { - if (spi5selects_gpio[cs] != 0) { - stm32_configgpio(spi5selects_gpio[cs]); - } - } - + board_gpio_init(spi5selects_gpio, arraySize(spi5selects_gpio)); #endif #ifdef CONFIG_STM32F7_SPI6 - - for (int cs = 0; cs < arraySize(spi6selects_gpio); cs++) { - if (spi6selects_gpio[cs] != 0) { - stm32_configgpio(spi6selects_gpio[cs]); - } - } - + board_gpio_init(spi6selects_gpio, arraySize(spi6selects_gpio)); #endif }