You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2019/01/03 14:58:54 UTC

[mynewt-core] 02/03: hw/bus: Refactor bus drivers structure

This is an automated email from the ASF dual-hosted git repository.

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit c848035befd67b1f843f679ee00810206ef78b27
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Mon Dec 17 15:16:49 2018 +0100

    hw/bus: Refactor bus drivers structure
    
    This refactors structure of hw/bus drivers to allow for easier addition
    of new bus drivers and simplified package dependencies. Most of changes
    involve moving files around, code changes are just to adjust everything.
    
    New structure is as follows:
    - bus drivers are moved to hw/bus/drivers/
    - common defs for I2C and SPI are now in hw/bus/drivers/(i2c|spi)_common
    - existing I2C and SPI drivers are now hw/bus/drivers/(i2c|spi)_hal
    
    The recommended way to use bus driver in a package is to:
    - include dependency to hw/bus/drivers/(i2c|spi)_common package
    - include bus/drivers/(i2c|spi)_common.h file in code
    The above will fetch all required dependencies.
    
    It should be now possible to create new I2C|SPI driver which does not
    use HAL (e.g. I2C|SPI implemneted in sw) and is fully compatible with
    existing code (drivers should not notice the change).
---
 hw/battery/include/battery/battery_drv.h           |  5 +-
 .../i2c_common/include/bus/drivers/i2c_common.h}   | 68 ++++++---------------
 hw/bus/{spi => drivers/i2c_common}/pkg.yml         |  7 +--
 .../drivers/i2c_hal/include/bus/drivers/i2c_hal.h  | 69 ++++++++++++++++++++++
 hw/bus/{spi => drivers/i2c_hal}/pkg.yml            |  8 +--
 .../src/i2c.c => drivers/i2c_hal/src/i2c_hal.c}    |  8 +--
 .../spi_common/include/bus/drivers/spi_common.h}   | 19 +-----
 hw/bus/{i2c => drivers/spi_common}/pkg.yml         |  6 +-
 .../drivers/spi_hal/include/bus/drivers/spi_hal.h  | 69 ++++++++++++++++++++++
 hw/bus/{spi => drivers/spi_hal}/pkg.yml            |  8 +--
 .../src/spi.c => drivers/spi_hal/src/spi_hal.c}    |  4 +-
 hw/drivers/bq27z561/pkg.yml                        |  6 +-
 hw/drivers/bq27z561/src/bq27z561.c                 |  2 +-
 .../chg_ctrl/adp5061/include/adp5061/adp5061.h     |  3 +-
 hw/drivers/chg_ctrl/adp5061/pkg.yml                |  6 +-
 hw/drivers/chg_ctrl/adp5061/src/adp5061.c          |  3 +-
 hw/drivers/led/lp5523/include/lp5523/lp5523.h      |  3 +-
 hw/drivers/led/lp5523/pkg.yml                      |  6 +-
 hw/drivers/led/lp5523/src/lp5523.c                 |  5 ++
 hw/drivers/sensors/bmp280/include/bmp280/bmp280.h  |  5 +-
 hw/drivers/sensors/bmp280/pkg.yml                  |  6 +-
 hw/drivers/sensors/bmp280/src/bmp280.c             |  3 +-
 .../sensors/lis2dh12/include/lis2dh12/lis2dh12.h   |  5 +-
 hw/drivers/sensors/lis2dh12/pkg.yml                |  7 ++-
 hw/drivers/sensors/lis2dh12/src/lis2dh12.c         |  3 +-
 .../sensors/lis2dw12/include/lis2dw12/lis2dw12.h   |  3 +-
 hw/drivers/sensors/lis2dw12/pkg.yml                |  6 +-
 hw/drivers/sensors/lis2dw12/src/lis2dw12.c         |  2 +-
 .../sensors/lps33hw/include/lps33hw/lps33hw.h      |  3 +-
 .../sensors/lps33thw/include/lps33thw/lps33thw.h   |  5 +-
 hw/drivers/sensors/lps33thw/pkg.yml                |  6 ++
 hw/drivers/sensors/lps33thw/src/lps33thw.c         |  3 +-
 hw/drivers/sensors/ms5837/include/ms5837/ms5837.h  |  3 +-
 hw/drivers/sensors/ms5837/pkg.yml                  |  6 +-
 hw/drivers/sensors/ms5837/src/ms5837.c             |  2 +-
 hw/drivers/sensors/ms5840/include/ms5840/ms5840.h  |  3 +-
 hw/drivers/sensors/ms5840/pkg.yml                  |  6 +-
 hw/drivers/sensors/ms5840/src/ms5840.c             |  2 +-
 hw/mcu/nordic/nrf52xxx/pkg.yml                     |  4 ++
 hw/mcu/nordic/nrf52xxx/src/nrf52_periph.c          | 19 +++---
 hw/sensor/include/sensor/sensor.h                  |  4 +-
 41 files changed, 274 insertions(+), 137 deletions(-)

