From 519764fc0088a44f1a37a26970f37febaa59b295 Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Thu, 7 May 2026 10:09:42 +0800 Subject: [PATCH] fix(bitscrambler): fixed extra_clean_up actions done after clock disable Cannot write to any bitscrambler registers after clock is disabled in release_channel(). (cherry picked from commit 39a131617d82e3641d8f0b03b4ec5e5ef1051fd6) --- components/esp_driver_bitscrambler/src/bitscrambler.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/components/esp_driver_bitscrambler/src/bitscrambler.c b/components/esp_driver_bitscrambler/src/bitscrambler.c index 2aab61ea4a3..942bb1b02a2 100644 --- a/components/esp_driver_bitscrambler/src/bitscrambler.c +++ b/components/esp_driver_bitscrambler/src/bitscrambler.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -307,15 +307,18 @@ void bitscrambler_free(bitscrambler_handle_t handle) if (!handle) { return; } + + if (handle->extra_clean_up) { + handle->extra_clean_up(handle, handle->clean_up_user_ctx); + } + if (handle->loopback) { release_channel(BITSCRAMBLER_DIR_TX); release_channel(BITSCRAMBLER_DIR_RX); } else { release_channel(handle->cfg.dir); } - if (handle->extra_clean_up) { - handle->extra_clean_up(handle, handle->clean_up_user_ctx); - } + free(handle); }