You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by st...@apache.org on 2016/08/09 17:55:54 UTC

[3/3] incubator-mynewt-core git commit: changes from supporting Arduino Zero/SAMD21 HAL. take an opaque argument to I2C and SPI init() functions for pinmux.

changes from supporting Arduino Zero/SAMD21 HAL.  take an opaque argument to I2C and SPI init() functions for pinmux.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/904ec76d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/904ec76d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/904ec76d

Branch: refs/heads/sterly_refactor
Commit: 904ec76d63883bbf19df0c55213bf2a4e76699a4
Parents: 425a213
Author: Sterling Hughes <st...@apache.org>
Authored: Tue Aug 9 10:55:21 2016 -0700
Committer: Sterling Hughes <st...@apache.org>
Committed: Tue Aug 9 10:55:21 2016 -0700

----------------------------------------------------------------------
 hw/hal/include/hal/hal_i2c.h                   |  8 +++-----
 hw/hal/include/hal/hal_spi.h                   |  5 ++++-
 hw/hal/include/hal/hal_uart.h                  |  9 +++++++++
 hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h |  7 ++++++-
 hw/mcu/nordic/nrf52xxx/src/hal_i2c.c           | 18 +++++++++++++-----
 hw/mcu/nordic/nrf52xxx/src/hal_spi.c           |  2 +-
 6 files changed, 36 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/hal/include/hal/hal_i2c.h
