From 93e973fa21254712d65a22f21c0192b4f28e21f9 Mon Sep 17 00:00:00 2001 From: Xiao Xufeng Date: Tue, 24 Oct 2023 02:52:51 +0800 Subject: [PATCH] fix(spi): fixed undesired touching to DMA Closes https://github.com/espressif/esp-idf/issues/12241 --- components/hal/spi_hal.c | 4 +++- components/hal/spi_slave_hal.c | 4 +++- components/hal/spi_slave_hd_hal.c | 22 ++++++++-------------- tools/ci/check_copyright_ignore.txt | 1 - 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/components/hal/spi_hal.c b/components/hal/spi_hal.c index 0ec85d8fdb..dfe6875b92 100644 --- a/components/hal/spi_hal.c +++ b/components/hal/spi_hal.c @@ -56,7 +56,9 @@ void spi_hal_init(spi_hal_context_t *hal, uint32_t host_id, const spi_hal_config hal->dmadesc_n = config->dmadesc_n; spi_ll_master_init(hw); - s_spi_hal_dma_init_config(hal); + if (config->dma_enabled) { + s_spi_hal_dma_init_config(hal); + } //Force a transaction done interrupt. This interrupt won't fire yet because //we initialized the SPI interrupt as disabled. This way, we can just diff --git a/components/hal/spi_slave_hal.c b/components/hal/spi_slave_hal.c index 04982f1a7e..8ac605affd 100644 --- a/components/hal/spi_slave_hal.c +++ b/components/hal/spi_slave_hal.c @@ -31,7 +31,9 @@ void spi_slave_hal_init(spi_slave_hal_context_t *hal, const spi_slave_hal_config hal->dma_in = hal_config->dma_in; hal->dma_out = hal_config->dma_out; - s_spi_slave_hal_dma_init_config(hal); + if (hal->use_dma) { + s_spi_slave_hal_dma_init_config(hal); + } spi_ll_slave_init(hal->hw); //Force a transaction done interrupt. This interrupt won't fire yet because we initialized the SPI interrupt as diff --git a/components/hal/spi_slave_hd_hal.c b/components/hal/spi_slave_hd_hal.c index 4662f676dd..0775c515c6 100644 --- a/components/hal/spi_slave_hd_hal.c +++ b/components/hal/spi_slave_hd_hal.c @@ -1,16 +1,8 @@ -// Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ // The HAL layer for SPI Slave HD @@ -78,7 +70,9 @@ void spi_slave_hd_hal_init(spi_slave_hd_hal_context_t *hal, const spi_slave_hd_h hal->rx_dma_head = &hal->rx_dummy_head; //Configure slave - s_spi_slave_hd_hal_dma_init_config(hal); + if (hal_config->dma_enabled) { + s_spi_slave_hd_hal_dma_init_config(hal); + } spi_ll_slave_hd_init(hw); spi_ll_set_addr_bitlen(hw, hal_config->address_bits); diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index f5938a5442..29758b444d 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -741,7 +741,6 @@ components/hal/spi_flash_encrypt_hal_iram.c components/hal/spi_flash_hal_gpspi.c components/hal/spi_slave_hal.c components/hal/spi_slave_hal_iram.c -components/hal/spi_slave_hd_hal.c components/hal/test/test_mpu.c components/hal/touch_sensor_hal.c components/hal/twai_hal_iram.c