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"

Reply via email to