diff --git a/hw/battery/include/battery/battery_drv.h b/hw/battery/include/battery/battery_drv.h
index 2731761..f0a0ea0 100644
--- a/hw/battery/include/battery/battery_drv.h
+++ b/hw/battery/include/battery/battery_drv.h
@@ -30,9 +30,8 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
-#include "bus/spi.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #endif
 
 #ifdef __cplusplus
diff --git a/hw/bus/i2c/include/bus/i2c.h b/hw/bus/drivers/i2c_common/include/bus/drivers/i2c_common.h
similarity index 73%
rename from hw/bus/i2c/include/bus/i2c.h
rename to hw/bus/drivers/i2c_common/include/bus/drivers/i2c_common.h
index 5cecfb7..9f70123 100644
--- a/hw/bus/i2c/include/bus/i2c.h
+++ b/hw/bus/drivers/i2c_common/include/bus/drivers/i2c_common.h
@@ -17,13 +17,14 @@
  * under the License.
  */
 
-#ifndef HW_BUS_I2C_H_
-#define HW_BUS_I2C_H_
+#ifndef HW_BUS_DRIVERS_I2C_COMMON_H_
+#define HW_BUS_DRIVERS_I2C_COMMON_H_
 
 #include <stddef.h>
 #include <stdint.h>
 #include "bus/bus.h"
 #include "bus/bus_driver.h"
+#include "bus/bus_debug.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -44,20 +45,6 @@ struct bus_i2c_dev_cfg {
 };
 
 /**
- * Bus I2C node configuration
- */
-struct bus_i2c_node_cfg {
-    /** General node configuration */
-    struct bus_node_cfg node_cfg;
-    /** I2C address of node */
-    uint8_t addr;
-    /** I2C frequency to be used for node */
-    uint16_t freq;
-    /** Quirks to be applied for device */
-    uint16_t quirks;
-};
-
-/**
  * Bus I2C device object state
  *
  * Contents of these objects are managed internally by bus driver and shall not
@@ -73,6 +60,20 @@ struct bus_i2c_dev {
 };
 
 /**
+ * Bus I2C node configuration
+ */
+struct bus_i2c_node_cfg {
+    /** General node configuration */
+    struct bus_node_cfg node_cfg;
+    /** I2C address of node */
+    uint8_t addr;
+    /** I2C frequency to be used for node */
+    uint16_t freq;
+    /** Quirks to be applied for device */
+    uint16_t quirks;
+};
+
+/**
  * Bus I2C node object state
  *
  * Contents of these objects are managed internally by bus driver and shall not
@@ -90,39 +91,6 @@ struct bus_i2c_node {
 };
 
 /**
- * Initialize os_dev as bus I2C device
- *
- * This can be passed as a parameter to os_dev_create() when creating os_dev
- * object for I2C device, however it's recommended to create devices using helper
- * like bus_i2c_dev_create().
- *
- * @param node  Node device object
- * @param arg   Node configuration struct (struct bus_node_cfg)
- */
-int
-bus_i2c_dev_init_func(struct os_dev *odev, void *arg);
-
-/**
- * Create bus I2C device
- *
- * This is a convenient helper and recommended way to create os_dev for bus I2C
- * device instead of calling os_dev_create() directly.
- *
- * @param name  Name of device
- * @param dev   Device state object
- * @param cfg   Configuration
- */
-static inline int
-bus_i2c_dev_create(const char *name, struct bus_i2c_dev *dev,
-                   struct bus_i2c_dev_cfg *cfg)
-{
-    struct os_dev *odev = (struct os_dev *)dev;
-
-    return os_dev_create(odev, name, OS_DEV_INIT_PRIMARY, 0,
-                         bus_i2c_dev_init_func, cfg);
-}
-
-/**
  * Create bus I2C node
  *
  * This is a convenient helper and recommended way to create os_dev for bus I2C
@@ -149,4 +117,4 @@ bus_i2c_node_create(const char *name, struct bus_i2c_node *node,
 }
 #endif
 
-#endif /* HW_BUS_I2C_H_ */
+#endif /* HW_BUS_DRIVERS_I2C_COMMON_H_ */
diff --git a/hw/bus/spi/pkg.yml b/hw/bus/drivers/i2c_common/pkg.yml
similarity index 89%
copy from hw/bus/spi/pkg.yml
copy to hw/bus/drivers/i2c_common/pkg.yml
index 9c82432..e590798 100644
--- a/hw/bus/spi/pkg.yml
+++ b/hw/bus/drivers/i2c_common/pkg.yml
@@ -17,12 +17,11 @@
 # under the License.
 #
 
-pkg.name: hw/bus/spi
-pkg.description: SPI bus implementation
+pkg.name: hw/bus/drivers/i2c_common
+pkg.description: Common definitions for I2C bus drivers
 pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
-pkg.deps:
 
 pkg.deps:
