This is an automated email from the ASF dual-hosted git repository. jerzy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 957010a397c078a25f3679e62f1496f90d7601ba Author: Jerzy Kasenberg <jerzy.kasenb...@codecoup.pl> AuthorDate: Tue Jan 26 15:59:23 2021 +0100 stm32: Add SPI bus creation When SPI bus driver is present in the project, bus devices are creating during peripheral creation instead of hal only SPI support. --- hw/mcu/stm/stm32_common/src/stm32_periph.c | 113 +++++++++++++++++++++++++++++ hw/mcu/stm/stm32f0xx/pkg.yml | 3 + hw/mcu/stm/stm32f1xx/pkg.yml | 3 + hw/mcu/stm/stm32f3xx/pkg.yml | 3 + hw/mcu/stm/stm32f4xx/pkg.yml | 3 + hw/mcu/stm/stm32f7xx/pkg.yml | 3 + hw/mcu/stm/stm32l0xx/pkg.yml | 3 + hw/mcu/stm/stm32l1xx/pkg.yml | 3 + hw/mcu/stm/stm32l4xx/pkg.yml | 3 + hw/mcu/stm/stm32wbxx/pkg.yml | 3 + 10 files changed, 140 insertions(+) diff --git a/hw/mcu/stm/stm32_common/src/stm32_periph.c b/hw/mcu/stm/stm32_common/src/stm32_periph.c index d8e43a3..bf687a2 100644 --- a/hw/mcu/stm/stm32_common/src/stm32_periph.c +++ b/hw/mcu/stm/stm32_common/src/stm32_periph.c @@ -41,6 +41,13 @@ #include "uart/uart.h" #include "uart_hal/uart_hal.h" #endif +#if MYNEWT_VAL(BUS_DRIVER_PRESENT) +#include "bus/bus.h" +#if MYNEWT_VAL(SPI_0_MASTER) || MYNEWT_VAL(SPI_1_MASTER) || MYNEWT_VAL(SPI_2_MASTER) || MYNEWT_VAL(SPI_3_MASTER) || \ + MYNEWT_VAL(SPI_4_MASTER) || MYNEWT_VAL(SPI_5_MASTER) +#include "bus/drivers/spi_stm32.h" +#endif +#endif #if MYNEWT_VAL(PWM_0) || MYNEWT_VAL(PWM_1) || MYNEWT_VAL(PWM_2) #include <pwm_stm32/pwm_stm32.h> #endif @@ -148,6 +155,69 @@ extern const struct stm32_hal_i2c_cfg os_bsp_i2c1_cfg; extern const struct stm32_hal_i2c_cfg os_bsp_i2c2_cfg; #endif +#if MYNEWT_VAL(BUS_DRIVER_PRESENT) + +#if MYNEWT_VAL(SPI_0_MASTER) +static const struct bus_spi_dev_cfg spi0_cfg = { + .spi_num = 0, + .pin_sck = MYNEWT_VAL(SPI_0_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_0_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_0_PIN_MISO), +}; +static struct bus_spi_dev spi0_bus; +#endif + +#if MYNEWT_VAL(SPI_1_MASTER) +static const struct bus_spi_dev_cfg spi1_cfg = { + .spi_num = 1, + .pin_sck = MYNEWT_VAL(SPI_1_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_1_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_1_PIN_MISO), +}; +static struct bus_spi_dev spi1_bus; +#endif + +#if MYNEWT_VAL(SPI_2_MASTER) +static const struct bus_spi_dev_cfg spi2_cfg = { + .spi_num = 2, + .pin_sck = MYNEWT_VAL(SPI_2_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_2_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_2_PIN_MISO), +}; +static struct bus_spi_dev spi2_bus; +#endif + +#if MYNEWT_VAL(SPI_3_MASTER) +static const struct bus_spi_dev_cfg spi3_cfg = { + .spi_num = 3, + .pin_sck = MYNEWT_VAL(SPI_3_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_3_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_3_PIN_MISO), +}; +static struct bus_spi_dev spi3_bus; +#endif + +#if MYNEWT_VAL(SPI_4_MASTER) +static const struct bus_spi_dev_cfg spi4_cfg = { + .spi_num = 4, + .pin_sck = MYNEWT_VAL(SPI_4_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_4_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_4_PIN_MISO), +}; +static struct bus_spi_dev spi4_bus; +#endif + +#if MYNEWT_VAL(SPI_5_MASTER) +static const struct bus_spi_dev_cfg spi5_cfg = { + .spi_num = 5, + .pin_sck = MYNEWT_VAL(SPI_5_PIN_SCK), + .pin_mosi = MYNEWT_VAL(SPI_5_PIN_MOSI), + .pin_miso = MYNEWT_VAL(SPI_5_PIN_MISO), +}; +static struct bus_spi_dev spi5_bus; +#endif + +#else #if (MYNEWT_VAL(SPI_0_MASTER) || MYNEWT_VAL(SPI_0_SLAVE)) #if MYNEWT_VAL(SPI_0_CUSTOM_CFG) extern const struct stm32_hal_spi_cfg os_bsp_spi0_cfg; @@ -200,6 +270,7 @@ static const struct stm32_hal_spi_cfg os_bsp_spi3_cfg = { }; #endif #endif +#endif #if MYNEWT_VAL(ETH_0) extern const struct stm32_eth_cfg os_bsp_eth0_cfg; @@ -403,6 +474,47 @@ stm32_periph_create_i2c(void) #endif } +#if MYNEWT_VAL(BUS_DRIVER_PRESENT) +static void +stm32_periph_create_spi(void) +{ + int rc; + + (void)rc; + +#if MYNEWT_VAL(SPI_0_MASTER) + rc = bus_spi_stm32_dev_create("spi0", &spi0_bus, + (struct bus_spi_dev_cfg *)&spi0_cfg); + assert(rc == 0); +#endif +#if MYNEWT_VAL(SPI_1_MASTER) + rc = bus_spi_stm32_dev_create("spi1", &spi1_bus, + (struct bus_spi_dev_cfg *)&spi1_cfg); + assert(rc == 0); +#endif +#if MYNEWT_VAL(SPI_2_MASTER) + rc = bus_spi_stm32_dev_create("spi2", &spi2_bus, + (struct bus_spi_dev_cfg *)&spi2_cfg); + assert(rc == 0); +#endif +#if MYNEWT_VAL(SPI_3_MASTER) + rc = bus_spi_stm32_dev_create("spi3", &spi3_bus, + (struct bus_spi_dev_cfg *)&spi3_cfg); + assert(rc == 0); +#endif +#if MYNEWT_VAL(SPI_4_MASTER) + rc = bus_spi_stm32_dev_create("spi4", &spi4_bus, + (struct bus_spi_dev_cfg *)&spi4_cfg); + assert(rc == 0); +#endif +#if MYNEWT_VAL(SPI_5_MASTER) + rc = bus_spi_stm32_dev_create("spi5", &spi5_bus, + (struct bus_spi_dev_cfg *)&spi5_cfg); + assert(rc == 0); +#endif +} + +#else static void stm32_periph_create_spi(void) { @@ -443,6 +555,7 @@ stm32_periph_create_spi(void) assert(rc == 0); #endif } +#endif static void stm32_periph_create_adc(void) diff --git a/hw/mcu/stm/stm32f0xx/pkg.yml b/hw/mcu/stm/stm32f0xx/pkg.yml index cebdfa2..99e4647 100644 --- a/hw/mcu/stm/stm32f0xx/pkg.yml +++ b/hw/mcu/stm/stm32f0xx/pkg.yml @@ -38,3 +38,6 @@ pkg.deps: - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32f1xx/pkg.yml b/hw/mcu/stm/stm32f1xx/pkg.yml index 917f7a2..0334405 100644 --- a/hw/mcu/stm/stm32f1xx/pkg.yml +++ b/hw/mcu/stm/stm32f1xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32/stm32f1xx" diff --git a/hw/mcu/stm/stm32f3xx/pkg.yml b/hw/mcu/stm/stm32f3xx/pkg.yml index 6fffc0c..f47c2c8 100644 --- a/hw/mcu/stm/stm32f3xx/pkg.yml +++ b/hw/mcu/stm/stm32f3xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER || SPI_3_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32f4xx/pkg.yml b/hw/mcu/stm/stm32f4xx/pkg.yml index c1bfe12..a9e1fdb 100644 --- a/hw/mcu/stm/stm32f4xx/pkg.yml +++ b/hw/mcu/stm/stm32f4xx/pkg.yml @@ -43,3 +43,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER || SPI_3_MASTER || SPI_4_MASTER || SPI_5_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32f7xx/pkg.yml b/hw/mcu/stm/stm32f7xx/pkg.yml index e5a34ac..595868b 100644 --- a/hw/mcu/stm/stm32f7xx/pkg.yml +++ b/hw/mcu/stm/stm32f7xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER || SPI_3_MASTER || SPI_4_MASTER || SPI_5_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32l0xx/pkg.yml b/hw/mcu/stm/stm32l0xx/pkg.yml index c417e13..69797c4 100644 --- a/hw/mcu/stm/stm32l0xx/pkg.yml +++ b/hw/mcu/stm/stm32l0xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - hw/hal - hw/mcu/stm/stm32_common - hw/cmsis-core + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32l1xx/pkg.yml b/hw/mcu/stm/stm32l1xx/pkg.yml index b961036..4fbaf16 100644 --- a/hw/mcu/stm/stm32l1xx/pkg.yml +++ b/hw/mcu/stm/stm32l1xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32l4xx/pkg.yml b/hw/mcu/stm/stm32l4xx/pkg.yml index 1a0ec82..7bc34e8 100644 --- a/hw/mcu/stm/stm32l4xx/pkg.yml +++ b/hw/mcu/stm/stm32l4xx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER || SPI_2_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32" diff --git a/hw/mcu/stm/stm32wbxx/pkg.yml b/hw/mcu/stm/stm32wbxx/pkg.yml index 47b63cf..9dbfcee 100644 --- a/hw/mcu/stm/stm32wbxx/pkg.yml +++ b/hw/mcu/stm/stm32wbxx/pkg.yml @@ -37,3 +37,6 @@ pkg.deps: - "@apache-mynewt-core/hw/hal" - "@apache-mynewt-core/hw/mcu/stm/stm32_common" - "@apache-mynewt-core/hw/cmsis-core" + +pkg.deps.'(SPI_0_MASTER || SPI_1_MASTER) && BUS_DRIVER_PRESENT': + - "@apache-mynewt-core/hw/bus/drivers/spi_stm32"