From beaf6d7a1b13d069c1a7ca3ebc18c9290303ff29 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Sun, 5 Jul 2020 21:44:27 +0100 Subject: [PATCH 1/2] drivers: lora: Add chip select flags to SX126x driver Add chip select flags from the device tree to the spi_cs_control instance. Signed-off-by: Andreas Sandberg --- drivers/lora/sx126x.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/lora/sx126x.c b/drivers/lora/sx126x.c index a6740e86e862..a48f71a2e756 100644 --- a/drivers/lora/sx126x.c +++ b/drivers/lora/sx126x.c @@ -34,6 +34,7 @@ BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(semtech_sx1261) + #define HAVE_GPIO_CS DT_INST_SPI_DEV_HAS_CS_GPIOS(0) #define GPIO_CS_LABEL DT_INST_SPI_DEV_CS_GPIOS_LABEL(0) #define GPIO_CS_PIN DT_INST_SPI_DEV_CS_GPIOS_PIN(0) +#define GPIO_CS_FLAGS DT_INST_SPI_DEV_CS_GPIOS_FLAGS(0) #define GPIO_RESET_LABEL DT_INST_GPIO_LABEL(0, reset_gpios) #define GPIO_RESET_PIN DT_INST_GPIO_PIN(0, reset_gpios) @@ -441,12 +442,15 @@ static int sx126x_lora_init(struct device *dev) #if HAVE_GPIO_CS dev_data.spi_cs.gpio_dev = device_get_binding(GPIO_CS_LABEL); - dev_data.spi_cs.gpio_pin = GPIO_CS_PIN; if (!dev_data.spi_cs.gpio_dev) { LOG_ERR("Cannot get pointer to %s device", GPIO_CS_LABEL); return -EIO; } + dev_data.spi_cs.gpio_pin = GPIO_CS_PIN; + dev_data.spi_cs.gpio_dt_flags = GPIO_CS_FLAGS; + dev_data.spi_cs.delay = 0U; + dev_data.spi_cfg.cs = &dev_data.spi_cs; #endif dev_data.spi_cfg.operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB; From 506a98693cfabc94e2bee7c636094e71d83f5719 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Sun, 5 Jul 2020 21:45:55 +0100 Subject: [PATCH 2/2] drivers: lora: Add chip select flags to SX1276 driver Add chip select flags from the device tree to the spi_cs_control instance. Signed-off-by: Andreas Sandberg --- drivers/lora/sx1276.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/lora/sx1276.c b/drivers/lora/sx1276.c index 7faa1b43331d..e4a88bef3f06 100644 --- a/drivers/lora/sx1276.c +++ b/drivers/lora/sx1276.c @@ -23,6 +23,7 @@ LOG_MODULE_REGISTER(sx1276); #define GPIO_RESET_PIN DT_INST_GPIO_PIN(0, reset_gpios) #define GPIO_RESET_FLAGS DT_INST_GPIO_FLAGS(0, reset_gpios) #define GPIO_CS_PIN DT_INST_SPI_DEV_CS_GPIOS_PIN(0) +#define GPIO_CS_FLAGS DT_INST_SPI_DEV_CS_GPIOS_FLAGS(0) #define GPIO_ANTENNA_ENABLE_PIN \ DT_INST_GPIO_PIN(0, antenna_enable_gpios) @@ -541,7 +542,6 @@ static int sx1276_lora_init(struct device *dev) dev_data.spi_cfg.slave = DT_INST_REG_ADDR(0); #if DT_INST_SPI_DEV_HAS_CS_GPIOS(0) - spi_cs.gpio_pin = GPIO_CS_PIN, spi_cs.gpio_dev = device_get_binding( DT_INST_SPI_DEV_CS_GPIOS_LABEL(0)); if (!spi_cs.gpio_dev) { @@ -550,6 +550,10 @@ static int sx1276_lora_init(struct device *dev) return -EIO; } + spi_cs.gpio_pin = GPIO_CS_PIN; + spi_cs.gpio_dt_flags = GPIO_CS_FLAGS; + spi_cs.delay = 0U; + dev_data.spi_cfg.cs = &spi_cs; #endif