Merge branch 'refactor/move_periph_ctrl_hw_support' into 'master'

hw_support: move periph_ctrl from driver to hw_support

Closes IDF-4796

See merge request espressif/esp-idf!17583
pull/8755/head
morris 2022-03-30 04:54:07 +08:00
commit 6f538b1c95
17 zmienionych plików z 27 dodań i 30 usunięć

Wyświetl plik

@ -6,7 +6,6 @@ set(srcs
"i2c.c"
"ledc.c"
"legacy_new_driver_coexist.c"
"periph_ctrl.c"
"rtc_io.c"
"rtc_module.c"
"sdspi_crc.c"

Wyświetl plik

@ -90,6 +90,7 @@ menu "Driver configurations"
config TWAI_ISR_IN_IRAM
bool "Place TWAI ISR function into IRAM"
default n
select PERIPH_CTRL_FUNC_IN_IRAM if TWAI_ERRATA_FIX_RX_FRAME_INVALID || TWAI_ERRATA_FIX_RX_FIFO_CORRUPT
help
Place the TWAI ISR in to IRAM. This will allow the ISR to avoid
cache misses, and also be able to run whilst the cache is disabled

Wyświetl plik

@ -10,11 +10,7 @@
#include "sdkconfig.h"
#include "esp_err.h"
#include "esp_intr_alloc.h"
#if !CONFIG_IDF_TARGET_LINUX
#include "esp_attr.h"
#include "esp_types.h"
#include "soc/soc_caps.h"
#endif // !CONFIG_IDF_TARGET_LINUX
#include "hal/gpio_types.h"
#include "esp_rom_gpio.h"

Wyświetl plik

@ -6,7 +6,8 @@
#pragma once
#include "esp_types.h"
#include <stdint.h>
#include "esp_err.h"
#include "driver/gpio.h"
#include "hal/sigmadelta_types.h"
@ -18,10 +19,10 @@ extern "C" {
* @brief Sigma-delta configure struct
*/
typedef struct {
sigmadelta_channel_t channel; /*!< Sigma-delta channel number */
int8_t sigmadelta_duty; /*!< Sigma-delta duty, duty ranges from -128 to 127. */
uint8_t sigmadelta_prescale; /*!< Sigma-delta prescale, prescale ranges from 0 to 255. */
uint8_t sigmadelta_gpio; /*!< Sigma-delta output io number, refer to gpio.h for more details. */
sigmadelta_channel_t channel; /*!< Sigma-delta channel number */
int8_t sigmadelta_duty; /*!< Sigma-delta duty, duty ranges from -128 to 127. */
uint8_t sigmadelta_prescale; /*!< Sigma-delta prescale, prescale ranges from 0 to 255. */
gpio_num_t sigmadelta_gpio; /*!< Sigma-delta output io number, refer to gpio.h for more details. */
} sigmadelta_config_t;
/**

Wyświetl plik

@ -1,12 +1,6 @@
[mapping:driver]
archive: libdriver.a
entries:
# TWAI workarounds that require periph_module_reset() won't work if cache is disabled due to the use of switch jump
# tables in periph_module_reset(). We prevent any part of periph_module_reset() (either text or RO data) from being
# placed in flash.
if TWAI_ISR_IN_IRAM = y && (TWAI_ERRATA_FIX_RX_FRAME_INVALID = y || TWAI_ERRATA_FIX_RX_FIFO_CORRUPT = y):
periph_ctrl: periph_module_reset (noflash)
if GPTIMER_CTRL_FUNC_IN_IRAM = y:
gptimer: gptimer_set_raw_count (noflash)
gptimer: gptimer_get_raw_count (noflash)

Wyświetl plik

@ -11,6 +11,7 @@ if(NOT BOOTLOADER_BUILD)
"hw_random.c"
"intr_alloc.c"
"mac_addr.c"
"periph_ctrl.c"
"sleep_modes.c"
"sleep_gpio.c"
"sleep_mac_bb.c"

Wyświetl plik

@ -85,4 +85,13 @@ menu "Hardware Settings"
If you want to use USB_SERIAL_JTAG under sw_reset case or sleep-wakeup case, you shoule select
this option. But be aware that this might increase the power consumption.
endmenu
menu "Peripheral Control"
config PERIPH_CTRL_FUNC_IN_IRAM
bool "Place peripheral control functions into IRAM"
default n
help
Place peripheral control functions (e.g. periph_module_reset) into IRAM,
so that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.
endmenu
endmenu

Wyświetl plik

@ -16,3 +16,7 @@ entries:
opiram_psram (noflash)
if IDF_TARGET_ESP32S2 = y:
mmu_psram (noflash)
if PERIPH_CTRL_FUNC_IN_IRAM = y:
periph_ctrl: periph_module_reset (noflash)
periph_ctrl: wifi_module_enable (noflash)
periph_ctrl: wifi_module_disable (noflash)

Wyświetl plik

@ -28,18 +28,17 @@ if(CONFIG_ESP_PHY_MULTIPLE_INIT_DATA_BIN)
endif()
endif()
# [refactor-todo]: requires "driver" component for periph_ctrl header file
if(CONFIG_ESP_PHY_MULTIPLE_INIT_DATA_BIN_EMBED)
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "include" "${idf_target}/include"
PRIV_REQUIRES nvs_flash driver
PRIV_REQUIRES nvs_flash
LDFRAGMENTS "${ldfragments}"
EMBED_FILES "${build_dir}/phy_multiple_init_data.bin"
)
else()
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "include" "${idf_target}/include"
PRIV_REQUIRES nvs_flash driver
PRIV_REQUIRES nvs_flash
LDFRAGMENTS "${ldfragments}"
)
endif()

Wyświetl plik

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include "esp_attr.h"
#include "esp_private/pm_trace.h"
#include "driver/gpio.h"
#include "soc/soc.h"

Wyświetl plik

@ -41,7 +41,6 @@ else()
# should be removable once using component init functions
# link-time registration is used.
# [refactor-todo] requires "driver" for headers:
# - periph_ctrl.h
# - rtc_cntl.h
# - spi_common_internal.h
pthread bootloader_support efuse driver

Wyświetl plik

@ -254,6 +254,7 @@ menu "Wi-Fi"
config ESP_WIFI_SLP_IRAM_OPT
bool "WiFi SLP IRAM speed optimization"
select PM_SLP_DEFAULT_PARAMS_OPT
select PERIPH_CTRL_FUNC_IN_IRAM
help
Select this option to place called Wi-Fi library TBTT process and receive beacon functions in IRAM.
Some functions can be put in IRAM either by ESP32_WIFI_IRAM_OPT and ESP32_WIFI_RX_IRAM_OPT, or this one.

Wyświetl plik

@ -150,13 +150,6 @@ entries:
wifi_init:wifi_apb80m_request (noflash)
wifi_init:wifi_apb80m_release (noflash)
[mapping:driver_wifi_pm]
archive: libdriver.a
entries:
if ESP_WIFI_SLP_IRAM_OPT =y:
periph_ctrl:wifi_module_enable (noflash)
periph_ctrl:wifi_module_disable (noflash)
[mapping:esp_timer_wifi_pm]
archive: libesp_timer.a
entries:

Wyświetl plik

@ -4,8 +4,7 @@ set(priv_include)
# As CONFIG_USB_OTG_SUPPORTED comes from Kconfig, it is not evaluated yet
# when components are being registered.
# Thus, always add the (private) requirements, regardless of Kconfig
# [refactor-todo]: requires "driver" because "periph_ctrl.h" is used in "hcd.c"
set(priv_require hal driver)
set(priv_require driver) # usb_phy driver relies on gpio driver API
if(CONFIG_USB_OTG_SUPPORTED)
list(APPEND srcs "hcd.c"

Wyświetl plik

@ -14,6 +14,7 @@
#include "soc/ledc_struct.h"
#include "driver/gptimer.h"
#include "driver/ledc.h"
#include "esp_attr.h"
#include "iot_led.h"
#include "esp_log.h"