mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
Merge branch 'fix/spi_buslock_unregister_issue' into 'master'
fix(hw_support): spi buslock fix unregister dev api issue Closes SEC-1147 See merge request espressif/esp-idf!50583
This commit is contained in:
@@ -705,10 +705,16 @@ void spi_bus_lock_unregister_dev(spi_bus_lock_dev_handle_t dev_handle)
|
||||
|
||||
spi_bus_lock_t* lock = dev_handle->parent;
|
||||
BUS_LOCK_DEBUG_EXECUTE_CHECK(atomic_load(&lock->dev[id]) == (intptr_t)dev_handle);
|
||||
BUS_LOCK_DEBUG_EXECUTE_CHECK(lock->acquiring_dev != dev_handle);
|
||||
BUS_LOCK_DEBUG_EXECUTE_CHECK((lock_status_fetch(lock) & dev_handle->mask) == 0);
|
||||
|
||||
if (lock->last_dev == dev_handle) {
|
||||
lock->last_dev = NULL;
|
||||
}
|
||||
if (lock->acquiring_dev == dev_handle) {
|
||||
lock->acquiring_dev = NULL;
|
||||
lock->acq_dev_bg_active = false;
|
||||
}
|
||||
|
||||
atomic_store(&lock->dev[id], (intptr_t)NULL);
|
||||
if (dev_handle->semphr) {
|
||||
@@ -735,6 +741,11 @@ void spi_bus_lock_set_bg_control(spi_bus_lock_handle_t lock, bg_ctrl_func_t bg_e
|
||||
lock->bg_arg = arg;
|
||||
}
|
||||
|
||||
IRAM_ATTR spi_bus_lock_handle_t spi_bus_lock_get_parent(spi_bus_lock_dev_handle_t dev_handle)
|
||||
{
|
||||
return (dev_handle ? dev_handle->parent : NULL);
|
||||
}
|
||||
|
||||
IRAM_ATTR int spi_bus_lock_get_dev_id(spi_bus_lock_dev_handle_t dev_handle)
|
||||
{
|
||||
return (dev_handle ? dev_lock_get_id(dev_handle) : -1);
|
||||
|
||||
Reference in New Issue
Block a user