diff --git a/components/driver/include/driver/spi_common.h b/components/driver/include/driver/spi_common.h index 516e94d790..0617b211d0 100644 --- a/components/driver/include/driver/spi_common.h +++ b/components/driver/include/driver/spi_common.h @@ -159,7 +159,7 @@ esp_err_t spi_bus_initialize(spi_host_device_t host_id, const spi_bus_config_t * * @param host_id SPI peripheral to free * @return * - ESP_ERR_INVALID_ARG if parameter is invalid - * - ESP_ERR_INVALID_STATE if not all devices on the bus are freed + * - ESP_ERR_INVALID_STATE if bus hasn't been initialized before, or not all devices on the bus are freed * - ESP_OK on success */ esp_err_t spi_bus_free(spi_host_device_t host_id); diff --git a/components/driver/spi_common.c b/components/driver/spi_common.c index c81f8d173e..63ff4d6b29 100644 --- a/components/driver/spi_common.c +++ b/components/driver/spi_common.c @@ -862,6 +862,10 @@ const spi_bus_attr_t* spi_bus_get_attr(spi_host_device_t host_id) esp_err_t spi_bus_free(spi_host_device_t host_id) { + if (bus_ctx[host_id] == NULL) { + return ESP_ERR_INVALID_STATE; + } + esp_err_t err = ESP_OK; spicommon_bus_context_t* ctx = bus_ctx[host_id]; spi_bus_attr_t* bus_attr = &ctx->bus_attr;