From a99d4d5a7fa61646133177103b35e5c1cbb3e2dc Mon Sep 17 00:00:00 2001 From: Jonathan Kaufmann Date: Wed, 7 Mar 2018 12:28:41 -0600 Subject: [PATCH] Modified spi_bus_add_device so that it takes a constant *dev_config parameter. Merges https://github.com/espressif/esp-idf/pull/1690 --- components/driver/include/driver/spi_master.h | 2 +- components/driver/spi_master.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/driver/include/driver/spi_master.h b/components/driver/include/driver/spi_master.h index 10df005074..6c41539889 100644 --- a/components/driver/include/driver/spi_master.h +++ b/components/driver/include/driver/spi_master.h @@ -160,7 +160,7 @@ esp_err_t spi_bus_free(spi_host_device_t host); * - ESP_ERR_NO_MEM if out of memory * - ESP_OK on success */ -esp_err_t spi_bus_add_device(spi_host_device_t host, spi_device_interface_config_t *dev_config, spi_device_handle_t *handle); +esp_err_t spi_bus_add_device(spi_host_device_t host, const spi_device_interface_config_t *dev_config, spi_device_handle_t *handle); /** diff --git a/components/driver/spi_master.c b/components/driver/spi_master.c index 03c238b039..4890b3ba78 100644 --- a/components/driver/spi_master.c +++ b/components/driver/spi_master.c @@ -242,7 +242,7 @@ esp_err_t spi_bus_free(spi_host_device_t host) Add a device. This allocates a CS line for the device, allocates memory for the device structure and hooks up the CS pin to whatever is specified. */ -esp_err_t spi_bus_add_device(spi_host_device_t host, spi_device_interface_config_t *dev_config, spi_device_handle_t *handle) +esp_err_t spi_bus_add_device(spi_host_device_t host, const spi_device_interface_config_t *dev_config, spi_device_handle_t *handle) { int freecs; int apbclk=APB_CLK_FREQ; @@ -271,14 +271,14 @@ esp_err_t spi_bus_add_device(spi_host_device_t host, spi_device_interface_config //Allocate queues, set defaults dev->trans_queue=xQueueCreate(dev_config->queue_size, sizeof(spi_trans_priv)); dev->ret_queue=xQueueCreate(dev_config->queue_size, sizeof(spi_trans_priv)); - if (!dev->trans_queue || !dev->ret_queue) goto nomem; - if (dev_config->duty_cycle_pos==0) dev_config->duty_cycle_pos=128; + if (!dev->trans_queue || !dev->ret_queue) goto nomem; dev->host=spihost[host]; //We want to save a copy of the dev config in the dev struct. memcpy(&dev->cfg, dev_config, sizeof(spi_device_interface_config_t)); + if (dev->cfg.duty_cycle_pos==0) dev->cfg.duty_cycle_pos=128; // TODO: if we have to change the apb clock among transactions, re-calculate this each time the apb clock lock is acquired. - dev->clk_cfg.eff_clk = spi_cal_clock(apbclk, dev_config->clock_speed_hz, dev_config->duty_cycle_pos, (uint32_t*)&dev->clk_cfg.reg); + dev->clk_cfg.eff_clk = spi_cal_clock(apbclk, dev->cfg.clock_speed_hz, dev->cfg.duty_cycle_pos, (uint32_t*)&dev->clk_cfg.reg); //Set CS pin, CS options if (dev_config->spics_io_num >= 0) {