hw_support: move periph_ctrl from driver to hw_support

This commit is contained in:
morris
2022-03-24 21:33:36 +08:00
parent d3f75c52d6
commit 29e9b5b46a
13 changed files with 19 additions and 20 deletions
-1
View File
@@ -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"
+1
View File
@@ -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
-6
View File
@@ -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)
+1
View File
@@ -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"
+9
View File
@@ -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
+4
View File
@@ -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)
+2 -3
View File
@@ -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()
-1
View File
@@ -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
+1
View File
@@ -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.
-7
View File
@@ -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:
+1 -2
View File
@@ -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"