You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2021/02/12 15:07:17 UTC
[mynewt-core] 03/03: stm32: Add SPI bus creation
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 <je...@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"