-    - "@apache-mynewt-core/hw/bus"
+    - hw/bus
diff --git a/hw/bus/drivers/i2c_hal/include/bus/drivers/i2c_hal.h b/hw/bus/drivers/i2c_hal/include/bus/drivers/i2c_hal.h
new file mode 100644
index 0000000..3486cee
--- /dev/null
+++ b/hw/bus/drivers/i2c_hal/include/bus/drivers/i2c_hal.h
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef HW_BUS_DRIVERS_I2C_HAL_H_
+#define HW_BUS_DRIVERS_I2C_HAL_H_
+
+#include <stddef.h>
+#include <stdint.h>
+#include "os/os_dev.h"
+#include "bus/drivers/i2c_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Initialize os_dev as I2C bus device using i2c_hal driver
+ *
+ * This can be passed as a parameter to os_dev_create() when creating os_dev
+ * object for I2C device, however it's recommended to create devices using helper
+ * like bus_i2c_hal_dev_create().
+ *
+ * @param node  Node device object
+ * @param arg   Node configuration struct (struct bus_node_cfg)
+ */
+int
+bus_i2c_hal_dev_init_func(struct os_dev *odev, void *arg);
+
+/**
+ * Create I2C bus device using i2c_hal driver
+ *
+ * This is a convenient helper and recommended way to create os_dev for bus I2C
+ * device instead of calling os_dev_create() directly.
+ *
+ * @param name  Name of device
+ * @param dev   Device state object
+ * @param cfg   Configuration
+ */
+static inline int
+bus_i2c_hal_dev_create(const char *name, struct bus_i2c_dev *dev,
+                       struct bus_i2c_dev_cfg *cfg)
+{
+    struct os_dev *odev = (struct os_dev *)dev;
+
+    return os_dev_create(odev, name, OS_DEV_INIT_PRIMARY, 0,
+                         bus_i2c_hal_dev_init_func, cfg);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* HW_BUS_DRIVERS_I2C_HAL_H_ */
diff --git a/hw/bus/spi/pkg.yml b/hw/bus/drivers/i2c_hal/pkg.yml
similarity index 87%
copy from hw/bus/spi/pkg.yml
copy to hw/bus/drivers/i2c_hal/pkg.yml
index 9c82432..60f5167 100644
--- a/hw/bus/spi/pkg.yml
+++ b/hw/bus/drivers/i2c_hal/pkg.yml
@@ -17,12 +17,12 @@
 # under the License.
 #
 
-pkg.name: hw/bus/spi
-pkg.description: SPI bus implementation
+pkg.name: hw/bus/drivers/i2c_hal
+pkg.description: I2C bus driver using hal_i2c
 pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
-pkg.deps:
 
 pkg.deps:
-    - "@apache-mynewt-core/hw/bus"
+    - hw/bus
+    - hw/bus/drivers/i2c_common
diff --git a/hw/bus/i2c/src/i2c.c b/hw/bus/drivers/i2c_hal/src/i2c_hal.c
similarity index 96%
rename from hw/bus/i2c/src/i2c.c
rename to hw/bus/drivers/i2c_hal/src/i2c_hal.c
index 985416f..782a207 100644
--- a/hw/bus/i2c/src/i2c.c
+++ b/hw/bus/drivers/i2c_hal/src/i2c_hal.c
@@ -23,7 +23,7 @@
 #include "hal/hal_i2c.h"
 #include "bus/bus.h"
 #include "bus/bus_debug.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_hal.h"
 
 static int
 bus_i2c_translate_hal_error(int hal_err)
@@ -178,7 +178,7 @@ static int bus_i2c_disable(struct bus_dev *bdev)
     return 0;
 }
 
