Commit Graph

516 Commits

Author SHA1 Message Date
Armando
29ae238845 mmu: driver framework, for vaddr maintenance
This commit gives basic mmu driver framework. Now it is able to maintain
mmu virtual address usage on esp32, esp32s2 and esp32s3. Usage to
external virtual address should rely on mmu functions to know which
address range is available, instead of hardcoded.

This commit also improves psram memory that is added to the heap
allocator. Now it's added to the heap, according to the memory
alignment.

Closes https://github.com/espressif/esp-idf/issues/8295
Closes https://github.com/espressif/esp-idf/issues/9193
2022-08-27 16:05:51 +08:00
morris
d7580183a6 Merge branch 'bugfix/rtc_periph_ulp_touch_v5.0' into 'release/v5.0'
sleep_modes: allow using touch/ULP with RTC_PERIPH domain (including EXT0 wakeup source) (v5.0)

See merge request espressif/esp-idf!19767
2022-08-26 18:46:25 +08:00
Marius Vikhammer
c011cdce1c Merge branch 'bugfix/gpio_wakeup_docs_v5.0' into 'release/v5.0'
docs: fix documentation wrongly stating ESP_SLEEP_WAKEUP_GPIO is light sleep only (v5.0)

See merge request espressif/esp-idf!19739
2022-08-26 10:31:21 +08:00
Michael (XIAO Xufeng)
2ab4ce4bb1 Update components/esp_hw_support/include/esp_sleep.h 2022-08-25 12:28:00 +08:00
Michael (XIAO Xufeng)
209545db6a sleep_modes: allow using touch/ULP with RTC_PERIPH domain (including EXT0 wakeup source) 2022-08-25 12:27:59 +08:00
Michael (XIAO Xufeng)
69be7c4cc2 Merge branch 'feat/support_esp32c2_uart_v5.0' into 'release/v5.0'
uart: update console docs about frequency for ESP32-C2, move frequency of clock sources out of HAL (v5.0)

See merge request espressif/esp-idf!19690
2022-08-25 02:03:26 +08:00
Marius Vikhammer
76207273fd docs: fix documentation wrongly stating ESP_SLEEP_WAKEUP_GPIO is light sleep only
ESP_SLEEP_WAKEUP_GPIO is also a valid deep sleep wakeup cause on targets
with SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP

Closes https://github.com/espressif/esp-idf/issues/9567
2022-08-24 10:50:49 +08:00
Michael (XIAO Xufeng)
4a68f9e064 Merge branch 'feature/support_7.2.9_soc/pvt_dig_v5.0' into 'release/v5.0'
ESP32C2:support auto adjust LDO voltage based on pvt-dig(backport 5.0)

See merge request espressif/esp-idf!19628
2022-08-23 09:30:06 +08:00
Michael (XIAO Xufeng)
6ed15178b6 uart: move frequency of clock sources out of HAL 2022-08-22 14:28:12 +08:00
morris
4701d95052 driver: specify the interrupt priority
Closes https://github.com/espressif/esp-idf/issues/9520
2022-08-18 10:57:13 +08:00
zlq
3dc89437cc support auto adjust LDO voltage based on pvt-dig 2022-08-17 17:25:59 +08:00
jingli
d3d1d4e1df esp32c2/clk_cali: fix rtc slow clk cali logic 2022-08-17 11:17:36 +08:00
Jiang Jiang Jian
4ba5515dc0 Merge branch 'backport/backport_master_to_release_v5.0' into 'release/v5.0'
backport master to release v5.0(Backport v5.0)

See merge request espressif/esp-idf!19560
2022-08-16 16:37:54 +08:00
Li Shuai
b2a6403b40 Power Management: fix the issue of sleeping time error beacause external 32kHz xtal does not exist 2022-08-15 21:16:02 +08:00
Darian Leung
aa25d83787 esp_hw_support: Fix esp_light_sleep_start() deadlock
esp_light_sleep_start() will stall the other CPU via esp_ipc_isr_stall_other_cpu(). After stalling the other CPU,
will call esp_clk_... API which themselves take locks. If the other stalled CPU is holding those locks, this will
result in a deadlock.

This commit adds a workaround calling esp_clk_private_lock() to take the lock before stalling the other CPU.
2022-08-11 18:38:51 +08:00
Darian Leung
1fded0234c esp_hw_support: esp_clk should use spinlock instead of mutex
esp_clk used to be protected using _lock_t (i.e., a FreeRTOS Mutex). However, esp_clk API is current called from
from critical sections, thus mutex should not be used (as they can be blocking).

This commit updates esp_clk to use spinlocks for critical sections instead.
2022-08-11 18:38:45 +08:00
morris
5090955250 Merge branch 'bugfix/fix_esp32s3_cache_data_memory_wrong_attr_backport_v5.0' into 'release/v5.0'
bugfix: esp32s3 DCache data memory is retention dma inaccessible (backport v5.0)