----------------------------------------------------------------------
diff --git a/hw/hal/include/hal/hal_i2c.h b/hw/hal/include/hal/hal_i2c.h
index e8c02db..b7a35e3 100644
--- a/hw/hal/include/hal/hal_i2c.h
+++ b/hw/hal/include/hal/hal_i2c.h
@@ -69,14 +69,12 @@ struct hal_i2c_master_data {
  * Initialize a new i2c device with the I2C number.
  *
  * @param i2c_num The number of the I2C device being initialized
- * @param scl_pin The GPIO pin to use for clock
- * @param sda_pin The GPIO pin to use for data
- * @param i2c_frequency The I2C frequency to use, in KHz
+ * @param cfg The hardware specific configuration structure to configure
+ *            the I2C with.  This includes things like pin configuration.
  *
  * @return 0 on success, and non-zero error code on failure
  */
-int hal_i2c_init(uint8_t i2c_num, int scl_pin, int sda_pin,
-        uint32_t i2c_frequency);
+int hal_i2c_init(uint8_t i2c_num, void *cfg);
 
 /**
  * Sends a start condition and writes <len> bytes of data on the i2c.

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/hal/include/hal/hal_spi.h
----------------------------------------------------------------------
diff --git a/hw/hal/include/hal/hal_spi.h b/hw/hal/include/hal/hal_spi.h
index 7146a84..56d38a1 100644
--- a/hw/hal/include/hal/hal_spi.h
+++ b/hw/hal/include/hal/hal_spi.h
@@ -62,10 +62,13 @@ struct hal_spi_settings {
  * Initialize the SPI, given by spi_num.
  *
  * @param spi_num The number of the SPI to initialize
+ * @param cfg HW/MCU specific configuration,
+ *            passed to the underlying
+ *            implementation, providing extra configuration.
  *
  * @return 0 on success, non-zero error code on failure.
  */
-int hal_spi_init(uint8_t spi_num);
+int hal_spi_init(uint8_t spi_num, void *cfg);
 
 /**
  * Configure the spi.

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/hal/include/hal/hal_uart.h
----------------------------------------------------------------------
diff --git a/hw/hal/include/hal/hal_uart.h b/hw/hal/include/hal/hal_uart.h
index 1233727..dc83dca 100644
--- a/hw/hal/include/hal/hal_uart.h
+++ b/hw/hal/include/hal/hal_uart.h
@@ -69,6 +69,15 @@ enum hal_uart_flow_ctl {
 };
 
 /**
+ * Initialize the HAL uart.
+ *
+ * @param uart  The uart number to configure
+ * @param cfg   Hardware specific uart configuration.  This is passed from BSP
+ *              directly to the MCU specific driver.
+ */
+int hal_uart_init(int uart, void *cfg);
+
+/**
  * hal uart config
  *
  * Applies given configuration to UART.

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h
----------------------------------------------------------------------
diff --git a/hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h b/hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h
index 45891d9..048e0a0 100755
--- a/hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h
+++ b/hw/mcu/nordic/nrf52xxx/include/mcu/nrf52_hal.h
@@ -6,7 +6,7 @@
  * 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,
@@ -46,6 +46,11 @@ struct nrf52_uart_cfg {
 };
 const struct nrf52_uart_cfg *bsp_uart_config(void);
 
+struct nrf52_hal_i2c_cfg {
+    int scl_pin;
+    int sda_pin;
+    uint32_t i2c_frequency;
+};
 struct hal_flash;
 extern const struct hal_flash nrf52k_flash_dev;
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/mcu/nordic/nrf52xxx/src/hal_i2c.c
----------------------------------------------------------------------
diff --git a/hw/mcu/nordic/nrf52xxx/src/hal_i2c.c b/hw/mcu/nordic/nrf52xxx/src/hal_i2c.c
index 17b841d..1394d81 100644
--- a/hw/mcu/nordic/nrf52xxx/src/hal_i2c.c
+++ b/hw/mcu/nordic/nrf52xxx/src/hal_i2c.c
@@ -25,6 +25,10 @@
 #include <nrf.h>
 #include <nrf_drv_twi.h>
 
+#include <mcu/nrf52_hal.h>
+
+#include <assert.h>
+
 struct nrf52_hal_i2c {
     nrf_drv_twi_t nhi_nrf_master;
 };
@@ -63,18 +67,22 @@ struct nrf52_hal_i2c *nrf52_hal_i2cs[NRF52_HAL_I2C_MAX] = {
     }
 
 int
-hal_i2c_init(uint8_t i2c_num, int scl_pin, int sda_pin,
-        uint32_t i2c_frequency)
+hal_i2c_init(uint8_t i2c_num, void *usercfg)
 {
     struct nrf52_hal_i2c *i2c;
+    struct nrf52_hal_i2c_cfg *i2c_cfg;
     nrf_drv_twi_config_t cfg;
     int rc;
 
+    assert(usercfg != NULL);
+
     NRF52_HAL_I2C_RESOLVE(i2c_num, i2c);
 
-    cfg.scl = scl_pin;
-    cfg.sda = sda_pin;
-    switch (i2c_frequency) {
+    i2c_cfg = (struct nrf52_hal_i2c_cfg *) usercfg;
+
+    cfg.scl = i2c_cfg->scl_pin;
+    cfg.sda = i2c_cfg->sda_pin;
+    switch (i2c_cfg->i2c_frequency) {
         case 100:
             cfg.frequency = NRF_TWI_FREQ_100K;
             break;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/904ec76d/hw/mcu/nordic/nrf52xxx/src/hal_spi.c
----------------------------------------------------------------------
diff --git a/hw/mcu/nordic/nrf52xxx/src/hal_spi.c b/hw/mcu/nordic/nrf52xxx/src/hal_spi.c
index f12c5f3..c8f9e57 100644
--- a/hw/mcu/nordic/nrf52xxx/src/hal_spi.c
+++ b/hw/mcu/nordic/nrf52xxx/src/hal_spi.c
@@ -75,7 +75,7 @@ nrf_drv_spi_config_t cfg_spi1 = NRF_DRV_SPI_DEFAULT_CONFIG(1);
     }
 
 int
-hal_spi_init(uint8_t spi_num)
+hal_spi_init(uint8_t spi_num, void *cfg)
 {
     return (0);
 }