]> granicus.if.org Git - esp-idf/commitdiff
Modified spi_bus_add_device so that it takes a constant *dev_config parameter.
authorJonathan Kaufmann <jonathankaufmann@gmail.com>
Wed, 7 Mar 2018 18:28:41 +0000 (12:28 -0600)
committerIvan Grokhotkov <ivan@espressif.com>
Mon, 19 Mar 2018 04:17:45 +0000 (12:17 +0800)
Merges https://github.com/espressif/esp-idf/pull/1690

components/driver/include/driver/spi_master.h
components/driver/spi_master.c

index 10df0050742a1579bcfb830362c959ca6705548b..6c41539889f572690c8effa700abf62f408854eb 100644 (file)
@@ -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);
 
 
 /**
index 03c238b0399c364a2e8615039b3acf4b1ee315fd..4890b3ba78b7a468da7d1860e3c222a39caf0e3f 100644 (file)
@@ -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) {