See merge request espressif/esp-idf!19473
2022-08-10 17:56:10 +08:00
wuzhenghui
edb78e8196 bugfix: malloc retention buffer with MALLOC_CAP_RETENTION caps 2022-08-09 21:10:59 +08:00
jingli
8cd7c30bc7 kconfig: refactor xtal freq kconfig to common configuration item 2022-08-08 13:53:02 +08:00
Ivan Grokhotkov
401c10ecfb build system: re-add -Wno-format as private flag for some components 2022-08-03 16:42:47 +04:00
Song Ruo Jing
842efaf753 Merge branch 'bugfix/rtc_fastmem_lpu_c3_h2' into 'master'
sleep: fix wrong register access to set/clear rtc fast mem low power mode on c3 and h2

Closes IDF-5746

See merge request espressif/esp-idf!19361
2022-08-03 19:52:24 +08:00
morris
307d26659e Merge branch 'bugfix/rmt_hw_issue' into 'master'
rmt: only use register to control the IDLE state (hardware issue workaround)

See merge request espressif/esp-idf!19344
2022-08-03 17:01:44 +08:00
songruojing
e8915e14e7 esp_hw_support: fix wrong register access to set/clear rtc fast mem low power mode on c3 and h2 2022-08-03 14:33:13 +08:00
morris
45524408df coverity: fix uninit variable issue in driver
Related CID:
389832, 389838, 389880, 286743, 286752, 395156, 291011, 396001, 396002
2022-08-03 10:46:50 +08:00
morris
031adc01c4 gpio: add test with -O0 2022-08-02 23:07:06 +08:00
Jiang Jiang Jian
b885499c74 Merge branch 'refactor/move_common_adc_part_to_hw_support' into 'master'
esp_adc: move esp_adc out of g1 dependency list

Closes IDF-5637

See merge request espressif/esp-idf!19159
2022-08-01 15:39:45 +08:00
wuzhenghui
7cb9304b65 Clean IRAM and DRAM address space conversion macros 2022-07-29 17:07:39 +08:00
Armando
5e6a16380a esp_adc: move adc common hw related code into esp_hw_support 2022-07-28 03:49:48 +00:00
jingli
7211b0a89a esp_hw_support/sleep: fix cannot pd cpu and rc fast at the same time during light sleep
Since cpu retention dma use rc fast as clk source, so rc_fast_digi
will be enabled when we config to pd cpu. And cpu retention does not
need rc fast keep on during light sleep. So, if we use rc_fast_digi
to determine whether rc fast can be powered down, then cpu and and
rc fast cannot pd at the same time.
2022-07-28 11:10:58 +08:00
morris
5e50ec1d66 systimer: add helper functions to convert between tick and us 2022-07-25 16:08:52 +08:00
Darian
c8ee369a7c Merge branch 'feature/deprecate-old-cpu-api' into 'master'
HAL: Deprecate old CPU/SoC/Interrupt Controller HAL API

Closes IDF-4919 and IDF-5032

See merge request espressif/esp-idf!18987
2022-07-23 00:37:33 +08:00
morris
741b031e83 soc: added SOC_TOUCH_SENSE_SUPPORTED macro 2022-07-22 00:12:36 +00:00
Guillaume Souchere
50a58b4a83 esp_hw_support: Fix formatting of intr_alloc.h and test_panic.c 2022-07-22 00:06:06 +08:00
Guillaume Souchere
0bac33ed41 esp_system: Remove deprecate section from esp_cpu.h
- Remove esp_cpu_in_ocd_mode() from esp_cpu.h. Users should call esp_cpu_dbgr_is_attached() instead.
- Remove esp_cpu_get_ccount() from esp_cpu.h. Users should call esp_cpu_get_cycle_count() instead.
- Remove esp_cpu_set_ccount() from esp_cpu.h. Users should call esp_cpu_set_cycle_count() instead.
- Other IDF components updated to call esp_cpu_dbgr_is_attached(), esp_cpu_get_cycle_count() and esp_cpu_set_cycle_count() as well.
2022-07-22 00:06:06 +08:00
Guillaume Souchere
dcae121d80 hal: Deprecate soc_hal.h and soc_ll.h interface
This commit marks all functions in soc_hal.h and soc_ll.h as deprecated.
Users should use functions from esp_cpu.h instead.

Also added missing wrap funcions for esp_cpu_stall() in test_panic.c files.
2022-07-22 00:06:06 +08:00
Guillaume Souchere
6005cc9163 hal: Deprecate interrupt_controller_hal.h, cpu_hal.h and cpu_ll.h interfaces
This commit marks all functions in interrupt_controller_hal.h, cpu_ll.h and cpu_hal.h as deprecated.
Users should use functions from esp_cpu.h instead.
2022-07-22 00:06:06 +08:00
Darian Leung
781d06af73 esp_hw_support: Remove compare_set.h API
This function removes the following legacy atomic CAS functions:

From compare_set.h (file removed):
- compare_and_set_native()
- compare_and_set_extram()

From portmacro.h
- uxPortCompareSet()
- uxPortCompareSetExtram()

Users should call esp_cpu_compare_and_set() instead as this function hides the details
of atomic CAS on internal and external RAM addresses.

Due to the removal of compare_set.h, some missing header includes are also fixed in this commit.
2022-07-22 00:06:06 +08:00
Darian Leung
d37fa7e244 esp_hw_support: Update spinlocks to use esp_cpu_compare_and_set()
esp_cpu_compare_and_set() abstracts the atomic compare-and-set instruction by
hiding the details of whether the target variable is in internal or external
RAM. This commit updates "spinlocks.h" as follows:

- esp_cpu_compare_and_set() is now called instead of "compare_set.h"
- Refactored spinlock logic to be more optimized and have more stringent sanity checks
2022-07-22 00:06:06 +08:00
Darian Leung
64117a0c59 esp_system: Fix esp_cpu_compare_and_set()
This commit fixes esp_cpu_compare_and_set() in the following ways

- Removed call to esp_ptr_external_ram() as it incurred > 80 CPU cycles (due to multiple nested
  function calls, and those functions not being in IRAM). We now check manually if the pointer
  is in external RAM for increased speed.
- Fixed infinite wait when attempting to get the external_ram_cas_lock. The function should
  return immediatley if any part of the compare and set call fails.
- The preprocessor conditions of esp_cpu_compare_and_set() to depend on CONFIG_SPIRAM instead
  of SOC_SPIRAM_SUPPORTED. Even if the target supports SPIRAM, we only need the external RAM
  compare and set feature if SPIRAM is enabled.

Also fixed incorrect inclusion of esp_intr_alloc.h in esp_cpu.h
2022-07-22 00:06:06 +08:00
Jing Li
66395a5c00 system/sleep: further fix spi flash/ram current leakage 2022-07-21 19:14:26 +08:00
Ivan Grokhotkov
230e732018 Merge branch 'feature/system_init_priorities' into 'master'
esp_system: introduce priorities for startup functions

Closes IDFGH-5683 and IDF-4954

See merge request espressif/esp-idf!18159
2022-07-14 06:22:25 +08:00
Ivan Grokhotkov
02f28ef32a Merge branch 'bugfix/esp_error_check_func_addr' into 'master'
esp_err: two minor issues

Closes IDFGH-7530

See merge request espressif/esp-idf!18665
2022-07-14 04:14:16 +08:00
Mahavir Jain
20e21fb29d Merge branch 'refactor/remove_rom_deps' into 'master'
RFC: remove dependency to target-specific ROM headers

Closes IDF-1968

See merge request espressif/esp-idf!18206
2022-07-13 16:44:44 +08:00
Jiang Jiang Jian
b610b47a83 Merge branch 'feature/esp32s3_memprot_additional_improvements' into 'master'
[System/Security] Memprot after-merge improvements (v5.0)

Closes IDF-5263 and IDF-5208

See merge request espressif/esp-idf!18893
2022-07-13 15:48:20 +08:00
Jakob Hasse
33a3616635 refactor (bootloader_support, efuse)!: remove target-specific rom includes
The following two functions in bootloader_support are private now:
* esp_secure_boot_verify_sbv2_signature_block()
* esp_secure_boot_verify_rsa_signature_block()
They have been moved into private header files
inside bootloader_private/

* Removed bootloader_reset_reason.h and
  bootloader_common_get_reset_reason() completely.
  Alternative in ROM component is available.

* made esp_efuse.h independent of target-specific rom header
2022-07-13 10:29:02 +08:00
Ivan Grokhotkov
ca7c9947fc
esp_system: fix address printed by ESP_ERROR_CHECK
...to point to the calling function, not to _esp_error_check_failed.
2022-07-12 17:01:47 +02:00
Ivan Grokhotkov
0e53b32d2e
esp_hw_support: perform sleep initialization using ESP_SYSTEM_INIT_FN 2022-07-12 16:58:15 +02:00
Song Ruo Jing
ea97cc93ea Merge branch 'feature/c2_systimer_26mhz' into 'master'
esp32c2: 26 MHz XTAL support: Kconfig option, systimer support

Closes IDF-5412 and IDF-5413

See merge request espressif/esp-idf!18835
2022-07-11 16:17:25 +08:00
Marius Vikhammer
6cc871d793 Merge branch 'feature/ulp_riscv_adc' into 'master'
ulp-riscv: add support for using ADC as well as an example show-casing it.

Closes IDFGH-7564 and IDF-1714

See merge request espressif/esp-idf!18767
2022-07-11 12:30:31 +08:00
songruojing
ef813b23fa rtc: esp32c2 support 26MHz xtal in startup code and rtc_clk.c 2022-07-11 12:24:58 +08:00