Browse Source

[components/drivers] add result check for configure in `rt_spi_configure` (#7474)

Signed-off-by: a1012112796 <1012112796@qq.com>
Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
a1012112796 2 years ago
parent
commit
5e4a95f54d
1 changed files with 13 additions and 3 deletions
  1. 13 3
      components/drivers/spi/spi_core.c

+ 13 - 3
components/drivers/spi/spi_core.c

@@ -90,7 +90,7 @@ rt_err_t rt_spi_bus_attach_device(struct rt_spi_device *device,
 rt_err_t rt_spi_configure(struct rt_spi_device        *device,
                           struct rt_spi_configuration *cfg)
 {
-    rt_err_t result;
+    rt_err_t result = -RT_ERROR;
 
     RT_ASSERT(device != RT_NULL);
 
@@ -114,15 +114,25 @@ rt_err_t rt_spi_configure(struct rt_spi_device        *device,
         {
             if (device->bus->owner == device)
             {
-                device->bus->ops->configure(device, &device->config);
+                /* current device is using, re-configure SPI bus */
+                result = device->bus->ops->configure(device, &device->config);
+                if (result != RT_EOK)
+                {
+                    /* configure SPI bus failed */
+                    LOG_E("SPI device %s configuration failed", device->parent.parent.name);
+                }
             }
 
             /* release lock */
             rt_mutex_release(&(device->bus->lock));
         }
     }
+    else
+    {
+        result = RT_EOK;
+    }
 
-    return RT_EOK;
+    return result;
 }
 
 rt_err_t rt_spi_send_then_send(struct rt_spi_device *device,