-static const struct bus_dev_ops bus_i2c_ops = {
+static const struct bus_dev_ops bus_i2c_hal_ops = {
     .init_node = bus_i2c_init_node,
     .enable = bus_i2c_enable,
     .configure = bus_i2c_configure,
@@ -188,7 +188,7 @@ static const struct bus_dev_ops bus_i2c_ops = {
 };
 
 int
-bus_i2c_dev_init_func(struct os_dev *odev, void *arg)
+bus_i2c_hal_dev_init_func(struct os_dev *odev, void *arg)
 {
     struct bus_i2c_dev *dev = (struct bus_i2c_dev *)odev;
     struct bus_i2c_dev_cfg *cfg = arg;
@@ -207,7 +207,7 @@ bus_i2c_dev_init_func(struct os_dev *odev, void *arg)
         return SYS_EINVAL;
     }
 
-    rc = bus_dev_init_func(odev, (void*)&bus_i2c_ops);
+    rc = bus_dev_init_func(odev, (void*)&bus_i2c_hal_ops);
     assert(rc == 0);
 
     dev->cfg = *cfg;
diff --git a/hw/bus/spi/include/bus/spi.h b/hw/bus/drivers/spi_common/include/bus/drivers/spi_common.h
similarity index 85%
rename from hw/bus/spi/include/bus/spi.h
rename to hw/bus/drivers/spi_common/include/bus/drivers/spi_common.h
index 7c7e05a..62466b9 100644
--- a/hw/bus/spi/include/bus/spi.h
+++ b/hw/bus/drivers/spi_common/include/bus/drivers/spi_common.h
@@ -17,8 +17,8 @@
  * under the License.
  */
 
-#ifndef HW_BUS_SPI_H_
-#define HW_BUS_SPI_H_
+#ifndef HW_BUS_DRIVERS_SPI_COMMON_H_
+#define HW_BUS_DRIVERS_SPI_COMMON_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -83,19 +83,6 @@ struct bus_spi_node {
 #endif
 };
 
-int
-bus_spi_dev_init_func(struct os_dev *odev, void *arg);
-
-static inline int
-bus_spi_dev_create(const char *name, struct bus_spi_dev *dev,
-                   struct bus_spi_dev_cfg *cfg)
-{
-    struct os_dev *odev = (struct os_dev *)dev;
-
-    return os_dev_create(odev, name, OS_DEV_INIT_PRIMARY, 0,
-                         bus_spi_dev_init_func, cfg);
-}
-
 static inline int
 bus_spi_node_create(const char *name, struct bus_spi_node *node,
                     const struct bus_spi_node_cfg *cfg, void *arg)
@@ -113,4 +100,4 @@ bus_spi_node_create(const char *name, struct bus_spi_node *node,
 }
 #endif
 
-#endif /* HW_BUS_SPI_H_ */
+#endif /* HW_BUS_DRIVERS_SPI_COMMON_H_ */
diff --git a/hw/bus/i2c/pkg.yml b/hw/bus/drivers/spi_common/pkg.yml
similarity index 89%
rename from hw/bus/i2c/pkg.yml
rename to hw/bus/drivers/spi_common/pkg.yml
index 2e2e0ac..7b9e2a4 100644
--- a/hw/bus/i2c/pkg.yml
+++ b/hw/bus/drivers/spi_common/pkg.yml
@@ -17,9 +17,11 @@
 # under the License.
 #
 
-pkg.name: hw/bus/i2c
-pkg.description: I2C bus implementation
+pkg.name: hw/bus/drivers/spi_common
+pkg.description: Common definitions for SPI bus drivers
 pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
+
 pkg.deps:
+    - hw/bus
diff --git a/hw/bus/drivers/spi_hal/include/bus/drivers/spi_hal.h b/hw/bus/drivers/spi_hal/include/bus/drivers/spi_hal.h
new file mode 100644
index 0000000..d4dc6f4
--- /dev/null
+++ b/hw/bus/drivers/spi_hal/include/bus/drivers/spi_hal.h
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef HW_BUS_DRIVERS_SPI_HAL_H_
+#define HW_BUS_DRIVERS_SPI_HAL_H_
+
+#include <stddef.h>
+#include <stdint.h>
+#include "os/os_dev.h"
+#include "bus/drivers/spi_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Initialize os_dev as SPI bus device using spi_hal driver
+ *
+ * This can be passed as a parameter to os_dev_create() when creating os_dev
+ * object for SPI device, however it's recommended to create devices using helper
+ * like bus_spi_hal_dev_create().
+ *
+ * @param node  Node device object
+ * @param arg   Node configuration struct (struct bus_node_cfg)
+ */
+int
+bus_spi_hal_dev_init_func(struct os_dev *odev, void *arg);
+
+/**
+ * Create SPI bus device using spi_hal driver
+ *
+ * This is a convenient helper and recommended way to create os_dev for bus SPI
+ * device instead of calling os_dev_create() directly.
+ *
+ * @param name  Name of device
+ * @param dev   Device state object
+ * @param cfg   Configuration
+ */
+static inline int
+bus_spi_hal_dev_create(const char *name, struct bus_spi_dev *dev,
+                       struct bus_spi_dev_cfg *cfg)
+{
+    struct os_dev *odev = (struct os_dev *)dev;
+
+    return os_dev_create(odev, name, OS_DEV_INIT_PRIMARY, 0,
+                         bus_spi_hal_dev_init_func, cfg);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* HW_BUS_DRIVERS_SPI_HAL_H_ */
diff --git a/hw/bus/spi/pkg.yml b/hw/bus/drivers/spi_hal/pkg.yml
similarity index 87%
rename from hw/bus/spi/pkg.yml
rename to hw/bus/drivers/spi_hal/pkg.yml
index 9c82432..912f880 100644
--- a/hw/bus/spi/pkg.yml
+++ b/hw/bus/drivers/spi_hal/pkg.yml
@@ -17,12 +17,12 @@
 # under the License.
 #
 
-pkg.name: hw/bus/spi
-pkg.description: SPI bus implementation
+pkg.name: hw/bus/drivers/spi_hal
+pkg.description: SPI bus driver using hal_spi
 pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
-pkg.deps:
 
 pkg.deps:
-    - "@apache-mynewt-core/hw/bus"
+    - hw/bus
+    - hw/bus/drivers/spi_common
diff --git a/hw/bus/spi/src/spi.c b/hw/bus/drivers/spi_hal/src/spi_hal.c
similarity index 98%
rename from hw/bus/spi/src/spi.c
rename to hw/bus/drivers/spi_hal/src/spi_hal.c
index b526e22..7dbd489 100644
--- a/hw/bus/spi/src/spi.c
+++ b/hw/bus/drivers/spi_hal/src/spi_hal.c
@@ -23,7 +23,7 @@
 #include "hal/hal_spi.h"
 #include "bus/bus.h"
 #include "bus/bus_debug.h"
-#include "bus/spi.h"
+#include "bus/drivers/spi_hal.h"
 
 static int
 bus_spi_init_node(struct bus_dev *bdev, struct bus_node *bnode, void *arg)
@@ -187,7 +187,7 @@ static const struct bus_dev_ops bus_spi_ops = {
 };
 
 int
-bus_spi_dev_init_func(struct os_dev *odev, void *arg)
+bus_spi_hal_dev_init_func(struct os_dev *odev, void *arg)
 {
     struct bus_spi_dev *dev = (struct bus_spi_dev *)odev;
     struct bus_spi_dev_cfg *cfg = arg;
diff --git a/hw/drivers/bq27z561/pkg.yml b/hw/drivers/bq27z561/pkg.yml
index 8f8e010..04b1dbf 100644
--- a/hw/drivers/bq27z561/pkg.yml
+++ b/hw/drivers/bq27z561/pkg.yml
@@ -28,9 +28,13 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/battery"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+
 pkg.req_apis:
     - stats
 
diff --git a/hw/drivers/bq27z561/src/bq27z561.c b/hw/drivers/bq27z561/src/bq27z561.c
index c693d64..153030c 100644
--- a/hw/drivers/bq27z561/src/bq27z561.c
+++ b/hw/drivers/bq27z561/src/bq27z561.c
@@ -24,7 +24,7 @@
 #include "bq27z561/bq27z561.h"
 #include "hal/hal_gpio.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "i2cn/i2cn.h"
diff --git a/hw/drivers/chg_ctrl/adp5061/include/adp5061/adp5061.h b/hw/drivers/chg_ctrl/adp5061/include/adp5061/adp5061.h
index f70a8d6..59d7a80 100644
--- a/hw/drivers/chg_ctrl/adp5061/include/adp5061/adp5061.h
+++ b/hw/drivers/chg_ctrl/adp5061/include/adp5061/adp5061.h
@@ -28,8 +28,7 @@
 #include "charge-control/charge_control.h"
 #endif
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 
 /**
diff --git a/hw/drivers/chg_ctrl/adp5061/pkg.yml b/hw/drivers/chg_ctrl/adp5061/pkg.yml
index 90590de..8bc3c8d 100644
--- a/hw/drivers/chg_ctrl/adp5061/pkg.yml
+++ b/hw/drivers/chg_ctrl/adp5061/pkg.yml
@@ -27,7 +27,11 @@ pkg.keywords:
 pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - '@apache-mynewt-core/hw/hal'
-    - '@apache-mynewt-core/hw/util/i2cn'
+
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
 
 pkg.deps.!BUS_DRIVER_PRESENT||ADP5061_USE_CHARGE_CONTROL:
     - '@apache-mynewt-core/hw/charge-control'
diff --git a/hw/drivers/chg_ctrl/adp5061/src/adp5061.c b/hw/drivers/chg_ctrl/adp5061/src/adp5061.c
index c081f1e..8b06fe4 100644
--- a/hw/drivers/chg_ctrl/adp5061/src/adp5061.c
+++ b/hw/drivers/chg_ctrl/adp5061/src/adp5061.c
@@ -26,8 +26,7 @@
 #include <mcu/nrf52_hal.h>
 #include <hal/hal_gpio.h>
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "i2cn/i2cn.h"
diff --git a/hw/drivers/led/lp5523/include/lp5523/lp5523.h b/hw/drivers/led/lp5523/include/lp5523/lp5523.h
index 78e1c79..3c443cb 100644
--- a/hw/drivers/led/lp5523/include/lp5523/lp5523.h
+++ b/hw/drivers/led/lp5523/include/lp5523/lp5523.h
@@ -26,8 +26,7 @@ extern "C" {
 
 #include <led/led_itf.h>
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 
 #define LP5523_MAX_PAYLOAD   (10)
diff --git a/hw/drivers/led/lp5523/pkg.yml b/hw/drivers/led/lp5523/pkg.yml
index e96097e..47a634a 100644
--- a/hw/drivers/led/lp5523/pkg.yml
+++ b/hw/drivers/led/lp5523/pkg.yml
@@ -30,9 +30,13 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/drivers/led"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+
 pkg.deps.LP5523_CLI:
     - "@apache-mynewt-core/util/parse"
 
diff --git a/hw/drivers/led/lp5523/src/lp5523.c b/hw/drivers/led/lp5523/src/lp5523.c
index 9984791..a9b7a17 100644
--- a/hw/drivers/led/lp5523/src/lp5523.c
+++ b/hw/drivers/led/lp5523/src/lp5523.c
@@ -19,8 +19,13 @@
 
 #include <string.h>
 #include "os/mynewt.h"
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
+#else
 #include <hal/hal_i2c.h>
 #include <i2cn/i2cn.h>
+#endif
 #include <modlog/modlog.h>
 #include <stats/stats.h>
 
diff --git a/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h b/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
index 271b6a6..c486757 100644
--- a/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
+++ b/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
@@ -23,9 +23,8 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
-#include "bus/i2c.h"
-#include "bus/spi.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #endif
 #include "sensor/sensor.h"
 
diff --git a/hw/drivers/sensors/bmp280/pkg.yml b/hw/drivers/sensors/bmp280/pkg.yml
index 2379ec4..c506530 100644
--- a/hw/drivers/sensors/bmp280/pkg.yml
+++ b/hw/drivers/sensors/bmp280/pkg.yml
@@ -34,8 +34,10 @@ pkg.deps:
     - "@apache-mynewt-core/hw/sensor"
     - "@apache-mynewt-core/sys/log/modlog"
 
-#pkg.deps.!BUS_DRIVER_PRESENT:
-#    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
 
 pkg.req_apis:
     - stats
diff --git a/hw/drivers/sensors/bmp280/src/bmp280.c b/hw/drivers/sensors/bmp280/src/bmp280.c
index 10e331c..1fe61c2 100644
--- a/hw/drivers/sensors/bmp280/src/bmp280.c
+++ b/hw/drivers/sensors/bmp280/src/bmp280.c
@@ -24,7 +24,8 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "hal/hal_spi.h"
diff --git a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h
index b5b96cf..987ee1e 100644
--- a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h
+++ b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h
@@ -23,9 +23,8 @@
 #include "os/mynewt.h"
 #include "sensor/sensor.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
-#include "bus/spi.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #endif
 
 #ifdef __cplusplus
diff --git a/hw/drivers/sensors/lis2dh12/pkg.yml b/hw/drivers/sensors/lis2dh12/pkg.yml
index 9b7c67e..68aaf70 100644
--- a/hw/drivers/sensors/lis2dh12/pkg.yml
+++ b/hw/drivers/sensors/lis2dh12/pkg.yml
@@ -28,8 +28,13 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/sensor"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+    - "@apache-mynewt-core/hw/bus/drivers/spi_common"
+
 pkg.req_apis:
     - stats
diff --git a/hw/drivers/sensors/lis2dh12/src/lis2dh12.c b/hw/drivers/sensors/lis2dh12/src/lis2dh12.c
index ea9f107..4673b90 100644
--- a/hw/drivers/sensors/lis2dh12/src/lis2dh12.c
+++ b/hw/drivers/sensors/lis2dh12/src/lis2dh12.c
@@ -24,7 +24,8 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #else
 #include "hal/hal_spi.h"
 #include "hal/hal_i2c.h"
diff --git a/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h b/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
index 53afb51..291c4f1 100644
--- a/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
+++ b/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
@@ -23,8 +23,7 @@
 #include "os/mynewt.h"
 #include "sensor/sensor.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 
 #ifdef __cplusplus
diff --git a/hw/drivers/sensors/lis2dw12/pkg.yml b/hw/drivers/sensors/lis2dw12/pkg.yml
index 2d71684..4dd9849 100644
--- a/hw/drivers/sensors/lis2dw12/pkg.yml
+++ b/hw/drivers/sensors/lis2dw12/pkg.yml
@@ -29,8 +29,12 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/sensor"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+
 pkg.req_apis:
     - stats
diff --git a/hw/drivers/sensors/lis2dw12/src/lis2dw12.c b/hw/drivers/sensors/lis2dw12/src/lis2dw12.c
index dd0c71e..c5b7262 100644
--- a/hw/drivers/sensors/lis2dw12/src/lis2dw12.c
+++ b/hw/drivers/sensors/lis2dw12/src/lis2dw12.c
@@ -24,7 +24,7 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
 #else
 #include "hal/hal_spi.h"
 #include "hal/hal_i2c.h"
diff --git a/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h b/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
index 014da64..22f6e4b 100644
--- a/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
+++ b/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
@@ -23,8 +23,7 @@
 #include "os/mynewt.h"
 #include "sensor/sensor.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 #include "hal/hal_gpio.h"
 
diff --git a/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h b/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
index de17a31..3d3f760 100644
--- a/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
+++ b/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
@@ -24,9 +24,8 @@
 #include "sensor/sensor.h"
 #include "hal/hal_gpio.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
-#include "bus/spi.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #endif
 
 #ifdef __cplusplus
diff --git a/hw/drivers/sensors/lps33thw/pkg.yml b/hw/drivers/sensors/lps33thw/pkg.yml
index 1dc6fcb..50d638d 100644
--- a/hw/drivers/sensors/lps33thw/pkg.yml
+++ b/hw/drivers/sensors/lps33thw/pkg.yml
@@ -35,6 +35,12 @@ pkg.deps:
     - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+    - "@apache-mynewt-core/hw/bus/drivers/spi_common"
+
 pkg.req_apis:
     - stats
 
diff --git a/hw/drivers/sensors/lps33thw/src/lps33thw.c b/hw/drivers/sensors/lps33thw/src/lps33thw.c
index a7347a7..f80f050 100644
--- a/hw/drivers/sensors/lps33thw/src/lps33thw.c
+++ b/hw/drivers/sensors/lps33thw/src/lps33thw.c
@@ -25,7 +25,8 @@
 #include "os/mynewt.h"
 #include "hal/hal_gpio.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "hal/hal_spi.h"
diff --git a/hw/drivers/sensors/ms5837/include/ms5837/ms5837.h b/hw/drivers/sensors/ms5837/include/ms5837/ms5837.h
index 2342d74..7c0413b 100644
--- a/hw/drivers/sensors/ms5837/include/ms5837/ms5837.h
+++ b/hw/drivers/sensors/ms5837/include/ms5837/ms5837.h
@@ -24,8 +24,7 @@
 #include "os/mynewt.h"
 #include "sensor/sensor.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 
 #define MS5837_I2C_ADDRESS		0x76
diff --git a/hw/drivers/sensors/ms5837/pkg.yml b/hw/drivers/sensors/ms5837/pkg.yml
index a0a7c52..38ee10b 100644
--- a/hw/drivers/sensors/ms5837/pkg.yml
+++ b/hw/drivers/sensors/ms5837/pkg.yml
@@ -31,8 +31,12 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/sensor"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+
 pkg.req_apis:
     - stats
diff --git a/hw/drivers/sensors/ms5837/src/ms5837.c b/hw/drivers/sensors/ms5837/src/ms5837.c
index 661ca18..a336c30 100644
--- a/hw/drivers/sensors/ms5837/src/ms5837.c
+++ b/hw/drivers/sensors/ms5837/src/ms5837.c
@@ -24,7 +24,7 @@
 
 #include "os/mynewt.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "i2cn/i2cn.h"
diff --git a/hw/drivers/sensors/ms5840/include/ms5840/ms5840.h b/hw/drivers/sensors/ms5840/include/ms5840/ms5840.h
index a8140e6..4741a48 100644
--- a/hw/drivers/sensors/ms5840/include/ms5840/ms5840.h
+++ b/hw/drivers/sensors/ms5840/include/ms5840/ms5840.h
@@ -25,8 +25,7 @@
 #include "os/os_dev.h"
 #include "sensor/sensor.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus_driver.h"
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_common.h"
 #endif
 
 #define MS5840_I2C_ADDRESS		0x76
diff --git a/hw/drivers/sensors/ms5840/pkg.yml b/hw/drivers/sensors/ms5840/pkg.yml
index 7ea322d..96bbaf5 100644
--- a/hw/drivers/sensors/ms5840/pkg.yml
+++ b/hw/drivers/sensors/ms5840/pkg.yml
@@ -31,8 +31,12 @@ pkg.deps:
     - "@apache-mynewt-core/kernel/os"
     - "@apache-mynewt-core/hw/hal"
     - "@apache-mynewt-core/hw/sensor"
-    - "@apache-mynewt-core/hw/util/i2cn"
     - "@apache-mynewt-core/sys/log/modlog"
 
+pkg.deps.!BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/util/i2cn"
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_common"
+
 pkg.req_apis:
     - stats
diff --git a/hw/drivers/sensors/ms5840/src/ms5840.c b/hw/drivers/sensors/ms5840/src/ms5840.c
index 264eaf3..7892601 100644
--- a/hw/drivers/sensors/ms5840/src/ms5840.c
+++ b/hw/drivers/sensors/ms5840/src/ms5840.c
@@ -26,7 +26,7 @@
 #include "os/os.h"
 #include "sysinit/sysinit.h"
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/bus.h"
+#include "bus/drivers/i2c_common.h"
 #else
 #include "hal/hal_i2c.h"
 #include "i2cn/i2cn.h"
diff --git a/hw/mcu/nordic/nrf52xxx/pkg.yml b/hw/mcu/nordic/nrf52xxx/pkg.yml
index 1080532..10e127b 100644
--- a/hw/mcu/nordic/nrf52xxx/pkg.yml
+++ b/hw/mcu/nordic/nrf52xxx/pkg.yml
@@ -30,6 +30,10 @@ pkg.deps:
     - "@apache-mynewt-core/hw/cmsis-core"
     - "@apache-mynewt-core/hw/hal"
 
+pkg.deps.BUS_DRIVER_PRESENT:
+    - "@apache-mynewt-core/hw/bus/drivers/i2c_hal"
+    - "@apache-mynewt-core/hw/bus/drivers/spi_hal"
+
 # NRF52810 doesn't support SPI/I2C (Use SPIM/I2CM instead)
 pkg.ign_files.BSP_NRF52810:
     - "hal_spi.c"
diff --git a/hw/mcu/nordic/nrf52xxx/src/nrf52_periph.c b/hw/mcu/nordic/nrf52xxx/src/nrf52_periph.c
index 8004174..8af9612 100644
--- a/hw/mcu/nordic/nrf52xxx/src/nrf52_periph.c
+++ b/hw/mcu/nordic/nrf52xxx/src/nrf52_periph.c
@@ -27,10 +27,10 @@
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
 #include "bus/bus.h"
 #if MYNEWT_VAL(I2C_0) || MYNEWT_VAL(I2C_1)
-#include "bus/i2c.h"
+#include "bus/drivers/i2c_hal.h"
 #endif
 #if MYNEWT_VAL(SPI_0_MASTER) || MYNEWT_VAL(SPI_1_MASTER) || MYNEWT_VAL(SPI_2_MASTER)
-#include "bus/spi.h"
+#include "bus/drivers/spi_hal.h"
 #endif
 #endif
 #include "nrfx.h"
@@ -337,7 +337,8 @@ nrf52_periph_create_i2c(void)
 
 #if MYNEWT_VAL(I2C_0)
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-    rc = bus_i2c_dev_create("i2c0", &i2c0_bus, (struct bus_i2c_dev_cfg *)&i2c0_cfg);
+    rc = bus_i2c_hal_dev_create("i2c0", &i2c0_bus,
+                                (struct bus_i2c_dev_cfg *)&i2c0_cfg);
     assert(rc == 0);
 #else
     rc = hal_i2c_init(0, (void *)&hal_i2c0_cfg);
@@ -346,7 +347,8 @@ nrf52_periph_create_i2c(void)
 #endif
 #if MYNEWT_VAL(I2C_1)
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-    rc = bus_i2c_dev_create("i2c1", &i2c1_bus, (struct bus_i2c_dev_cfg *)&i2c1_cfg);
+    rc = bus_i2c_hal_dev_create("i2c1", &i2c1_bus,
+                                (struct bus_i2c_dev_cfg *)&i2c1_cfg);
     assert(rc == 0);
 #else
     rc = hal_i2c_init(1, (void *)&hal_i2c1_cfg);
@@ -364,7 +366,8 @@ nrf52_periph_create_spi(void)
 
 #if MYNEWT_VAL(SPI_0_MASTER)
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-    rc = bus_spi_dev_create("spi0", &spi0_bus, (struct bus_spi_dev_cfg *)&spi0_cfg);
+    rc = bus_spi_hal_dev_create("spi0",
+                                &spi0_bus, (struct bus_spi_dev_cfg *)&spi0_cfg);
     assert(rc == 0);
 #else
     rc = hal_spi_init(0, (void *)&os_bsp_spi0m_cfg, HAL_SPI_TYPE_MASTER);
@@ -377,7 +380,8 @@ nrf52_periph_create_spi(void)
 #endif
 #if MYNEWT_VAL(SPI_1_MASTER)
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-    rc = bus_spi_dev_create("spi1", &spi1_bus, (struct bus_spi_dev_cfg *)&spi1_cfg);
+    rc = bus_spi_hal_dev_create("spi1", &spi1_bus,
+                                (struct bus_spi_dev_cfg *)&spi1_cfg);
     assert(rc == 0);
 #else
     rc = hal_spi_init(1, (void *)&os_bsp_spi1m_cfg, HAL_SPI_TYPE_MASTER);
@@ -390,7 +394,8 @@ nrf52_periph_create_spi(void)
 #endif
 #if MYNEWT_VAL(SPI_2_MASTER)
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-    rc = bus_spi_dev_create("spi2", &spi2_bus, (struct bus_spi_dev_cfg *)&spi2_cfg);
+    rc = bus_spi_hal_dev_create("spi2", &spi2_bus,
+                                (struct bus_spi_dev_cfg *)&spi2_cfg);
     assert(rc == 0);
 #else
     rc = hal_spi_init(2, (void *)&os_bsp_spi2m_cfg, HAL_SPI_TYPE_MASTER);
diff --git a/hw/sensor/include/sensor/sensor.h b/hw/sensor/include/sensor/sensor.h
index 4f5c6da..5eeb7e8 100644
--- a/hw/sensor/include/sensor/sensor.h
+++ b/hw/sensor/include/sensor/sensor.h
@@ -24,8 +24,8 @@
 #include "os/mynewt.h"
 
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
-#include "bus/i2c.h"
-#include "bus/spi.h"
+#include "bus/drivers/i2c_common.h"
+#include "bus/drivers/spi_common.h"
 #endif
 #if MYNEWT_VAL(SENSOR_OIC)
 #include "oic/oc_ri.h"