Compare commits

...

79 Commits

Author SHA1 Message Date
df64e63bbd Merge branch 'fix/bypass_some_restore_process_if_sleep_rejected_v5.4' into 'release/v5.4'
fix(esp_hw_support): skip some wakeup steps if sleep is rejected (v5.4)

See merge request espressif/esp-idf!34622
2024-11-09 00:37:21 +08:00
3b0cf1a2ea Merge branch 'bugfix/backport_some_wifi_fixes_v5.4' into 'release/v5.4'
fix(wifi): backport some wifi fixes to v5.4

See merge request espressif/esp-idf!34690
2024-11-09 00:33:43 +08:00
12c49601c3 Merge branch 'feature/support_to_query_phy_rf_used_time_v5.4' into 'release/v5.4'
feat(phy): support to query phy used time

See merge request espressif/esp-idf!34624
2024-11-09 00:05:31 +08:00
36e78b3bd3 Merge branch 'bugfix/chip823_pll_low_temp_bug_v5.4' into 'release/v5.4'
[H2]Fix cpu switch fail for bbpll cali fail bug in low temp (v5.4)

See merge request espressif/esp-idf!34598
2024-11-08 23:28:38 +08:00
82802eb460 Merge branch 'bugfix/fix_avrc_absolute_volume_compatibility_v5.4' into 'release/v5.4'
bugfix/fix_avrc_absolute_volume_compatibility[backport v5.4]

See merge request espressif/esp-idf!34769
2024-11-08 22:28:10 +08:00
68d680bafd Merge branch 'ci/fix_macos_ccache_v5.4' into 'release/v5.4'
CI: Fix failing ccache and show ccache statistics for macOS tests (master) (v5.4)

See merge request espressif/esp-idf!34758
2024-11-08 19:46:14 +08:00
b79c8faba4 Merge branch 'fix/fix_writeback_psram_after_vo2_powerdown_v5.4' into 'release/v5.4'
fix(esp_hw_support): fix writeback cache to psram after vo2 powerdown (v5.4)

See merge request espressif/esp-idf!34579
2024-11-08 18:44:13 +08:00
019afc0f80 fix: fix pll low temp bug 2024-11-08 18:01:54 +08:00
0e43df1a47 Merge branch 'feat/pcnt_sleep_retention_v5.4' into 'release/v5.4'
feat(pcnt): add sleep retention init to avoid light sleep when pcnt is working (v5.4)

See merge request espressif/esp-idf!34728
2024-11-08 17:31:28 +08:00
2afa1cc04d Merge branch 'update/version_5_4_0' into 'release/v5.4'
Update version to 5.4.0

See merge request espressif/esp-idf!34743
2024-11-08 16:23:23 +08:00
91006fdee1 feat(phy): support to query phy used time 2024-11-08 16:23:16 +08:00
59230175df fix(esp_hw_support): skip some wakeup steps if sleep is rejected
1. Skip esp_timer time compensation to avoid introducing errors into rtc_timer
    2. Ignore sleep_time_overhead_out measurements when sleep is rejected
2024-11-08 16:08:32 +08:00
98fccdef20 Merge branch 'bugfix/osi_replace_free_v5.4' into 'release/v5.4'
fix(bt/bluedroid): Replace free/malloc with osi_free/malloc(v5.4)

See merge request espressif/esp-idf!34605
2024-11-08 16:07:08 +08:00
d7dd068478 fix(bt/bluedroid): Fixed AVRCP compatibility issue on absolute volume synchronization 2024-11-08 14:48:03 +08:00
1d87c94ca3 fix(wifi/pm): Fixed the tbtt interval update error when AP's beacon interval changed
Closes https://github.com/espressif/esp-idf/issues/14720
2024-11-08 12:08:59 +08:00
c433d95441 fix(wifi): fix esp32c61 can not tx frame under ht40 above 2024-11-08 12:08:59 +08:00
30acf8b5d1 feat(twt): twt add parameter to enable keep alive 2024-11-08 12:08:59 +08:00
3d95fd17e3 docs(wifi): add migration guide for types change in wifi 2024-11-08 12:08:59 +08:00
504a248ba1 fix(wifi): modify bandwidth in wifi_ap_record_t 2024-11-08 12:08:59 +08:00
295f1576e1 fix(wifi/mesh): Enlarge the mesh TX task stack 2024-11-08 12:08:59 +08:00
e36118f4f0 fix(wifi): Support AES IV with random value in esptouch v2 2024-11-08 12:08:59 +08:00
49b8292f51 fix(wifi): fix some wifi issues 241031
1. fix cant sleep if reconnect to connected ap
    2. clear pmk in internal reconnection
    3. update connect status for init-->auth
    4. add protection for probe request when wifi band is 5g
2024-11-08 12:08:59 +08:00
ea05f7f647 fix(wifi): fix spiram ignore issue 2024-11-08 12:08:59 +08:00
e2c732c906 feat(wifi): add wifi support for esp32c5 eco1 2024-11-08 12:08:59 +08:00
1254494dd8 fix(macos): ccache: re-enable, show stats, set CCACHE_DIR, limit CCACHE_MAXSIZE 2024-11-07 17:39:49 +01:00
64b9d85a76 change(version): Update version to 5.4.0 2024-11-07 12:55:42 +05:50
ec8de8a1f9 Merge branch 'feat/mcpwm_dead_time_add_warning_v5.4' into 'release/v5.4'
fix(mcpwm): add warning about generator deadtime (v5.4)

See merge request espressif/esp-idf!34729
2024-11-07 14:52:29 +08:00
c366277e64 Merge branch 'fix/fetch_image_hdr_v5.4' into 'release/v5.4'
fix(esp_system): Correct address used to fetch application image header (v5.4)

See merge request espressif/esp-idf!34627
2024-11-07 13:48:54 +08:00
31befbfad3 feat(pcnt): add sleep retention init
Currently, due to the lack of sleep callback feature. We only init
sleep module but don't allocate it. Thus the power domain will be
kept during the light sleep. And temporarily disable pcnt sleep
retention support on P4 due to the lack of retention module ID.
2024-11-07 12:09:26 +08:00
dd8b4fa06e Merge branch 'backport/upgrade-zigbee-examples-v5.4' into 'release/v5.4'
feat(zigbee): Upgrade the Zigbee lib to v1.6 for Zigbee examples(Backport v5.4)

See merge request espressif/esp-idf!34716
2024-11-07 11:39:54 +08:00
343bb81729 Merge branch 'fix/esp_prov_ipv6_resolve_v5_4' into 'release/v5.4'
fix(tools/esp_prov): Fix hostname resolving for IPv6-only host(v5.4)

See merge request espressif/esp-idf!34679
2024-11-07 11:07:34 +08:00
7946eb51e0 fix(mcpwm): add warning about generator deadtime
Closes https://github.com/espressif/esp-idf/issues/14773
2024-11-07 10:56:57 +08:00
367059b93d Merge branch 'backport/linker_script_check_missing_function_v54' into 'release/v5.4'
fix(802.15.4): add no inline to some static function(Backport v5.4)

See merge request espressif/esp-idf!34722
2024-11-07 10:53:37 +08:00
b0a9704c3d feat(zigbee): Upgrade the Zigbee lib to v1.6 for Zigbee examples
- Optimize the Zigbee light, switch and gateway examples
- Remove the esp_zigbee_rcp example
2024-11-07 10:39:39 +08:00
bab289ca78 Merge branch 'fix/sdio_slave_add_pm_lock_v5.4' into 'release/v5.4'
fix(sdio_slave): fix issue that auto light sleep can happen SDIO slave enabled (v5.4)

See merge request espressif/esp-idf!34646
2024-11-07 02:31:38 +08:00
81020a3748 Merge branch 'feat/support_controller_run_in_flash_only_v5.4' into 'release/v5.4'
feat/support controller run in flash only(backport v5.4)

See merge request espressif/esp-idf!34625
2024-11-06 20:06:08 +08:00
zwx
ab2e360266 fix(802.15.4): add no inline to some static function 2024-11-06 19:49:17 +08:00
500165ffb3 fix(bt/bluedroid): Replace free/malloc with osi_free/malloc 2024-11-06 19:15:04 +08:00
69d72ca243 Merge branch 'ci/nightly_run_crt_bundle_stress_test_v5.4' into 'release/v5.4'
Run https x509 bundle default crt bundle stress test using QEMU (v5.4)

See merge request espressif/esp-idf!34660
2024-11-06 18:45:15 +08:00
2b12fb6daa Merge branch 'docs/fix_section_visibility_esp32p4_v5.4' into 'release/v5.4'
Fix typo to make a section visible for non-esp32 SPIRAM supported targets (v5.4)

See merge request espressif/esp-idf!34680
2024-11-06 17:45:06 +08:00
7f42ed38fd Merge branch 'bugfix/fix_ble_build_fail_v5.4' into 'release/v5.4'
fix(ble/bluedroid): Fixed BLE build fail when enable dynamic memory and BLE5.0 (v5.4)

See merge request espressif/esp-idf!34665
2024-11-06 16:36:46 +08:00
b763700bc8 Merge branch 'bugfix/fixed_h2_assert_master_1031_v5.4' into 'release/v5.4'
Bugfix/fixed h2 assert master 1031 (v5.4)

See merge request espressif/esp-idf!34541
2024-11-06 15:06:45 +08:00
764f5414ff Merge branch 'ci/run_gdma_after_reset_v5.4' into 'release/v5.4'
fix(gdma): run test cases after reset (v5.4)

See merge request espressif/esp-idf!34689
2024-11-06 15:02:47 +08:00
1e37c32fb6 Merge branch 'bugfix/fix_mem_debug_on_bluedroid_v5.4' into 'release/v5.4'
fix(bt/bluedroid): Fixed error when memory debug enabled (v5.4)

See merge request espressif/esp-idf!34576
2024-11-06 11:50:40 +08:00
ee5e2798ba Merge branch 'fix/nmi_not_triggering_on_s3_v5.4' into 'release/v5.4'
fix(examples): fix NMI interrupt example to work on ESP32-S3 (release v5.4)

See merge request espressif/esp-idf!34687
2024-11-06 11:31:51 +08:00
eeb4baf17f fix(gdma): run test cases after reset 2024-11-06 11:24:16 +08:00
ad910e3ce0 fix(examples): fix NMI interrupt example to work on ESP32-S3 2024-11-06 10:15:09 +08:00
f5c71b8715 Merge branch 'bugfix/wrong_return_type_v5.4' into 'release/v5.4'
fix(i2c_lcd): wrong return type for esp_lcd_new_panel_io_i2c (v5.4)

See merge request espressif/esp-idf!34653
2024-11-05 21:28:26 +08:00
7c9bec2633 docs(mem_alloc): Fix typo to make a section visible for non-esp32 spiram targets 2024-11-05 16:13:08 +05:30
c17aa3e020 Merge branch 'fix/sysview_stack_overflow_v5.4' into 'release/v5.4'
fix(sysview): reduce isr stack usage to avoid stack guard exception (v5.4)

See merge request espressif/esp-idf!34614
2024-11-05 18:36:25 +08:00
2980c7f5e5 fix(tools/esp_prov): Fix hostname resolving for IPv6-only host 2024-11-05 17:47:14 +08:00
9685b3b4ca fix(ble/bluedroid): Fixed BLE build fail when enable dynamic memory and BLE5.0
(cherry picked from commit 94d1a4f1c0)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2024-11-05 16:13:51 +08:00
8b8956f7ed ci(examples/protocols): Run the https x509 bundle default crt bundle stress test using QEMU 2024-11-05 13:31:48 +05:30
1754c8f8e5 Merge branch 'backport/fix_energy_scan_api_para_mismatch_v54' into 'release/v5.4'
fix(openthread): set channel for energy scan(Backport v5.4)

See merge request espressif/esp-idf!34597
2024-11-05 14:28:08 +08:00
2770a95a5f fix(i2c_lcd): wrong return type for esp_lcd_new_panel_io_i2c
when build for C++ project
2024-11-05 13:46:16 +08:00
f012157cf9 Merge branch 'feat/openthread_dataset_changed_event_v5_4' into 'release/v5.4'
feat(openthread): Add dataset changed event and post it in state change callback(v5.4)

See merge request espressif/esp-idf!34548
2024-11-05 12:17:22 +08:00
3e0611757b fix(sdio_slave): prevents peripheral power domain being powered off when SDIO slave in use 2024-11-05 03:22:06 +08:00
802e7b2192 feat(sleep_retention): allow drivers taking TOP power lock
Also add a dump function
2024-11-05 03:22:01 +08:00
a2ffd9e955 Merge branch 'ci/fix_diff_manifest_sha_v5.4' into 'release/v5.4'
ci: use different base commit for merge result pipelines (v5.4)

See merge request espressif/esp-idf!34582
2024-11-05 01:07:13 +08:00
0505eb80c9 fix(ble): fixed occasional crash issue in low memory scenarios on ESP32-H2
(cherry picked from commit dbad6a0ca5)

Co-authored-by: zwl <zhaoweiliang@espressif.com>
2024-11-05 00:05:58 +08:00
ae6f824fcf fix(ble): fixed occasional crash issue in low memory scenarios on ESP32-C6
(cherry picked from commit dabd66e16f)

Co-authored-by: zwl <zhaoweiliang@espressif.com>
2024-11-05 00:05:58 +08:00
e0e285b841 fix(esp_system): Correct address used to fetch application image header 2024-11-04 14:07:17 +05:30
2a05eb8fd3 feat(bt/controller): Support controller code run in flash only 2024-11-04 15:44:11 +08:00
651e5adbda fix(esp_hw_support): only support power down flash after revison v1.0 on esp32p4 2024-11-04 14:08:29 +08:00
2558760224 fix(esp_hw_support): fix writeback cache to psram after vo2 powerdown 2024-11-04 14:08:28 +08:00
0e6c74e93d Merge branch 'bugfix/fix_memory_leak_in_sco_v5.4' into 'release/v5.4'
fix(bt/bluedroid): Fix memory leak in sco when bluedroid disable (v5.4)

See merge request espressif/esp-idf!34564
2024-11-04 11:35:39 +08:00
b21b7294c6 Merge branch 'feature/add_ledc_output_in_sleep_test_v5.4' into 'release/v5.4'
feat(ledc): added a multi device test for testing ledc output in sleep (v5.4)

See merge request espressif/esp-idf!34522
2024-11-04 11:35:11 +08:00
131609cf29 Merge branch 'fix/fix_ota_slowclock_switching_v5.4' into 'release/v5.4'
fix(esp_hw_support): fix rtc slow clock missing after the OTA app changes the slow clock source (v5.4)

See merge request espressif/esp-idf!34488
2024-11-04 11:34:40 +08:00
92cc8a5512 fix(sysview): reduce isr stack usage to avoid stack guard exception 2024-11-01 22:30:37 +01:00
zwx
7c03514a28 fix(openthread): set channel for energy scan 2024-11-01 16:40:51 +08:00
5f62667aba ci: use different base commit for merge result pipelines 2024-10-31 13:53:50 +01:00
c6810a102b fix(bt/bluedroid): Fixed error when memory debug enabled 2024-10-31 19:12:47 +08:00
9677b9bfaf feat(openthread): Add dataset changed event and post it in state change callback 2024-10-31 19:04:00 +08:00
6fe128ac6f fix(bt/bluedroid): Fix memory leak in sco when bluedroid disable 2024-10-31 17:52:31 +08:00
33103306a6 feat(ledc): added a multi device test for testing ledc output in sleep 2024-10-30 14:06:42 +08:00
851679e63a Merge branch 'maint/release_v5.4_codeowners' into 'release/v5.4'
change(gitlab): simplify approvals for backports (v5.4)

See merge request espressif/esp-idf!34481
2024-10-29 17:26:54 +08:00
280f6cb4e9 fix(esp_hw_support): disable unused clock sources after rtc clock switching complete 2024-10-28 20:16:01 +08:00
cf5bdf5e9f fix(esp_hw_support): enable all supported slow clock at pmu_init 2024-10-28 20:15:55 +08:00
661a487610 change(gitlab): simplify approvals for backports (v5.4) 2024-10-28 10:38:15 +01:00
178 changed files with 4342 additions and 2689 deletions

View File

@ -1,4 +1,4 @@
[codespell]
skip = build,*.yuv,components/fatfs/src/*,alice.txt,*.rgb,components/wpa_supplicant/*,components/esp_wifi/*,*.pem
ignore-words-list = ser,dout,rsource,fram,inout,shs,ans,aci,unstall,unstalling,hart,wheight,wel,ot,fane,assertIn,registr,oen
ignore-words-list = ser,dout,rsource,fram,inout,shs,ans,aci,unstall,unstalling,hart,wheight,wel,ot,fane,assertIn,registr,oen,parms
write-changes = true

View File

@ -2,248 +2,5 @@
#
# https://docs.gitlab.com/ee/user/project/code_owners.html#the-syntax-of-code-owners-files
#
# If more than one rule matches a given file, the latest rule is used.
# The file should be generally kept sorted, except when it is necessary
# to use a different order due to the fact above. In that case, use
# '# sort-order-reset' comment line to reset the sort order.
#
# Recipes for a few common cases:
#
# 1. Specific directory with all its contents:
#
# /components/app_trace/
#
# Note the trailing slash!
#
# 2. File with certain extension in any subdirectory of a certain directory:
#
# /examples/**/*.py
#
# This includes an *.py files in /examples/ directory as well.
#
# 3. Contents of a directory with a certain name, anywhere in the tree:
#
# test_*_host/
#
# Will match everything under components/efuse/test_efuse_host/,
# components/heap/test_multi_heap_host/, components/lwip/test_afl_host/, etc.
#
# 4. Same as above, except limited to a specific place in the tree:
#
# /components/esp32*/
#
# Matches everything under /components/esp32, /components/esp32s2, etc.
# Doesn't match /tools/some-test/components/esp32s5.
#
# 5. Specific file:
#
# /tools/tools.json
#
# 6. File with a certain name anywhere in the tree
#
# .gitignore
#
* @esp-idf-codeowners/other
/.* @esp-idf-codeowners/tools
/.codespellrc @esp-idf-codeowners/ci
/.github/workflows/ @esp-idf-codeowners/ci
/.gitlab-ci.yml @esp-idf-codeowners/ci
/.gitlab/ci/ @esp-idf-codeowners/ci
/.pre-commit-config.yaml @esp-idf-codeowners/ci
/.readthedocs.yml @esp-idf-codeowners/docs
/.vale.ini @esp-idf-codeowners/docs
/CMakeLists.txt @esp-idf-codeowners/build-config
/COMPATIBILITY*.md @esp-idf-codeowners/peripherals
/CONTRIBUTING.md @esp-idf-codeowners/docs
/Kconfig @esp-idf-codeowners/build-config
/README*.md @esp-idf-codeowners/docs
/ROADMAP*.md @esp-idf-codeowners/docs
/SUPPORT_POLICY*.md @esp-idf-codeowners/docs
/add_path.sh @esp-idf-codeowners/tools
/conftest.py @esp-idf-codeowners/ci
/export.* @esp-idf-codeowners/tools
/install.* @esp-idf-codeowners/tools
/pytest.ini @esp-idf-codeowners/ci
/sdkconfig.rename @esp-idf-codeowners/build-config
/sonar-project.properties @esp-idf-codeowners/ci
# sort-order-reset
/components/app_trace/ @esp-idf-codeowners/debugging
/components/app_update/ @esp-idf-codeowners/system @esp-idf-codeowners/app-utilities
/components/bootloader*/ @esp-idf-codeowners/system @esp-idf-codeowners/security
/components/bootloader_support/bootloader_flash/ @esp-idf-codeowners/peripherals
/components/bt/ @esp-idf-codeowners/bluetooth
/components/cmock/ @esp-idf-codeowners/system
/components/console/ @esp-idf-codeowners/system @esp-idf-codeowners/app-utilities/console
/components/cxx/ @esp-idf-codeowners/system
/components/driver/ @esp-idf-codeowners/peripherals
/components/efuse/ @esp-idf-codeowners/system
/components/esp_adc/ @esp-idf-codeowners/peripherals
/components/esp_app_format/ @esp-idf-codeowners/system @esp-idf-codeowners/app-utilities
/components/esp_bootloader_format/ @esp-idf-codeowners/system @esp-idf-codeowners/app-utilities
/components/esp_coex/ @esp-idf-codeowners/wifi @esp-idf-codeowners/bluetooth @esp-idf-codeowners/ieee802154
/components/esp_common/ @esp-idf-codeowners/system
/components/esp_driver_*/ @esp-idf-codeowners/peripherals
/components/esp_driver_sdmmc/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/storage
/components/esp_eth/ @esp-idf-codeowners/network
/components/esp_event/ @esp-idf-codeowners/system
/components/esp_gdbstub/ @esp-idf-codeowners/debugging
/components/esp_hid/ @esp-idf-codeowners/bluetooth
/components/esp_http_client/ @esp-idf-codeowners/app-utilities
/components/esp_http_server/ @esp-idf-codeowners/app-utilities
/components/esp_https_ota/ @esp-idf-codeowners/app-utilities
/components/esp_https_server/ @esp-idf-codeowners/app-utilities
/components/esp_hw_support/ @esp-idf-codeowners/system @esp-idf-codeowners/peripherals
/components/esp_hw_support/lowpower/ @esp-idf-codeowners/power-management
/components/esp_lcd/ @esp-idf-codeowners/peripherals
/components/esp_local_ctrl/ @esp-idf-codeowners/app-utilities
/components/esp_mm/ @esp-idf-codeowners/peripherals
/components/esp_netif/ @esp-idf-codeowners/network
/components/esp_netif_stack/ @esp-idf-codeowners/network
/components/esp_partition/ @esp-idf-codeowners/storage
/components/esp_phy/ @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi @esp-idf-codeowners/ieee802154
/components/esp_pm/ @esp-idf-codeowners/power-management @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi @esp-idf-codeowners/system
/components/esp_psram/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/system
/components/esp_ringbuf/ @esp-idf-codeowners/system
/components/esp_rom/ @esp-idf-codeowners/system @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi
/components/esp_security/ @esp-idf-codeowners/security
/components/esp_system/ @esp-idf-codeowners/system
/components/esp_timer/ @esp-idf-codeowners/system
/components/esp-tls/ @esp-idf-codeowners/app-utilities
/components/esp_vfs_*/ @esp-idf-codeowners/storage
/components/esp_vfs_console/ @esp-idf-codeowners/storage @esp-idf-codeowners/system
/components/esp_wifi/ @esp-idf-codeowners/wifi
/components/espcoredump/ @esp-idf-codeowners/debugging
/components/esptool_py/ @esp-idf-codeowners/tools
/components/fatfs/ @esp-idf-codeowners/storage
/components/freertos/ @esp-idf-codeowners/system
/components/hal/ @esp-idf-codeowners/peripherals
/components/hal/test_apps/crypto/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/security
/components/heap/ @esp-idf-codeowners/system
/components/http_parser/ @esp-idf-codeowners/app-utilities
/components/idf_test/ @esp-idf-codeowners/ci
/components/ieee802154/ @esp-idf-codeowners/ieee802154
/components/json/ @esp-idf-codeowners/app-utilities
/components/linux/ @esp-idf-codeowners/system
/components/log/ @esp-idf-codeowners/system
/components/lwip/ @esp-idf-codeowners/lwip
/components/mbedtls/ @esp-idf-codeowners/app-utilities/mbedtls @esp-idf-codeowners/security
/components/mqtt/ @esp-idf-codeowners/network
/components/newlib/ @esp-idf-codeowners/system @esp-idf-codeowners/toolchain
/components/nvs_flash/ @esp-idf-codeowners/storage
/components/nvs_sec_provider/ @esp-idf-codeowners/storage @esp-idf-codeowners/security
/components/openthread/ @esp-idf-codeowners/ieee802154
/components/partition_table/ @esp-idf-codeowners/system
/components/perfmon/ @esp-idf-codeowners/debugging
/components/protobuf-c/ @esp-idf-codeowners/app-utilities
/components/protocomm/ @esp-idf-codeowners/app-utilities/provisioning
/components/pthread/ @esp-idf-codeowners/system
/components/riscv/ @esp-idf-codeowners/system
/components/rt/ @esp-idf-codeowners/system
/components/sdmmc/ @esp-idf-codeowners/storage
/components/soc/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/system
/components/spi_flash/ @esp-idf-codeowners/peripherals
/components/spiffs/ @esp-idf-codeowners/storage
/components/tcp_transport/ @esp-idf-codeowners/network
/components/touch_element/ @esp-idf-codeowners/peripherals
/components/ulp/ @esp-idf-codeowners/system
/components/unity/ @esp-idf-codeowners/ci
/components/usb/ @esp-idf-codeowners/peripherals/usb
/components/vfs/ @esp-idf-codeowners/storage
/components/wear_levelling/ @esp-idf-codeowners/storage
/components/wifi_provisioning/ @esp-idf-codeowners/app-utilities/provisioning
/components/wpa_supplicant/ @esp-idf-codeowners/wifi @esp-idf-codeowners/app-utilities/mbedtls
/components/xtensa/ @esp-idf-codeowners/system
/docs/ @esp-idf-codeowners/docs
/docs/docs_not_updated/ @esp-idf-codeowners/all-maintainers
/docs/**/api-guides/tools/ @esp-idf-codeowners/tools
/docs/en/api-guides/core_dump.rst @esp-idf-codeowners/debugging
/docs/**/api-guides/wifi* @esp-idf-codeowners/wifi
/docs/**/api-guides/esp-wifi-mesh.rst @esp-idf-codeowners/wifi
/docs/en/api-guides/jtag-debugging/ @esp-idf-codeowners/debugging
/docs/**/api-reference/bluetooth/ @esp-idf-codeowners/bluetooth
/docs/**/api-reference/network/ @esp-idf-codeowners/network @esp-idf-codeowners/wifi
/docs/**/api-reference/peripherals/ @esp-idf-codeowners/peripherals
/docs/**/api-reference/peripherals/usb* @esp-idf-codeowners/peripherals @esp-idf-codeowners/peripherals/usb
/docs/**/api-reference/peripherals/usb*/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/peripherals/usb
/docs/**/api-reference/protocols/ @esp-idf-codeowners/network @esp-idf-codeowners/app-utilities
/docs/**/api-reference/provisioning/ @esp-idf-codeowners/app-utilities/provisioning
/docs/**/api-reference/storage/ @esp-idf-codeowners/storage
/docs/**/api-reference/system/ @esp-idf-codeowners/system
/docs/**/security/ @esp-idf-codeowners/security
/docs/**/migration-guides/ @esp-idf-codeowners/docs @esp-idf-codeowners/all-maintainers
/docs/**/contribute/install-pre-commit-hook.rst @esp-idf-codeowners/ci @esp-idf-codeowners/tools
/examples/README.md @esp-idf-codeowners/docs @esp-idf-codeowners/ci
/examples/**/*.py @esp-idf-codeowners/ci @esp-idf-codeowners/tools
/examples/bluetooth/ @esp-idf-codeowners/bluetooth
/examples/build_system/ @esp-idf-codeowners/build-config
/examples/common_components/ @esp-idf-codeowners/system @esp-idf-codeowners/wifi @esp-idf-codeowners/lwip @esp-idf-codeowners/network
/examples/custom_bootloader/ @esp-idf-codeowners/system
/examples/cxx/ @esp-idf-codeowners/system
/examples/ethernet/ @esp-idf-codeowners/network
/examples/get-started/ @esp-idf-codeowners/system
/examples/ieee802154/ @esp-idf-codeowners/ieee802154
/examples/mesh/ @esp-idf-codeowners/wifi
/examples/network/ @esp-idf-codeowners/network @esp-idf-codeowners/wifi
/examples/openthread/ @esp-idf-codeowners/ieee802154
/examples/peripherals/ @esp-idf-codeowners/peripherals
/examples/peripherals/usb/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/peripherals/usb
/examples/phy/ @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi @esp-idf-codeowners/ieee802154
/examples/protocols/ @esp-idf-codeowners/network @esp-idf-codeowners/app-utilities
/examples/provisioning/ @esp-idf-codeowners/app-utilities/provisioning
/examples/security/ @esp-idf-codeowners/security
/examples/storage/ @esp-idf-codeowners/storage
/examples/system/ @esp-idf-codeowners/system
/examples/system/ota/ @esp-idf-codeowners/app-utilities
/examples/wifi/ @esp-idf-codeowners/wifi
/examples/zigbee/ @esp-idf-codeowners/ieee802154
/tools/ @esp-idf-codeowners/tools
/tools/ble/ @esp-idf-codeowners/app-utilities
/tools/catch/ @esp-idf-codeowners/ci
/tools/ci/ @esp-idf-codeowners/ci
/tools/cmake/ @esp-idf-codeowners/build-config
/tools/cmake/toolchain-*.cmake @esp-idf-codeowners/toolchain
/tools/esp_app_trace/ @esp-idf-codeowners/debugging
/tools/esp_prov/ @esp-idf-codeowners/app-utilities
/tools/gdb_panic_server.py @esp-idf-codeowners/debugging
/tools/kconfig*/ @esp-idf-codeowners/build-config
/tools/ldgen/ @esp-idf-codeowners/build-config
/tools/mass_mfg/ @esp-idf-codeowners/app-utilities
/tools/mocks/ @esp-idf-codeowners/system
/tools/test_apps/ @esp-idf-codeowners/ci
/tools/test_apps/README.md @esp-idf-codeowners/docs @esp-idf-codeowners/ci
## Note: owners here should be the same as the owners for the same example subdir, above
/tools/test_apps/build_system/ @esp-idf-codeowners/build-config
/tools/test_apps/configs/ @esp-idf-codeowners/system
/tools/test_apps/linux_compatible/ @esp-idf-codeowners/system
/tools/test_apps/peripherals/ @esp-idf-codeowners/peripherals
/tools/test_apps/phy/ @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi @esp-idf-codeowners/ieee802154
/tools/test_apps/protocols/ @esp-idf-codeowners/network @esp-idf-codeowners/app-utilities
/tools/test_apps/security/ @esp-idf-codeowners/security
/tools/test_apps/storage/ @esp-idf-codeowners/storage
/tools/test_apps/system/ @esp-idf-codeowners/system
/tools/test_apps/**/*.py @esp-idf-codeowners/ci @esp-idf-codeowners/tools
/tools/test_build_system/ @esp-idf-codeowners/tools @esp-idf-codeowners/build-config
/tools/tools.json @esp-idf-codeowners/tools @esp-idf-codeowners/toolchain @esp-idf-codeowners/debugging
/tools/unit-test-app/ @esp-idf-codeowners/system @esp-idf-codeowners/tools
# sort-order-reset
/components/**/test_apps/**/*.py @esp-idf-codeowners/ci @esp-idf-codeowners/tools
# ignore lists
/tools/ci/check_copyright_config.yaml @esp-idf-codeowners/all-maintainers
/tools/ci/check_copyright_ignore.txt @esp-idf-codeowners/all-maintainers
/tools/ci/mypy_ignore_list.txt @esp-idf-codeowners/tools
* @esp-idf-codeowners/all-maintainers

View File

@ -1,7 +1,7 @@
.build_template:
stage: build
extends:
- .after_script:build:ccache:upload-when-fail
- .after_script:build:ccache-show-stats:upload-failed-job-logs
image: $ESP_ENV_IMAGE
tags:
- build
@ -16,7 +16,7 @@
extends:
- .build_template
- .before_script:build
- .after_script:build:ccache
- .after_script:build:ccache-show-stats
dependencies: # set dependencies to null to avoid missing artifacts issue
needs:
- job: fast_template_app
@ -246,15 +246,16 @@ pytest_build_system_macos:
extends:
- .test_build_system_template
- .before_script:build:macos
- .after_script:build:macos:upload-when-fail
- .after_script:build:macos:upload-failed-job-logs:ccache-show-stats
- .rules:build:macos
tags:
- macos_shell
parallel: 3
variables:
PYENV_VERSION: "3.8"
CI_CCACHE_DISABLE: "1" # ccache: error: Read-only file system
# CCACHE_DIR: "/cache/idf_ccache". On macOS, you cannot write to this folder due to insufficient permissions.
CCACHE_DIR: "" # ccache will use "$HOME/Library/Caches/ccache".
CCACHE_MAXSIZE: "5G" # To preserve the limited Macbook storage. CCACHE automatically prunes old caches to fit the set limit.
build_docker:
extends:
- .before_script:minimal

View File

@ -40,7 +40,7 @@ variables:
GIT_FETCH_EXTRA_FLAGS: "--no-recurse-submodules --prune --prune-tags"
# we're using .cache folder for caches
GIT_CLEAN_FLAGS: -ffdx -e .cache/
LATEST_GIT_TAG: v5.4-dev
LATEST_GIT_TAG: v5.4-beta1
SUBMODULE_FETCH_TOOL: "tools/ci/ci_fetch_submodule.py"
# by default we will fetch all submodules
@ -227,13 +227,14 @@ variables:
- *setup_tools_and_idf_python_venv
- fetch_submodules
.after_script:build:macos:upload-when-fail:
.after_script:build:macos:upload-failed-job-logs:ccache-show-stats:
after_script:
# macos is running shell executor, which means it would use
# the system installed /usr/local/bin/python3 by default.
# Ensure pyenv and PYENV_VERSION installed
- eval "$(pyenv init -)"
- *upload_failed_job_log_artifacts
- *show_ccache_statistics
.before_script:build:
before_script:
@ -244,11 +245,11 @@ variables:
- export EXTRA_CFLAGS=${PEDANTIC_CFLAGS}
- export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS}
.after_script:build:ccache:
.after_script:build:ccache-show-stats:
after_script:
- *show_ccache_statistics
.after_script:build:ccache:upload-when-fail:
.after_script:build:ccache-show-stats:upload-failed-job-logs:
after_script:
- *show_ccache_statistics
- *upload_failed_job_log_artifacts

View File

@ -183,12 +183,24 @@ baseline_manifest_sha:
tags: [fast_run, shiny]
script:
- |
if [ -n "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then
# merged results pipelines, by default
# diff between target-branch-head and merged-result-head
if [ -n "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA" ]; then
git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_SHA --depth=1
git checkout FETCH_HEAD
idf-build-apps dump-manifest-sha \
--manifest-files $(find . -name ".build-test-rules.yml" | xargs) \
--output .manifest_sha
# merge request pipelines, when the mr got conflicts
# diff between diff-base-sha and merge-request-head
elif [ -n "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then
git fetch origin $CI_MERGE_REQUEST_DIFF_BASE_SHA --depth=1
git checkout FETCH_HEAD
idf-build-apps dump-manifest-sha \
--manifest-files $(find . -name ".build-test-rules.yml" | xargs) \
--output .manifest_sha
# other pipelines, like the protected branches pipelines
# not triggered in this job
fi
artifacts:
paths:

View File

@ -3,7 +3,7 @@
*
* SPDX-License-Identifier: BSD-1-Clause
*
* SPDX-FileContributor: 2017-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileContributor: 2017-2024 Espressif Systems (Shanghai) CO LTD
*/
/*********************************************************************
* SEGGER Microcontroller GmbH *
@ -58,6 +58,7 @@ File : SEGGER_SYSVIEW_Config_FreeRTOS.c
Purpose : Sample setup configuration of SystemView with FreeRTOS.
Revision: $Rev: 7745 $
*/
#include <string.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "SEGGER_SYSVIEW.h"
@ -156,15 +157,16 @@ static esp_apptrace_lock_t s_sys_view_lock = {.mux = portMUX_INITIALIZER_UNLOCKE
* Sends SystemView description strings.
*/
static void _cbSendSystemDesc(void) {
char irq_str[32];
char irq_str[32] = "I#";
SEGGER_SYSVIEW_SendSysDesc("N="SYSVIEW_APP_NAME",D="SYSVIEW_DEVICE_NAME",C="SYSVIEW_CORE_NAME",O=FreeRTOS");
snprintf(irq_str, sizeof(irq_str), "I#%d=SysTick", SYSTICK_INTR_ID);
strcat(itoa(SYSTICK_INTR_ID, irq_str + 2, 10), "=SysTick");
SEGGER_SYSVIEW_SendSysDesc(irq_str);
size_t isr_count = sizeof(esp_isr_names)/sizeof(esp_isr_names[0]);
for (size_t i = 0; i < isr_count; ++i) {
if (esp_isr_names[i] == NULL || (ETS_INTERNAL_INTR_SOURCE_OFF + i) == SYSTICK_INTR_ID)
continue;
snprintf(irq_str, sizeof(irq_str), "I#%d=%s", ETS_INTERNAL_INTR_SOURCE_OFF + i, esp_isr_names[i]);
strcat(itoa(ETS_INTERNAL_INTR_SOURCE_OFF + i, irq_str + 2, 10), "=");
strncat(irq_str, esp_isr_names[i], sizeof(irq_str) - strlen(irq_str) - 1);
SEGGER_SYSVIEW_SendSysDesc(irq_str);
}
}

View File

@ -865,11 +865,19 @@ if(CONFIG_BT_ENABLED)
elseif(CONFIG_IDF_TARGET_ESP32C3)
target_link_directories(${COMPONENT_LIB} INTERFACE
"${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c3_family/esp32c3")
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app)
if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app_flash)
else()
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app)
endif()
elseif(CONFIG_IDF_TARGET_ESP32S3)
target_link_directories(${COMPONENT_LIB} INTERFACE
"${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c3_family/esp32s3")
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app)
if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app_flash)
else()
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app)
endif()
elseif(CONFIG_BT_CONTROLLER_ENABLED)
if(CONFIG_IDF_TARGET_ESP32C6)
add_prebuilt_library(libble_app

View File

@ -382,7 +382,7 @@ static void btc_deinit_mem(void) {
btc_profile_cb_tab = NULL;
}
#if (BLE_INCLUDED == TRUE)
#if (BLE_42_FEATURE_SUPPORT == TRUE)
if (gl_bta_adv_data_ptr) {
osi_free(gl_bta_adv_data_ptr);
gl_bta_adv_data_ptr = NULL;
@ -392,7 +392,7 @@ static void btc_deinit_mem(void) {
osi_free(gl_bta_scan_rsp_data_ptr);
gl_bta_scan_rsp_data_ptr = NULL;
}
#endif ///BLE_INCLUDED == TRUE
#endif // BLE_42_FEATURE_SUPPORT
#if GATTS_INCLUDED == TRUE && GATT_DYNAMIC_MEMORY == TRUE
if (btc_creat_tab_env_ptr) {
@ -444,7 +444,8 @@ static bt_status_t btc_init_mem(void) {
}
memset((void *)btc_profile_cb_tab, 0, sizeof(void *) * BTC_PID_NUM);
#if (BLE_INCLUDED == TRUE)
#if BTC_DYNAMIC_MEMORY == TRUE
#if (BLE_42_FEATURE_SUPPORT == TRUE)
if ((gl_bta_adv_data_ptr = (tBTA_BLE_ADV_DATA *)osi_malloc(sizeof(tBTA_BLE_ADV_DATA))) == NULL) {
goto error_exit;
}
@ -454,7 +455,8 @@ static bt_status_t btc_init_mem(void) {
goto error_exit;
}
memset((void *)gl_bta_scan_rsp_data_ptr, 0, sizeof(tBTA_BLE_ADV_DATA));
#endif ///BLE_INCLUDED == TRUE
#endif // (BLE_42_FEATURE_SUPPORT == TRUE)
#endif // BTC_DYNAMIC_MEMORY == TRUE
#if GATTS_INCLUDED == TRUE && GATT_DYNAMIC_MEMORY == TRUE
if ((btc_creat_tab_env_ptr = (esp_btc_creat_tab_t *)osi_malloc(sizeof(esp_btc_creat_tab_t))) == NULL) {

View File

@ -241,5 +241,8 @@ void *osi_calloc_func(size_t size)
void osi_free_func(void *ptr)
{
#if HEAP_MEMORY_DEBUG
osi_mem_dbg_clean(ptr, __func__, __LINE__);
#endif
free(ptr);
}

View File

@ -29,6 +29,15 @@ void *osi_malloc_func(size_t size);
void *osi_calloc_func(size_t size);
void osi_free_func(void *ptr);
// Memory alloc function without print and assertion
#if HEAP_ALLOCATION_FROM_SPIRAM_FIRST
#define osi_malloc_base(size) heap_caps_malloc_prefer(size, 2, MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL)
#define osi_calloc_base(size) heap_caps_calloc_prefer(1, size, 2, MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL)
#else
#define osi_malloc_base(size) malloc((size))
#define osi_calloc_base(size) calloc(1, (size))
#endif /* #if HEAP_ALLOCATION_FROM_SPIRAM_FIRST */
#if HEAP_MEMORY_DEBUG
void osi_mem_dbg_init(void);
@ -41,13 +50,10 @@ void osi_men_dbg_set_section_start(uint8_t index);
void osi_men_dbg_set_section_end(uint8_t index);
uint32_t osi_mem_dbg_get_max_size_section(uint8_t index);
#if HEAP_ALLOCATION_FROM_SPIRAM_FIRST
#define osi_malloc(size) \
({ \
void *p; \
p = heap_caps_malloc_prefer(size, 2, \
MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, \
MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL); \
p = osi_malloc_base(size); \
osi_mem_dbg_record(p, size, __func__, __LINE__); \
(void *)p; \
})
@ -55,34 +61,11 @@ uint32_t osi_mem_dbg_get_max_size_section(uint8_t index);
#define osi_calloc(size) \
({ \
void *p; \
p = heap_caps_calloc_prefer(1, size, 2, \
MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, \
MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL); \
p = osi_calloc_base(size); \
osi_mem_dbg_record(p, size, __func__, __LINE__); \
(void *)p; \
})
#else
#define osi_malloc(size) \
({ \
void *p; \
p = malloc((size)); \
osi_mem_dbg_record(p, size, __func__, __LINE__); \
(void *)p; \
})
#define osi_calloc(size) \
({ \
void *p; \
p = calloc(1, (size)); \
osi_mem_dbg_record(p, size, __func__, __LINE__); \
(void *)p; \
})
#endif /* #if HEAP_ALLOCATION_FROM_SPIRAM_FIRST */
#if 0
#define osi_malloc(size) \
do { \
@ -122,15 +105,6 @@ do { \
#else
// Memory alloc function without print and assertion
#if HEAP_ALLOCATION_FROM_SPIRAM_FIRST
#define osi_malloc_base(size) heap_caps_malloc_prefer(size, 2, MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL)
#define osi_calloc_base(size) heap_caps_calloc_prefer(1, size, 2, MALLOC_CAP_DEFAULT|MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT|MALLOC_CAP_INTERNAL)
#else
#define osi_malloc_base(size) malloc((size))
#define osi_calloc_base(size) calloc(1, (size))
#endif /* #if HEAP_ALLOCATION_FROM_SPIRAM_FIRST */
// Memory alloc function with print and assertion when fails
#define osi_malloc(size) osi_malloc_func((size))
#define osi_calloc(size) osi_calloc_func((size))

View File

@ -226,6 +226,7 @@ config BT_CTRL_DFT_TX_POWER_LEVEL_EFF
config BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP
bool "BLE adv report flow control supported"
depends on (!BT_CTRL_RUN_IN_FLASH_ONLY) || (BT_CTRL_RUN_IN_FLASH_ONLY && BT_CTRL_BLE_SCAN)
default y
help
The function is mainly used to enable flow control for advertising reports. When it is enabled,
@ -512,3 +513,38 @@ menu "BLE disconnect when instant passed"
If this option is enabled, Controller will terminate the connection
when instant passed in PHY update procedure.
endmenu
config BT_CTRL_RUN_IN_FLASH_ONLY
bool "Put all BLE Controller code in flash"
default n
help
If this option is enabled, all code for the Bluetooth controller will be moved from ROM and IRAM
to flash, saving over 20K bytes of memory. However, it will require more flash resources and the
performance of Bluetooth will decrease If this option is enabled, Bluetooth may not work properly
during erasing flash. It is recommended to turn on the auto suspend function of flash. After auto
suspend is turned on, Bluetooth interrupts can be executed normally during erasing flash, with less
impact on Bluetooth performance.
config BT_CTRL_DTM_ENABLE
depends on BT_CTRL_RUN_IN_FLASH_ONLY
bool "Enable direct test mode feature"
default n
config BT_CTRL_BLE_MASTER
depends on BT_CTRL_RUN_IN_FLASH_ONLY
bool "Enable BLE master role feature"
default y
config BT_CTRL_BLE_TEST
depends on BT_CTRL_RUN_IN_FLASH_ONLY
bool "Enable BLE QA test feature"
default n
config BT_CTRL_BLE_SCAN
depends on BT_CTRL_RUN_IN_FLASH_ONLY
bool "Enable BLE scan feature"
default y
config BT_CTRL_BLE_SECURITY_ENABLE
depends on BT_CTRL_RUN_IN_FLASH_ONLY && BT_CONTROLLER_ONLY
bool "Enable BLE security feature"
default y

View File

@ -499,7 +499,11 @@ static int interrupt_alloc_wrapper(int cpu_id, int source, intr_handler_t handle
{
btdm_isr_alloc_t p;
p.source = source;
#if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
p.flags = ESP_INTR_FLAG_LEVEL3;
#else
p.flags = ESP_INTR_FLAG_LEVEL3 | ESP_INTR_FLAG_IRAM;
#endif
p.fn = handler;
p.arg = arg;
p.handle = (intr_handle_t *)ret_handle;
@ -1426,6 +1430,10 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
ESP_LOGI(BT_LOG_TAG, "BT controller compile version [%s]", btdm_controller_get_compile_version());
#if (CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
ESP_LOGI(BT_LOG_TAG,"Put all controller code in flash");
#endif
if ((err = btdm_low_power_mode_init(cfg)) != ESP_OK) {
ESP_LOGE(BT_LOG_TAG, "Low power module initialization failed");
goto error;

View File

@ -175,8 +175,7 @@ bool btc_avrc_ct_init_p(void)
bool btc_avrc_tg_connected_p(void)
{
return (s_rc_tg_init == BTC_RC_TG_INIT_MAGIC) &&
(btc_rc_cb.rc_connected == TRUE) &&
(btc_rc_cb.rc_features & BTA_AV_FEAT_RCCT);
(btc_rc_cb.rc_connected == TRUE);
}
bool btc_avrc_ct_connected_p(void)
@ -507,7 +506,7 @@ static void handle_rc_connect (tBTA_AV_RC_OPEN *p_rc_open)
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
}
if (p_rc_open->peer_features & BTA_AV_FEAT_RCCT) {
if (btc_avrc_tg_init_p()) {
esp_avrc_tg_cb_param_t param;
memset(&param, 0, sizeof(esp_avrc_tg_cb_param_t));
param.conn_stat.connected = true;
@ -580,7 +579,7 @@ static void handle_rc_disconnect (tBTA_AV_RC_CLOSE *p_rc_close)
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
}
if (rc_features & BTA_AV_FEAT_RCCT) {
if (btc_avrc_tg_init_p()) {
esp_avrc_tg_cb_param_t param;
memset(&param, 0, sizeof(esp_avrc_ct_cb_param_t));
param.conn_stat.connected = false;
@ -1006,14 +1005,10 @@ void btc_rc_handler(tBTA_AV_EVT event, tBTA_AV *p_data)
memcpy(param.conn_stat.remote_bda, btc_rc_cb.rc_addr, sizeof(esp_bd_addr_t));
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
}
if ((p_data->rc_feat.peer_features & BTA_AV_FEAT_RCCT) &&
!(old_feats & BTA_AV_FEAT_RCCT)) {
esp_avrc_tg_cb_param_t param;
memset(&param, 0, sizeof(esp_avrc_ct_cb_param_t));
param.conn_stat.connected = true;
memcpy(param.conn_stat.remote_bda, btc_rc_cb.rc_addr, sizeof(esp_bd_addr_t));
btc_avrc_tg_cb_to_app(ESP_AVRC_TG_CONNECTION_STATE_EVT, &param);
}
/**
* @note ESP_AVRC_TG_CONNECTION_STATE_EVT has been reported on rc connect/disconnect event,
* it doesn't rely on the SDP results.
*/
} while (0);
btc_rc_cb.rc_features = p_data->rc_feat.peer_features;
btc_rc_cb.rc_ct_features = p_data->rc_feat.peer_ct_features;

View File

@ -11,11 +11,13 @@
#include "esp_gap_ble_api.h"
#if BTC_DYNAMIC_MEMORY == TRUE
#if (BLE_42_FEATURE_SUPPORT == TRUE)
#include "bta/bta_api.h"
extern tBTA_BLE_ADV_DATA *gl_bta_adv_data_ptr;
extern tBTA_BLE_ADV_DATA *gl_bta_scan_rsp_data_ptr;
#define gl_bta_adv_data (*gl_bta_adv_data_ptr)
#define gl_bta_scan_rsp_data (*gl_bta_scan_rsp_data_ptr)
#endif // BLE_42_FEATURE_SUPPORT
#endif
#define BLE_ISVALID_PARAM(x, min, max) (((x) >= (min) && (x) <= (max)))

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -281,7 +281,7 @@ static void close_timeout_handler(void *arg)
status = btc_transfer_context(&msg, slot->alarm_arg, sizeof(tBTA_JV), NULL, NULL);
if (slot->alarm_arg) {
free(slot->alarm_arg);
osi_free(slot->alarm_arg);
slot->alarm_arg = NULL;
}
@ -832,7 +832,7 @@ void btc_l2cap_cb_handler(btc_msg_t *msg)
// if rx still has data, delay free slot
if (slot->close_alarm == NULL && slot->rx.queue && fixed_queue_length(slot->rx.queue) > 0) {
tBTA_JV *p_arg = NULL;
if ((p_arg = malloc(sizeof(tBTA_JV))) == NULL) {
if ((p_arg = osi_malloc(sizeof(tBTA_JV))) == NULL) {
param.close.status = ESP_BT_L2CAP_NO_RESOURCE;
osi_mutex_unlock(&l2cap_local_param.l2cap_slot_mutex);
BTC_TRACE_ERROR("%s unable to malloc slot close_alarm arg!", __func__);
@ -842,7 +842,7 @@ void btc_l2cap_cb_handler(btc_msg_t *msg)
slot->alarm_arg = (void *)p_arg;
if ((slot->close_alarm =
osi_alarm_new("slot", close_timeout_handler, (void *)slot, VFS_CLOSE_TIMEOUT)) == NULL) {
free(p_arg);
osi_free(p_arg);
slot->alarm_arg = NULL;
param.close.status = ESP_BT_L2CAP_NO_RESOURCE;
osi_mutex_unlock(&l2cap_local_param.l2cap_slot_mutex);
@ -850,7 +850,7 @@ void btc_l2cap_cb_handler(btc_msg_t *msg)
break;
}
if (osi_alarm_set(slot->close_alarm, VFS_CLOSE_TIMEOUT) != OSI_ALARM_ERR_PASS) {
free(p_arg);
osi_free(p_arg);
slot->alarm_arg = NULL;
osi_alarm_free(slot->close_alarm);
param.close.status = ESP_BT_L2CAP_BUSY;

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -1199,7 +1199,7 @@ void btc_spp_cb_handler(btc_msg_t *msg)
slot->alarm_arg = (void *)p_arg;
if ((slot->close_alarm =
osi_alarm_new("slot", close_timeout_handler, (void *)slot, VFS_CLOSE_TIMEOUT)) == NULL) {
free(p_arg);
osi_free(p_arg);
slot->alarm_arg = NULL;
param.close.status = ESP_SPP_NO_RESOURCE;
osi_mutex_unlock(&spp_local_param.spp_slot_mutex);
@ -1207,7 +1207,7 @@ void btc_spp_cb_handler(btc_msg_t *msg)
break;
}
if (osi_alarm_set(slot->close_alarm, VFS_CLOSE_TIMEOUT) != OSI_ALARM_ERR_PASS) {
free(p_arg);
osi_free(p_arg);
slot->alarm_arg = NULL;
osi_alarm_free(slot->close_alarm);
param.close.status = ESP_SPP_BUSY;
@ -1488,7 +1488,7 @@ static ssize_t spp_vfs_write(int fd, const void * data, size_t size)
BTC_TRACE_DEBUG("%s items_waiting:%d, fd:%d\n", __func__, items_waiting, fd);
osi_mutex_unlock(&spp_local_param.spp_slot_mutex);
// block untill under water level, be closed or time out
// block until under water level, be closed or time out
tx_event_group_val =
xEventGroupWaitBits(spp_local_param.tx_event_group, SLOT_WRITE_BIT(serial) | SLOT_CLOSE_BIT(serial), pdTRUE,
pdFALSE, VFS_WRITE_TIMEOUT / portTICK_PERIOD_MS);

View File

@ -593,7 +593,11 @@ static int host_recv_pkt_cb(uint8_t *data, uint16_t len)
}
#endif
pkt_size = BT_PKT_LINKED_HDR_SIZE + BT_HDR_SIZE + len;
#if HEAP_MEMORY_DEBUG
linked_pkt = (pkt_linked_item_t *) osi_calloc(pkt_size);
#else
linked_pkt = (pkt_linked_item_t *) osi_calloc_base(pkt_size);
#endif
if (!linked_pkt) {
#if (BLE_ADV_REPORT_FLOW_CONTROL == TRUE)
hci_adv_credits_consumed(1);

View File

@ -219,7 +219,6 @@ static void parse_ble_read_adv_max_len_response(
// Size: 2 Octets ; Value: 0x001F 0x0672 ; Maximum supported advertising data length
STREAM_TO_UINT16(*adv_max_len_ptr, stream);
}
osi_free(response);
}
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)

View File

@ -110,6 +110,9 @@ void btm_free(void)
fixed_queue_free(btm_cb.sec_pending_q, osi_free_func);
btm_acl_free();
btm_sec_dev_free();
#if BTM_SCO_INCLUDED == TRUE
btm_sco_free();
#endif
#if BTM_DYNAMIC_MEMORY
FREE_AND_RESET(btm_cb_ptr);
#endif

View File

@ -123,6 +123,22 @@ void btm_sco_init (void)
btm_cb.sco_cb.desired_sco_mode = BTM_DEFAULT_SCO_MODE;
}
/*******************************************************************************
**
** Function btm_sco_free
**
** Description Free sco specific fixed_queue from btm control block
**
*******************************************************************************/
void btm_sco_free(void)
{
#if (BTM_SCO_HCI_INCLUDED == TRUE)
for (int i = 0; i < BTM_MAX_SCO_LINKS; i++) {
fixed_queue_free(btm_cb.sco_cb.sco_db[i].xmit_data_q, osi_free_func);
}
#endif
}
/*******************************************************************************
**
** Function btm_esco_conn_rsp
@ -233,7 +249,7 @@ void btm_sco_process_num_bufs (UINT16 num_lm_sco_bufs)
** pointer is used, PCM parameter maintained in
** the control block will be used; otherwise update
** control block value.
** err_data_rpt: Lisbon feature to enable the erronous data report
** err_data_rpt: Lisbon feature to enable the erroneous data report
** or not.
**
** Returns BTM_SUCCESS if the successful.
@ -947,7 +963,7 @@ void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type)
for (xx = 0; xx < BTM_MAX_SCO_LINKS; xx++, p++) {
/*
* If the sco state is in the SCO_ST_CONNECTING state, we still need
* to return accept sco to avoid race conditon for sco creation
* to return accept sco to avoid race condition for sco creation
*/
int rem_bd_matches = p->rem_bd_known &&
!memcmp (p->esco.data.bd_addr, bda, BD_ADDR_LEN);

View File

@ -1119,6 +1119,7 @@ void btm_ble_periodic_adv_sync_trans_complete(UINT16 op_code, UINT8 hci_status,
********************************************
*/
void btm_sco_init (void);
void btm_sco_free(void);
void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle,
tBTM_ESCO_DATA *p_esco_data);
void btm_esco_proc_conn_chg (UINT8 status, UINT16 handle, UINT8 tx_interval,

View File

@ -19,7 +19,7 @@ extern "C" {
#endif
#define ESP_BT_CTRL_CONFIG_MAGIC_VAL 0x5A5AA5A5
#define ESP_BT_CTRL_CONFIG_VERSION 0x02409260
#define ESP_BT_CTRL_CONFIG_VERSION 0x02410230
#define ESP_BT_HCI_TL_MAGIC_VALUE 0xfadebead
#define ESP_BT_HCI_TL_VERSION 0x00010000
@ -236,6 +236,60 @@ typedef void (* esp_bt_hci_tl_callback_t) (void *arg, uint8_t status);
#endif
#define BT_CTRL_BLE_LLCP_DISC_FLAG (BT_CTRL_BLE_LLCP_CONN_UPDATE | BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE | BT_CTRL_BLE_LLCP_PHY_UPDATE)
#if defined(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
#define BT_CTRL_RUN_IN_FLASH_ONLY CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
#else
#define BT_CTRL_RUN_IN_FLASH_ONLY (0)
#endif
#if (BT_CTRL_RUN_IN_FLASH_ONLY == 1)
#if defined(CONFIG_BT_CTRL_DTM_ENABLE)
#define BT_CTRL_DTM_ENABLE CONFIG_BT_CTRL_DTM_ENABLE
#else
#define BT_CTRL_DTM_ENABLE (0)
#endif
#if defined(CONFIG_BT_CTRL_BLE_MASTER)
#define BT_CTRL_BLE_MASTER CONFIG_BT_CTRL_BLE_MASTER
#else
#define BT_CTRL_BLE_MASTER (0)
#endif
#if defined(CONFIG_BT_CTRL_BLE_TEST)
#define BT_CTRL_BLE_TEST CONFIG_BT_CTRL_BLE_TEST
#else
#define BT_CTRL_BLE_TEST (0)
#endif
#if defined (CONFIG_BT_NIMBLE_SECURITY_ENABLE) || defined (CONFIG_BT_BLE_SMP_ENABLE)
#ifdef CONFIG_BT_NIMBLE_SECURITY_ENABLE
#define BLE_SECURITY_ENABLE (CONFIG_BT_NIMBLE_SECURITY_ENABLE)
#endif //CONFIG_BT_NIMBLE_SECURITY_ENABLE
#ifdef CONFIG_BT_BLE_SMP_ENABLE
#define BLE_SECURITY_ENABLE (CONFIG_BT_BLE_SMP_ENABLE)
#endif //CONFIG_BT_BLE_SMP_ENABLE
#else
#if defined (CONFIG_BT_CTRL_BLE_SECURITY_ENABLE)
#define BLE_SECURITY_ENABLE (CONFIG_BT_CTRL_BLE_SECURITY_ENABLE)
#else
#define BLE_SECURITY_ENABLE (0)
#endif
#endif // (CONFIG_BT_NIMBLE_SECURITY_ENABLE) || (CONFIG_BT_BLE_SMP_ENABLE)
#if defined (CONFIG_BT_CTRL_BLE_SCAN)
#define BT_CTRL_BLE_SCAN CONFIG_BT_CTRL_BLE_SCAN
#else
#define BT_CTRL_BLE_SCAN (0)
#endif
#else
#define BT_CTRL_BLE_MASTER (1)
#define BT_CTRL_DTM_ENABLE (1)
#define BT_CTRL_BLE_TEST (1)
#define BLE_SECURITY_ENABLE (1)
#define BT_CTRL_BLE_SCAN (1)
#endif // (BT_CTRL_RUN_IN_FLASH_ONLY == 1)
#define BT_CONTROLLER_INIT_CONFIG_DEFAULT() { \
.magic = ESP_BT_CTRL_CONFIG_MAGIC_VAL, \
@ -276,6 +330,12 @@ typedef void (* esp_bt_hci_tl_callback_t) (void *arg, uint8_t status);
.ble_chan_ass_en = BT_CTRL_CHAN_ASS_EN, \
.ble_ping_en = BT_CTRL_LE_PING_EN, \
.ble_llcp_disc_flag = BT_CTRL_BLE_LLCP_DISC_FLAG, \
.run_in_flash = BT_CTRL_RUN_IN_FLASH_ONLY, \
.dtm_en = BT_CTRL_DTM_ENABLE, \
.enc_en = BLE_SECURITY_ENABLE, \
.qa_test = BT_CTRL_BLE_TEST, \
.master_en = BT_CTRL_BLE_MASTER, \
.scan_en = BT_CTRL_BLE_SCAN, \
}
#else
@ -351,6 +411,12 @@ typedef struct {
uint8_t ble_chan_ass_en; /*!< BLE channel assessment enable */
uint8_t ble_ping_en; /*!< BLE ping procedure enable */
uint8_t ble_llcp_disc_flag; /*!< BLE disconnect flag when instant passed */
bool run_in_flash; /*!< Check if controller code is in flash */
bool dtm_en; /*!< Controller DTM feature is enabled or not */
bool enc_en; /*!< Controller encryption feature is enabled or not */
bool qa_test; /*!< Controller QA test feature is enabled or not */
bool master_en; /*!< Controller master feature is enabled or not */
bool scan_en; /*!< Controller scan feature is enabled or not */
} esp_bt_controller_config_t;
/**

View File

@ -1,8 +1,11 @@
set(srcs "test_app_main.c"
"test_ledc.c"
"test_ledc_sleep.c"
"test_ledc_utils.c")
if(CONFIG_SOC_LIGHT_SLEEP_SUPPORTED)
list(APPEND srcs "test_ledc_sleep.c")
endif()
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
# the component can be registered as WHOLE_ARCHIVE
idf_component_register(

View File

@ -0,0 +1,3 @@
dependencies:
test_utils:
path: ${IDF_PATH}/tools/unit-test-app/components/test_utils

View File

@ -5,6 +5,7 @@
*/
#include "unity.h"
#include "test_utils.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"
@ -15,6 +16,7 @@
#include "esp_private/esp_pmu.h"
#include "soc/ledc_periph.h"
#include "esp_private/sleep_retention.h"
#include "esp_rom_uart.h"
// Note. Test cases in this file cannot run one after another without reset
@ -51,7 +53,7 @@ static void test_ledc_sleep_retention(bool allow_pd)
#endif
TEST_ESP_OK(esp_sleep_enable_timer_wakeup(2 * 1000 * 1000));
printf("go to light sleep for 2 seconds\n");
printf("Go to light sleep for 2 seconds\n");
TEST_ESP_OK(esp_light_sleep_start());
printf("Waked up! Let's see if LEDC peripheral can still work...\n");
@ -59,7 +61,7 @@ static void test_ledc_sleep_retention(bool allow_pd)
TEST_ESP_OK(sleep_cpu_configure(false));
#endif
printf("check if the sleep happened as expected\r\n");
printf("Check if the sleep happened as expected\r\n");
TEST_ASSERT_EQUAL(0, sleep_ctx.sleep_request_result);
#if SOC_PMU_SUPPORTED
// check if the TOP power domain on/off as desired
@ -97,3 +99,61 @@ TEST_CASE("ledc can output after light sleep (LEDC power domain pd)", "[ledc]")
sleep_retention_module_deinit(module);
}
#endif
#if SOC_PCNT_SUPPORTED
static const ledc_clk_src_t test_ledc_clk_in_slp[] = {
LEDC_USE_RC_FAST_CLK,
#if SOC_LEDC_SUPPORT_XTAL_CLOCK
LEDC_USE_XTAL_CLK,
#endif
};
static const int test_clks_num = sizeof(test_ledc_clk_in_slp) / sizeof(test_ledc_clk_in_slp[0]);
static void ledc_output_monitor(void)
{
setup_testbench();
for (int i = 0; i < test_clks_num; i++) {
unity_wait_for_signal("Go to light sleep for 3 seconds");
vTaskDelay(500 / portTICK_PERIOD_MS);
int pulse_count = wave_count(1000);
uint32_t acceptable_delta = (test_ledc_clk_in_slp[i] == (ledc_clk_src_t)LEDC_USE_RC_FAST_CLK) ? 20 : 5; // RC_FAST as the clk src has a bigger error range is reasonable
TEST_ASSERT_UINT32_WITHIN(acceptable_delta, TEST_PWM_LOW_FREQ, pulse_count);
unity_wait_for_signal("Waked up!");
}
tear_testbench();
}
static void ledc_output_in_sleep(void)
{
TEST_ESP_OK(esp_sleep_enable_timer_wakeup(3 * 1000 * 1000));
ledc_channel_config_t ledc_ch_config = initialize_channel_config();
ledc_ch_config.speed_mode = LEDC_LOW_SPEED_MODE;
ledc_ch_config.sleep_mode = LEDC_SLEEP_MODE_KEEP_ALIVE;
TEST_ESP_OK(ledc_channel_config(&ledc_ch_config));
for (int i = 0; i < test_clks_num; i++) {
ledc_timer_config_t ledc_time_config = create_default_timer_config();
ledc_time_config.speed_mode = LEDC_LOW_SPEED_MODE;
ledc_time_config.clk_cfg = test_ledc_clk_in_slp[i];
ledc_time_config.freq_hz = TEST_PWM_LOW_FREQ;
TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
TEST_ESP_OK(ledc_update_duty(ledc_ch_config.speed_mode, ledc_ch_config.channel));
unity_send_signal("Go to light sleep for 3 seconds");
esp_rom_output_tx_wait_idle(CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM); // wait until the signal sent
TEST_ESP_OK(esp_light_sleep_start());
unity_send_signal("Waked up!");
TEST_ESP_OK(ledc_timer_pause(ledc_time_config.speed_mode, ledc_time_config.timer_num));
ledc_time_config.deconfigure = 1;
TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
}
}
TEST_CASE_MULTIPLE_DEVICES("ledc can output during light sleep", "[ledc][test_env=generic_multi_device]", ledc_output_in_sleep, ledc_output_monitor);
#endif // SOC_PCNT_SUPPORTED

View File

@ -9,7 +9,8 @@
#define PULSE_IO 5
#define TEST_PWM_FREQ 2000
#define TEST_PWM_FREQ 2000
#define TEST_PWM_LOW_FREQ 200
#if SOC_LEDC_SUPPORT_HS_MODE
#define TEST_SPEED_MODE LEDC_HIGH_SPEED_MODE

View File

@ -32,3 +32,19 @@ def test_ledc(dut: IdfDut) -> None:
)
def test_ledc_psram(dut: IdfDut) -> None:
dut.run_all_single_board_cases(reset=True)
@pytest.mark.supported_targets
@pytest.mark.temp_skip_ci(targets=['esp32s3', 'esp32c61'],
reason='s3 multi device runner has no psram, c61 lack of runner IDF-10949')
@pytest.mark.generic_multi_device
@pytest.mark.parametrize(
'count, config',
[
(2, 'iram_safe',),
(2, 'release',),
],
indirect=True
)
def test_ledc_multi_device(case_tester) -> None: # type: ignore
case_tester.run_all_multi_dev_cases(reset=True)

View File

@ -405,6 +405,10 @@ esp_err_t mcpwm_generator_set_dead_time(mcpwm_gen_handle_t in_generator, mcpwm_g
mcpwm_ll_deadtime_set_falling_delay(hal->dev, oper_id, config->negedge_delay_ticks);
}
if (delay_on_both_edge && in_generator->gen_id == 0 && oper->generators[1]) {
ESP_LOGW(TAG, "generator B will not function correctly. To set deadtime on both edges for one generator while bypassing the deadtime for the other, please set the deadtime for generator B only.");
}
ESP_LOGD(TAG, "operator (%d,%d) dead time (R:%"PRIu32",F:%"PRIu32"), topology code:%"PRIx32, group->group_id, oper_id,
config->posedge_delay_ticks, config->negedge_delay_ticks, mcpwm_ll_deadtime_get_switch_topology(hal->dev, oper_id));
return ESP_OK;

View File

@ -28,6 +28,7 @@
#include "hal/gpio_hal.h"
#include "esp_private/esp_clk.h"
#include "esp_private/periph_ctrl.h"
#include "esp_private/sleep_retention.h"
#include "driver/gpio.h"
#include "esp_private/gpio.h"
#include "hal/gpio_ll.h" // for io_loop_back flag only
@ -65,6 +66,13 @@ typedef struct pcnt_group_t pcnt_group_t;
typedef struct pcnt_unit_t pcnt_unit_t;
typedef struct pcnt_chan_t pcnt_chan_t;
// Use retention link only when the target supports sleep retention
#define PCNT_USE_RETENTION_LINK (SOC_PCNT_SUPPORT_SLEEP_RETENTION && CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP)
#if PCNT_USE_RETENTION_LINK
static esp_err_t pcnt_create_sleep_retention_link_cb(void *arg);
#endif
struct pcnt_platform_t {
_lock_t mutex; // platform level mutex lock
pcnt_group_t *groups[SOC_PCNT_GROUPS]; // pcnt group pool
@ -864,6 +872,23 @@ static pcnt_group_t *pcnt_acquire_group_handle(int group_id)
pcnt_ll_enable_bus_clock(group_id, true);
pcnt_ll_reset_register(group_id);
}
#if PCNT_USE_RETENTION_LINK
sleep_retention_module_t module_id = pcnt_reg_retention_info[group_id].retention_module;
sleep_retention_module_init_param_t init_param = {
.cbs = {
.create = {
.handle = pcnt_create_sleep_retention_link_cb,
.arg = group,
},
},
.depends = SLEEP_RETENTION_MODULE_BM_CLOCK_SYSTEM
};
// we only do retention init here. Allocate retention module in the unit initialization
if (sleep_retention_module_init(module_id, &init_param) != ESP_OK) {
// even though the sleep retention module init failed, PCNT driver should still work, so just warning here
ESP_LOGW(TAG, "init sleep retention failed %d, power domain may be turned off during sleep", group_id);
}
#endif // PCNT_USE_RETENTION_LINK
// initialize HAL context
pcnt_hal_init(&group->hal, group_id);
}
@ -901,6 +926,12 @@ static void pcnt_release_group_handle(pcnt_group_t *group)
_lock_release(&s_platform.mutex);
if (do_deinitialize) {
#if PCNT_USE_RETENTION_LINK
const periph_retention_module_t module_id = pcnt_reg_retention_info[group_id].retention_module;
if (sleep_retention_get_inited_modules() & BIT(module_id)) {
sleep_retention_module_deinit(module_id);
}
#endif // PCNT_USE_RETENTION_LINK
free(group);
ESP_LOGD(TAG, "del group (%d)", group_id);
}
@ -998,3 +1029,17 @@ IRAM_ATTR static void pcnt_default_isr(void *args)
portYIELD_FROM_ISR();
}
}
#if PCNT_USE_RETENTION_LINK
static esp_err_t pcnt_create_sleep_retention_link_cb(void *arg)
{
pcnt_group_t *group = (pcnt_group_t *)arg;
int group_id = group->group_id;
sleep_retention_module_t module_id = pcnt_reg_retention_info[group_id].retention_module;
esp_err_t err = sleep_retention_entries_create(pcnt_reg_retention_info[group_id].regdma_entry_array,
pcnt_reg_retention_info[group_id].array_size,
REGDMA_LINK_PRI_PCNT, module_id);
ESP_RETURN_ON_ERROR(err, TAG, "create retention link failed");
return ESP_OK;
}
#endif // PCNT_USE_RETENTION_LINK

View File

@ -6,6 +6,11 @@ if(CONFIG_PCNT_ISR_IRAM_SAFE)
list(APPEND srcs "test_pulse_cnt_iram.c")
endif()
# TODO: IDF-9907 support ESP32P4
if(CONFIG_SOC_LIGHT_SLEEP_SUPPORTED AND CONFIG_PM_ENABLE AND NOT CONFIG_IDF_TARGET_ESP32P4)
list(APPEND srcs "test_pulse_cnt_sleep.c")
endif()
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
# the component can be registered as WHOLE_ARCHIVE
idf_component_register(SRCS ${srcs}

View File

@ -0,0 +1,141 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "unity.h"
#include "unity_test_utils.h"
#include "driver/pulse_cnt.h"
#include "driver/gpio.h"
#include "spi_flash_mmap.h"
#include "esp_attr.h"
#include "esp_sleep.h"
#include "soc/soc_caps.h"
#include "soc/pcnt_struct.h"
#include "hal/pcnt_ll.h"
#include "test_pulse_cnt_board.h"
#include "esp_private/sleep_cpu.h"
#include "esp_private/esp_sleep_internal.h"
#include "esp_private/esp_pmu.h"
/**
* @brief Test the PCNT driver can still work after light sleep
*/
static void test_pcnt_sleep_retention(void)
{
test_gpio_init_for_simulation(TEST_PCNT_GPIO_A);
test_gpio_init_for_simulation(TEST_PCNT_GPIO_B);
printf("install pcnt units\r\n");
pcnt_unit_config_t unit_config = {
.low_limit = -100,
.high_limit = 100,
};
pcnt_unit_handle_t units[2];
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_new_unit(&unit_config, &units[i]));
}
printf("install pcnt channels\r\n");
const int channel_gpios[] = {TEST_PCNT_GPIO_A, TEST_PCNT_GPIO_B};
pcnt_chan_config_t chan_config = {
.level_gpio_num = -1,
};
pcnt_channel_handle_t chans[2];
for (int i = 0; i < 2; i++) {
chan_config.edge_gpio_num = channel_gpios[i];
TEST_ESP_OK(pcnt_new_channel(units[i], &chan_config, &chans[i]));
TEST_ESP_OK(pcnt_channel_set_edge_action(chans[i], PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_HOLD));
TEST_ESP_OK(pcnt_channel_set_level_action(chans[i], PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_KEEP));
}
printf("enable and start unit\r\n");
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_unit_enable(units[i]));
TEST_ESP_OK(pcnt_unit_start(units[i]));
}
// trigger 10 rising edge on GPIO
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_A, 10);
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_B, 10);
int count_value = 0;
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
TEST_ASSERT_EQUAL(10, count_value);
}
// hold GPIO to avoid trigger PCNT counter during GPIO power down
gpio_hold_en(TEST_PCNT_GPIO_A);
gpio_hold_en(TEST_PCNT_GPIO_B);
printf("stop and disable unit before sleep\r\n");
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_unit_stop(units[i]));
TEST_ESP_OK(pcnt_unit_disable(units[i]));
}
// go to sleep
esp_sleep_context_t sleep_ctx;
esp_sleep_set_sleep_context(&sleep_ctx);
printf("go to light sleep for 1 seconds\r\n");
#if ESP_SLEEP_POWER_DOWN_CPU
TEST_ESP_OK(sleep_cpu_configure(true));
#endif
TEST_ESP_OK(esp_sleep_enable_timer_wakeup(1 * 1000 * 1000));
TEST_ESP_OK(esp_light_sleep_start());
printf("Waked up! Let's see if PCNT driver can still work...\r\n");
#if ESP_SLEEP_POWER_DOWN_CPU
TEST_ESP_OK(sleep_cpu_configure(false));
#endif
printf("check if the sleep happened as expected\r\n");
TEST_ASSERT_EQUAL(0, sleep_ctx.sleep_request_result);
#if SOC_PCNT_SUPPORT_SLEEP_RETENTION
// check if the power domain also is powered down
TEST_ASSERT_EQUAL(0, (sleep_ctx.sleep_flags) & PMU_SLEEP_PD_TOP);
#endif
esp_sleep_set_sleep_context(NULL);
gpio_hold_dis(TEST_PCNT_GPIO_A);
gpio_hold_dis(TEST_PCNT_GPIO_B);
printf("enable and start unit after sleep\r\n");
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_unit_enable(units[i]));
TEST_ESP_OK(pcnt_unit_start(units[i]));
}
// Verify the counter still holds the value
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_A, 10);
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_B, 10);
int reg_value = 0;
for (int i = 0; i < 2; i++) {
// check the counter value (include accum value and register value)
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
TEST_ASSERT_EQUAL(20, count_value);
// check the register value
reg_value = pcnt_ll_get_count(&PCNT, i);
TEST_ASSERT_EQUAL(20, reg_value);
}
for (int i = 0; i < 2; i++) {
TEST_ESP_OK(pcnt_unit_stop(units[i]));
TEST_ESP_OK(pcnt_unit_disable(units[i]));
TEST_ESP_OK(pcnt_del_channel(chans[i]));
TEST_ESP_OK(pcnt_del_unit(units[i]));
}
}
TEST_CASE("pcnt light sleep", "[pcnt]")
{
test_pcnt_sleep_retention();
}

View File

@ -1,5 +1,6 @@
CONFIG_PM_ENABLE=y
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y

View File

@ -1,2 +1,5 @@
CONFIG_FREERTOS_HZ=1000
CONFIG_ESP_TASK_WDT_EN=n
# primitives for checking sleep internal state
CONFIG_ESP_SLEEP_DEBUG=y

View File

@ -76,20 +76,24 @@ The driver of FIFOs works as below:
*/
#include <string.h>
#include "driver/sdio_slave.h"
#include "soc/sdio_slave_periph.h"
#include "esp_log.h"
#include "esp_intr_alloc.h"
#include "freertos/FreeRTOS.h"
#include "soc/soc_memory_layout.h"
#include "soc/gpio_periph.h"
#include "soc/soc_caps.h"
#include "soc/sdio_slave_periph.h"
#include "esp_cpu.h"
#include "freertos/semphr.h"
#include "esp_private/periph_ctrl.h"
#include "driver/gpio.h"
#include "esp_intr_alloc.h"
#include "esp_log.h"
#include "hal/sdio_slave_hal.h"
#include "hal/gpio_hal.h"
#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"
#include "esp_private/periph_ctrl.h"
#if CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP
#include "esp_private/sleep_retention.h"
#endif
#include "driver/gpio.h"
#include "driver/sdio_slave.h"
#define SDIO_SLAVE_CHECK(res, str, ret_val) do { if(!(res)){\
SDIO_SLAVE_LOGE("%s", str);\
@ -365,6 +369,13 @@ esp_err_t sdio_slave_initialize(sdio_slave_config_t *config)
}
context.intr_handle = intr_handle;
#if CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP
r = sleep_retention_power_lock_acquire();
if (r != ESP_OK) {
return r;
}
#endif
r = sdio_slave_hw_init(config);
if (r != ESP_OK) {
return r;
@ -378,6 +389,11 @@ void sdio_slave_deinit(void)
{
sdio_slave_hw_deinit();
#if CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP
esp_err_t r = sleep_retention_power_lock_release();
assert(r == ESP_OK);
#endif
//unregister all buffers registered but returned (not loaded)
recv_desc_t *temp_desc;
recv_desc_t *desc;

View File

@ -1,7 +1,6 @@
components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/host_sdmmc:
enable:
- if: IDF_TARGET == "esp32"
temporary: false
reason: always use ESP32 SDMMC as host
depends_components:
- sdmmc
@ -9,6 +8,10 @@ components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/host_sdmmc:
- esp_driver_sdio
components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/sdio:
enable:
# There is no retention support for SDIO slave, just build and test if driver can forbid from auto light sleep.
- if: CONFIG_NAME == "sleep_retention" and SOC_PAU_SUPPORTED == 1
- if: CONFIG_NAME != "sleep_retention"
disable:
- if: SOC_SDIO_SLAVE_SUPPORTED != 1
depends_components:

View File

@ -418,6 +418,20 @@ TEST_CASE("SDIO_SDMMC: test to host", "[sdio]")
test_to_host(true);
}
TEST_CASE("SDIO_SDMMC: test sleep retention", "[sdio_retention]")
{
essl_handle_t handle = NULL;
test_sdio_param_t test_param = {
.host_flags = SDMMC_HOST_FLAG_4BIT | SDMMC_HOST_FLAG_ALLOC_ALIGNED_BUF,
.max_freq_khz = SDMMC_FREQ_HIGHSPEED,
};
//essl init and sdmmc init
s_master_init(&test_param, &handle, NULL);
s_send_finish_test(handle);
s_master_deinit();
}
TEST_CASE("SDIO_SDMMC: test to host (Performance)", "[sdio_speed]")
{
test_to_host(false);

View File

@ -1,13 +1,30 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import os.path
from typing import List
from typing import Tuple
import pytest
from pytest_embedded_idf import IdfDut
def parameter_expand(existing_parameters: List[List[str]], value_list: List[str]) -> List[List[str]]:
ret = []
for param in existing_parameters:
ret.extend([param + [value] for value in value_list])
return ret
esp32_32_param = [[f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}', 'esp32|esp32']]
esp32_c6_param = [[f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}', 'esp32|esp32c6']]
esp32_param_default = [pytest.param(*param) for param in parameter_expand(esp32_32_param, ['default|default'])]
c6_param_default = [pytest.param(*param) for param in parameter_expand(esp32_c6_param, ['default|default'])]
c6_param_retention = [pytest.param(*param) for param in parameter_expand(esp32_c6_param, ['default|sleep_retention'])]
# Normal tests
def test_sdio_flow(dut:Tuple[IdfDut, IdfDut]) -> None:
dut[1].expect('Press ENTER to see the list of tests')
@ -24,11 +41,7 @@ def test_sdio_flow(dut:Tuple[IdfDut, IdfDut]) -> None:
@pytest.mark.esp32c6
@pytest.mark.sdio_multidev_32_c6
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32c6'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True)
def test_sdio_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_flow(dut)
@ -36,11 +49,7 @@ def test_sdio_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
@pytest.mark.esp32
@pytest.mark.sdio_master_slave
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True)
def test_sdio_esp32_esp32(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_flow(dut)
@ -68,11 +77,7 @@ def test_sdio_speed_frhost_flow(dut:Tuple[IdfDut, IdfDut], expected_4b_speed:int
@pytest.mark.esp32c6
@pytest.mark.sdio_multidev_32_c6
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32c6'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True)
def test_sdio_speed_frhost_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_speed_frhost_flow(dut, 10000, 4000)
@ -80,11 +85,7 @@ def test_sdio_speed_frhost_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
@pytest.mark.esp32
@pytest.mark.sdio_master_slave
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True)
def test_sdio_speed_frhost_esp32_esp32(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_speed_frhost_flow(dut, 12200, 4000)
@ -112,11 +113,7 @@ def test_sdio_speed_tohost_flow(dut:Tuple[IdfDut, IdfDut], expected_4b_speed:int
@pytest.mark.esp32c6
@pytest.mark.sdio_multidev_32_c6
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32c6'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True)
def test_sdio_speed_tohost_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_speed_tohost_flow(dut, 9000, 4000)
@ -124,10 +121,27 @@ def test_sdio_speed_tohost_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
@pytest.mark.esp32
@pytest.mark.sdio_master_slave
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target', [
pytest.param(
f'{os.path.join(os.path.dirname(__file__), "host_sdmmc")}|{os.path.join(os.path.dirname(__file__), "sdio")}',
'esp32|esp32'),
], indirect=True)
@pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True)
def test_sdio_speed_tohost_esp32_esp32(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_speed_tohost_flow(dut, 12200, 4000)
# Retention tests
def test_sdio_retention(dut:Tuple[IdfDut, IdfDut]) -> None:
dut[1].expect('Press ENTER to see the list of tests')
dut[1].write('[sdio_retention]')
dut[1].expect('test_sdio: slave ready')
dut[0].expect('Press ENTER to see the list of tests')
dut[0].write('[sdio_retention]')
dut[1].expect_unity_test_output()
dut[0].expect_unity_test_output()
@pytest.mark.esp32c6
@pytest.mark.sdio_multidev_32_c6
@pytest.mark.parametrize('count', [2,], indirect=True)
@pytest.mark.parametrize('app_path, target, config', c6_param_retention, indirect=True)
def test_sdio_retention_esp32_esp32c6(dut:Tuple[IdfDut, IdfDut]) -> None:
test_sdio_retention(dut)

View File

@ -2,5 +2,5 @@ set(srcs "test_app_main.c"
"test_sdio_slave.c")
idf_component_register(SRCS ${srcs}
PRIV_REQUIRES test_driver_utils driver
PRIV_REQUIRES test_driver_utils driver esp_hw_support
WHOLE_ARCHIVE)

View File

@ -305,6 +305,31 @@ TEST_CASE("SDIO_Slave: test to host", "[sdio]")
test_to_host();
}
#if SOC_PAU_SUPPORTED
#include "esp_private/sleep_sys_periph.h"
#include "esp_private/sleep_retention.h"
TEST_CASE("SDIO_Slave: test sleep retention", "[sdio_retention]")
{
TEST_ASSERT_EQUAL_INT32(true, peripheral_domain_pd_allowed());
sleep_retention_dump_modules(stdout);
s_slave_init(SDIO_SLAVE_SEND_STREAM);
TEST_ESP_OK(sdio_slave_start());
ESP_LOGI(TAG, "slave ready");
TEST_ASSERT_EQUAL_INT32(false, peripheral_domain_pd_allowed());
sleep_retention_dump_modules(stdout);
wait_for_finish(&s_test_slv_ctx);
sdio_slave_stop();
sdio_slave_deinit();
TEST_ASSERT_EQUAL_INT32(true, peripheral_domain_pd_allowed());
}
#endif
TEST_CASE("SDIO_Slave: test to host (Performance)", "[sdio_speed]")
{
test_to_host();

View File

@ -0,0 +1,4 @@
CONFIG_PM_ENABLE=y
CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP=y
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y

View File

@ -71,7 +71,7 @@ menu "Hardware Settings"
config ESP_SLEEP_POWER_DOWN_FLASH
bool "Power down flash in light sleep when there is no SPIRAM or SPIRAM has independent power supply"
depends on !SPIRAM || ESP_LDO_RESERVE_PSRAM
depends on !(IDF_TARGET_ESP32P4 && (ESP32P4_REV_MIN_FULL >= 100))
depends on !(IDF_TARGET_ESP32P4 && (ESP32P4_REV_MIN_FULL < 100))
default n
help
If enabled, chip will try to power down flash as part of esp_light_sleep_start(), which costs

View File

@ -59,6 +59,11 @@ typedef enum {
*/
esp_err_t sleep_retention_entries_create(const sleep_retention_entries_config_t retent[], int num, regdma_link_priority_t priority, sleep_retention_module_t module);
/**
* @brief Dump the initialization status of all modules.
*/
void sleep_retention_dump_modules(FILE *out);
/**
* @brief Dump all runtime sleep retention linked lists
*/
@ -139,6 +144,23 @@ esp_err_t sleep_retention_module_allocate(sleep_retention_module_t module);
*/
esp_err_t sleep_retention_module_free(sleep_retention_module_t module);
/**
* @brief Force take the power lock so that during sleep the power domain won't be powered off.
*
* @return
* - ESP_OK if success
* - other value when the internal `sleep_retention_module_init` fails.
*/
esp_err_t sleep_retention_power_lock_acquire(void);
/**
* @brief Release the power lock so that the peripherals' power domain can be powered off.
* Please note that there is an internal reference counter and the power domain will be kept on until same number
* of `sleep_retention_power_lock_release` is called as `sleep_retention_power_lock_acquire`.
* @return always ESP_OK
*/
esp_err_t sleep_retention_power_lock_release(void);
/**
* @brief Get all initialized modules that require sleep retention
*

View File

@ -336,21 +336,14 @@ const pmu_hp_system_retention_param_t * pmu_hp_system_retention_param_default(pm
/** LP system default parameter */
#if CONFIG_ESP_SYSTEM_RTC_EXT_XTAL
# define PMU_SLOW_CLK_USE_EXT_XTAL (1)
#else
# define PMU_SLOW_CLK_USE_EXT_XTAL (0)
#endif
#define PMU_LP_ACTIVE_POWER_CONFIG_DEFAULT() { \
.dig_power = { \
.mem_dslp = 0, \
.peri_pd_en = 0, \
}, \
.clk_power = { \
.xpd_xtal32k = PMU_SLOW_CLK_USE_EXT_XTAL, \
.xpd_rc32k = 0, \
.xpd_xtal32k = 1, \
.xpd_rc32k = 1, \
.xpd_fosc = 1, \
.pd_osc = 0 \
} \

View File

@ -335,21 +335,14 @@ const pmu_hp_system_retention_param_t * pmu_hp_system_retention_param_default(pm
/** LP system default parameter */
#if CONFIG_ESP_SYSTEM_RTC_EXT_XTAL
# define PMU_SLOW_CLK_USE_EXT_XTAL (1)
#else
# define PMU_SLOW_CLK_USE_EXT_XTAL (0)
#endif
#define PMU_LP_ACTIVE_POWER_CONFIG_DEFAULT() { \
.dig_power = { \
.mem_dslp = 0, \
.peri_pd_en = 0, \
}, \
.clk_power = { \
.xpd_xtal32k = PMU_SLOW_CLK_USE_EXT_XTAL, \
.xpd_rc32k = 0, \
.xpd_xtal32k = 1, \
.xpd_rc32k = 1, \
.xpd_fosc = 1, \
.pd_osc = 0 \
} \

View File

@ -20,6 +20,8 @@
#include "hal/efuse_ll.h"
#include "hal/efuse_hal.h"
#include "esp_hw_log.h"
#include "soc/regi2c_bias.h"
#include "regi2c_ctrl.h"
static __attribute__((unused)) const char *TAG = "pmu_sleep";
@ -264,6 +266,8 @@ uint32_t pmu_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp
bool pmu_sleep_finish(bool dslp)
{
(void)dslp;
// Restore registers lost during sleep
REGI2C_WRITE_MASK(I2C_BIAS, I2C_BIAS_DREG_0P8, 8); // fix low temp issue, need to increase this internal voltage
return pmu_ll_hp_is_sleep_reject(PMU_instance()->hal->dev);
}

View File

@ -35,6 +35,9 @@
#include "esp_rom_sys.h"
#include "esp_rom_uart.h"
#include "hal/efuse_hal.h"
#if CONFIG_SPIRAM
#include "hal/ldo_ll.h"
#endif
#define HP(state) (PMU_MODE_HP_ ## state)
#define LP(state) (PMU_MODE_LP_ ## state)
@ -365,6 +368,14 @@ TCM_IRAM_ATTR uint32_t pmu_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt,
rtc_clk_mpll_disable();
}
#if CONFIG_SPIRAM && CONFIG_ESP_LDO_RESERVE_PSRAM
// Disable PSRAM chip power supply
if (dslp) {
ldo_ll_enable(LDO_ID2UNIT(CONFIG_ESP_LDO_CHAN_PSRAM_DOMAIN), false);
}
#endif
/* Start entry into sleep mode */
pmu_ll_hp_set_sleep_enable(PMU_instance()->hal->dev);
@ -373,6 +384,13 @@ TCM_IRAM_ATTR uint32_t pmu_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt,
;
}
#if CONFIG_SPIRAM && CONFIG_ESP_LDO_RESERVE_PSRAM
// Enable PSRAM chip power supply after deepsleep request rejected
if (dslp) {
ldo_ll_enable(LDO_ID2UNIT(CONFIG_ESP_LDO_CHAN_PSRAM_DOMAIN), true);
}
#endif
return pmu_sleep_finish(dslp);
}

View File

@ -325,7 +325,7 @@ typedef struct {
#define PMU_SLEEP_DIGITAL_DSLP_CONFIG_DEFAULT(pd_flags) { \
.syscntl = { \
.dig_pad_slp_sel = 0, \
.lp_pad_hold_all = 0, \
.lp_pad_hold_all = (pd_flags & PMU_SLEEP_PD_LP_PERIPH) ? 1 : 0, \
} \
}

View File

@ -64,10 +64,6 @@
#include "hal/touch_sensor_hal.h"
#endif
#if CONFIG_SPIRAM && CONFIG_ESP_LDO_RESERVE_PSRAM
#include "hal/ldo_ll.h"
#endif
#include "sdkconfig.h"
#include "esp_rom_uart.h"
#include "esp_rom_sys.h"
@ -1132,12 +1128,14 @@ static esp_err_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags, esp_sleep_mode_t m
esp_sleep_execute_event_callbacks(SLEEP_EVENT_SW_CLK_READY, (void *)0);
if (!deep_sleep) {
s_config.ccount_ticks_record = esp_cpu_get_cycle_count();
if (result == ESP_OK) {
s_config.ccount_ticks_record = esp_cpu_get_cycle_count();
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
if (pd_flags & PMU_SLEEP_PD_TOP) {
sleep_retention_do_system_retention(false);
}
if (pd_flags & PMU_SLEEP_PD_TOP) {
sleep_retention_do_system_retention(false);
}
#endif
}
misc_modules_wake_prepare(pd_flags);
}
@ -1180,10 +1178,6 @@ static esp_err_t IRAM_ATTR deep_sleep_start(bool allow_sleep_rejection)
portENTER_CRITICAL(&spinlock_rtc_deep_sleep);
esp_ipc_isr_stall_other_cpu();
esp_ipc_isr_stall_pause();
#if CONFIG_SPIRAM && CONFIG_ESP_LDO_RESERVE_PSRAM
// Disable PSRAM chip power supply
ldo_ll_enable(LDO_ID2UNIT(CONFIG_ESP_LDO_CHAN_PSRAM_DOMAIN), false);
#endif
// record current RTC time
s_config.rtc_ticks_at_sleep_start = rtc_time_get();
@ -1247,10 +1241,6 @@ static esp_err_t IRAM_ATTR deep_sleep_start(bool allow_sleep_rejection)
// can take several CPU cycles for the sleep mode to start.
ESP_INFINITE_LOOP();
}
#if CONFIG_SPIRAM && CONFIG_ESP_LDO_RESERVE_PSRAM
// Enable PSRAM chip power supply
ldo_ll_enable(LDO_ID2UNIT(CONFIG_ESP_LDO_CHAN_PSRAM_DOMAIN), true);
#endif
// Never returns here, except that the sleep is rejected.
esp_ipc_isr_stall_resume();
esp_ipc_isr_release_other_cpu();
@ -1298,7 +1288,7 @@ static esp_err_t esp_light_sleep_inner(uint32_t pd_flags,
#endif
// If SPI flash was powered down, wait for it to become ready
if (pd_flags & RTC_SLEEP_PD_VDDSDIO) {
if (!reject && (pd_flags & RTC_SLEEP_PD_VDDSDIO)) {
#if SOC_PM_SUPPORT_TOP_PD
if (pd_flags & PMU_SLEEP_PD_TOP) {
uint32_t flash_ready_hw_waited_time_us = pmu_sleep_get_wakup_retention_cost();
@ -1524,33 +1514,28 @@ esp_err_t esp_light_sleep_start(void)
// Enter sleep, then wait for flash to be ready on wakeup
err = esp_light_sleep_inner(pd_flags, flash_enable_time_us);
}
#if !CONFIG_FREERTOS_UNICORE && ESP_SLEEP_POWER_DOWN_CPU && SOC_PM_CPU_RETENTION_BY_SW
if (err != ESP_OK) {
esp_sleep_cpu_skip_retention();
}
#endif
// light sleep wakeup flag only makes sense after a successful light sleep
s_light_sleep_wakeup = (err == ESP_OK);
// System timer has been stopped for the duration of the sleep, correct for that.
uint64_t rtc_ticks_at_end = rtc_time_get();
uint64_t rtc_time_diff = rtc_time_slowclk_to_us(rtc_ticks_at_end - s_config.rtc_ticks_at_sleep_start, s_config.rtc_clk_cal_period);
#if CONFIG_ESP_SLEEP_DEBUG
if (s_sleep_ctx != NULL) {
s_sleep_ctx->sleep_out_rtc_time_stamp = rtc_ticks_at_end;
}
if (s_light_sleep_wakeup) {
uint64_t rtc_time_diff = rtc_time_slowclk_to_us(rtc_ticks_at_end - s_config.rtc_ticks_at_sleep_start, s_config.rtc_clk_cal_period);
/**
* If sleep duration is too small(less than 1 rtc_slow_clk cycle), rtc_time_diff will be zero.
* In this case, just ignore the time compensation and keep esp_timer monotonic.
*/
if (rtc_time_diff > 0) {
esp_timer_private_set(high_res_time_at_start + rtc_time_diff);
}
esp_set_time_from_rtc();
} else {
#if !CONFIG_FREERTOS_UNICORE && ESP_SLEEP_POWER_DOWN_CPU && SOC_PM_CPU_RETENTION_BY_SW
esp_sleep_cpu_skip_retention();
#endif
/**
* If sleep duration is too small(less than 1 rtc_slow_clk cycle), rtc_time_diff will be zero.
* In this case, just ignore the time compensation and keep esp_timer monotonic.
*/
if (rtc_time_diff > 0) {
esp_timer_private_set(high_res_time_at_start + rtc_time_diff);
}
esp_set_time_from_rtc();
esp_clk_private_unlock();
esp_timer_private_unlock();
@ -1585,14 +1570,18 @@ esp_err_t esp_light_sleep_start(void)
#endif // CONFIG_ESP_TASK_WDT_USE_ESP_TIMER
esp_sleep_execute_event_callbacks(SLEEP_EVENT_SW_EXIT_SLEEP, (void *)0);
s_config.sleep_time_overhead_out = (esp_cpu_get_cycle_count() - s_config.ccount_ticks_record) / (esp_clk_cpu_freq() / 1000000ULL);
#if CONFIG_ESP_SLEEP_DEBUG
if (s_sleep_ctx != NULL) {
s_sleep_ctx->sleep_out_rtc_time_stamp = rtc_ticks_at_end;
s_sleep_ctx->sleep_request_result = err;
}
#endif
if (s_light_sleep_wakeup) {
s_config.sleep_time_overhead_out = (esp_cpu_get_cycle_count() - s_config.ccount_ticks_record) / (esp_clk_cpu_freq() / 1000000ULL);
}
portEXIT_CRITICAL(&s_config.lock);
return err;
}

View File

@ -29,6 +29,8 @@
#endif
static __attribute__((unused)) const char *TAG = "sleep";
static int acquire_cnt; //for the force acquire lock
struct sleep_retention_module_object {
sleep_retention_module_callbacks_t cbs; /* A callback list that can extend more sleep retention event callbacks */
@ -319,6 +321,23 @@ static void sleep_retention_entries_stats(void)
_lock_release_recursive(&s_retention.lock);
}
void sleep_retention_dump_modules(FILE *out)
{
uint32_t inited_modules = sleep_retention_get_inited_modules();
uint32_t created_modules = sleep_retention_get_created_modules();
for (int i = SLEEP_RETENTION_MODULE_MIN; i <= SLEEP_RETENTION_MODULE_MAX; i++) {
bool inited = (inited_modules & BIT(i)) != 0;
bool created = (created_modules & BIT(i)) != 0;
bool is_top = (TOP_DOMAIN_PERIPHERALS_BM & BIT(i)) != 0;
const char* status = !inited? "-":
created? "CREATED":
"INITED";
const char* domain = is_top? "TOP": "-";
fprintf(out, "%2d: %4s %8s\n", i, domain, status);
}
}
void sleep_retention_dump_entries(FILE *out)
{
_lock_acquire_recursive(&s_retention.lock);
@ -820,6 +839,42 @@ esp_err_t sleep_retention_module_free(sleep_retention_module_t module)
return err;
}
static esp_err_t empty_create(void *args)
{
return ESP_OK;
}
esp_err_t sleep_retention_power_lock_acquire(void)
{
_lock_acquire_recursive(&s_retention.lock);
if (acquire_cnt == 0) {
sleep_retention_module_init_param_t init_param = {
.cbs = { .create = {.handle = empty_create},},
};
esp_err_t ret = sleep_retention_module_init(SLEEP_RETENTION_MODULE_NULL, &init_param);
if (ret != ESP_OK) {
_lock_release_recursive(&s_retention.lock);
return ret;
}
}
acquire_cnt++;
_lock_release_recursive(&s_retention.lock);
return ESP_OK;
}
esp_err_t sleep_retention_power_lock_release(void)
{
esp_err_t ret = ESP_OK;
_lock_acquire_recursive(&s_retention.lock);
acquire_cnt--;
assert(acquire_cnt >= 0);
if (acquire_cnt == 0) {
ret = sleep_retention_module_deinit(SLEEP_RETENTION_MODULE_NULL);
}
_lock_release_recursive(&s_retention.lock);
return ret;
}
void IRAM_ATTR sleep_retention_do_extra_retention(bool backup_or_restore)
{
if (s_retention.highpri < SLEEP_RETENTION_REGDMA_LINK_HIGHEST_PRIORITY ||

View File

@ -42,6 +42,11 @@ components/esp_hw_support/test_apps/rtc_power_modes:
temporary: true
reason: the other targets are not tested yet
components/esp_hw_support/test_apps/sleep_retention:
enable:
- if: SOC_PAU_SUPPORTED == 1 and CONFIG_NAME != "xip_psram"
- if: SOC_PAU_SUPPORTED == 1 and (SOC_SPIRAM_XIP_SUPPORTED == 1 and CONFIG_NAME == "xip_psram")
components/esp_hw_support/test_apps/vad_wakeup:
disable:
- if: SOC_LP_VAD_SUPPORTED != 1

View File

@ -21,7 +21,7 @@ from pytest_embedded import Dut
indirect=True,
)
def test_dma(dut: Dut) -> None:
dut.run_all_single_board_cases()
dut.run_all_single_board_cases(reset=True)
@pytest.mark.esp32s3
@ -34,4 +34,4 @@ def test_dma(dut: Dut) -> None:
indirect=True,
)
def test_dma_psram(dut: Dut) -> None:
dut.run_all_single_board_cases()
dut.run_all_single_board_cases(reset=True)

View File

@ -0,0 +1,10 @@
# This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on. We also depend on esp_psram
# as we set CONFIG_SPIRAM_... options.
set(COMPONENTS main esp_psram)
project(test_retention)

View File

@ -0,0 +1,2 @@
| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 |
| ----------------- | -------- | -------- | --------- | -------- | -------- |

View File

@ -0,0 +1,7 @@
set(srcs "test_app_main.c" "test_retention.c")
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
# the component can be registered as WHOLE_ARCHIVE
idf_component_register(SRCS ${srcs}
PRIV_REQUIRES unity esp_mm esp_psram
WHOLE_ARCHIVE)

View File

@ -0,0 +1,40 @@
/*
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "unity.h"
#include "unity_test_runner.h"
#include "esp_heap_caps.h"
#define TEST_MEMORY_LEAK_THRESHOLD (-300)
static size_t before_free_8bit;
static size_t before_free_32bit;
static void check_leak(size_t before_free, size_t after_free, const char *type)
{
ssize_t delta = after_free - before_free;
printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta);
TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak");
}
void setUp(void)
{
before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
}
void tearDown(void)
{
size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
check_leak(before_free_8bit, after_free_8bit, "8BIT");
check_leak(before_free_32bit, after_free_32bit, "32BIT");
}
void app_main(void)
{
unity_run_menu();
}

View File

@ -0,0 +1,37 @@
/*
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "sdkconfig.h"
#include "unity.h"
#include "esp_private/sleep_sys_periph.h"
#include "esp_private/sleep_retention.h"
#include "esp_sleep.h"
#include "esp_private/sleep_cpu.h"
const char TAG[] = "retention";
TEST_CASE("retention: can go to retention", "[retention]")
{
// Prepare a TOP PD sleep
TEST_ESP_OK(esp_sleep_enable_timer_wakeup(1 * 1000 * 1000));
sleep_cpu_configure(true);
TEST_ASSERT_EQUAL_INT32(true, peripheral_domain_pd_allowed());
sleep_retention_dump_modules(stdout);
vTaskDelay(1000/portTICK_PERIOD_MS);
ESP_LOGI(TAG, "Going to sleep...");
esp_light_sleep_start();
ESP_LOGI(TAG, "After wakeup");
TEST_ASSERT_EQUAL_INT32(true, peripheral_domain_pd_allowed());
sleep_retention_dump_modules(stdout);
sleep_cpu_configure(false);
}

View File

@ -0,0 +1,35 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import functools
from typing import Callable
from typing import Dict
from typing import List
import pytest
from pytest_embedded import Dut
def target_list(targets: List[str]) -> Callable:
def decorator(func: Callable) -> Callable:
@functools.wraps(func)
def wrapper(*args: List, **kwargs: Dict) -> Callable:
return func(*args, **kwargs) # type: ignore
for target in targets:
wrapper = pytest.mark.__getattr__(target)(wrapper)
return wrapper
return decorator
# SOC_PAU_SUPPORTED == 1
retention_targets = ['esp32c6', 'esp32h2', 'esp32p4', 'esp32c5', 'esp32c61']
@target_list(retention_targets)
@pytest.mark.generic
def test_sleep_retention(dut: Dut) -> None:
dut.run_all_single_board_cases()

View File

@ -0,0 +1,2 @@
CONFIG_SPIRAM=y
CONFIG_SPIRAM_XIP_FROM_PSRAM=y

View File

@ -0,0 +1,6 @@
CONFIG_FREERTOS_HZ=1000
CONFIG_ESP_TASK_WDT=n
CONFIG_PM_ENABLE=y
CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP=y

View File

@ -83,9 +83,9 @@ esp_err_t esp_lcd_new_panel_io_i2c_v2(i2c_master_bus_handle_t bus, const esp_lcd
* - ESP_ERR_NO_MEM if out of memory
* - ESP_OK on success
*/
static inline void esp_lcd_new_panel_io_i2c(uint32_t bus, const esp_lcd_panel_io_i2c_config_t *io_config, esp_lcd_panel_io_handle_t *ret_io)
static inline esp_err_t esp_lcd_new_panel_io_i2c(uint32_t bus, const esp_lcd_panel_io_i2c_config_t *io_config, esp_lcd_panel_io_handle_t *ret_io)
{
esp_lcd_new_panel_io_i2c_v1(bus, io_config, ret_io);
return esp_lcd_new_panel_io_i2c_v1(bus, io_config, ret_io);
}
/**
@ -99,9 +99,9 @@ static inline void esp_lcd_new_panel_io_i2c(uint32_t bus, const esp_lcd_panel_io
* - ESP_ERR_NO_MEM if out of memory
* - ESP_OK on success
*/
static inline void esp_lcd_new_panel_io_i2c(i2c_master_bus_handle_t bus, const esp_lcd_panel_io_i2c_config_t *io_config, esp_lcd_panel_io_handle_t *ret_io)
static inline esp_err_t esp_lcd_new_panel_io_i2c(i2c_master_bus_handle_t bus, const esp_lcd_panel_io_i2c_config_t *io_config, esp_lcd_panel_io_handle_t *ret_io)
{
esp_lcd_new_panel_io_i2c_v2(bus, io_config, ret_io);
return esp_lcd_new_panel_io_i2c_v2(bus, io_config, ret_io);
}
#else
/**

View File

@ -172,5 +172,10 @@ menu "PHY"
help
If enabled, there will be some logs while pll tracking
config ESP_PHY_RECORD_USED_TIME
bool "Record PHY used time"
default n
help
Select to support record and query phy used time.
endif
endmenu # PHY

View File

@ -38,6 +38,7 @@ typedef enum {
PHY_MODEM_WIFI = 1, /*!< PHY modem WIFI */
PHY_MODEM_BT = 2, /*!< PHY modem BT */
PHY_MODEM_IEEE802154 = 4, /*!< PHY modem IEEE802154 */
PHY_MODEM_MAX, /*!< Don't use it. Used by ESP_PHY_MODEM_COUNT_MAX */
} esp_phy_modem_t;
/**
@ -286,6 +287,23 @@ void phy_init_param_set(uint8_t param);
*/
void phy_wifi_enable_set(uint8_t enable);
#if CONFIG_ESP_PHY_RECORD_USED_TIME
/**
* @brief Get phy used time from different modem
* @param used_time pointer of variable to get used time, in microseconds
* @param modem modem type
* @return ESP_ERR_INVALID_ARG on incorrect modem type.
*/
esp_err_t phy_query_used_time(uint64_t *used_time, esp_phy_modem_t modem);
/**
* @brief Clear phy used time for different modem
* @param modem modem type
* @return ESP_ERR_INVALID_ARG on incorrect modem type.
*/
esp_err_t phy_clear_used_time(esp_phy_modem_t modem);
#endif
#ifdef __cplusplus
}
#endif

View File

@ -161,6 +161,60 @@ static phy_country_to_bin_type_t s_country_code_map_type_table[] = {
{"US", ESP_PHY_INIT_DATA_TYPE_FCC},
};
#endif
#if CONFIG_ESP_PHY_RECORD_USED_TIME
#define ESP_PHY_MODEM_COUNT_MAX (__builtin_ffs(PHY_MODEM_MAX - 1))
#define ESP_PHY_IS_VALID_MODEM(modem) (__builtin_popcount(modem) == 1 && __builtin_ctz(modem) < ESP_PHY_MODEM_COUNT_MAX)
static DRAM_ATTR struct {
uint64_t used_time;
uint64_t enabled_time;
uint64_t disabled_time;
} s_phy_rf_used_info[ESP_PHY_MODEM_COUNT_MAX];
static IRAM_ATTR void phy_record_time(bool enabled, esp_phy_modem_t modem) {
uint8_t index = __builtin_ctz(modem);
if (enabled) {
s_phy_rf_used_info[index].enabled_time = esp_timer_get_time();
} else {
s_phy_rf_used_info[index].disabled_time = esp_timer_get_time();
s_phy_rf_used_info[index].used_time += s_phy_rf_used_info[index].disabled_time - s_phy_rf_used_info[index].enabled_time;
}
}
esp_err_t phy_query_used_time(uint64_t *used_time, esp_phy_modem_t modem) {
if (!ESP_PHY_IS_VALID_MODEM(modem)) {
return ESP_ERR_INVALID_ARG;
}
uint8_t index = __builtin_ctz(modem);
_lock_acquire(&s_phy_access_lock);
*used_time = s_phy_rf_used_info[index].used_time;
if (s_phy_rf_used_info[index].disabled_time < s_phy_rf_used_info[index].enabled_time) {
// phy is being used
*used_time += esp_timer_get_time() - s_phy_rf_used_info[index].enabled_time;
}
_lock_release(&s_phy_access_lock);
return ESP_OK;
}
esp_err_t phy_clear_used_time(esp_phy_modem_t modem) {
if (!ESP_PHY_IS_VALID_MODEM(modem)) {
return ESP_ERR_INVALID_ARG;
}
uint8_t index = __builtin_ctz(modem);
_lock_acquire(&s_phy_access_lock);
if (s_phy_rf_used_info[index].enabled_time > s_phy_rf_used_info[index].disabled_time) {
// phy is being used
s_phy_rf_used_info[index].enabled_time = esp_timer_get_time();
} else {
s_phy_rf_used_info[index].enabled_time = s_phy_rf_used_info[index].disabled_time;
}
s_phy_rf_used_info[index].used_time = 0;
_lock_release(&s_phy_access_lock);
return ESP_OK;
}
#endif
uint32_t IRAM_ATTR phy_enter_critical(void)
{
if (xPortInIsrContext()) {
@ -293,13 +347,18 @@ void esp_phy_enable(esp_phy_modem_t modem)
phy_track_pll();
#endif
#if CONFIG_ESP_PHY_RECORD_USED_TIME
phy_record_time(true, modem);
#endif
_lock_release(&s_phy_access_lock);
}
void esp_phy_disable(esp_phy_modem_t modem)
{
_lock_acquire(&s_phy_access_lock);
#if CONFIG_ESP_PHY_RECORD_USED_TIME
phy_record_time(false, modem);
#endif
phy_clr_modem_flag(modem);
if (phy_get_modem_flag() == 0) {
// ESP32 will track pll in the wifi/BT modem interrupt handler.

View File

@ -8,6 +8,7 @@
#include "freertos/portmacro.h"
#include "esp_phy_init.h"
#include "esp_private/phy.h"
#include "esp_timer.h"
#if SOC_MODEM_CLOCK_IS_INDEPENDENT
#include "esp_private/esp_modem_clock.h"
@ -23,6 +24,59 @@ static _lock_t s_phy_access_lock;
/* Reference count of enabling PHY */
static bool s_phy_is_enabled = false;
#if CONFIG_ESP_PHY_RECORD_USED_TIME
#define ESP_PHY_MODEM_COUNT_MAX (__builtin_ffs(PHY_MODEM_MAX - 1))
#define ESP_PHY_IS_VALID_MODEM(modem) (__builtin_popcount(modem) == 1 && __builtin_ctz(modem) < ESP_PHY_MODEM_COUNT_MAX)
static DRAM_ATTR struct {
uint64_t used_time;
uint64_t enabled_time;
uint64_t disabled_time;
} s_phy_rf_used_info[ESP_PHY_MODEM_COUNT_MAX];
static IRAM_ATTR void phy_record_time(bool enabled, esp_phy_modem_t modem) {
uint8_t index = __builtin_ctz(modem);
if (enabled) {
s_phy_rf_used_info[index].enabled_time = esp_timer_get_time();
} else {
s_phy_rf_used_info[index].disabled_time = esp_timer_get_time();
s_phy_rf_used_info[index].used_time += s_phy_rf_used_info[index].disabled_time - s_phy_rf_used_info[index].enabled_time;
}
}
esp_err_t phy_query_used_time(uint64_t *used_time, esp_phy_modem_t modem) {
if (!ESP_PHY_IS_VALID_MODEM(modem)) {
return ESP_ERR_INVALID_ARG;
}
uint8_t index = __builtin_ctz(modem);
_lock_acquire(&s_phy_access_lock);
*used_time = s_phy_rf_used_info[index].used_time;
if (s_phy_rf_used_info[index].disabled_time < s_phy_rf_used_info[index].enabled_time) {
// phy is being used
*used_time += esp_timer_get_time() - s_phy_rf_used_info[index].enabled_time;
}
_lock_release(&s_phy_access_lock);
return ESP_OK;
}
esp_err_t phy_clear_used_time(esp_phy_modem_t modem) {
if (!ESP_PHY_IS_VALID_MODEM(modem)) {
return ESP_ERR_INVALID_ARG;
}
uint8_t index = __builtin_ctz(modem);
_lock_acquire(&s_phy_access_lock);
if (s_phy_rf_used_info[index].enabled_time > s_phy_rf_used_info[index].disabled_time) {
// phy is being used
s_phy_rf_used_info[index].enabled_time = esp_timer_get_time();
} else {
s_phy_rf_used_info[index].enabled_time = s_phy_rf_used_info[index].disabled_time;
}
s_phy_rf_used_info[index].used_time = 0;
_lock_release(&s_phy_access_lock);
return ESP_OK;
}
#endif
uint32_t IRAM_ATTR phy_enter_critical(void)
{
if (xPortInIsrContext()) {
@ -64,13 +118,18 @@ void esp_phy_enable(esp_phy_modem_t modem)
phy_set_modem_flag(modem);
// Immediately track pll when phy enabled.
phy_track_pll();
#if CONFIG_ESP_PHY_RECORD_USED_TIME
phy_record_time(true, modem);
#endif
_lock_release(&s_phy_access_lock);
}
void esp_phy_disable(esp_phy_modem_t modem)
{
_lock_acquire(&s_phy_access_lock);
#if CONFIG_ESP_PHY_RECORD_USED_TIME
phy_record_time(false, modem);
#endif
phy_clr_modem_flag(modem);
if (phy_get_modem_flag() == 0) {

View File

@ -99,6 +99,11 @@ if(target STREQUAL "linux")
else()
target_linker_script(${COMPONENT_LIB} INTERFACE "${target_folder}/${ld_folder}/${target}.rom.ld")
rom_linker_script("api")
if(NOT CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
if(target STREQUAL "esp32s3" OR target STREQUAL "esp32c3")
rom_linker_script("bt_funcs")
endif()
endif()
if(CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB)
rom_linker_script("libgcc")
@ -176,15 +181,67 @@ else() # Regular app build
endif()
elseif(target STREQUAL "esp32c3")
if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
if(NOT CONFIG_BT_CTRL_BLE_MASTER)
rom_linker_script("ble_master")
endif()
if(NOT CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT AND NOT CONFIG_BT_BLE_50_FEATURES_SUPPORTED)
rom_linker_script("ble_50")
endif()
if(CONFIG_BT_BLE_CCA_MODE_NONE)
rom_linker_script("ble_cca")
endif()
if(NOT CONFIG_BT_NIMBLE_SECURITY_ENABLE AND NOT CONFIG_BT_BLE_SMP_ENABLE)
rom_linker_script("ble_smp")
endif()
if(NOT CONFIG_BT_CTRL_DTM_ENABLE)
rom_linker_script("ble_dtm")
endif()
if(NOT CONFIG_BT_CTRL_BLE_TEST)
rom_linker_script("ble_test")
endif()
if(NOT CONFIG_BT_CTRL_BLE_SCAN)
rom_linker_script("ble_scan")
endif()
endif()
if(CONFIG_ESP32C3_REV_MIN_FULL GREATER_EQUAL 3)
rom_linker_script("eco3")
if(NOT CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
rom_linker_script("eco3_bt_funcs")
endif()
endif()
if(CONFIG_ESP32C3_REV_MIN_FULL GREATER_EQUAL 101)
rom_linker_script("eco7")
if(NOT CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
rom_linker_script("eco7_bt_funcs")
endif()
endif()
elseif(target STREQUAL "esp32s3")
if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY)
if(NOT CONFIG_BT_CTRL_BLE_MASTER)
rom_linker_script("ble_master")
endif()
if(NOT CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT AND NOT CONFIG_BT_BLE_50_FEATURES_SUPPORTED)
rom_linker_script("ble_50")
endif()
if(CONFIG_BT_BLE_CCA_MODE_NONE)
rom_linker_script("ble_cca")
endif()
if(NOT CONFIG_BT_NIMBLE_SECURITY_ENABLE AND NOT CONFIG_BT_BLE_SMP_ENABLE)
rom_linker_script("ble_smp")
endif()
if(NOT CONFIG_BT_CTRL_DTM_ENABLE)
rom_linker_script("ble_dtm")
endif()
if(NOT CONFIG_BT_CTRL_BLE_TEST)
rom_linker_script("ble_test")
endif()
if(NOT CONFIG_BT_CTRL_BLE_SCAN)
rom_linker_script("ble_scan")
endif()
endif()
elseif(target STREQUAL "esp32c6")
# esp32c6.rom.api.ld has been split to several lds by components.
# esp32c6.rom.api.ld is still reserved to map the APIs

View File

@ -0,0 +1,75 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* extend adv */
f_hci_le_set_ext_adv_param_cmd_handler = 0;
f_hci_le_set_adv_set_rand_addr_cmd_handler = 0;
f_hci_le_set_ext_adv_data_cmd_handler = 0;
f_hci_le_set_ext_scan_rsp_data_cmd_handler = 0;
f_hci_le_set_ext_adv_en_cmd_handler = 0;
f_hci_le_rd_max_adv_data_len_cmd_handler = 0;
f_hci_le_rd_nb_supp_adv_sets_cmd_handler = 0;
f_hci_le_rmv_adv_set_cmd_handler = 0;
f_hci_le_clear_adv_sets_cmd_handler = 0;
r_lld_adv_sync_info_set = 0;
r_lld_ext_adv_dynamic_pti_process = 0;
r_lld_adv_ext_chain_construct = 0;
r_lld_adv_aux_evt_canceled_cbk = 0;
r_lld_adv_aux_evt_start_cbk = 0;
r_lld_adv_aux_ch_idx_set = 0;
/* periodic adv */
f_hci_le_set_per_adv_param_cmd_handler = 0;
f_hci_le_set_per_adv_data_cmd_handler = 0;
f_hci_le_set_per_adv_en_cmd_handler = 0;
r_lld_per_adv_ch_map_update = 0;
r_lld_per_adv_init = 0;
/* PA list */
f_hci_le_add_dev_to_per_adv_list_cmd_handler = 0;
f_hci_le_rmv_dev_from_per_adv_list_cmd_handler = 0;
f_hci_le_clear_per_adv_list_cmd_handler = 0;
f_hci_le_rd_per_adv_list_size_cmd_handler = 0;
/* extend scan */
f_hci_le_set_ext_scan_param_cmd_handler = 0;
f_hci_le_set_ext_scan_en_cmd_handler = 0;
r_lld_scan_process_pkt_rx_ext_adv = 0;
r_lld_scan_trunc_ind = 0;
/* extend con */
f_hci_le_ext_create_con_cmd_handler = 0;
r_lld_init_process_pkt_rx_adv_ext_ind = 0;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0;
/* PA sync */
f_hci_le_per_adv_create_sync_cmd_handler = 0;
f_hci_le_per_adv_create_sync_cancel_cmd_handler = 0;
f_hci_le_per_adv_term_sync_cmd_handler = 0;
f_lld_per_adv_rx_end_ind_handler_hack = 0;
f_lld_sync_start_req_handler = 0;
f_lld_per_adv_rep_ind_handler = 0;
r_lld_sync_init = 0;
/* phy update*/
r_phy_upd_proc_start = 0;
f_llc_op_phy_upd_ind_handler = 0;
f_ll_phy_req_handler = 0;
f_ll_phy_rsp_handler = 0;
f_ll_phy_update_ind_handler = 0;
f_lld_phy_upd_cfm_handler = 0;
f_hci_le_set_phy_cmd_handler = 0;
llc_llcp_phy_update_ind_ack = 0;

View File

@ -0,0 +1,32 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* SW CCA */
r_lld_cca_con_evt_start_handle = 0;
r_lld_hw_cca_end_isr = 0;
r_lld_hw_cca_isr_eco = 0;
r_lld_cca_bb_sync_found_handle = 0;
r_lld_cca_data_reset = 0;
r_lld_cca_sw_init = 0;
r_lld_cca_con_evt_end_handle = 0;
r_lld_cca_alloc = 0;
r_lld_cca_sw_alloc = 0;
r_lld_cca_sw_free = 0;
r_lld_cca_free = 0;
r_cca_init = 0;
r_lld_hw_cca_evt_handler = 0;
r_lld_sw_cca_evt_handler = 0;
r_ble_sw_cca_check_isr = 0;
bt_bb_tx_cca_set = 0;

View File

@ -0,0 +1,22 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* DTM */
f_hci_le_rx_test_cmd_handler = 0;
f_hci_le_tx_test_cmd_handler = 0;
f_hci_le_enh_rx_test_cmd_handler = 0;
f_hci_le_enh_tx_test_cmd_handler = 0;
f_hci_le_test_end_cmd_handler = 0;
r_lld_test_init = 0;

View File

@ -0,0 +1,20 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* master */
f_hci_le_create_con_cmd_handler = 0;
f_hci_le_create_con_cancel_cmd_handler = 0;
lld_init_end_ind_handler = 0;
r_lld_init_init = 0;

View File

@ -0,0 +1,36 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* BLE scan */
f_hci_le_set_scan_param_cmd_handler = 0;
f_hci_le_set_scan_en_cmd_handler = 0;
f_llm_scan_period_to_handler_hack = 0;
f_lld_adv_rep_ind_handler_hack = 0;
r_lld_scan_init = 0;
r_lld_scan_restart = 0;
f_lld_scan_end_ind_handler_hack = 0;
r_llm_env_adv_dup_filt_deinit_eco = 0;
llm_exception_list_init = 0;
llm_duplicate_list_init = 0;
f_hci_vendor_ble_update_duplicate_exceptional_list_cmd_handler = 0;
f_hci_vendor_ble_init_adv_flow_control_cmd_handler = 0;
f_hci_vendor_ble_update_adv_report_flow_control_cmd_handler = 0;
coex_schm_ble_scan_stop = 0;
f_hci_le_set_ext_scan_param_cmd_handler = 0;
f_hci_le_set_ext_scan_en_cmd_handler = 0;
r_lld_scan_process_pkt_rx_ext_adv = 0;
r_lld_scan_trunc_ind = 0;

View File

@ -0,0 +1,44 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* SMP */
f_ll_pause_enc_req_handler = 0;
f_ll_pause_enc_rsp_handler = 0;
f_ll_enc_req_handler = 0;
f_ll_enc_rsp_handler = 0;
f_ll_start_enc_req_handler = 0;
f_ll_start_enc_rsp_handler = 0;
f_hci_le_start_enc_cmd_handler = 0;
f_hci_le_ltk_req_reply_cmd_handler = 0;
f_hci_le_ltk_req_neg_reply_cmd_handler = 0;
f_llc_encrypt_ind_handler = 0;
f_llc_op_encrypt_ind_handler = 0;
f_hci_le_rd_local_p256_public_key_cmd_handler = 0;
f_hci_le_generate_dhkey_cmd_handler = 0;
f_hci_le_enc_cmd_handler = 0;
r_rwip_crypt_evt_handler = 0;
/* LE ping */
f_ll_ping_req_handler = 0;
f_ll_ping_rsp_handler = 0;
r_llc_le_ping_set = 0;
r_llc_le_ping_restart = 0;
f_llc_op_le_ping_ind_handler = 0;
f_llc_auth_payl_nearly_op_handler = 0;
f_llc_auth_payl_real_to_handler = 0;
f_llc_auth_payl_nearly_to_handler = 0;
/* ecc */
r_ecc_init = 0;

View File

@ -0,0 +1,37 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* overwrite */
lld_acl_rx_ind_handler = 0;
lld_con_estab_ind_handler = 0;
lld_adv_rep_ind_handler = 0;
llm_rpa_renew_to_handler = 0;
lld_scan_end_ind_handler = 0;
llm_scan_period_to_handler = 0;
/* nvds */
r_nvds_init = 0;
f_nvds_get = 0;
f_nvds_del = 0;
f_nvds_put = 0;
/* controller flash */
r_flash_init = 0;
r_flash_env_init = 0;
r_flash_env_deinit = 0;
/* QA test */
f_hci_vendor_ble_qa_test_cmd_handler = 0;

View File

@ -0,0 +1,844 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32c3.rom.ld for esp32c3
*
*
* Generated from ./interface-esp32c3.yml md5sum 93b28a9e1fe42d212018eb4336849208
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/***************************************
Group bluetooth
***************************************/
/* Functions */
bt_rf_coex_get_dft_cfg = 0x400008dc;
bt_rf_coex_hooks_p_set = 0x400008e0;
btdm_con_maxevtime_cal_impl = 0x400008e4;
btdm_controller_get_compile_version_impl = 0x400008e8;
btdm_controller_rom_data_init = 0x400008ec;
btdm_dis_privacy_err_report_impl = 0x400008f0;
btdm_disable_adv_delay_impl = 0x400008f4;
btdm_enable_scan_continue_impl = 0x400008f8;
btdm_enable_scan_forever_impl = 0x400008fc;
btdm_get_power_state_impl = 0x40000900;
btdm_get_prevent_sleep_flag_impl = 0x40000904;
btdm_power_state_active_impl = 0x40000908;
btdm_switch_phy_coded_impl = 0x4000090c;
hci_acl_data_handler = 0x40000910;
hci_disconnect_cmd_handler = 0x40000914;
hci_le_con_upd_cmd_handler = 0x40000918;
hci_le_ltk_req_neg_reply_cmd_handler = 0x4000091c;
hci_le_ltk_req_reply_cmd_handler = 0x40000920;
hci_le_rd_chnl_map_cmd_handler = 0x40000924;
hci_le_rd_phy_cmd_handler = 0x40000928;
hci_le_rd_rem_feats_cmd_handler = 0x4000092c;
hci_le_rem_con_param_req_neg_reply_cmd_handler = 0x40000930;
hci_le_rem_con_param_req_reply_cmd_handler = 0x40000934;
hci_le_set_data_len_cmd_handler = 0x40000938;
hci_le_set_phy_cmd_handler = 0x4000093c;
hci_le_start_enc_cmd_handler = 0x40000940;
hci_rd_auth_payl_to_cmd_handler = 0x40000944;
hci_rd_rem_ver_info_cmd_handler = 0x40000948;
hci_rd_rssi_cmd_handler = 0x4000094c;
hci_rd_tx_pwr_lvl_cmd_handler = 0x40000950;
hci_vs_set_pref_slave_evt_dur_cmd_handler = 0x40000954;
hci_vs_set_pref_slave_latency_cmd_handler = 0x40000958;
hci_wr_auth_payl_to_cmd_handler = 0x4000095c;
ll_channel_map_ind_handler = 0x40000960;
ll_connection_param_req_handler = 0x40000964;
ll_connection_param_rsp_handler = 0x40000968;
ll_connection_update_ind_handler = 0x4000096c;
ll_enc_req_handler = 0x40000970;
ll_enc_rsp_handler = 0x40000974;
ll_feature_req_handler = 0x40000978;
ll_feature_rsp_handler = 0x4000097c;
ll_length_req_handler = 0x40000980;
ll_length_rsp_handler = 0x40000984;
ll_min_used_channels_ind_handler = 0x40000988;
ll_pause_enc_req_handler = 0x4000098c;
ll_pause_enc_rsp_handler = 0x40000990;
ll_phy_req_handler = 0x40000994;
ll_phy_rsp_handler = 0x40000998;
ll_phy_update_ind_handler = 0x4000099c;
ll_ping_req_handler = 0x400009a0;
ll_ping_rsp_handler = 0x400009a4;
ll_slave_feature_req_handler = 0x400009a8;
ll_start_enc_req_handler = 0x400009ac;
ll_start_enc_rsp_handler = 0x400009b0;
ll_terminate_ind_handler = 0x400009b4;
ll_version_ind_handler = 0x400009b8;
llc_auth_payl_nearly_to_handler = 0x400009bc;
llc_auth_payl_real_to_handler = 0x400009c0;
llc_encrypt_ind_handler = 0x400009c4;
llc_hci_command_handler_wrapper = 0x400009c8;
llc_ll_connection_param_req_pdu_send = 0x400009cc;
llc_ll_connection_param_rsp_pdu_send = 0x400009d0;
llc_ll_connection_update_ind_pdu_send = 0x400009d4;
llc_ll_enc_req_pdu_send = 0x400009d8;
llc_ll_enc_rsp_pdu_send = 0x400009dc;
llc_ll_feature_req_pdu_send = 0x400009e0;
llc_ll_feature_rsp_pdu_send = 0x400009e4;
llc_ll_length_req_pdu_send = 0x400009e8;
llc_ll_length_rsp_pdu_send = 0x400009ec;
llc_ll_pause_enc_req_pdu_send = 0x400009f0;
llc_ll_pause_enc_rsp_pdu_send = 0x400009f4;
llc_ll_phy_req_pdu_send = 0x400009f8;
llc_ll_phy_rsp_pdu_send = 0x400009fc;
llc_ll_ping_req_pdu_send = 0x40000a00;
llc_ll_ping_rsp_pdu_send = 0x40000a04;
llc_ll_start_enc_req_pdu_send = 0x40000a08;
llc_ll_start_enc_rsp_pdu_send = 0x40000a0c;
llc_ll_terminate_ind_pdu_send = 0x40000a10;
llc_ll_unknown_rsp_pdu_send = 0x40000a14;
llc_llcp_ch_map_update_ind_pdu_send = 0x40000a18;
llc_llcp_phy_upd_ind_pdu_send = 0x40000a1c;
llc_llcp_version_ind_pdu_send = 0x40000a20;
llc_op_ch_map_upd_ind_handler = 0x40000a24;
llc_op_con_upd_ind_handler = 0x40000a28;
llc_op_disconnect_ind_handler = 0x40000a2c;
llc_op_dl_upd_ind_handler = 0x40000a30;
llc_op_encrypt_ind_handler = 0x40000a34;
llc_op_feats_exch_ind_handler = 0x40000a38;
llc_op_le_ping_ind_handler = 0x40000a3c;
llc_op_phy_upd_ind_handler = 0x40000a40;
llc_op_ver_exch_ind_handler = 0x40000a44;
llc_stopped_ind_handler = 0x40000a48;
lld_acl_rx_ind_handler = 0x40000a4c;
lld_acl_tx_cfm_handler = 0x40000a50;
lld_adv_end_ind_handler = 0x40000a54;
lld_adv_rep_ind_handler = 0x40000a58;
lld_ch_map_upd_cfm_handler = 0x40000a5c;
lld_con_estab_ind_handler = 0x40000a60;
lld_con_evt_sd_evt_time_set = 0x40000a64;
lld_con_offset_upd_ind_handler = 0x40000a68;
lld_con_param_upd_cfm_handler = 0x40000a6c;
lld_disc_ind_handler = 0x40000a70;
lld_init_end_ind_handler = 0x40000a74;
lld_llcp_rx_ind_handler_wrapper = 0x40000a78;
lld_llcp_tx_cfm_handler = 0x40000a7c;
lld_per_adv_end_ind_handler = 0x40000a80;
lld_per_adv_rep_ind_handler = 0x40000a84;
lld_per_adv_rx_end_ind_handler = 0x40000a88;
lld_phy_coded_500k_get = 0x40000a8c;
lld_phy_upd_cfm_handler = 0x40000a90;
lld_scan_end_ind_handler = 0x40000a94;
lld_scan_req_ind_handler = 0x40000a98;
lld_sync_start_req_handler = 0x40000a9c;
lld_test_end_ind_handler = 0x40000aa0;
lld_update_rxbuf_handler = 0x40000aa4;
llm_ch_map_update_ind_handler = 0x40000aa8;
llm_hci_command_handler_wrapper = 0x40000aac;
llm_scan_period_to_handler = 0x40000ab0;
r_Add2SelfBigHex256 = 0x40000ab4;
r_AddBigHex256 = 0x40000ab8;
r_AddBigHexModP256 = 0x40000abc;
r_AddP256 = 0x40000ac0;
r_AddPdiv2_256 = 0x40000ac4;
r_GF_Jacobian_Point_Addition256 = 0x40000ac8;
r_GF_Jacobian_Point_Double256 = 0x40000acc;
r_GF_Point_Jacobian_To_Affine256 = 0x40000ad0;
r_MultiplyBigHexByUint32_256 = 0x40000ad4;
r_MultiplyBigHexModP256 = 0x40000ad8;
r_MultiplyByU16ModP256 = 0x40000adc;
r_SubtractBigHex256 = 0x40000ae0;
r_SubtractBigHexMod256 = 0x40000ae4;
r_SubtractBigHexUint32_256 = 0x40000ae8;
r_SubtractFromSelfBigHex256 = 0x40000aec;
r_SubtractFromSelfBigHexSign256 = 0x40000af0;
r_aes_alloc = 0x40000af4;
r_aes_ccm_continue = 0x40000af8;
r_aes_ccm_process_e = 0x40000afc;
r_aes_ccm_xor_128_lsb = 0x40000b00;
r_aes_ccm_xor_128_msb = 0x40000b04;
r_aes_cmac_continue = 0x40000b08;
r_aes_cmac_start = 0x40000b0c;
r_aes_k1_continue = 0x40000b10;
r_aes_k2_continue = 0x40000b14;
r_aes_k3_continue = 0x40000b18;
r_aes_k4_continue = 0x40000b1c;
r_aes_shift_left_128 = 0x40000b20;
r_aes_start = 0x40000b24;
r_aes_xor_128 = 0x40000b28;
r_assert_err = 0x40000b2c;
r_assert_param = 0x40000b30;
r_assert_warn = 0x40000b34;
r_bigHexInversion256 = 0x40000b38;
r_ble_sw_cca_check_isr = 0x40000b3c;
r_ble_util_buf_acl_tx_alloc = 0x40000b40;
r_ble_util_buf_acl_tx_elt_get = 0x40000b44;
r_ble_util_buf_acl_tx_free = 0x40000b48;
r_ble_util_buf_acl_tx_free_in_isr = 0x40000b4c;
r_ble_util_buf_adv_tx_alloc = 0x40000b50;
r_ble_util_buf_adv_tx_free = 0x40000b54;
r_ble_util_buf_adv_tx_free_in_isr = 0x40000b58;
r_ble_util_buf_env_deinit = 0x40000b5c;
r_ble_util_buf_env_init = 0x40000b60;
r_ble_util_buf_get_rx_buf_nb = 0x40000b64;
r_ble_util_buf_get_rx_buf_size = 0x40000b68;
r_ble_util_buf_llcp_tx_alloc = 0x40000b6c;
r_ble_util_buf_llcp_tx_free = 0x40000b70;
r_ble_util_buf_rx_alloc = 0x40000b74;
r_ble_util_buf_rx_alloc_in_isr = 0x40000b78;
r_ble_util_buf_rx_free = 0x40000b7c;
r_ble_util_buf_rx_free_in_isr = 0x40000b80;
r_ble_util_buf_set_rx_buf_nb = 0x40000b84;
r_ble_util_buf_set_rx_buf_size = 0x40000b88;
r_ble_util_data_rx_buf_reset = 0x40000b8c;
r_bt_bb_get_intr_mask = 0x40000b90;
r_bt_bb_intr_clear = 0x40000b94;
r_bt_bb_intr_mask_set = 0x40000b98;
r_bt_rf_coex_cfg_set = 0x40000ba0;
r_bt_rf_coex_conn_dynamic_pti_en_get = 0x40000ba4;
r_bt_rf_coex_ext_adv_dynamic_pti_en_get = 0x40000bac;
r_bt_rf_coex_ext_scan_dynamic_pti_en_get = 0x40000bb0;
r_bt_rf_coex_legacy_adv_dynamic_pti_en_get = 0x40000bb4;
r_bt_rf_coex_per_adv_dynamic_pti_en_get = 0x40000bb8;
r_bt_rf_coex_pti_table_get = 0x40000bbc;
r_bt_rf_coex_st_param_get = 0x40000bc0;
r_bt_rf_coex_st_param_set = 0x40000bc4;
r_bt_rf_coex_sync_scan_dynamic_pti_en_get = 0x40000bc8;
r_bt_rma_apply_rule_cs_fmt = 0x40000bcc;
r_bt_rma_apply_rule_cs_idx = 0x40000bd0;
r_bt_rma_configure = 0x40000bd4;
r_bt_rma_deregister_rule_cs_fmt = 0x40000bd8;
r_bt_rma_deregister_rule_cs_idx = 0x40000bdc;
r_bt_rma_get_ant_by_act = 0x40000be0;
r_bt_rma_init = 0x40000be4;
r_bt_rma_register_rule_cs_fmt = 0x40000be8;
r_bt_rma_register_rule_cs_idx = 0x40000bec;
r_bt_rtp_apply_rule_cs_fmt = 0x40000bf0;
r_bt_rtp_apply_rule_cs_idx = 0x40000bf4;
r_bt_rtp_deregister_rule_cs_fmt = 0x40000bf8;
r_bt_rtp_deregister_rule_cs_idx = 0x40000bfc;
r_bt_rtp_init = 0x40000c04;
r_bt_rtp_register_rule_cs_fmt = 0x40000c08;
r_bt_rtp_register_rule_cs_idx = 0x40000c0c;
r_btdm_isr = 0x40000c10;
r_cali_phase_match_p = 0x40000c20;
r_cmp_abs_time = 0x40000c24;
r_cmp_dest_id = 0x40000c28;
r_cmp_timer_id = 0x40000c2c;
r_co_bdaddr_compare = 0x40000c30;
r_co_ble_pkt_dur_in_us = 0x40000c34;
r_co_list_extract = 0x40000c38;
r_co_list_extract_after = 0x40000c3c;
r_co_list_extract_sublist = 0x40000c40;
r_co_list_find = 0x40000c44;
r_co_list_init = 0x40000c48;
r_co_list_insert_after = 0x40000c4c;
r_co_list_insert_before = 0x40000c50;
r_co_list_merge = 0x40000c54;
r_co_list_pool_init = 0x40000c58;
r_co_list_pop_front = 0x40000c5c;
r_co_list_push_back = 0x40000c60;
r_co_list_push_back_sublist = 0x40000c64;
r_co_list_push_front = 0x40000c68;
r_co_list_size = 0x40000c6c;
r_co_nb_good_le_channels = 0x40000c70;
r_co_util_pack = 0x40000c74;
r_co_util_read_array_size = 0x40000c78;
r_co_util_unpack = 0x40000c7c;
r_dbg_env_deinit = 0x40000c80;
r_dbg_env_init = 0x40000c84;
r_dbg_platform_reset_complete = 0x40000c88;
r_dl_upd_proc_start = 0x40000c8c;
r_dump_data = 0x40000c90;
r_ecc_abort_key256_generation = 0x40000c94;
r_ecc_gen_new_public_key = 0x40000c98;
r_ecc_gen_new_secret_key = 0x40000c9c;
r_ecc_generate_key256 = 0x40000ca0;
r_ecc_get_debug_Keys = 0x40000ca4;
r_ecc_init = 0x40000ca8;
r_ecc_is_valid_point = 0x40000cac;
r_ecc_multiplication_event_handler = 0x40000cb0;
r_ecc_point_multiplication_win_256 = 0x40000cb4;
r_emi_alloc_em_mapping_by_offset = 0x40000cb8;
r_emi_base_reg_lut_show = 0x40000cbc;
r_emi_em_base_reg_show = 0x40000cc0;
r_emi_free_em_mapping_by_offset = 0x40000cc4;
r_emi_get_em_mapping_idx_by_offset = 0x40000cc8;
r_emi_get_mem_addr_by_offset = 0x40000ccc;
r_emi_overwrite_em_mapping_by_offset = 0x40000cd0;
r_esp_vendor_hci_command_handler = 0x40000cd4;
r_get_stack_usage = 0x40000cd8;
r_h4tl_acl_hdr_rx_evt_handler = 0x40000cdc;
r_h4tl_cmd_hdr_rx_evt_handler = 0x40000ce0;
r_h4tl_cmd_pld_rx_evt_handler = 0x40000ce4;
r_h4tl_eif_io_event_post = 0x40000ce8;
r_h4tl_eif_register = 0x40000cec;
r_h4tl_init = 0x40000cf0;
r_h4tl_out_of_sync = 0x40000cf4;
r_h4tl_out_of_sync_check = 0x40000cf8;
r_h4tl_read_hdr = 0x40000cfc;
r_h4tl_read_next_out_of_sync = 0x40000d00;
r_h4tl_read_payl = 0x40000d04;
r_h4tl_read_start = 0x40000d08;
r_h4tl_rx_acl_hdr_extract = 0x40000d0c;
r_h4tl_rx_cmd_hdr_extract = 0x40000d10;
r_h4tl_rx_done = 0x40000d14;
r_h4tl_start = 0x40000d18;
r_h4tl_stop = 0x40000d1c;
r_h4tl_tx_done = 0x40000d20;
r_h4tl_tx_evt_handler = 0x40000d24;
r_h4tl_write = 0x40000d28;
r_hci_acl_tx_data_alloc = 0x40000d2c;
r_hci_acl_tx_data_received = 0x40000d30;
r_hci_basic_cmd_send_2_controller = 0x40000d34;
r_hci_ble_adv_report_filter_check = 0x40000d38;
r_hci_ble_adv_report_tx_check = 0x40000d3c;
r_hci_ble_conhdl_register = 0x40000d40;
r_hci_ble_conhdl_unregister = 0x40000d44;
r_hci_build_acl_data = 0x40000d48;
r_hci_build_cc_evt = 0x40000d4c;
r_hci_build_cs_evt = 0x40000d50;
r_hci_build_evt = 0x40000d54;
r_hci_build_le_evt = 0x40000d58;
r_hci_cmd_get_max_param_size = 0x40000d5c;
r_hci_cmd_received = 0x40000d60;
r_hci_cmd_reject = 0x40000d64;
r_hci_evt_mask_check = 0x40000d68;
r_hci_evt_mask_set = 0x40000d6c;
r_hci_fc_acl_buf_size_set = 0x40000d70;
r_hci_fc_acl_en = 0x40000d74;
r_hci_fc_acl_packet_sent = 0x40000d78;
r_hci_fc_check_host_available_nb_acl_packets = 0x40000d7c;
r_hci_fc_host_nb_acl_pkts_complete = 0x40000d80;
r_hci_fc_init = 0x40000d84;
r_hci_look_for_cmd_desc = 0x40000d88;
r_hci_look_for_evt_desc = 0x40000d8c;
r_hci_look_for_le_evt_desc = 0x40000d90;
r_hci_look_for_le_evt_desc_esp = 0x40000d94;
r_hci_pack_bytes = 0x40000d98;
r_hci_send_2_controller = 0x40000da0;
r_hci_send_2_host = 0x40000da4;
r_hci_tl_c2h_data_flow_on = 0x40000da8;
r_hci_tl_cmd_hdr_rx_evt_handler = 0x40000dac;
r_hci_tl_cmd_pld_rx_evt_handler = 0x40000db0;
r_hci_tl_get_pkt = 0x40000db4;
r_hci_tl_hci_pkt_handler = 0x40000db8;
r_hci_tl_hci_tx_done_evt_handler = 0x40000dbc;
r_hci_tl_inc_nb_h2c_cmd_pkts = 0x40000dc0;
r_hci_tl_save_pkt = 0x40000dc4;
r_hci_tl_send = 0x40000dc8;
r_hci_tx_done = 0x40000dcc;
r_hci_tx_start = 0x40000dd0;
r_hci_tx_trigger = 0x40000dd4;
r_isValidSecretKey_256 = 0x40000dd8;
r_ke_check_malloc = 0x40000ddc;
r_ke_event_callback_set = 0x40000de0;
r_ke_event_clear = 0x40000de4;
r_ke_event_flush = 0x40000de8;
r_ke_event_get = 0x40000dec;
r_ke_event_get_all = 0x40000df0;
r_ke_event_init = 0x40000df4;
r_ke_event_schedule = 0x40000df8;
r_ke_event_set = 0x40000dfc;
r_ke_flush = 0x40000e00;
r_ke_free = 0x40000e04;
r_ke_handler_search = 0x40000e08;
r_ke_init = 0x40000e0c;
r_ke_is_free = 0x40000e10;
r_ke_malloc = 0x40000e14;
r_ke_mem_init = 0x40000e18;
r_ke_mem_is_empty = 0x40000e1c;
r_ke_mem_is_in_heap = 0x40000e20;
r_ke_msg_alloc = 0x40000e24;
r_ke_msg_dest_id_get = 0x40000e28;
r_ke_msg_discard = 0x40000e2c;
r_ke_msg_forward = 0x40000e30;
r_ke_msg_forward_new_id = 0x40000e34;
r_ke_msg_free = 0x40000e38;
r_ke_msg_in_queue = 0x40000e3c;
r_ke_msg_save = 0x40000e40;
r_ke_msg_send = 0x40000e44;
r_ke_msg_send_basic = 0x40000e48;
r_ke_msg_src_id_get = 0x40000e4c;
r_ke_queue_extract = 0x40000e50;
r_ke_queue_insert = 0x40000e54;
r_ke_sleep_check = 0x40000e58;
r_ke_state_get = 0x40000e5c;
r_ke_state_set = 0x40000e60;
r_ke_task_check = 0x40000e64;
r_ke_task_create = 0x40000e68;
r_ke_task_delete = 0x40000e6c;
r_ke_task_handler_get = 0x40000e70;
r_ke_task_init = 0x40000e74;
r_ke_task_msg_flush = 0x40000e78;
r_ke_task_saved_update = 0x40000e7c;
r_ke_time = 0x40000e84;
r_ke_time_cmp = 0x40000e88;
r_ke_time_past = 0x40000e8c;
r_ke_timer_active = 0x40000e90;
r_ke_timer_adjust_all = 0x40000e94;
r_ke_timer_clear = 0x40000e98;
r_ke_timer_init = 0x40000e9c;
r_ke_timer_schedule = 0x40000ea0;
r_ke_timer_set = 0x40000ea4;
r_led_init = 0x40000ea8;
r_led_set_all = 0x40000eac;
r_llc_aes_res_cb = 0x40000eb0;
r_llc_ch_map_up_proc_err_cb = 0x40000eb4;
r_llc_cleanup = 0x40000eb8;
r_llc_cmd_cmp_send = 0x40000ebc;
r_llc_cmd_stat_send = 0x40000ec0;
r_llc_con_move_cbk = 0x40000ec4;
r_llc_con_plan_set_update = 0x40000ec8;
r_llc_con_upd_param_in_range = 0x40000ecc;
r_llc_disconnect = 0x40000ed0;
r_llc_disconnect_end = 0x40000ed4;
r_llc_disconnect_proc_continue = 0x40000ed8;
r_llc_disconnect_proc_err_cb = 0x40000edc;
r_llc_dl_chg_check = 0x40000ee0;
r_llc_dle_proc_err_cb = 0x40000ee4;
r_llc_feats_exch_proc_err_cb = 0x40000ee8;
r_llc_hci_cmd_handler_tab_p_get = 0x40000eec;
r_llc_hci_con_param_req_evt_send = 0x40000ef4;
r_llc_hci_con_upd_info_send = 0x40000ef8;
r_llc_hci_disconnected_dis = 0x40000efc;
r_llc_hci_dl_upd_info_send = 0x40000f00;
r_llc_hci_enc_evt_send = 0x40000f04;
r_llc_hci_feats_info_send = 0x40000f08;
r_llc_hci_le_phy_upd_cmp_evt_send = 0x40000f0c;
r_llc_hci_ltk_request_evt_send = 0x40000f10;
r_llc_hci_nb_cmp_pkts_evt_send = 0x40000f14;
r_llc_hci_version_info_send = 0x40000f18;
r_llc_init_term_proc = 0x40000f1c;
r_llc_iv_skd_rand_gen = 0x40000f20;
r_llc_le_ping_proc_continue = 0x40000f24;
r_llc_le_ping_proc_err_cb = 0x40000f28;
/* r_llc_le_ping_restart = 0x40000f2c; */
r_llc_le_ping_set = 0x40000f30;
r_llc_ll_pause_enc_rsp_ack_handler = 0x40000f34;
r_llc_ll_reject_ind_ack_handler = 0x40000f38;
r_llc_ll_reject_ind_pdu_send = 0x40000f3c;
r_llc_ll_start_enc_rsp_ack_handler = 0x40000f40;
r_llc_ll_terminate_ind_ack = 0x40000f44;
r_llc_ll_unknown_ind_handler = 0x40000f48;
r_llc_llcp_send = 0x40000f4c;
r_llc_llcp_state_set = 0x40000f50;
r_llc_llcp_trans_timer_set = 0x40000f54;
r_llc_llcp_tx_check = 0x40000f58;
r_llc_loc_con_upd_proc_err_cb = 0x40000f64;
r_llc_loc_dl_upd_proc_continue = 0x40000f68;
r_llc_loc_encrypt_proc_continue = 0x40000f6c;
r_llc_loc_encrypt_proc_err_cb = 0x40000f70;
r_llc_loc_feats_exch_proc_continue = 0x40000f74;
r_llc_loc_phy_upd_proc_err_cb = 0x40000f7c;
r_llc_msg_handler_tab_p_get = 0x40000f80;
r_llc_pref_param_compute = 0x40000f84;
r_llc_proc_collision_check = 0x40000f88;
r_llc_proc_err_ind = 0x40000f8c;
r_llc_proc_get = 0x40000f90;
r_llc_proc_id_get = 0x40000f94;
r_llc_proc_reg = 0x40000f98;
r_llc_proc_state_get = 0x40000f9c;
r_llc_proc_state_set = 0x40000fa0;
r_llc_proc_timer_pause_set = 0x40000fa4;
r_llc_proc_timer_set = 0x40000fa8;
r_llc_proc_unreg = 0x40000fac;
r_llc_rem_ch_map_proc_continue = 0x40000fb0;
r_llc_rem_con_upd_proc_err_cb = 0x40000fb8;
r_llc_rem_dl_upd_proc = 0x40000fbc;
r_llc_rem_encrypt_proc_continue = 0x40000fc0;
r_llc_rem_encrypt_proc_err_cb = 0x40000fc4;
r_llc_rem_phy_upd_proc_continue = 0x40000fc8;
r_llc_rem_phy_upd_proc_err_cb = 0x40000fcc;
r_llc_role_get = 0x40000fd0;
r_llc_sk_gen = 0x40000fd4;
r_llc_start = 0x40000fd8;
r_llc_stop = 0x40000fdc;
r_llc_ver_exch_loc_proc_continue = 0x40000fe0;
r_llc_ver_proc_err_cb = 0x40000fe4;
r_llcp_pdu_handler_tab_p_get = 0x40000fe8;
r_lld_aa_gen = 0x40000fec;
r_lld_adv_adv_data_set = 0x40000ff0;
r_lld_adv_adv_data_update = 0x40000ff4;
r_lld_adv_aux_ch_idx_set = 0x40000ff8;
r_lld_adv_aux_evt_canceled_cbk = 0x40000ffc;
r_lld_adv_aux_evt_start_cbk = 0x40001000;
r_lld_adv_coex_check_ext_adv_synced = 0x40001004;
r_lld_adv_coex_env_reset = 0x40001008;
r_lld_adv_duration_update = 0x4000100c;
r_lld_adv_dynamic_pti_process = 0x40001010;
r_lld_adv_end = 0x40001014;
r_lld_adv_evt_canceled_cbk = 0x40001018;
r_lld_adv_evt_start_cbk = 0x4000101c;
r_lld_adv_ext_chain_construct = 0x40001020;
r_lld_adv_ext_pkt_prepare = 0x40001024;
r_lld_adv_frm_cbk = 0x40001028;
r_lld_adv_frm_isr = 0x4000102c;
r_lld_adv_frm_skip_isr = 0x40001030;
r_lld_adv_init = 0x40001034;
r_lld_adv_pkt_rx = 0x40001038;
r_lld_adv_pkt_rx_connect_ind = 0x4000103c;
r_lld_adv_pkt_rx_send_scan_req_evt = 0x40001040;
r_lld_adv_rand_addr_update = 0x40001044;
r_lld_adv_restart = 0x40001048;
r_lld_adv_scan_rsp_data_set = 0x4000104c;
r_lld_adv_scan_rsp_data_update = 0x40001050;
r_lld_adv_set_tx_power = 0x40001054;
r_lld_adv_start = 0x40001058;
r_lld_adv_stop = 0x4000105c;
r_lld_adv_sync_info_set = 0x40001060;
r_lld_adv_sync_info_update = 0x40001064;
r_lld_calc_aux_rx = 0x40001068;
r_lld_cca_alloc = 0x4000106c;
r_lld_cca_data_reset = 0x40001070;
r_lld_cca_free = 0x40001074;
r_lld_ch_assess_data_get = 0x40001078;
r_lld_ch_idx_get = 0x4000107c;
r_lld_ch_map_set = 0x40001080;
r_lld_channel_assess = 0x40001084;
r_lld_con_activity_act_offset_compute = 0x40001088;
r_lld_con_activity_offset_compute = 0x4000108c;
r_lld_con_ch_map_update = 0x40001090;
r_lld_con_cleanup = 0x40001094;
r_lld_con_current_tx_power_get = 0x40001098;
r_lld_con_data_flow_set = 0x4000109c;
r_lld_con_data_len_update = 0x400010a0;
r_lld_con_data_tx = 0x400010a4;
r_lld_con_enc_key_load = 0x400010a8;
r_lld_con_event_counter_get = 0x400010ac;
r_lld_con_evt_canceled_cbk = 0x400010b0;
r_lld_con_evt_duration_min_get = 0x400010b4;
r_lld_con_evt_max_eff_time_cal = 0x400010b8;
r_lld_con_evt_sd_evt_time_get = 0x400010bc;
r_lld_con_evt_start_cbk = 0x400010c0;
r_lld_con_evt_time_update = 0x400010c4;
r_lld_con_free_all_tx_buf = 0x400010c8;
r_lld_con_frm_cbk = 0x400010cc;
r_lld_con_frm_isr = 0x400010d0;
r_lld_con_frm_skip_isr = 0x400010d4;
r_lld_con_init = 0x400010d8;
r_lld_con_llcp_tx = 0x400010dc;
r_lld_con_max_lat_calc = 0x400010e0;
r_lld_con_offset_get = 0x400010e4;
r_lld_con_param_update = 0x400010e8;
r_lld_con_phys_update = 0x400010ec;
r_lld_con_pref_slave_evt_dur_set = 0x400010f0;
r_lld_con_pref_slave_latency_set = 0x400010f4;
r_lld_con_rssi_get = 0x400010f8;
r_lld_con_rx = 0x400010fc;
/* r_lld_con_rx_channel_assess = 0x40001100; */
r_lld_con_rx_enc = 0x40001104;
r_lld_con_rx_isr = 0x40001108;
r_lld_con_rx_link_info_check = 0x4000110c;
r_lld_con_rx_llcp_check = 0x40001110;
r_lld_con_rx_sync_time_update = 0x40001114;
r_lld_con_set_tx_power = 0x4000111c;
r_lld_con_start = 0x40001120;
r_lld_con_tx = 0x40001128;
r_lld_con_tx_enc = 0x4000112c;
r_lld_con_tx_isr = 0x40001130;
r_lld_con_tx_len_update = 0x40001134;
r_lld_con_tx_len_update_for_intv = 0x40001138;
r_lld_con_tx_len_update_for_rate = 0x4000113c;
r_lld_con_tx_prog = 0x40001140;
r_lld_conn_dynamic_pti_process = 0x40001144;
r_lld_continue_scan_rx_isr_end_process = 0x40001148;
r_lld_ext_scan_dynamic_pti_process = 0x4000114c;
r_lld_hw_cca_end_isr = 0x40001150;
r_lld_hw_cca_evt_handler = 0x40001154;
r_lld_hw_cca_isr = 0x40001158;
r_lld_init_cal_anchor_point = 0x4000115c;
r_lld_init_compute_winoffset = 0x40001160;
r_lld_init_connect_req_pack = 0x40001164;
r_lld_init_end = 0x40001168;
r_lld_init_evt_canceled_cbk = 0x4000116c;
r_lld_init_evt_start_cbk = 0x40001170;
r_lld_init_frm_cbk = 0x40001174;
r_lld_init_frm_eof_isr = 0x40001178;
r_lld_init_frm_skip_isr = 0x4000117c;
r_lld_init_init = 0x40001180;
r_lld_init_process_pkt_rx = 0x40001184;
r_lld_init_process_pkt_rx_adv_ext_ind = 0x40001188;
r_lld_init_process_pkt_rx_adv_ind_or_direct_ind = 0x4000118c;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0x40001190;
r_lld_init_process_pkt_tx = 0x40001194;
r_lld_init_process_pkt_tx_cal_con_timestamp = 0x40001198;
r_lld_init_sched = 0x4000119c;
r_lld_init_set_tx_power = 0x400011a0;
r_lld_init_start = 0x400011a4;
r_lld_init_stop = 0x400011a8;
r_lld_instant_proc_end = 0x400011ac;
r_lld_per_adv_ch_map_update = 0x400011b4;
r_lld_per_adv_chain_construct = 0x400011b8;
r_lld_per_adv_cleanup = 0x400011bc;
r_lld_per_adv_coex_env_reset = 0x400011c0;
r_lld_per_adv_data_set = 0x400011c4;
r_lld_per_adv_data_update = 0x400011c8;
r_lld_per_adv_dynamic_pti_process = 0x400011cc;
r_lld_per_adv_evt_canceled_cbk = 0x400011d0;
r_lld_per_adv_evt_start_cbk = 0x400011d4;
r_lld_per_adv_ext_pkt_prepare = 0x400011d8;
r_lld_per_adv_frm_cbk = 0x400011dc;
r_lld_per_adv_frm_isr = 0x400011e0;
r_lld_per_adv_frm_skip_isr = 0x400011e4;
r_lld_per_adv_init = 0x400011e8;
r_lld_per_adv_init_info_get = 0x400011ec;
r_lld_per_adv_list_add = 0x400011f0;
r_lld_per_adv_list_rem = 0x400011f4;
r_lld_per_adv_set_tx_power = 0x400011fc;
r_lld_per_adv_start = 0x40001200;
r_lld_per_adv_stop = 0x40001204;
r_lld_per_adv_sync_info_get = 0x40001208;
r_lld_process_cca_data = 0x4000120c;
r_lld_ral_search = 0x40001210;
r_lld_read_clock = 0x40001214;
r_lld_res_list_add = 0x40001218;
r_lld_res_list_is_empty = 0x40001220;
r_lld_res_list_local_rpa_get = 0x40001224;
r_lld_res_list_peer_rpa_get = 0x40001228;
r_lld_res_list_peer_update = 0x4000122c;
/* r_lld_res_list_priv_mode_update = 0x40001230; */
r_lld_reset_reg = 0x40001238;
r_lld_rpa_renew = 0x4000123c;
r_lld_rpa_renew_evt_canceled_cbk = 0x40001240;
r_lld_rpa_renew_evt_start_cbk = 0x40001244;
r_lld_rpa_renew_instant_cbk = 0x40001248;
r_lld_rxdesc_check = 0x4000124c;
r_lld_rxdesc_free = 0x40001250;
r_lld_scan_create_sync = 0x40001254;
r_lld_scan_create_sync_cancel = 0x40001258;
r_lld_scan_end = 0x4000125c;
r_lld_scan_evt_canceled_cbk = 0x40001260;
r_lld_scan_evt_start_cbk = 0x40001264;
r_lld_scan_frm_cbk = 0x40001268;
r_lld_scan_frm_eof_isr = 0x4000126c;
r_lld_scan_frm_rx_isr = 0x40001270;
r_lld_scan_frm_skip_isr = 0x40001274;
r_lld_scan_init = 0x40001278;
r_lld_scan_params_update = 0x4000127c;
r_lld_scan_process_pkt_rx_aux_adv_ind = 0x40001288;
r_lld_scan_process_pkt_rx_aux_chain_ind = 0x4000128c;
r_lld_scan_process_pkt_rx_aux_scan_rsp = 0x40001290;
r_lld_scan_process_pkt_rx_ext_adv = 0x40001294;
r_lld_scan_process_pkt_rx_ext_adv_ind = 0x40001298;
r_lld_scan_process_pkt_rx_legacy_adv = 0x4000129c;
r_lld_scan_restart = 0x400012a0;
r_lld_scan_sched = 0x400012a4;
r_lld_scan_set_tx_power = 0x400012a8;
r_lld_scan_start = 0x400012ac;
r_lld_scan_stop = 0x400012b0;
r_lld_scan_sync_accept = 0x400012b4;
r_lld_scan_sync_info_unpack = 0x400012b8;
r_lld_scan_trunc_ind = 0x400012bc;
r_lld_sw_cca_evt_handler = 0x400012c0;
r_lld_sw_cca_isr = 0x400012c4;
r_lld_sync_ch_map_update = 0x400012c8;
r_lld_sync_cleanup = 0x400012cc;
r_lld_sync_evt_canceled_cbk = 0x400012d0;
r_lld_sync_evt_start_cbk = 0x400012d4;
r_lld_sync_frm_cbk = 0x400012d8;
r_lld_sync_frm_eof_isr = 0x400012dc;
r_lld_sync_frm_rx_isr = 0x400012e0;
r_lld_sync_frm_skip_isr = 0x400012e4;
r_lld_sync_init = 0x400012e8;
r_lld_sync_process_pkt_rx = 0x400012ec;
r_lld_sync_process_pkt_rx_aux_sync_ind = 0x400012f0;
r_lld_sync_process_pkt_rx_pkt_check = 0x400012f4;
r_lld_sync_scan_dynamic_pti_process = 0x400012f8;
r_lld_sync_sched = 0x400012fc;
r_lld_sync_start = 0x40001300;
r_lld_sync_stop = 0x40001304;
r_lld_sync_trunc_ind = 0x40001308;
r_lld_test_cleanup = 0x4000130c;
r_lld_test_evt_canceled_cbk = 0x40001310;
r_lld_test_evt_start_cbk = 0x40001314;
r_lld_test_freq2chnl = 0x40001318;
r_lld_test_frm_cbk = 0x4000131c;
r_lld_test_frm_isr = 0x40001320;
r_lld_test_init = 0x40001324;
r_lld_test_rx_isr = 0x40001328;
r_lld_test_set_tx_power = 0x4000132c;
r_lld_test_start = 0x40001330;
/* r_lld_test_stop = 0x40001334; */
r_lld_update_rxbuf = 0x40001338;
r_lld_update_rxbuf_isr = 0x4000133c;
r_lld_white_list_add = 0x40001340;
r_lld_white_list_rem = 0x40001344;
r_llm_activity_free_get = 0x40001348;
r_llm_activity_free_set = 0x4000134c;
r_llm_activity_syncing_get = 0x40001350;
r_llm_adv_con_len_check = 0x40001354;
r_llm_adv_hdl_to_id = 0x40001358;
r_llm_adv_rep_flow_control_check = 0x4000135c;
r_llm_adv_rep_flow_control_update = 0x40001360;
r_llm_adv_reports_list_check = 0x40001364;
r_llm_adv_set_all_release = 0x40001368;
r_llm_adv_set_dft_params = 0x4000136c;
r_llm_adv_set_release = 0x40001370;
r_llm_aes_res_cb = 0x40001374;
r_llm_ble_update_adv_flow_control = 0x40001378;
r_llm_ch_map_update = 0x4000137c;
r_llm_cmd_cmp_send = 0x40001380;
r_llm_cmd_stat_send = 0x40001384;
r_llm_dev_list_empty_entry = 0x40001388;
r_llm_dev_list_search = 0x4000138c;
r_llm_env_adv_dup_filt_deinit = 0x40001390;
r_llm_env_adv_dup_filt_init = 0x40001394;
r_llm_init_ble_adv_report_flow_contol = 0x40001398;
r_llm_is_dev_connected = 0x4000139c;
r_llm_is_dev_synced = 0x400013a0;
r_llm_is_non_con_act_ongoing_check = 0x400013a4;
r_llm_is_wl_accessible = 0x400013a8;
r_llm_le_evt_mask_check = 0x400013ac;
r_llm_link_disc = 0x400013b4;
r_llm_master_ch_map_get = 0x400013b8;
r_llm_msg_handler_tab_p_get = 0x400013bc;
r_llm_no_activity = 0x400013c0;
r_llm_per_adv_slot_dur = 0x400013c4;
r_llm_plan_elt_get = 0x400013c8;
r_llm_rx_path_comp_get = 0x400013cc;
r_llm_scan_start = 0x400013d0;
r_llm_scan_sync_acad_attach = 0x400013d4;
r_llm_scan_sync_acad_detach = 0x400013d8;
r_llm_send_adv_lost_event_to_host = 0x400013dc;
r_llm_tx_path_comp_get = 0x400013e0;
r_misc_deinit = 0x400013e4;
r_misc_free_em_buf_in_isr = 0x400013e8;
r_misc_init = 0x400013ec;
r_misc_msg_handler_tab_p_get = 0x400013f0;
r_notEqual256 = 0x400013f4;
r_phy_upd_proc_start = 0x400013f8;
r_platform_reset = 0x400013fc;
r_rf_em_init = 0x40001404;
r_rf_force_agc_enable = 0x40001408;
r_rf_reg_rd = 0x4000140c;
r_rf_reg_wr = 0x40001410;
r_rf_reset = 0x40001414;
r_rf_rssi_convert = 0x40001418;
r_rf_rw_v9_le_disable = 0x4000141c;
r_rf_rw_v9_le_enable = 0x40001420;
r_rf_sleep = 0x40001424;
r_rf_util_cs_fmt_convert = 0x40001430;
r_rw_crypto_aes_ccm = 0x40001434;
r_rw_crypto_aes_encrypt = 0x40001438;
r_rw_crypto_aes_init = 0x4000143c;
r_rw_crypto_aes_k1 = 0x40001440;
r_rw_crypto_aes_k2 = 0x40001444;
r_rw_crypto_aes_k3 = 0x40001448;
r_rw_crypto_aes_k4 = 0x4000144c;
r_rw_crypto_aes_rand = 0x40001450;
r_rw_crypto_aes_result_handler = 0x40001454;
r_rw_crypto_aes_s1 = 0x40001458;
r_rw_cryto_aes_cmac = 0x4000145c;
r_rw_v9_init_em_radio_table = 0x40001460;
r_rwble_sleep_enter = 0x40001468;
r_rwble_sleep_wakeup_end = 0x4000146c;
/* r_rwbtdm_isr_wrapper = 0x40001470; */
r_rwip_active_check = 0x40001474;
r_rwip_aes_encrypt = 0x40001478;
/* r_rwip_assert = 0x4000147c; */
r_rwip_crypt_evt_handler = 0x40001480;
r_rwip_crypt_isr_handler = 0x40001484;
r_rwip_eif_get = 0x40001488;
r_rwip_half_slot_2_lpcycles = 0x4000148c;
r_rwip_hus_2_lpcycles = 0x40001490;
r_rwip_isr = 0x40001494;
r_rwip_lpcycles_2_hus = 0x40001498;
r_rwip_prevent_sleep_clear = 0x4000149c;
r_rwip_prevent_sleep_set = 0x400014a0;
r_rwip_schedule = 0x400014a4;
r_rwip_sleep = 0x400014a8;
r_rwip_sw_int_handler = 0x400014ac;
r_rwip_sw_int_req = 0x400014b0;
r_rwip_time_get = 0x400014b4;
r_rwip_timer_10ms_handler = 0x400014b8;
r_rwip_timer_10ms_set = 0x400014bc;
r_rwip_timer_hs_handler = 0x400014c0;
r_rwip_timer_hs_set = 0x400014c4;
r_rwip_timer_hus_handler = 0x400014c8;
r_rwip_timer_hus_set = 0x400014cc;
r_rwip_wakeup = 0x400014d0;
/* r_rwip_wakeup_end = 0x400014d4; */
r_rwip_wlcoex_set = 0x400014d8;
r_sch_alarm_clear = 0x400014dc;
r_sch_alarm_init = 0x400014e0;
r_sch_alarm_prog = 0x400014e4;
r_sch_alarm_set = 0x400014e8;
r_sch_alarm_timer_isr = 0x400014ec;
r_sch_arb_conflict_check = 0x400014f0;
r_sch_arb_elt_cancel = 0x400014f4;
r_sch_arb_init = 0x400014fc;
r_sch_arb_insert = 0x40001500;
r_sch_arb_prog_timer = 0x40001504;
r_sch_arb_remove = 0x40001508;
r_sch_arb_sw_isr = 0x4000150c;
r_sch_plan_chk = 0x40001510;
r_sch_plan_clock_wrap_offset_update = 0x40001514;
r_sch_plan_init = 0x40001518;
r_sch_plan_interval_req = 0x4000151c;
r_sch_plan_offset_max_calc = 0x40001520;
r_sch_plan_offset_req = 0x40001524;
r_sch_plan_position_range_compute = 0x40001528;
r_sch_plan_rem = 0x4000152c;
r_sch_plan_req = 0x40001530;
r_sch_prog_init = 0x4000153c;
r_sch_prog_push = 0x40001540;
r_sch_prog_rx_isr = 0x40001544;
r_sch_prog_skip_isr = 0x40001548;
r_sch_prog_tx_isr = 0x4000154c;
r_sch_slice_bg_add = 0x40001550;
r_sch_slice_bg_remove = 0x40001554;
r_sch_slice_compute = 0x40001558;
r_sch_slice_fg_add = 0x4000155c;
r_sch_slice_fg_remove = 0x40001560;
r_sch_slice_init = 0x40001564;
r_sch_slice_per_add = 0x40001568;
r_sch_slice_per_remove = 0x4000156c;
r_sdk_config_get_bt_sleep_enable = 0x40001570;
r_sdk_config_get_hl_derived_opts = 0x40001574;
r_sdk_config_get_opts = 0x40001578;
r_sdk_config_get_priv_opts = 0x4000157c;
r_sdk_config_set_bt_sleep_enable = 0x40001580;
r_sdk_config_set_hl_derived_opts = 0x40001584;
r_sdk_config_set_opts = 0x40001588;
r_specialModP256 = 0x4000158c;
r_unloaded_area_init = 0x40001590;
r_vhci_flow_off = 0x40001594;
r_vhci_flow_on = 0x40001598;
r_vhci_notify_host_send_available = 0x4000159c;
r_vhci_send_to_host = 0x400015a0;
r_vnd_hci_command_handler = 0x400015a4;
r_vshci_init = 0x400015a8;
vnd_hci_command_handler_wrapper = 0x400015ac;
/* bluetooth hook funcs */
r_llc_loc_encrypt_proc_continue_hook = 0x40001c60;
r_llc_loc_phy_upd_proc_continue_hook = 0x40001c64;
r_llc_rem_phy_upd_proc_continue_hook = 0x40001c68;
r_lld_scan_frm_eof_isr_hook = 0x40001c6c;
r_lld_scan_evt_start_cbk_hook = 0x40001c70;
r_lld_scan_process_pkt_rx_ext_adv_hook = 0x40001c78;
r_lld_scan_sched_hook = 0x40001c7c;
r_lld_adv_evt_start_cbk_hook = 0x40001c84;
r_lld_adv_aux_evt_start_cbk_hook = 0x40001c88;
r_lld_adv_frm_isr_hook = 0x40001c8c;
r_lld_adv_start_init_evt_param_hook = 0x40001c90;
r_lld_con_evt_canceled_cbk_hook = 0x40001c94;
r_lld_con_frm_isr_hook = 0x40001c98;
r_lld_con_tx_hook = 0x40001c9c;
r_lld_con_rx_hook = 0x40001ca0;
r_lld_con_evt_start_cbk_hook = 0x40001ca4;
r_lld_con_tx_prog_new_packet_hook = 0x40001cac;
r_lld_init_frm_eof_isr_hook = 0x40001cb0;
r_lld_init_evt_start_cbk_hook = 0x40001cb4;
r_lld_init_sched_hook = 0x40001cbc;
r_lld_init_process_pkt_tx_hook = 0x40001cc0;
r_lld_per_adv_evt_start_cbk_hook = 0x40001cc4;
r_lld_per_adv_frm_isr_hook = 0x40001cc8;
r_lld_per_adv_start_hook = 0x40001ccc;
r_lld_sync_frm_eof_isr_hook = 0x40001cd0;
r_lld_sync_evt_start_cbk_hook = 0x40001cd4;
r_lld_sync_start_hook = 0x40001cd8;
r_lld_sync_process_pkt_rx_pkt_check_hook = 0x40001cdc;
r_sch_arb_insert_hook = 0x40001ce0;
r_sch_plan_offset_req_hook = 0x40001ce4;

View File

@ -44,38 +44,6 @@ ppProcTxCallback = 0x40001b30;
ieee80211_gettid = 0x40001b34;
/***************************************
Group eco3_bluetooth
***************************************/
/* Functions */
r_lld_legacy_adv_dynamic_pti_get = 0x40001b38;
r_lld_legacy_adv_dynamic_pti_process = 0x40001b3c;
r_lld_ext_adv_dynamic_pti_get = 0x40001b40;
r_lld_ext_adv_dynamic_aux_pti_process = 0x40001b44;
r_lld_ext_adv_dynamic_pti_process = 0x40001b48;
/* r_lld_adv_ext_pkt_prepare_set = 0x40001b4c; */
r_lld_adv_ext_chain_connectable_construct = 0x40001b54;
r_lld_adv_pkt_rx_connect_post = 0x40001b5c;
r_lld_adv_start_init_evt_param = 0x40001b60;
r_lld_adv_start_set_cs = 0x40001b64;
/* r_lld_adv_start_update_filter_policy = 0x40001b68; */
r_lld_adv_start_schedule_asap = 0x40001b6c;
r_lld_con_tx_prog_new_packet_coex = 0x40001b70;
r_lld_per_adv_dynamic_pti_get = 0x40001b78;
r_lld_per_adv_evt_start_chm_upd = 0x40001b7c;
r_lld_ext_scan_dynamic_pti_get = 0x40001b80;
r_lld_sync_insert = 0x40001b88;
r_sch_prog_ble_push = 0x40001b8c;
r_sch_prog_bt_push = 0x40001b90;
r_lld_init_evt_end_type_set = 0x40001b94;
r_lld_init_evt_end_type_get = 0x40001b98;
r_lld_adv_direct_adv_use_rpa_addr_state_set = 0x40001b9c;
r_lld_adv_direct_adv_use_rpa_addr_state_get = 0x40001ba0;
r_lld_init_evt_end_type_check_state_set = 0x40001ba4;
r_lld_init_evt_end_type_check_state_get = 0x40001ba8;
/***************************************
Group eco3_phy
***************************************/

View File

@ -0,0 +1,45 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
ESP32C3 ECO3 ROM address table
Version 3 API's imported from the ROM
*/
/***************************************
Group eco3_bluetooth
***************************************/
/* Functions */
r_lld_legacy_adv_dynamic_pti_get = 0x40001b38;
r_lld_legacy_adv_dynamic_pti_process = 0x40001b3c;
r_lld_ext_adv_dynamic_pti_get = 0x40001b40;
r_lld_ext_adv_dynamic_aux_pti_process = 0x40001b44;
r_lld_ext_adv_dynamic_pti_process = 0x40001b48;
/*
r_lld_adv_ext_pkt_prepare_set = 0x40001b4c;
*/
r_lld_adv_ext_chain_connectable_construct = 0x40001b54;
r_lld_adv_pkt_rx_connect_post = 0x40001b5c;
r_lld_adv_start_init_evt_param = 0x40001b60;
r_lld_adv_start_set_cs = 0x40001b64;
/* r_lld_adv_start_update_filter_policy = 0x40001b68; */
r_lld_adv_start_schedule_asap = 0x40001b6c;
r_lld_con_tx_prog_new_packet_coex = 0x40001b70;
r_lld_per_adv_dynamic_pti_get = 0x40001b78;
r_lld_per_adv_evt_start_chm_upd = 0x40001b7c;
r_lld_ext_scan_dynamic_pti_get = 0x40001b80;
r_lld_sync_insert = 0x40001b88;
/*
r_sch_prog_ble_push = 0x40001b8c;
*/
r_sch_prog_bt_push = 0x40001b90;
r_lld_init_evt_end_type_set = 0x40001b94;
r_lld_init_evt_end_type_get = 0x40001b98;
r_lld_adv_direct_adv_use_rpa_addr_state_set = 0x40001b9c;
r_lld_adv_direct_adv_use_rpa_addr_state_get = 0x40001ba0;
r_lld_init_evt_end_type_check_state_set = 0x40001ba4;
r_lld_init_evt_end_type_check_state_get = 0x40001ba8;

View File

@ -93,132 +93,6 @@ rom1_phy_close_rf = 0x40001c18;
uart_tx_switch = 0x40001c44;
/***************************************
Group eco7_bluetooth
***************************************/
/* Functions */
r_lld_con_count_get = 0x40001c48;
r_lld_update_con_offset = 0x40001c4c;
r_lld_con_update_last_clock = 0x40001c50;
r_lld_con_llcp_ind_info_clear = 0x40001c54;
r_lld_con_update_terminte_info_init = 0x40001c58;
r_lld_con_terminate_max_evt_update = 0x40001c5c;
r_llc_pref_param_compute_eco = 0x40001ce8;
r_llc_hci_con_upd_info_send_eco = 0x40001cec;
r_llc_rem_encrypt_proc_continue_eco = 0x40001cf0;
r_llc_start_eco = 0x40001cf8;
r_lld_ext_adv_dynamic_aux_pti_process_eco = 0x40001cfc;
r_lld_adv_start_eco = 0x40001d04;
r_lld_con_evt_canceled_cbk_eco = 0x40001d08;
r_lld_con_evt_time_update_eco = 0x40001d0c;
r_lld_con_start_eco = 0x40001d10;
r_lld_con_frm_isr_eco = 0x40001d14;
r_lld_con_tx_eco = 0x40001d18;
r_lld_ext_scan_dynamic_pti_process_eco = 0x40001d28;
r_lld_scan_frm_eof_isr_eco = 0x40001d2c;
r_lld_sync_start_eco = 0x40001d30;
r_lld_sync_insert_eco = 0x40001d34;
r_llm_adv_rep_flow_control_update_eco = 0x40001d38;
r_llm_env_adv_dup_filt_init_eco = 0x40001d3c;
r_llm_env_adv_dup_filt_deinit_eco = 0x40001d40;
r_llm_adv_rep_flow_control_check_eco = 0x40001d44;
r_llm_scan_start_eco = 0x40001d48;
r_llm_update_duplicate_scan_count = 0x40001d4c;
r_llc_hci_command_handler_pre = 0x40001d50;
r_llc_hci_command_handler_get = 0x40001d54;
r_llc_hci_command_handler_search = 0x40001d58;
r_llc_llcp_pdu_handler_pre = 0x40001d60;
r_llc_llcp_pdu_handler_end = 0x40001d64;
r_llc_con_conflict_check = 0x40001d6c;
r_sch_prog_hw_reset_try = 0x40001d70;
r_sch_prog_et_state_reset = 0x40001d74;
r_sch_prog_end_isr_handler = 0x40001d78;
r_sch_plan_conflict_check = 0x40001d7c;
r_rwble_isr_hw_fixed = 0x40001d80;
r_bt_bb_recorrect_is_dead = 0x40001d84;
r_bt_bb_restart_hw_recorrect = 0x40001d88;
r_ke_task_handler_pre = 0x40001da0;
r_ke_task_handler_end = 0x40001da4;
r_lld_scan_frm_skip_isr_eco = 0x40001db0;
r_lld_ext_scan_dynamic_pti_reset = 0x40001db4;
r_llc_rem_phy_upd_proc_continue_eco = 0x40001db8;
r_llm_get_preferred_phys = 0x40001dbc;
r_lld_hw_cca_isr_eco = 0x40001dc0;
r_lld_sw_cca_isr_eco = 0x40001dc4;
r_lld_cca_chan_prn_e = 0x40001dc8;
r_lld_cca_chan_prn_s = 0x40001dcc;
r_lld_cca_chan_sel_remap = 0x40001dd0;
r_lld_cca_chan_sel_1 = 0x40001dd4;
r_lld_cca_chan_sel_2 = 0x40001dd8;
r_lld_cca_set_thresh = 0x40001ddc;
r_lld_cca_con_start = 0x40001de0;
r_lld_cca_con_end = 0x40001de4;
r_lld_cca_chm_restore = 0x40001de8;
r_lld_cca_chan_unused_check = 0x40001dec;
r_lld_cca_chm_update_check = 0x40001df0;
r_lld_cca_busy_mode_handle = 0x40001df4;
r_lld_cca_lbt_handle = 0x40001df8;
r_lld_cca_scst_timeout_check = 0x40001dfc;
r_lld_cca_chan_avl_timeout_check = 0x40001e00;
r_lld_con_start_hook = 0x40001ca8;
/* ble Functions eco */
r_bt_bb_isr = 0x40000b9c;
r_bt_rf_coex_conn_phy_coded_data_time_limit_en_get = 0x40000ba8;
r_bt_rtp_get_txpwr_idx_by_act = 0x40000c00;
r_btdm_task_post = 0x40000c14;
r_btdm_task_post_from_isr = 0x40000c18;
r_btdm_task_recycle = 0x40000c1c;
r_ke_task_schedule = 0x40000e80;
r_llc_hci_command_handler = 0x40000ef0;
r_llc_loc_ch_map_proc_continue = 0x40000f5c;
r_llc_loc_con_upd_proc_continue = 0x40000f60;
r_llc_loc_phy_upd_proc_continue = 0x40000f78;
r_llc_rem_con_upd_proc_continue = 0x40000fb4;
r_lld_con_sched = 0x40001118;
r_lld_con_stop = 0x40001124;
r_lld_llcp_rx_ind_handler = 0x400011b0;
r_lld_per_adv_sched = 0x400011f8;
r_rf_txpwr_cs_get = 0x40001428;
r_rf_txpwr_dbm_get = 0x4000142c;
r_sch_arb_event_start_isr = 0x400014f8;
r_sch_plan_set = 0x40001534;
r_sch_prog_end_isr = 0x40001538;
r_lld_adv_ext_chain_scannable_construct = 0x40001b58;
r_lld_scan_process_pkt_rx = 0x40001280;
r_llm_le_features_get = 0x400013b0;
/* ble functions rename */
r_lld_init_start_hack = 0x400011a4;
/* ble functions disable */
/*
r_lld_adv_frm_isr_eco = 0x40001d00;
r_lld_res_list_clear = 0x40004638;
r_lld_res_list_rem = 0x40004680;
r_lld_adv_start_hook = 0x40001c80;
r_lld_con_evt_start_cbk_eco = 0x40001d1c;
r_lld_con_tx_prog_new_packet = 0x40001b74;
r_lld_adv_ext_chain_none_construct = 0x40001b50;
r_llc_llcp_send_eco = 0x40001cf4;
r_llc_llcp_channel_map_ind_ack = 0x40001d68;
r_rwble_isr = 0x40001464;
r_lld_scan_start_eco = 0x40001d24;
r_lld_scan_try_sched_eco = 0x40001dac;
r_lld_scan_start_hook = 0x40001c74;
r_lld_init_start_hook = 0x40001cb8;
r_lld_scan_evt_start_cbk_eco = 0x40001d20;
r_ke_task_handler_get_overwrite = 0x40001da8;
r_hci_register_vendor_desc_tab = 0x40000d9c;
r_lld_scan_process_pkt_rx_adv_rep = 0x40001284;
r_register_esp_vendor_cmd_handler = 0x40001400;
r_llc_llcp_pdu_handler_get_overwrite = 0x40001d5c;
*/
/***************************************
Group eco7_phy
***************************************/

View File

@ -0,0 +1,130 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/***************************************
Group eco7_bluetooth
***************************************/
/* Functions */
r_lld_con_count_get = 0x40001c48;
r_lld_update_con_offset = 0x40001c4c;
r_lld_con_update_last_clock = 0x40001c50;
r_lld_con_llcp_ind_info_clear = 0x40001c54;
r_lld_con_update_terminte_info_init = 0x40001c58;
r_lld_con_terminate_max_evt_update = 0x40001c5c;
r_llc_pref_param_compute_eco = 0x40001ce8;
r_llc_hci_con_upd_info_send_eco = 0x40001cec;
r_llc_rem_encrypt_proc_continue_eco = 0x40001cf0;
r_llc_start_eco = 0x40001cf8;
r_lld_ext_adv_dynamic_aux_pti_process_eco = 0x40001cfc;
r_lld_adv_start_eco = 0x40001d04;
r_lld_con_evt_canceled_cbk_eco = 0x40001d08;
r_lld_con_evt_time_update_eco = 0x40001d0c;
r_lld_con_start_eco = 0x40001d10;
r_lld_con_frm_isr_eco = 0x40001d14;
r_lld_con_tx_eco = 0x40001d18;
r_lld_ext_scan_dynamic_pti_process_eco = 0x40001d28;
r_lld_scan_frm_eof_isr_eco = 0x40001d2c;
r_lld_sync_start_eco = 0x40001d30;
r_lld_sync_insert_eco = 0x40001d34;
r_llm_adv_rep_flow_control_update_eco = 0x40001d38;
r_llm_env_adv_dup_filt_init_eco = 0x40001d3c;
r_llm_env_adv_dup_filt_deinit_eco = 0x40001d40;
r_llm_adv_rep_flow_control_check_eco = 0x40001d44;
r_llm_scan_start_eco = 0x40001d48;
r_llm_update_duplicate_scan_count = 0x40001d4c;
r_llc_hci_command_handler_pre = 0x40001d50;
r_llc_hci_command_handler_get = 0x40001d54;
r_llc_hci_command_handler_search = 0x40001d58;
r_llc_llcp_pdu_handler_pre = 0x40001d60;
r_llc_llcp_pdu_handler_end = 0x40001d64;
r_llc_con_conflict_check = 0x40001d6c;
r_sch_prog_hw_reset_try = 0x40001d70;
r_sch_prog_et_state_reset = 0x40001d74;
r_sch_prog_end_isr_handler = 0x40001d78;
r_sch_plan_conflict_check = 0x40001d7c;
r_rwble_isr_hw_fixed = 0x40001d80;
r_bt_bb_recorrect_is_dead = 0x40001d84;
r_bt_bb_restart_hw_recorrect = 0x40001d88;
r_ke_task_handler_pre = 0x40001da0;
r_ke_task_handler_end = 0x40001da4;
r_lld_scan_frm_skip_isr_eco = 0x40001db0;
r_lld_ext_scan_dynamic_pti_reset = 0x40001db4;
r_llc_rem_phy_upd_proc_continue_eco = 0x40001db8;
r_llm_get_preferred_phys = 0x40001dbc;
r_lld_hw_cca_isr_eco = 0x40001dc0;
r_lld_sw_cca_isr_eco = 0x40001dc4;
r_lld_cca_chan_prn_e = 0x40001dc8;
r_lld_cca_chan_prn_s = 0x40001dcc;
r_lld_cca_chan_sel_remap = 0x40001dd0;
r_lld_cca_chan_sel_1 = 0x40001dd4;
r_lld_cca_chan_sel_2 = 0x40001dd8;
r_lld_cca_set_thresh = 0x40001ddc;
r_lld_cca_con_start = 0x40001de0;
r_lld_cca_con_end = 0x40001de4;
r_lld_cca_chm_restore = 0x40001de8;
r_lld_cca_chan_unused_check = 0x40001dec;
r_lld_cca_chm_update_check = 0x40001df0;
r_lld_cca_busy_mode_handle = 0x40001df4;
r_lld_cca_lbt_handle = 0x40001df8;
r_lld_cca_scst_timeout_check = 0x40001dfc;
r_lld_cca_chan_avl_timeout_check = 0x40001e00;
r_lld_con_start_hook = 0x40001ca8;
/* ble Functions eco */
r_bt_bb_isr = 0x40000b9c;
r_bt_rf_coex_conn_phy_coded_data_time_limit_en_get = 0x40000ba8;
r_bt_rtp_get_txpwr_idx_by_act = 0x40000c00;
r_btdm_task_post = 0x40000c14;
r_btdm_task_post_from_isr = 0x40000c18;
r_btdm_task_recycle = 0x40000c1c;
r_ke_task_schedule = 0x40000e80;
r_llc_hci_command_handler = 0x40000ef0;
r_llc_loc_ch_map_proc_continue = 0x40000f5c;
r_llc_loc_con_upd_proc_continue = 0x40000f60;
r_llc_loc_phy_upd_proc_continue = 0x40000f78;
r_llc_rem_con_upd_proc_continue = 0x40000fb4;
r_lld_con_sched = 0x40001118;
r_lld_con_stop = 0x40001124;
r_lld_llcp_rx_ind_handler = 0x400011b0;
r_lld_per_adv_sched = 0x400011f8;
r_rf_txpwr_cs_get = 0x40001428;
r_rf_txpwr_dbm_get = 0x4000142c;
r_sch_arb_event_start_isr = 0x400014f8;
r_sch_plan_set = 0x40001534;
r_sch_prog_end_isr = 0x40001538;
r_lld_adv_ext_chain_scannable_construct = 0x40001b58;
r_lld_scan_process_pkt_rx = 0x40001280;
r_llm_le_features_get = 0x400013b0;
/* ble functions rename */
r_lld_init_start_hack = 0x400011a4;
/* ble functions disable */
/*
r_lld_adv_frm_isr_eco = 0x40001d00;
r_lld_res_list_clear = 0x40004638;
r_lld_res_list_rem = 0x40004680;
r_lld_adv_start_hook = 0x40001c80;
r_lld_con_evt_start_cbk_eco = 0x40001d1c;
r_lld_con_tx_prog_new_packet = 0x40001b74;
r_lld_adv_ext_chain_none_construct = 0x40001b50;
r_llc_llcp_send_eco = 0x40001cf4;
r_llc_llcp_channel_map_ind_ack = 0x40001d68;
r_rwble_isr = 0x40001464;
r_lld_scan_start_eco = 0x40001d24;
r_lld_scan_try_sched_eco = 0x40001dac;
r_lld_scan_start_hook = 0x40001c74;
r_lld_init_start_hook = 0x40001cb8;
r_lld_scan_evt_start_cbk_eco = 0x40001d20;
r_ke_task_handler_get_overwrite = 0x40001da8;
r_hci_register_vendor_desc_tab = 0x40000d9c;
r_lld_scan_process_pkt_rx_adv_rep = 0x40001284;
r_register_esp_vendor_cmd_handler = 0x40001400;
r_llc_llcp_pdu_handler_get_overwrite = 0x40001d5c;
*/

View File

@ -525,800 +525,6 @@ PROVIDE( g_usb_print = 0x3fcdffd0 );
/***************************************
Group bluetooth
***************************************/
/* Functions */
bt_rf_coex_get_dft_cfg = 0x400008dc;
bt_rf_coex_hooks_p_set = 0x400008e0;
btdm_con_maxevtime_cal_impl = 0x400008e4;
btdm_controller_get_compile_version_impl = 0x400008e8;
btdm_controller_rom_data_init = 0x400008ec;
btdm_dis_privacy_err_report_impl = 0x400008f0;
btdm_disable_adv_delay_impl = 0x400008f4;
btdm_enable_scan_continue_impl = 0x400008f8;
btdm_enable_scan_forever_impl = 0x400008fc;
btdm_get_power_state_impl = 0x40000900;
btdm_get_prevent_sleep_flag_impl = 0x40000904;
btdm_power_state_active_impl = 0x40000908;
btdm_switch_phy_coded_impl = 0x4000090c;
hci_acl_data_handler = 0x40000910;
hci_disconnect_cmd_handler = 0x40000914;
hci_le_con_upd_cmd_handler = 0x40000918;
hci_le_ltk_req_neg_reply_cmd_handler = 0x4000091c;
hci_le_ltk_req_reply_cmd_handler = 0x40000920;
hci_le_rd_chnl_map_cmd_handler = 0x40000924;
hci_le_rd_phy_cmd_handler = 0x40000928;
hci_le_rd_rem_feats_cmd_handler = 0x4000092c;
hci_le_rem_con_param_req_neg_reply_cmd_handler = 0x40000930;
hci_le_rem_con_param_req_reply_cmd_handler = 0x40000934;
hci_le_set_data_len_cmd_handler = 0x40000938;
hci_le_set_phy_cmd_handler = 0x4000093c;
hci_le_start_enc_cmd_handler = 0x40000940;
hci_rd_auth_payl_to_cmd_handler = 0x40000944;
hci_rd_rem_ver_info_cmd_handler = 0x40000948;
hci_rd_rssi_cmd_handler = 0x4000094c;
hci_rd_tx_pwr_lvl_cmd_handler = 0x40000950;
hci_vs_set_pref_slave_evt_dur_cmd_handler = 0x40000954;
hci_vs_set_pref_slave_latency_cmd_handler = 0x40000958;
hci_wr_auth_payl_to_cmd_handler = 0x4000095c;
ll_channel_map_ind_handler = 0x40000960;
ll_connection_param_req_handler = 0x40000964;
ll_connection_param_rsp_handler = 0x40000968;
ll_connection_update_ind_handler = 0x4000096c;
ll_enc_req_handler = 0x40000970;
ll_enc_rsp_handler = 0x40000974;
ll_feature_req_handler = 0x40000978;
ll_feature_rsp_handler = 0x4000097c;
ll_length_req_handler = 0x40000980;
ll_length_rsp_handler = 0x40000984;
ll_min_used_channels_ind_handler = 0x40000988;
ll_pause_enc_req_handler = 0x4000098c;
ll_pause_enc_rsp_handler = 0x40000990;
ll_phy_req_handler = 0x40000994;
ll_phy_rsp_handler = 0x40000998;
ll_phy_update_ind_handler = 0x4000099c;
ll_ping_req_handler = 0x400009a0;
ll_ping_rsp_handler = 0x400009a4;
ll_slave_feature_req_handler = 0x400009a8;
ll_start_enc_req_handler = 0x400009ac;
ll_start_enc_rsp_handler = 0x400009b0;
ll_terminate_ind_handler = 0x400009b4;
ll_version_ind_handler = 0x400009b8;
llc_auth_payl_nearly_to_handler = 0x400009bc;
llc_auth_payl_real_to_handler = 0x400009c0;
llc_encrypt_ind_handler = 0x400009c4;
llc_hci_command_handler_wrapper = 0x400009c8;
llc_ll_connection_param_req_pdu_send = 0x400009cc;
llc_ll_connection_param_rsp_pdu_send = 0x400009d0;
llc_ll_connection_update_ind_pdu_send = 0x400009d4;
llc_ll_enc_req_pdu_send = 0x400009d8;
llc_ll_enc_rsp_pdu_send = 0x400009dc;
llc_ll_feature_req_pdu_send = 0x400009e0;
llc_ll_feature_rsp_pdu_send = 0x400009e4;
llc_ll_length_req_pdu_send = 0x400009e8;
llc_ll_length_rsp_pdu_send = 0x400009ec;
llc_ll_pause_enc_req_pdu_send = 0x400009f0;
llc_ll_pause_enc_rsp_pdu_send = 0x400009f4;
llc_ll_phy_req_pdu_send = 0x400009f8;
llc_ll_phy_rsp_pdu_send = 0x400009fc;
llc_ll_ping_req_pdu_send = 0x40000a00;
llc_ll_ping_rsp_pdu_send = 0x40000a04;
llc_ll_start_enc_req_pdu_send = 0x40000a08;
llc_ll_start_enc_rsp_pdu_send = 0x40000a0c;
llc_ll_terminate_ind_pdu_send = 0x40000a10;
llc_ll_unknown_rsp_pdu_send = 0x40000a14;
llc_llcp_ch_map_update_ind_pdu_send = 0x40000a18;
llc_llcp_phy_upd_ind_pdu_send = 0x40000a1c;
llc_llcp_version_ind_pdu_send = 0x40000a20;
llc_op_ch_map_upd_ind_handler = 0x40000a24;
llc_op_con_upd_ind_handler = 0x40000a28;
llc_op_disconnect_ind_handler = 0x40000a2c;
llc_op_dl_upd_ind_handler = 0x40000a30;
llc_op_encrypt_ind_handler = 0x40000a34;
llc_op_feats_exch_ind_handler = 0x40000a38;
llc_op_le_ping_ind_handler = 0x40000a3c;
llc_op_phy_upd_ind_handler = 0x40000a40;
llc_op_ver_exch_ind_handler = 0x40000a44;
llc_stopped_ind_handler = 0x40000a48;
lld_acl_rx_ind_handler = 0x40000a4c;
lld_acl_tx_cfm_handler = 0x40000a50;
lld_adv_end_ind_handler = 0x40000a54;
lld_adv_rep_ind_handler = 0x40000a58;
lld_ch_map_upd_cfm_handler = 0x40000a5c;
lld_con_estab_ind_handler = 0x40000a60;
lld_con_evt_sd_evt_time_set = 0x40000a64;
lld_con_offset_upd_ind_handler = 0x40000a68;
lld_con_param_upd_cfm_handler = 0x40000a6c;
lld_disc_ind_handler = 0x40000a70;
lld_init_end_ind_handler = 0x40000a74;
lld_llcp_rx_ind_handler_wrapper = 0x40000a78;
lld_llcp_tx_cfm_handler = 0x40000a7c;
lld_per_adv_end_ind_handler = 0x40000a80;
lld_per_adv_rep_ind_handler = 0x40000a84;
lld_per_adv_rx_end_ind_handler = 0x40000a88;
lld_phy_coded_500k_get = 0x40000a8c;
lld_phy_upd_cfm_handler = 0x40000a90;
lld_scan_end_ind_handler = 0x40000a94;
lld_scan_req_ind_handler = 0x40000a98;
lld_sync_start_req_handler = 0x40000a9c;
lld_test_end_ind_handler = 0x40000aa0;
lld_update_rxbuf_handler = 0x40000aa4;
llm_ch_map_update_ind_handler = 0x40000aa8;
llm_hci_command_handler_wrapper = 0x40000aac;
llm_scan_period_to_handler = 0x40000ab0;
r_Add2SelfBigHex256 = 0x40000ab4;
r_AddBigHex256 = 0x40000ab8;
r_AddBigHexModP256 = 0x40000abc;
r_AddP256 = 0x40000ac0;
r_AddPdiv2_256 = 0x40000ac4;
r_GF_Jacobian_Point_Addition256 = 0x40000ac8;
r_GF_Jacobian_Point_Double256 = 0x40000acc;
r_GF_Point_Jacobian_To_Affine256 = 0x40000ad0;
r_MultiplyBigHexByUint32_256 = 0x40000ad4;
r_MultiplyBigHexModP256 = 0x40000ad8;
r_MultiplyByU16ModP256 = 0x40000adc;
r_SubtractBigHex256 = 0x40000ae0;
r_SubtractBigHexMod256 = 0x40000ae4;
r_SubtractBigHexUint32_256 = 0x40000ae8;
r_SubtractFromSelfBigHex256 = 0x40000aec;
r_SubtractFromSelfBigHexSign256 = 0x40000af0;
r_aes_alloc = 0x40000af4;
r_aes_ccm_continue = 0x40000af8;
r_aes_ccm_process_e = 0x40000afc;
r_aes_ccm_xor_128_lsb = 0x40000b00;
r_aes_ccm_xor_128_msb = 0x40000b04;
r_aes_cmac_continue = 0x40000b08;
r_aes_cmac_start = 0x40000b0c;
r_aes_k1_continue = 0x40000b10;
r_aes_k2_continue = 0x40000b14;
r_aes_k3_continue = 0x40000b18;
r_aes_k4_continue = 0x40000b1c;
r_aes_shift_left_128 = 0x40000b20;
r_aes_start = 0x40000b24;
r_aes_xor_128 = 0x40000b28;
r_assert_err = 0x40000b2c;
r_assert_param = 0x40000b30;
r_assert_warn = 0x40000b34;
r_bigHexInversion256 = 0x40000b38;
r_ble_sw_cca_check_isr = 0x40000b3c;
r_ble_util_buf_acl_tx_alloc = 0x40000b40;
r_ble_util_buf_acl_tx_elt_get = 0x40000b44;
r_ble_util_buf_acl_tx_free = 0x40000b48;
r_ble_util_buf_acl_tx_free_in_isr = 0x40000b4c;
r_ble_util_buf_adv_tx_alloc = 0x40000b50;
r_ble_util_buf_adv_tx_free = 0x40000b54;
r_ble_util_buf_adv_tx_free_in_isr = 0x40000b58;
r_ble_util_buf_env_deinit = 0x40000b5c;
r_ble_util_buf_env_init = 0x40000b60;
r_ble_util_buf_get_rx_buf_nb = 0x40000b64;
r_ble_util_buf_get_rx_buf_size = 0x40000b68;
r_ble_util_buf_llcp_tx_alloc = 0x40000b6c;
r_ble_util_buf_llcp_tx_free = 0x40000b70;
r_ble_util_buf_rx_alloc = 0x40000b74;
r_ble_util_buf_rx_alloc_in_isr = 0x40000b78;
r_ble_util_buf_rx_free = 0x40000b7c;
r_ble_util_buf_rx_free_in_isr = 0x40000b80;
r_ble_util_buf_set_rx_buf_nb = 0x40000b84;
r_ble_util_buf_set_rx_buf_size = 0x40000b88;
r_ble_util_data_rx_buf_reset = 0x40000b8c;
r_bt_bb_get_intr_mask = 0x40000b90;
r_bt_bb_intr_clear = 0x40000b94;
r_bt_bb_intr_mask_set = 0x40000b98;
r_bt_rf_coex_cfg_set = 0x40000ba0;
r_bt_rf_coex_conn_dynamic_pti_en_get = 0x40000ba4;
r_bt_rf_coex_ext_adv_dynamic_pti_en_get = 0x40000bac;
r_bt_rf_coex_ext_scan_dynamic_pti_en_get = 0x40000bb0;
r_bt_rf_coex_legacy_adv_dynamic_pti_en_get = 0x40000bb4;
r_bt_rf_coex_per_adv_dynamic_pti_en_get = 0x40000bb8;
r_bt_rf_coex_pti_table_get = 0x40000bbc;
r_bt_rf_coex_st_param_get = 0x40000bc0;
r_bt_rf_coex_st_param_set = 0x40000bc4;
r_bt_rf_coex_sync_scan_dynamic_pti_en_get = 0x40000bc8;
r_bt_rma_apply_rule_cs_fmt = 0x40000bcc;
r_bt_rma_apply_rule_cs_idx = 0x40000bd0;
r_bt_rma_configure = 0x40000bd4;
r_bt_rma_deregister_rule_cs_fmt = 0x40000bd8;
r_bt_rma_deregister_rule_cs_idx = 0x40000bdc;
r_bt_rma_get_ant_by_act = 0x40000be0;
r_bt_rma_init = 0x40000be4;
r_bt_rma_register_rule_cs_fmt = 0x40000be8;
r_bt_rma_register_rule_cs_idx = 0x40000bec;
r_bt_rtp_apply_rule_cs_fmt = 0x40000bf0;
r_bt_rtp_apply_rule_cs_idx = 0x40000bf4;
r_bt_rtp_deregister_rule_cs_fmt = 0x40000bf8;
r_bt_rtp_deregister_rule_cs_idx = 0x40000bfc;
r_bt_rtp_init = 0x40000c04;
r_bt_rtp_register_rule_cs_fmt = 0x40000c08;
r_bt_rtp_register_rule_cs_idx = 0x40000c0c;
r_btdm_isr = 0x40000c10;
r_cali_phase_match_p = 0x40000c20;
r_cmp_abs_time = 0x40000c24;
r_cmp_dest_id = 0x40000c28;
r_cmp_timer_id = 0x40000c2c;
r_co_bdaddr_compare = 0x40000c30;
r_co_ble_pkt_dur_in_us = 0x40000c34;
r_co_list_extract = 0x40000c38;
r_co_list_extract_after = 0x40000c3c;
r_co_list_extract_sublist = 0x40000c40;
r_co_list_find = 0x40000c44;
r_co_list_init = 0x40000c48;
r_co_list_insert_after = 0x40000c4c;
r_co_list_insert_before = 0x40000c50;
r_co_list_merge = 0x40000c54;
r_co_list_pool_init = 0x40000c58;
r_co_list_pop_front = 0x40000c5c;
r_co_list_push_back = 0x40000c60;
r_co_list_push_back_sublist = 0x40000c64;
r_co_list_push_front = 0x40000c68;
r_co_list_size = 0x40000c6c;
r_co_nb_good_le_channels = 0x40000c70;
r_co_util_pack = 0x40000c74;
r_co_util_read_array_size = 0x40000c78;
r_co_util_unpack = 0x40000c7c;
r_dbg_env_deinit = 0x40000c80;
r_dbg_env_init = 0x40000c84;
r_dbg_platform_reset_complete = 0x40000c88;
r_dl_upd_proc_start = 0x40000c8c;
r_dump_data = 0x40000c90;
r_ecc_abort_key256_generation = 0x40000c94;
r_ecc_gen_new_public_key = 0x40000c98;
r_ecc_gen_new_secret_key = 0x40000c9c;
r_ecc_generate_key256 = 0x40000ca0;
r_ecc_get_debug_Keys = 0x40000ca4;
r_ecc_init = 0x40000ca8;
r_ecc_is_valid_point = 0x40000cac;
r_ecc_multiplication_event_handler = 0x40000cb0;
r_ecc_point_multiplication_win_256 = 0x40000cb4;
r_emi_alloc_em_mapping_by_offset = 0x40000cb8;
r_emi_base_reg_lut_show = 0x40000cbc;
r_emi_em_base_reg_show = 0x40000cc0;
r_emi_free_em_mapping_by_offset = 0x40000cc4;
r_emi_get_em_mapping_idx_by_offset = 0x40000cc8;
r_emi_get_mem_addr_by_offset = 0x40000ccc;
r_emi_overwrite_em_mapping_by_offset = 0x40000cd0;
r_esp_vendor_hci_command_handler = 0x40000cd4;
r_get_stack_usage = 0x40000cd8;
r_h4tl_acl_hdr_rx_evt_handler = 0x40000cdc;
r_h4tl_cmd_hdr_rx_evt_handler = 0x40000ce0;
r_h4tl_cmd_pld_rx_evt_handler = 0x40000ce4;
r_h4tl_eif_io_event_post = 0x40000ce8;
r_h4tl_eif_register = 0x40000cec;
r_h4tl_init = 0x40000cf0;
r_h4tl_out_of_sync = 0x40000cf4;
r_h4tl_out_of_sync_check = 0x40000cf8;
r_h4tl_read_hdr = 0x40000cfc;
r_h4tl_read_next_out_of_sync = 0x40000d00;
r_h4tl_read_payl = 0x40000d04;
r_h4tl_read_start = 0x40000d08;
r_h4tl_rx_acl_hdr_extract = 0x40000d0c;
r_h4tl_rx_cmd_hdr_extract = 0x40000d10;
r_h4tl_rx_done = 0x40000d14;
r_h4tl_start = 0x40000d18;
r_h4tl_stop = 0x40000d1c;
r_h4tl_tx_done = 0x40000d20;
r_h4tl_tx_evt_handler = 0x40000d24;
r_h4tl_write = 0x40000d28;
r_hci_acl_tx_data_alloc = 0x40000d2c;
r_hci_acl_tx_data_received = 0x40000d30;
r_hci_basic_cmd_send_2_controller = 0x40000d34;
r_hci_ble_adv_report_filter_check = 0x40000d38;
r_hci_ble_adv_report_tx_check = 0x40000d3c;
r_hci_ble_conhdl_register = 0x40000d40;
r_hci_ble_conhdl_unregister = 0x40000d44;
r_hci_build_acl_data = 0x40000d48;
r_hci_build_cc_evt = 0x40000d4c;
r_hci_build_cs_evt = 0x40000d50;
r_hci_build_evt = 0x40000d54;
r_hci_build_le_evt = 0x40000d58;
r_hci_cmd_get_max_param_size = 0x40000d5c;
r_hci_cmd_received = 0x40000d60;
r_hci_cmd_reject = 0x40000d64;
r_hci_evt_mask_check = 0x40000d68;
r_hci_evt_mask_set = 0x40000d6c;
r_hci_fc_acl_buf_size_set = 0x40000d70;
r_hci_fc_acl_en = 0x40000d74;
r_hci_fc_acl_packet_sent = 0x40000d78;
r_hci_fc_check_host_available_nb_acl_packets = 0x40000d7c;
r_hci_fc_host_nb_acl_pkts_complete = 0x40000d80;
r_hci_fc_init = 0x40000d84;
r_hci_look_for_cmd_desc = 0x40000d88;
r_hci_look_for_evt_desc = 0x40000d8c;
r_hci_look_for_le_evt_desc = 0x40000d90;
r_hci_look_for_le_evt_desc_esp = 0x40000d94;
r_hci_pack_bytes = 0x40000d98;
r_hci_send_2_controller = 0x40000da0;
r_hci_send_2_host = 0x40000da4;
r_hci_tl_c2h_data_flow_on = 0x40000da8;
r_hci_tl_cmd_hdr_rx_evt_handler = 0x40000dac;
r_hci_tl_cmd_pld_rx_evt_handler = 0x40000db0;
r_hci_tl_get_pkt = 0x40000db4;
r_hci_tl_hci_pkt_handler = 0x40000db8;
r_hci_tl_hci_tx_done_evt_handler = 0x40000dbc;
r_hci_tl_inc_nb_h2c_cmd_pkts = 0x40000dc0;
r_hci_tl_save_pkt = 0x40000dc4;
r_hci_tl_send = 0x40000dc8;
r_hci_tx_done = 0x40000dcc;
r_hci_tx_start = 0x40000dd0;
r_hci_tx_trigger = 0x40000dd4;
r_isValidSecretKey_256 = 0x40000dd8;
r_ke_check_malloc = 0x40000ddc;
r_ke_event_callback_set = 0x40000de0;
r_ke_event_clear = 0x40000de4;
r_ke_event_flush = 0x40000de8;
r_ke_event_get = 0x40000dec;
r_ke_event_get_all = 0x40000df0;
r_ke_event_init = 0x40000df4;
r_ke_event_schedule = 0x40000df8;
r_ke_event_set = 0x40000dfc;
r_ke_flush = 0x40000e00;
r_ke_free = 0x40000e04;
r_ke_handler_search = 0x40000e08;
r_ke_init = 0x40000e0c;
r_ke_is_free = 0x40000e10;
r_ke_malloc = 0x40000e14;
r_ke_mem_init = 0x40000e18;
r_ke_mem_is_empty = 0x40000e1c;
r_ke_mem_is_in_heap = 0x40000e20;
r_ke_msg_alloc = 0x40000e24;
r_ke_msg_dest_id_get = 0x40000e28;
r_ke_msg_discard = 0x40000e2c;
r_ke_msg_forward = 0x40000e30;
r_ke_msg_forward_new_id = 0x40000e34;
r_ke_msg_free = 0x40000e38;
r_ke_msg_in_queue = 0x40000e3c;
r_ke_msg_save = 0x40000e40;
r_ke_msg_send = 0x40000e44;
r_ke_msg_send_basic = 0x40000e48;
r_ke_msg_src_id_get = 0x40000e4c;
r_ke_queue_extract = 0x40000e50;
r_ke_queue_insert = 0x40000e54;
r_ke_sleep_check = 0x40000e58;
r_ke_state_get = 0x40000e5c;
r_ke_state_set = 0x40000e60;
r_ke_task_check = 0x40000e64;
r_ke_task_create = 0x40000e68;
r_ke_task_delete = 0x40000e6c;
r_ke_task_handler_get = 0x40000e70;
r_ke_task_init = 0x40000e74;
r_ke_task_msg_flush = 0x40000e78;
r_ke_task_saved_update = 0x40000e7c;
r_ke_time = 0x40000e84;
r_ke_time_cmp = 0x40000e88;
r_ke_time_past = 0x40000e8c;
r_ke_timer_active = 0x40000e90;
r_ke_timer_adjust_all = 0x40000e94;
r_ke_timer_clear = 0x40000e98;
r_ke_timer_init = 0x40000e9c;
r_ke_timer_schedule = 0x40000ea0;
r_ke_timer_set = 0x40000ea4;
r_led_init = 0x40000ea8;
r_led_set_all = 0x40000eac;
r_llc_aes_res_cb = 0x40000eb0;
r_llc_ch_map_up_proc_err_cb = 0x40000eb4;
r_llc_cleanup = 0x40000eb8;
r_llc_cmd_cmp_send = 0x40000ebc;
r_llc_cmd_stat_send = 0x40000ec0;
r_llc_con_move_cbk = 0x40000ec4;
r_llc_con_plan_set_update = 0x40000ec8;
r_llc_con_upd_param_in_range = 0x40000ecc;
r_llc_disconnect = 0x40000ed0;
r_llc_disconnect_end = 0x40000ed4;
r_llc_disconnect_proc_continue = 0x40000ed8;
r_llc_disconnect_proc_err_cb = 0x40000edc;
r_llc_dl_chg_check = 0x40000ee0;
r_llc_dle_proc_err_cb = 0x40000ee4;
r_llc_feats_exch_proc_err_cb = 0x40000ee8;
r_llc_hci_cmd_handler_tab_p_get = 0x40000eec;
r_llc_hci_con_param_req_evt_send = 0x40000ef4;
r_llc_hci_con_upd_info_send = 0x40000ef8;
r_llc_hci_disconnected_dis = 0x40000efc;
r_llc_hci_dl_upd_info_send = 0x40000f00;
r_llc_hci_enc_evt_send = 0x40000f04;
r_llc_hci_feats_info_send = 0x40000f08;
r_llc_hci_le_phy_upd_cmp_evt_send = 0x40000f0c;
r_llc_hci_ltk_request_evt_send = 0x40000f10;
r_llc_hci_nb_cmp_pkts_evt_send = 0x40000f14;
r_llc_hci_version_info_send = 0x40000f18;
r_llc_init_term_proc = 0x40000f1c;
r_llc_iv_skd_rand_gen = 0x40000f20;
r_llc_le_ping_proc_continue = 0x40000f24;
r_llc_le_ping_proc_err_cb = 0x40000f28;
/* r_llc_le_ping_restart = 0x40000f2c; */
r_llc_le_ping_set = 0x40000f30;
r_llc_ll_pause_enc_rsp_ack_handler = 0x40000f34;
r_llc_ll_reject_ind_ack_handler = 0x40000f38;
r_llc_ll_reject_ind_pdu_send = 0x40000f3c;
r_llc_ll_start_enc_rsp_ack_handler = 0x40000f40;
r_llc_ll_terminate_ind_ack = 0x40000f44;
r_llc_ll_unknown_ind_handler = 0x40000f48;
r_llc_llcp_send = 0x40000f4c;
r_llc_llcp_state_set = 0x40000f50;
r_llc_llcp_trans_timer_set = 0x40000f54;
r_llc_llcp_tx_check = 0x40000f58;
r_llc_loc_con_upd_proc_err_cb = 0x40000f64;
r_llc_loc_dl_upd_proc_continue = 0x40000f68;
r_llc_loc_encrypt_proc_continue = 0x40000f6c;
r_llc_loc_encrypt_proc_err_cb = 0x40000f70;
r_llc_loc_feats_exch_proc_continue = 0x40000f74;
r_llc_loc_phy_upd_proc_err_cb = 0x40000f7c;
r_llc_msg_handler_tab_p_get = 0x40000f80;
r_llc_pref_param_compute = 0x40000f84;
r_llc_proc_collision_check = 0x40000f88;
r_llc_proc_err_ind = 0x40000f8c;
r_llc_proc_get = 0x40000f90;
r_llc_proc_id_get = 0x40000f94;
r_llc_proc_reg = 0x40000f98;
r_llc_proc_state_get = 0x40000f9c;
r_llc_proc_state_set = 0x40000fa0;
r_llc_proc_timer_pause_set = 0x40000fa4;
r_llc_proc_timer_set = 0x40000fa8;
r_llc_proc_unreg = 0x40000fac;
r_llc_rem_ch_map_proc_continue = 0x40000fb0;
r_llc_rem_con_upd_proc_err_cb = 0x40000fb8;
r_llc_rem_dl_upd_proc = 0x40000fbc;
r_llc_rem_encrypt_proc_continue = 0x40000fc0;
r_llc_rem_encrypt_proc_err_cb = 0x40000fc4;
r_llc_rem_phy_upd_proc_continue = 0x40000fc8;
r_llc_rem_phy_upd_proc_err_cb = 0x40000fcc;
r_llc_role_get = 0x40000fd0;
r_llc_sk_gen = 0x40000fd4;
r_llc_start = 0x40000fd8;
r_llc_stop = 0x40000fdc;
r_llc_ver_exch_loc_proc_continue = 0x40000fe0;
r_llc_ver_proc_err_cb = 0x40000fe4;
r_llcp_pdu_handler_tab_p_get = 0x40000fe8;
r_lld_aa_gen = 0x40000fec;
r_lld_adv_adv_data_set = 0x40000ff0;
r_lld_adv_adv_data_update = 0x40000ff4;
r_lld_adv_aux_ch_idx_set = 0x40000ff8;
r_lld_adv_aux_evt_canceled_cbk = 0x40000ffc;
r_lld_adv_aux_evt_start_cbk = 0x40001000;
r_lld_adv_coex_check_ext_adv_synced = 0x40001004;
r_lld_adv_coex_env_reset = 0x40001008;
r_lld_adv_duration_update = 0x4000100c;
r_lld_adv_dynamic_pti_process = 0x40001010;
r_lld_adv_end = 0x40001014;
r_lld_adv_evt_canceled_cbk = 0x40001018;
r_lld_adv_evt_start_cbk = 0x4000101c;
r_lld_adv_ext_chain_construct = 0x40001020;
r_lld_adv_ext_pkt_prepare = 0x40001024;
r_lld_adv_frm_cbk = 0x40001028;
r_lld_adv_frm_isr = 0x4000102c;
r_lld_adv_frm_skip_isr = 0x40001030;
r_lld_adv_init = 0x40001034;
r_lld_adv_pkt_rx = 0x40001038;
r_lld_adv_pkt_rx_connect_ind = 0x4000103c;
r_lld_adv_pkt_rx_send_scan_req_evt = 0x40001040;
r_lld_adv_rand_addr_update = 0x40001044;
r_lld_adv_restart = 0x40001048;
r_lld_adv_scan_rsp_data_set = 0x4000104c;
r_lld_adv_scan_rsp_data_update = 0x40001050;
r_lld_adv_set_tx_power = 0x40001054;
r_lld_adv_start = 0x40001058;
r_lld_adv_stop = 0x4000105c;
r_lld_adv_sync_info_set = 0x40001060;
r_lld_adv_sync_info_update = 0x40001064;
r_lld_calc_aux_rx = 0x40001068;
r_lld_cca_alloc = 0x4000106c;
r_lld_cca_data_reset = 0x40001070;
r_lld_cca_free = 0x40001074;
r_lld_ch_assess_data_get = 0x40001078;
r_lld_ch_idx_get = 0x4000107c;
r_lld_ch_map_set = 0x40001080;
r_lld_channel_assess = 0x40001084;
r_lld_con_activity_act_offset_compute = 0x40001088;
r_lld_con_activity_offset_compute = 0x4000108c;
r_lld_con_ch_map_update = 0x40001090;
r_lld_con_cleanup = 0x40001094;
r_lld_con_current_tx_power_get = 0x40001098;
r_lld_con_data_flow_set = 0x4000109c;
r_lld_con_data_len_update = 0x400010a0;
r_lld_con_data_tx = 0x400010a4;
r_lld_con_enc_key_load = 0x400010a8;
r_lld_con_event_counter_get = 0x400010ac;
r_lld_con_evt_canceled_cbk = 0x400010b0;
r_lld_con_evt_duration_min_get = 0x400010b4;
r_lld_con_evt_max_eff_time_cal = 0x400010b8;
r_lld_con_evt_sd_evt_time_get = 0x400010bc;
r_lld_con_evt_start_cbk = 0x400010c0;
r_lld_con_evt_time_update = 0x400010c4;
r_lld_con_free_all_tx_buf = 0x400010c8;
r_lld_con_frm_cbk = 0x400010cc;
r_lld_con_frm_isr = 0x400010d0;
r_lld_con_frm_skip_isr = 0x400010d4;
r_lld_con_init = 0x400010d8;
r_lld_con_llcp_tx = 0x400010dc;
r_lld_con_max_lat_calc = 0x400010e0;
r_lld_con_offset_get = 0x400010e4;
r_lld_con_param_update = 0x400010e8;
r_lld_con_phys_update = 0x400010ec;
r_lld_con_pref_slave_evt_dur_set = 0x400010f0;
r_lld_con_pref_slave_latency_set = 0x400010f4;
r_lld_con_rssi_get = 0x400010f8;
r_lld_con_rx = 0x400010fc;
/* r_lld_con_rx_channel_assess = 0x40001100; */
r_lld_con_rx_enc = 0x40001104;
r_lld_con_rx_isr = 0x40001108;
r_lld_con_rx_link_info_check = 0x4000110c;
r_lld_con_rx_llcp_check = 0x40001110;
r_lld_con_rx_sync_time_update = 0x40001114;
r_lld_con_set_tx_power = 0x4000111c;
r_lld_con_start = 0x40001120;
r_lld_con_tx = 0x40001128;
r_lld_con_tx_enc = 0x4000112c;
r_lld_con_tx_isr = 0x40001130;
r_lld_con_tx_len_update = 0x40001134;
r_lld_con_tx_len_update_for_intv = 0x40001138;
r_lld_con_tx_len_update_for_rate = 0x4000113c;
r_lld_con_tx_prog = 0x40001140;
r_lld_conn_dynamic_pti_process = 0x40001144;
r_lld_continue_scan_rx_isr_end_process = 0x40001148;
r_lld_ext_scan_dynamic_pti_process = 0x4000114c;
r_lld_hw_cca_end_isr = 0x40001150;
r_lld_hw_cca_evt_handler = 0x40001154;
r_lld_hw_cca_isr = 0x40001158;
r_lld_init_cal_anchor_point = 0x4000115c;
r_lld_init_compute_winoffset = 0x40001160;
r_lld_init_connect_req_pack = 0x40001164;
r_lld_init_end = 0x40001168;
r_lld_init_evt_canceled_cbk = 0x4000116c;
r_lld_init_evt_start_cbk = 0x40001170;
r_lld_init_frm_cbk = 0x40001174;
r_lld_init_frm_eof_isr = 0x40001178;
r_lld_init_frm_skip_isr = 0x4000117c;
r_lld_init_init = 0x40001180;
r_lld_init_process_pkt_rx = 0x40001184;
r_lld_init_process_pkt_rx_adv_ext_ind = 0x40001188;
r_lld_init_process_pkt_rx_adv_ind_or_direct_ind = 0x4000118c;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0x40001190;
r_lld_init_process_pkt_tx = 0x40001194;
r_lld_init_process_pkt_tx_cal_con_timestamp = 0x40001198;
r_lld_init_sched = 0x4000119c;
r_lld_init_set_tx_power = 0x400011a0;
r_lld_init_start = 0x400011a4;
r_lld_init_stop = 0x400011a8;
r_lld_instant_proc_end = 0x400011ac;
r_lld_per_adv_ch_map_update = 0x400011b4;
r_lld_per_adv_chain_construct = 0x400011b8;
r_lld_per_adv_cleanup = 0x400011bc;
r_lld_per_adv_coex_env_reset = 0x400011c0;
r_lld_per_adv_data_set = 0x400011c4;
r_lld_per_adv_data_update = 0x400011c8;
r_lld_per_adv_dynamic_pti_process = 0x400011cc;
r_lld_per_adv_evt_canceled_cbk = 0x400011d0;
r_lld_per_adv_evt_start_cbk = 0x400011d4;
r_lld_per_adv_ext_pkt_prepare = 0x400011d8;
r_lld_per_adv_frm_cbk = 0x400011dc;
r_lld_per_adv_frm_isr = 0x400011e0;
r_lld_per_adv_frm_skip_isr = 0x400011e4;
r_lld_per_adv_init = 0x400011e8;
r_lld_per_adv_init_info_get = 0x400011ec;
r_lld_per_adv_list_add = 0x400011f0;
r_lld_per_adv_list_rem = 0x400011f4;
r_lld_per_adv_set_tx_power = 0x400011fc;
r_lld_per_adv_start = 0x40001200;
r_lld_per_adv_stop = 0x40001204;
r_lld_per_adv_sync_info_get = 0x40001208;
r_lld_process_cca_data = 0x4000120c;
r_lld_ral_search = 0x40001210;
r_lld_read_clock = 0x40001214;
r_lld_res_list_add = 0x40001218;
r_lld_res_list_is_empty = 0x40001220;
r_lld_res_list_local_rpa_get = 0x40001224;
r_lld_res_list_peer_rpa_get = 0x40001228;
r_lld_res_list_peer_update = 0x4000122c;
/* r_lld_res_list_priv_mode_update = 0x40001230; */
r_lld_reset_reg = 0x40001238;
r_lld_rpa_renew = 0x4000123c;
r_lld_rpa_renew_evt_canceled_cbk = 0x40001240;
r_lld_rpa_renew_evt_start_cbk = 0x40001244;
r_lld_rpa_renew_instant_cbk = 0x40001248;
r_lld_rxdesc_check = 0x4000124c;
r_lld_rxdesc_free = 0x40001250;
r_lld_scan_create_sync = 0x40001254;
r_lld_scan_create_sync_cancel = 0x40001258;
r_lld_scan_end = 0x4000125c;
r_lld_scan_evt_canceled_cbk = 0x40001260;
r_lld_scan_evt_start_cbk = 0x40001264;
r_lld_scan_frm_cbk = 0x40001268;
r_lld_scan_frm_eof_isr = 0x4000126c;
r_lld_scan_frm_rx_isr = 0x40001270;
r_lld_scan_frm_skip_isr = 0x40001274;
r_lld_scan_init = 0x40001278;
r_lld_scan_params_update = 0x4000127c;
r_lld_scan_process_pkt_rx_aux_adv_ind = 0x40001288;
r_lld_scan_process_pkt_rx_aux_chain_ind = 0x4000128c;
r_lld_scan_process_pkt_rx_aux_scan_rsp = 0x40001290;
r_lld_scan_process_pkt_rx_ext_adv = 0x40001294;
r_lld_scan_process_pkt_rx_ext_adv_ind = 0x40001298;
r_lld_scan_process_pkt_rx_legacy_adv = 0x4000129c;
r_lld_scan_restart = 0x400012a0;
r_lld_scan_sched = 0x400012a4;
r_lld_scan_set_tx_power = 0x400012a8;
r_lld_scan_start = 0x400012ac;
r_lld_scan_stop = 0x400012b0;
r_lld_scan_sync_accept = 0x400012b4;
r_lld_scan_sync_info_unpack = 0x400012b8;
r_lld_scan_trunc_ind = 0x400012bc;
r_lld_sw_cca_evt_handler = 0x400012c0;
r_lld_sw_cca_isr = 0x400012c4;
r_lld_sync_ch_map_update = 0x400012c8;
r_lld_sync_cleanup = 0x400012cc;
r_lld_sync_evt_canceled_cbk = 0x400012d0;
r_lld_sync_evt_start_cbk = 0x400012d4;
r_lld_sync_frm_cbk = 0x400012d8;
r_lld_sync_frm_eof_isr = 0x400012dc;
r_lld_sync_frm_rx_isr = 0x400012e0;
r_lld_sync_frm_skip_isr = 0x400012e4;
r_lld_sync_init = 0x400012e8;
r_lld_sync_process_pkt_rx = 0x400012ec;
r_lld_sync_process_pkt_rx_aux_sync_ind = 0x400012f0;
r_lld_sync_process_pkt_rx_pkt_check = 0x400012f4;
r_lld_sync_scan_dynamic_pti_process = 0x400012f8;
r_lld_sync_sched = 0x400012fc;
r_lld_sync_start = 0x40001300;
r_lld_sync_stop = 0x40001304;
r_lld_sync_trunc_ind = 0x40001308;
r_lld_test_cleanup = 0x4000130c;
r_lld_test_evt_canceled_cbk = 0x40001310;
r_lld_test_evt_start_cbk = 0x40001314;
r_lld_test_freq2chnl = 0x40001318;
r_lld_test_frm_cbk = 0x4000131c;
r_lld_test_frm_isr = 0x40001320;
r_lld_test_init = 0x40001324;
r_lld_test_rx_isr = 0x40001328;
r_lld_test_set_tx_power = 0x4000132c;
r_lld_test_start = 0x40001330;
/* r_lld_test_stop = 0x40001334; */
r_lld_update_rxbuf = 0x40001338;
r_lld_update_rxbuf_isr = 0x4000133c;
r_lld_white_list_add = 0x40001340;
r_lld_white_list_rem = 0x40001344;
r_llm_activity_free_get = 0x40001348;
r_llm_activity_free_set = 0x4000134c;
r_llm_activity_syncing_get = 0x40001350;
r_llm_adv_con_len_check = 0x40001354;
r_llm_adv_hdl_to_id = 0x40001358;
r_llm_adv_rep_flow_control_check = 0x4000135c;
r_llm_adv_rep_flow_control_update = 0x40001360;
r_llm_adv_reports_list_check = 0x40001364;
r_llm_adv_set_all_release = 0x40001368;
r_llm_adv_set_dft_params = 0x4000136c;
r_llm_adv_set_release = 0x40001370;
r_llm_aes_res_cb = 0x40001374;
r_llm_ble_update_adv_flow_control = 0x40001378;
r_llm_ch_map_update = 0x4000137c;
r_llm_cmd_cmp_send = 0x40001380;
r_llm_cmd_stat_send = 0x40001384;
r_llm_dev_list_empty_entry = 0x40001388;
r_llm_dev_list_search = 0x4000138c;
r_llm_env_adv_dup_filt_deinit = 0x40001390;
r_llm_env_adv_dup_filt_init = 0x40001394;
r_llm_init_ble_adv_report_flow_contol = 0x40001398;
r_llm_is_dev_connected = 0x4000139c;
r_llm_is_dev_synced = 0x400013a0;
r_llm_is_non_con_act_ongoing_check = 0x400013a4;
r_llm_is_wl_accessible = 0x400013a8;
r_llm_le_evt_mask_check = 0x400013ac;
r_llm_link_disc = 0x400013b4;
r_llm_master_ch_map_get = 0x400013b8;
r_llm_msg_handler_tab_p_get = 0x400013bc;
r_llm_no_activity = 0x400013c0;
r_llm_per_adv_slot_dur = 0x400013c4;
r_llm_plan_elt_get = 0x400013c8;
r_llm_rx_path_comp_get = 0x400013cc;
r_llm_scan_start = 0x400013d0;
r_llm_scan_sync_acad_attach = 0x400013d4;
r_llm_scan_sync_acad_detach = 0x400013d8;
r_llm_send_adv_lost_event_to_host = 0x400013dc;
r_llm_tx_path_comp_get = 0x400013e0;
r_misc_deinit = 0x400013e4;
r_misc_free_em_buf_in_isr = 0x400013e8;
r_misc_init = 0x400013ec;
r_misc_msg_handler_tab_p_get = 0x400013f0;
r_notEqual256 = 0x400013f4;
r_phy_upd_proc_start = 0x400013f8;
r_platform_reset = 0x400013fc;
r_rf_em_init = 0x40001404;
r_rf_force_agc_enable = 0x40001408;
r_rf_reg_rd = 0x4000140c;
r_rf_reg_wr = 0x40001410;
r_rf_reset = 0x40001414;
r_rf_rssi_convert = 0x40001418;
r_rf_rw_v9_le_disable = 0x4000141c;
r_rf_rw_v9_le_enable = 0x40001420;
r_rf_sleep = 0x40001424;
r_rf_util_cs_fmt_convert = 0x40001430;
r_rw_crypto_aes_ccm = 0x40001434;
r_rw_crypto_aes_encrypt = 0x40001438;
r_rw_crypto_aes_init = 0x4000143c;
r_rw_crypto_aes_k1 = 0x40001440;
r_rw_crypto_aes_k2 = 0x40001444;
r_rw_crypto_aes_k3 = 0x40001448;
r_rw_crypto_aes_k4 = 0x4000144c;
r_rw_crypto_aes_rand = 0x40001450;
r_rw_crypto_aes_result_handler = 0x40001454;
r_rw_crypto_aes_s1 = 0x40001458;
r_rw_cryto_aes_cmac = 0x4000145c;
r_rw_v9_init_em_radio_table = 0x40001460;
r_rwble_sleep_enter = 0x40001468;
r_rwble_sleep_wakeup_end = 0x4000146c;
/* r_rwbtdm_isr_wrapper = 0x40001470; */
r_rwip_active_check = 0x40001474;
r_rwip_aes_encrypt = 0x40001478;
/* r_rwip_assert = 0x4000147c; */
r_rwip_crypt_evt_handler = 0x40001480;
r_rwip_crypt_isr_handler = 0x40001484;
r_rwip_eif_get = 0x40001488;
r_rwip_half_slot_2_lpcycles = 0x4000148c;
r_rwip_hus_2_lpcycles = 0x40001490;
r_rwip_isr = 0x40001494;
r_rwip_lpcycles_2_hus = 0x40001498;
r_rwip_prevent_sleep_clear = 0x4000149c;
r_rwip_prevent_sleep_set = 0x400014a0;
r_rwip_schedule = 0x400014a4;
r_rwip_sleep = 0x400014a8;
r_rwip_sw_int_handler = 0x400014ac;
r_rwip_sw_int_req = 0x400014b0;
r_rwip_time_get = 0x400014b4;
r_rwip_timer_10ms_handler = 0x400014b8;
r_rwip_timer_10ms_set = 0x400014bc;
r_rwip_timer_hs_handler = 0x400014c0;
r_rwip_timer_hs_set = 0x400014c4;
r_rwip_timer_hus_handler = 0x400014c8;
r_rwip_timer_hus_set = 0x400014cc;
r_rwip_wakeup = 0x400014d0;
/* r_rwip_wakeup_end = 0x400014d4; */
r_rwip_wlcoex_set = 0x400014d8;
r_sch_alarm_clear = 0x400014dc;
r_sch_alarm_init = 0x400014e0;
r_sch_alarm_prog = 0x400014e4;
r_sch_alarm_set = 0x400014e8;
r_sch_alarm_timer_isr = 0x400014ec;
r_sch_arb_conflict_check = 0x400014f0;
r_sch_arb_elt_cancel = 0x400014f4;
r_sch_arb_init = 0x400014fc;
r_sch_arb_insert = 0x40001500;
r_sch_arb_prog_timer = 0x40001504;
r_sch_arb_remove = 0x40001508;
r_sch_arb_sw_isr = 0x4000150c;
r_sch_plan_chk = 0x40001510;
r_sch_plan_clock_wrap_offset_update = 0x40001514;
r_sch_plan_init = 0x40001518;
r_sch_plan_interval_req = 0x4000151c;
r_sch_plan_offset_max_calc = 0x40001520;
r_sch_plan_offset_req = 0x40001524;
r_sch_plan_position_range_compute = 0x40001528;
r_sch_plan_rem = 0x4000152c;
r_sch_plan_req = 0x40001530;
r_sch_prog_init = 0x4000153c;
r_sch_prog_push = 0x40001540;
r_sch_prog_rx_isr = 0x40001544;
r_sch_prog_skip_isr = 0x40001548;
r_sch_prog_tx_isr = 0x4000154c;
r_sch_slice_bg_add = 0x40001550;
r_sch_slice_bg_remove = 0x40001554;
r_sch_slice_compute = 0x40001558;
r_sch_slice_fg_add = 0x4000155c;
r_sch_slice_fg_remove = 0x40001560;
r_sch_slice_init = 0x40001564;
r_sch_slice_per_add = 0x40001568;
r_sch_slice_per_remove = 0x4000156c;
r_sdk_config_get_bt_sleep_enable = 0x40001570;
r_sdk_config_get_hl_derived_opts = 0x40001574;
r_sdk_config_get_opts = 0x40001578;
r_sdk_config_get_priv_opts = 0x4000157c;
r_sdk_config_set_bt_sleep_enable = 0x40001580;
r_sdk_config_set_hl_derived_opts = 0x40001584;
r_sdk_config_set_opts = 0x40001588;
r_specialModP256 = 0x4000158c;
r_unloaded_area_init = 0x40001590;
r_vhci_flow_off = 0x40001594;
r_vhci_flow_on = 0x40001598;
r_vhci_notify_host_send_available = 0x4000159c;
r_vhci_send_to_host = 0x400015a0;
r_vnd_hci_command_handler = 0x400015a4;
r_vshci_init = 0x400015a8;
vnd_hci_command_handler_wrapper = 0x400015ac;
/* Data (.data, .bss, .rodata) */
bt_rf_coex_cfg_p = 0x3fcdffcc;
bt_rf_coex_hooks_p = 0x3fcdffc8;
@ -1462,38 +668,6 @@ rwip_coex_cfg = 0x3ff1eeac;
rwip_priority = 0x3ff1ee94;
veryBigHexP256 = 0x3ff1ee48;
/* bluetooth hook funcs */
r_llc_loc_encrypt_proc_continue_hook = 0x40001c60;
r_llc_loc_phy_upd_proc_continue_hook = 0x40001c64;
r_llc_rem_phy_upd_proc_continue_hook = 0x40001c68;
r_lld_scan_frm_eof_isr_hook = 0x40001c6c;
r_lld_scan_evt_start_cbk_hook = 0x40001c70;
r_lld_scan_process_pkt_rx_ext_adv_hook = 0x40001c78;
r_lld_scan_sched_hook = 0x40001c7c;
r_lld_adv_evt_start_cbk_hook = 0x40001c84;
r_lld_adv_aux_evt_start_cbk_hook = 0x40001c88;
r_lld_adv_frm_isr_hook = 0x40001c8c;
r_lld_adv_start_init_evt_param_hook = 0x40001c90;
r_lld_con_evt_canceled_cbk_hook = 0x40001c94;
r_lld_con_frm_isr_hook = 0x40001c98;
r_lld_con_tx_hook = 0x40001c9c;
r_lld_con_rx_hook = 0x40001ca0;
r_lld_con_evt_start_cbk_hook = 0x40001ca4;
r_lld_con_tx_prog_new_packet_hook = 0x40001cac;
r_lld_init_frm_eof_isr_hook = 0x40001cb0;
r_lld_init_evt_start_cbk_hook = 0x40001cb4;
r_lld_init_sched_hook = 0x40001cbc;
r_lld_init_process_pkt_tx_hook = 0x40001cc0;
r_lld_per_adv_evt_start_cbk_hook = 0x40001cc4;
r_lld_per_adv_frm_isr_hook = 0x40001cc8;
r_lld_per_adv_start_hook = 0x40001ccc;
r_lld_sync_frm_eof_isr_hook = 0x40001cd0;
r_lld_sync_evt_start_cbk_hook = 0x40001cd4;
r_lld_sync_start_hook = 0x40001cd8;
r_lld_sync_process_pkt_rx_pkt_check_hook = 0x40001cdc;
r_sch_arb_insert_hook = 0x40001ce0;
r_sch_plan_offset_req_hook = 0x40001ce4;
/***************************************
Group rom_pp
***************************************/

View File

@ -284,10 +284,14 @@ phy_wifi_set_tx_gain = 0x400014f4;
phy_bt_get_tx_tab_ = 0x400014f8;
phy_bt_set_tx_gain = 0x400014fc;
phy_bt_tx_gain_init = 0x40001500;
phy_pbus_xpd_rx_off = 0x40002518;
phy_i2c_writeReg_Mask = 0x4000787e;
phy_pbus_xpd_rx_on = 0x40002628;
phy_pbus_xpd_tx_on = 0x4000274c;
phy_pbus_xpd_rx_off = 0x40001528;
phy_i2c_writeReg_Mask = 0x4000152c;
phy_pbus_xpd_rx_on = 0x40001530;
phy_pbus_xpd_tx_on = 0x40001534;
phy_get_romfuncs = 0x40001538;
phy_chip_set_chan_ana_ = 0x4000153c;
phy_pbus_xpd_tx_off = 0x40001540;
/* Data (.data, .bss, .rodata) */
phy_rom_phyFuns = 0x4085fb80;
phy_param_rom = 0x4085fc70;
phy_rom_phyFuns_eco1 = 0x4085fc6c;

View File

@ -32,7 +32,7 @@ hal_mac_tx_clr_mplen = 0x40000c10;
hal_mac_get_txq_state = 0x40000c14;
hal_mac_clr_txq_state = 0x40000c18;
hal_mac_get_txq_complete = 0x40000c1c;
/*hal_mac_deinit_twt_tx = 0x40000c20;*/
hal_mac_deinit_twt_tx = 0x40000c20;
hal_mac_is_dma_enable = 0x40000c24;
/*hal_he_get_bss_color = 0x40000c28;*/
hal_he_set_ersu = 0x40000c2c;
@ -62,7 +62,7 @@ ic_get_he_rts_threshold_bytes = 0x40000c88;
lmacAdjustTimestamp = 0x40000c8c;
lmacDiscardAgedMSDU = 0x40000c90;
lmacDiscardMSDU = 0x40000c94;
/*lmacEndFrameExchangeSequence = 0x40000c98;*/
lmacEndFrameExchangeSequence = 0x40000c98;
lmacIsIdle = 0x40000c9c;
lmacIsLongFrame = 0x40000ca0;
lmacMSDUAged = 0x40000ca4;
@ -74,19 +74,19 @@ lmacReachLongLimit = 0x40000cb8;
lmacReachShortLimit = 0x40000cbc;
lmacRecycleMPDU = 0x40000cc0;
lmacRxDone = 0x40000cc4;
/*lmacSetTxFrame = 0x40000cc8;*/
lmacSetTxFrame = 0x40000cc8;
lmacTxDone = 0x40000ccc;
lmacTxFrame = 0x40000cd0;
lmacDisableTransmit = 0x40000cd4;
lmacDiscardFrameExchangeSequence = 0x40000cd8;
lmacProcessCollision = 0x40000cdc;
lmacProcessAckTimeout = 0x40000ce0;
/*lmacProcessShortRetryFail = 0x40000ce4;*/
lmacProcessShortRetryFail = 0x40000ce4;
lmacProcessCollisions_task = 0x40000ce8;
lmacProcessTxRtsError = 0x40000cec;
lmacProcessTxError = 0x40000cf0;
lmacProcessCtsTimeout = 0x40000cf4;
/*lmacProcessLongRetryFail = 0x40000cf8;*/
lmacProcessLongRetryFail = 0x40000cf8;
lmacRetryTxFrame = 0x40000cfc;
lmacEndRetryAMPDUFail = 0x40000d00;
lmacProcessTxSuccess = 0x40000d04;
@ -112,7 +112,7 @@ pm_disable_sleep_delay_timer = 0x40000d50;
/*pm_dream = 0x40000d54;*/
pm_mac_wakeup = 0x40000d58;
pm_mac_sleep = 0x40000d5c;
pm_enable_active_timer = 0x40000d60;
/*pm_enable_active_timer = 0x40000d60;*/
pm_enable_sleep_delay_timer = 0x40000d64;
pm_local_tsf_process = 0x40000d68;
pm_set_beacon_filter = 0x40000d6c;
@ -145,13 +145,13 @@ pm_disconnected_wake = 0x40000dd4;
/*pm_tx_data_process = 0x40000dd8;*/
pm_is_twt_awake = 0x40000ddc;
pm_enable_twt_keep_alive = 0x40000de0;
/*pm_twt_on_tsf_timer = 0x40000de4;*/
pm_twt_on_tsf_timer = 0x40000de4;
pm_twt_process = 0x40000de8;
pm_is_twt_start = 0x40000dec;
pm_twt_set_target_wdev_time = 0x40000df0;
pm_twt_set_target_tsf = 0x40000df4;
pm_enable_twt_keep_alive_timer = 0x40000df8;
/*pm_mac_try_enable_modem_state = 0x40000dfc;*/
pm_mac_try_enable_modem_state = 0x40000dfc;
pm_beacon_monitor_tbtt_timeout_process = 0x40000e00;
/*pm_update_next_tbtt = 0x40000e04;*/
pm_twt_disallow_tx = 0x40000e08;
@ -209,11 +209,11 @@ ppDisableQueue = 0x40000ed4;
ppCalVHTDeliNum = 0x40000ed8;
ppCalTxVHTSMPDULength = 0x40000edc;
ppCheckTxRTS = 0x40000ee0;
/*ppProcessLifeTime = 0x40000ee4;*/
ppProcessLifeTime = 0x40000ee4;
ppProcTxCallback = 0x40000ee8;
ppCalPreFecPaddingFactor = 0x40000eec;
ppCalDeliNum = 0x40000ef0;
/*ppRemoveHTC = 0x40000ef4;*/
ppRemoveHTC = 0x40000ef4;
ppCheckTxHEAMPDUlength = 0x40000ef8;
ppCertSetRate = 0x40000efc;
ppSelectTxFormat = 0x40000f00;
@ -260,7 +260,7 @@ trcAmpduSetState = 0x40000fa0;
trc_set_bf_report_rate = 0x40000fa4;
trc_onPPTxDone = 0x40000fa8;
wDevCheckBlockError = 0x40000fac;
/*wDev_AppendRxBlocks = 0x40000fb0;*/
wDev_AppendRxBlocks = 0x40000fb0;
wDev_DiscardFrame = 0x40000fb4;
wDev_GetNoiseFloor = 0x40000fb8;
wDev_IndicateAmpdu = 0x40000fbc;
@ -335,6 +335,12 @@ is_use_muedca = 0x400010cc;
pwr_hal_clear_mac_modem_state_wakeup_protect_signal = 0x400010d0;
get_estimated_batime = 0x400010d4;
get_sublen_offset = 0x400010d8;
pm_coex_schm_overall_period_get = 0x40001504;
ppRemoveHEAMPDUflags = 0x4000150c;
tsf_hal_get_tbtt_interval = 0x40001510;
pm_get_tbtt_count = 0x4000151c;
tsf_hal_get_time = 0x40001520;
tsf_hal_get_counter_value = 0x40001524;
/* Data (.data, .bss, .rodata) */
our_instances_ptr = 0x4004ffe0;
pTxRx = 0x4085ff74;

View File

@ -113,7 +113,7 @@ pm_disable_sleep_delay_timer = 0x40000cbc;
pm_dream = 0x40000cc0;
pm_mac_wakeup = 0x40000cc4;
pm_mac_sleep = 0x40000cc8;
pm_enable_active_timer = 0x40000ccc;
/*pm_enable_active_timer = 0x40000ccc;*/
pm_enable_sleep_delay_timer = 0x40000cd0;
pm_local_tsf_process = 0x40000cd4;
pm_set_beacon_filter = 0x40000cd8;

View File

@ -0,0 +1,75 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* extend adv */
f_hci_le_set_ext_adv_param_cmd_handler = 0x40000000;
f_hci_le_set_adv_set_rand_addr_cmd_handler = 0x40000000;
f_hci_le_set_ext_adv_data_cmd_handler = 0x40000000;
f_hci_le_set_ext_scan_rsp_data_cmd_handler = 0x40000000;
f_hci_le_set_ext_adv_en_cmd_handler = 0x40000000;
f_hci_le_rd_max_adv_data_len_cmd_handler = 0x40000000;
f_hci_le_rd_nb_supp_adv_sets_cmd_handler = 0x40000000;
f_hci_le_rmv_adv_set_cmd_handler = 0x40000000;
f_hci_le_clear_adv_sets_cmd_handler = 0x40000000;
r_lld_adv_sync_info_set = 0x40000000;
r_lld_ext_adv_dynamic_pti_process = 0x40000000;
r_lld_adv_ext_chain_construct = 0x40000000;
r_lld_adv_aux_evt_canceled_cbk = 0x40000000;
r_lld_adv_aux_evt_start_cbk = 0x40000000;
r_lld_adv_aux_ch_idx_set = 0x40000000;
/* periodic adv */
f_hci_le_set_per_adv_param_cmd_handler = 0x40000000;
f_hci_le_set_per_adv_data_cmd_handler = 0x40000000;
f_hci_le_set_per_adv_en_cmd_handler = 0x40000000;
r_lld_per_adv_ch_map_update = 0x40000000;
r_lld_per_adv_init = 0x40000000;
/* PA list */
f_hci_le_add_dev_to_per_adv_list_cmd_handler = 0x40000000;
f_hci_le_rmv_dev_from_per_adv_list_cmd_handler = 0x40000000;
f_hci_le_clear_per_adv_list_cmd_handler = 0x40000000;
f_hci_le_rd_per_adv_list_size_cmd_handler = 0x40000000;
/* extend scan */
f_hci_le_set_ext_scan_param_cmd_handler = 0x40000000;
f_hci_le_set_ext_scan_en_cmd_handler = 0x40000000;
r_lld_scan_process_pkt_rx_ext_adv = 0x40000000;
r_lld_scan_trunc_ind = 0x40000000;
/* extend con */
f_hci_le_ext_create_con_cmd_handler = 0x40000000;
r_lld_init_process_pkt_rx_adv_ext_ind = 0x40000000;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0x40000000;
/* PA sync */
f_hci_le_per_adv_create_sync_cmd_handler = 0x40000000;
f_hci_le_per_adv_create_sync_cancel_cmd_handler = 0x40000000;
f_hci_le_per_adv_term_sync_cmd_handler = 0x40000000;
f_lld_per_adv_rx_end_ind_handler_hack = 0x40000000;
f_lld_sync_start_req_handler = 0x40000000;
f_lld_per_adv_rep_ind_handler = 0x40000000;
r_lld_sync_init = 0x40000000;
/* phy update*/
r_phy_upd_proc_start = 0x40000000;
f_llc_op_phy_upd_ind_handler = 0x40000000;
f_ll_phy_req_handler = 0x40000000;
f_ll_phy_rsp_handler = 0x40000000;
f_ll_phy_update_ind_handler = 0x40000000;
f_lld_phy_upd_cfm_handler = 0x40000000;
f_hci_le_set_phy_cmd_handler = 0x40000000;
llc_llcp_phy_update_ind_ack = 0x40000000;

View File

@ -0,0 +1,32 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* SW CCA */
r_lld_cca_con_evt_start_handle = 0x40000000;
r_lld_hw_cca_end_isr = 0x40000000;
r_lld_hw_cca_isr_eco = 0x40000000;
r_lld_cca_bb_sync_found_handle = 0x40000000;
r_lld_cca_data_reset = 0x40000000;
r_lld_cca_sw_init = 0x40000000;
r_lld_cca_con_evt_end_handle = 0x40000000;
r_lld_cca_alloc = 0x40000000;
r_lld_cca_sw_alloc = 0x40000000;
r_lld_cca_sw_free = 0x40000000;
r_lld_cca_free = 0x40000000;
r_cca_init = 0x40000000;
r_lld_hw_cca_evt_handler = 0x40000000;
r_lld_sw_cca_evt_handler = 0x40000000;
r_ble_sw_cca_check_isr = 0x40000000;
bt_bb_tx_cca_set = 0x40000000;

View File

@ -0,0 +1,22 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* DTM */
f_hci_le_rx_test_cmd_handler = 0x40000000;
f_hci_le_tx_test_cmd_handler = 0x40000000;
f_hci_le_enh_rx_test_cmd_handler = 0x40000000;
f_hci_le_enh_tx_test_cmd_handler = 0x40000000;
f_hci_le_test_end_cmd_handler = 0x40000000;
r_lld_test_init = 0x40000000;

View File

@ -0,0 +1,20 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* master */
f_hci_le_create_con_cmd_handler = 0x40000000;
f_hci_le_create_con_cancel_cmd_handler = 0x40000000;
lld_init_end_ind_handler = 0x40000000;
r_lld_init_init = 0x40000000;

View File

@ -0,0 +1,37 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* BLE scan */
f_hci_le_set_scan_param_cmd_handler = 0x40000000;
f_hci_le_set_scan_en_cmd_handler = 0x40000000;
f_llm_scan_period_to_handler_hack = 0x40000000;
f_lld_adv_rep_ind_handler_hack = 0x40000000;
r_lld_scan_init = 0x40000000;
r_lld_scan_restart = 0x40000000;
f_lld_scan_end_ind_handler_hack = 0x40000000;
r_llm_env_adv_dup_filt_deinit_eco = 0x40000000;
llm_exception_list_init = 0x40000000;
llm_duplicate_list_init = 0x40000000;
f_hci_vendor_ble_update_duplicate_exceptional_list_cmd_handler = 0x40000000;
f_hci_vendor_ble_init_adv_flow_control_cmd_handler = 0x40000000;
f_hci_vendor_ble_update_adv_report_flow_control_cmd_handler = 0x40000000;
coex_schm_ble_scan_stop = 0x40000000;
f_hci_le_set_ext_scan_param_cmd_handler = 0x40000000;
f_hci_le_set_ext_scan_en_cmd_handler = 0x40000000;
r_lld_scan_process_pkt_rx_ext_adv = 0x40000000;
r_lld_scan_trunc_ind = 0x40000000;

View File

@ -0,0 +1,44 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* SMP */
f_ll_pause_enc_req_handler = 0x40000000;
f_ll_pause_enc_rsp_handler = 0x40000000;
f_ll_enc_req_handler = 0x40000000;
f_ll_enc_rsp_handler = 0x40000000;
f_ll_start_enc_req_handler = 0x40000000;
f_ll_start_enc_rsp_handler = 0x40000000;
f_hci_le_start_enc_cmd_handler = 0x40000000;
f_hci_le_ltk_req_reply_cmd_handler = 0x40000000;
f_hci_le_ltk_req_neg_reply_cmd_handler = 0x40000000;
f_llc_encrypt_ind_handler = 0x40000000;
f_llc_op_encrypt_ind_handler = 0x40000000;
f_hci_le_rd_local_p256_public_key_cmd_handler = 0x40000000;
f_hci_le_generate_dhkey_cmd_handler = 0x40000000;
f_hci_le_enc_cmd_handler = 0x40000000;
r_rwip_crypt_evt_handler = 0x40000000;
/* LE ping */
f_ll_ping_req_handler = 0x40000000;
f_ll_ping_rsp_handler = 0x40000000;
r_llc_le_ping_set = 0x40000000;
r_llc_le_ping_restart = 0x40000000;
f_llc_op_le_ping_ind_handler = 0x40000000;
f_llc_auth_payl_nearly_op_handler = 0x40000000;
f_llc_auth_payl_real_to_handler = 0x40000000;
f_llc_auth_payl_nearly_to_handler = 0x40000000;
/* ecc */
r_ecc_init = 0x40000000;

View File

@ -0,0 +1,37 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/* overwrite */
lld_acl_rx_ind_handler = 0x40000000;
lld_con_estab_ind_handler = 0x40000000;
lld_adv_rep_ind_handler = 0x40000000;
llm_rpa_renew_to_handler = 0x40000000;
lld_scan_end_ind_handler = 0x40000000;
llm_scan_period_to_handler = 0x40000000;
/* nvds */
r_nvds_init = 0x40000000;
f_nvds_get = 0x40000000;
f_nvds_del = 0x40000000;
f_nvds_put = 0x40000000;
/* controller flash */
r_flash_init = 0x40000000;
r_flash_env_init = 0x40000000;
r_flash_env_deinit = 0x40000000;
/* QA test */
f_hci_vendor_ble_qa_test_cmd_handler = 0x40000000;

View File

@ -0,0 +1,874 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/* ROM function interface esp32s3.rom.ld for esp32s3
*
*
* Generated from ./interface-esp32s3.yml md5sum 39c4ce259b11323b9404c192b01b712b
*
* Compatible with ROM where ECO version equal or greater to 0.
*
* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.
*/
/***************************************
Group bluetooth
***************************************/
/* Functions */
bt_rf_coex_get_dft_cfg = 0x40002a78;
bt_rf_coex_hooks_p_set = 0x40002a84;
btdm_con_maxevtime_cal_impl = 0x40002a90;
btdm_controller_get_compile_version_impl = 0x40002a9c;
btdm_controller_rom_data_init = 0x40002aa8;
btdm_dis_privacy_err_report_impl = 0x40002ab4;
btdm_disable_adv_delay_impl = 0x40002ac0;
btdm_enable_scan_continue_impl = 0x40002acc;
btdm_enable_scan_forever_impl = 0x40002ad8;
btdm_get_power_state_impl = 0x40002ae4;
btdm_get_prevent_sleep_flag_impl = 0x40002af0;
btdm_power_state_active_impl = 0x40002afc;
btdm_switch_phy_coded_impl = 0x40002b08;
hci_acl_data_handler = 0x40002b14;
hci_disconnect_cmd_handler = 0x40002b20;
hci_le_con_upd_cmd_handler = 0x40002b2c;
hci_le_ltk_req_neg_reply_cmd_handler = 0x40002b38;
hci_le_ltk_req_reply_cmd_handler = 0x40002b44;
hci_le_rd_chnl_map_cmd_handler = 0x40002b50;
hci_le_rd_phy_cmd_handler = 0x40002b5c;
hci_le_rd_rem_feats_cmd_handler = 0x40002b68;
hci_le_rem_con_param_req_neg_reply_cmd_handler = 0x40002b74;
hci_le_rem_con_param_req_reply_cmd_handler = 0x40002b80;
hci_le_set_data_len_cmd_handler = 0x40002b8c;
hci_le_set_phy_cmd_handler = 0x40002b98;
hci_le_start_enc_cmd_handler = 0x40002ba4;
hci_rd_auth_payl_to_cmd_handler = 0x40002bb0;
hci_rd_rem_ver_info_cmd_handler = 0x40002bbc;
hci_rd_rssi_cmd_handler = 0x40002bc8;
hci_rd_tx_pwr_lvl_cmd_handler = 0x40002bd4;
hci_vs_set_pref_slave_evt_dur_cmd_handler = 0x40002be0;
hci_vs_set_pref_slave_latency_cmd_handler = 0x40002bec;
hci_wr_auth_payl_to_cmd_handler = 0x40002bf8;
ll_channel_map_ind_handler = 0x40002c04;
ll_connection_param_req_handler = 0x40002c10;
ll_connection_param_rsp_handler = 0x40002c1c;
ll_connection_update_ind_handler = 0x40002c28;
ll_enc_req_handler = 0x40002c34;
ll_enc_rsp_handler = 0x40002c40;
ll_feature_req_handler = 0x40002c4c;
ll_feature_rsp_handler = 0x40002c58;
ll_length_req_handler = 0x40002c64;
ll_length_rsp_handler = 0x40002c70;
ll_min_used_channels_ind_handler = 0x40002c7c;
ll_pause_enc_req_handler = 0x40002c88;
ll_pause_enc_rsp_handler = 0x40002c94;
ll_phy_req_handler = 0x40002ca0;
ll_phy_rsp_handler = 0x40002cac;
ll_phy_update_ind_handler = 0x40002cb8;
ll_ping_req_handler = 0x40002cc4;
ll_ping_rsp_handler = 0x40002cd0;
ll_slave_feature_req_handler = 0x40002cdc;
ll_start_enc_req_handler = 0x40002ce8;
ll_start_enc_rsp_handler = 0x40002cf4;
ll_terminate_ind_handler = 0x40002d00;
ll_version_ind_handler = 0x40002d0c;
llc_auth_payl_nearly_to_handler = 0x40002d18;
llc_auth_payl_real_to_handler = 0x40002d24;
llc_encrypt_ind_handler = 0x40002d30;
llc_hci_command_handler_wrapper = 0x40002d3c;
llc_ll_connection_param_req_pdu_send = 0x40002d48;
llc_ll_connection_param_rsp_pdu_send = 0x40002d54;
llc_ll_connection_update_ind_pdu_send = 0x40002d60;
llc_ll_enc_req_pdu_send = 0x40002d6c;
llc_ll_enc_rsp_pdu_send = 0x40002d78;
llc_ll_feature_req_pdu_send = 0x40002d84;
llc_ll_feature_rsp_pdu_send = 0x40002d90;
llc_ll_length_req_pdu_send = 0x40002d9c;
llc_ll_length_rsp_pdu_send = 0x40002da8;
llc_ll_pause_enc_req_pdu_send = 0x40002db4;
llc_ll_pause_enc_rsp_pdu_send = 0x40002dc0;
llc_ll_phy_req_pdu_send = 0x40002dcc;
llc_ll_phy_rsp_pdu_send = 0x40002dd8;
llc_ll_ping_req_pdu_send = 0x40002de4;
llc_ll_ping_rsp_pdu_send = 0x40002df0;
llc_ll_start_enc_req_pdu_send = 0x40002dfc;
llc_ll_start_enc_rsp_pdu_send = 0x40002e08;
llc_ll_terminate_ind_pdu_send = 0x40002e14;
llc_ll_unknown_rsp_pdu_send = 0x40002e20;
llc_llcp_ch_map_update_ind_pdu_send = 0x40002e2c;
llc_llcp_phy_upd_ind_pdu_send = 0x40002e38;
llc_llcp_version_ind_pdu_send = 0x40002e44;
llc_op_ch_map_upd_ind_handler = 0x40002e50;
llc_op_con_upd_ind_handler = 0x40002e5c;
llc_op_disconnect_ind_handler = 0x40002e68;
llc_op_dl_upd_ind_handler = 0x40002e74;
llc_op_encrypt_ind_handler = 0x40002e80;
llc_op_feats_exch_ind_handler = 0x40002e8c;
llc_op_le_ping_ind_handler = 0x40002e98;
llc_op_phy_upd_ind_handler = 0x40002ea4;
llc_op_ver_exch_ind_handler = 0x40002eb0;
llc_stopped_ind_handler = 0x40002ebc;
lld_acl_rx_ind_handler = 0x40002ec8;
lld_acl_tx_cfm_handler = 0x40002ed4;
lld_adv_end_ind_handler = 0x40002ee0;
lld_adv_rep_ind_handler = 0x40002eec;
lld_ch_map_upd_cfm_handler = 0x40002ef8;
lld_con_estab_ind_handler = 0x40002f04;
lld_con_evt_sd_evt_time_set = 0x40002f10;
lld_con_offset_upd_ind_handler = 0x40002f1c;
lld_con_param_upd_cfm_handler = 0x40002f28;
lld_disc_ind_handler = 0x40002f34;
lld_init_end_ind_handler = 0x40002f40;
lld_llcp_rx_ind_handler_wrapper = 0x40002f4c;
lld_llcp_tx_cfm_handler = 0x40002f58;
lld_per_adv_end_ind_handler = 0x40002f64;
lld_per_adv_rep_ind_handler = 0x40002f70;
lld_per_adv_rx_end_ind_handler = 0x40002f7c;
lld_phy_coded_500k_get = 0x40002f88;
lld_phy_upd_cfm_handler = 0x40002f94;
lld_scan_end_ind_handler = 0x40002fa0;
lld_scan_req_ind_handler = 0x40002fac;
lld_sync_start_req_handler = 0x40002fb8;
lld_test_end_ind_handler = 0x40002fc4;
lld_update_rxbuf_handler = 0x40002fd0;
llm_ch_map_update_ind_handler = 0x40002fdc;
llm_hci_command_handler_wrapper = 0x40002fe8;
llm_scan_period_to_handler = 0x40002ff4;
r_Add2SelfBigHex256 = 0x40003000;
r_AddBigHex256 = 0x4000300c;
r_AddBigHexModP256 = 0x40003018;
r_AddP256 = 0x40003024;
r_AddPdiv2_256 = 0x40003030;
r_GF_Jacobian_Point_Addition256 = 0x4000303c;
r_GF_Jacobian_Point_Double256 = 0x40003048;
r_GF_Point_Jacobian_To_Affine256 = 0x40003054;
r_MultiplyBigHexByUint32_256 = 0x40003060;
r_MultiplyBigHexModP256 = 0x4000306c;
r_MultiplyByU16ModP256 = 0x40003078;
r_SubtractBigHex256 = 0x40003084;
r_SubtractBigHexMod256 = 0x40003090;
r_SubtractBigHexUint32_256 = 0x4000309c;
r_SubtractFromSelfBigHex256 = 0x400030a8;
r_SubtractFromSelfBigHexSign256 = 0x400030b4;
r_aes_alloc = 0x400030c0;
r_aes_ccm_continue = 0x400030cc;
r_aes_ccm_process_e = 0x400030d8;
r_aes_ccm_xor_128_lsb = 0x400030e4;
r_aes_ccm_xor_128_msb = 0x400030f0;
r_aes_cmac_continue = 0x400030fc;
r_aes_cmac_start = 0x40003108;
r_aes_k1_continue = 0x40003114;
r_aes_k2_continue = 0x40003120;
r_aes_k3_continue = 0x4000312c;
r_aes_k4_continue = 0x40003138;
r_aes_shift_left_128 = 0x40003144;
r_aes_start = 0x40003150;
r_aes_xor_128 = 0x4000315c;
r_assert_err = 0x40003168;
r_assert_param = 0x40003174;
r_assert_warn = 0x40003180;
r_bigHexInversion256 = 0x4000318c;
r_ble_sw_cca_check_isr = 0x40003198;
r_ble_util_buf_acl_tx_alloc = 0x400031a4;
r_ble_util_buf_acl_tx_elt_get = 0x400031b0;
r_ble_util_buf_acl_tx_free = 0x400031bc;
r_ble_util_buf_acl_tx_free_in_isr = 0x400031c8;
r_ble_util_buf_adv_tx_alloc = 0x400031d4;
r_ble_util_buf_adv_tx_free = 0x400031e0;
r_ble_util_buf_adv_tx_free_in_isr = 0x400031ec;
r_ble_util_buf_env_deinit = 0x400031f8;
r_ble_util_buf_env_init = 0x40003204;
r_ble_util_buf_get_rx_buf_nb = 0x40003210;
r_ble_util_buf_get_rx_buf_size = 0x4000321c;
r_ble_util_buf_llcp_tx_alloc = 0x40003228;
r_ble_util_buf_llcp_tx_free = 0x40003234;
r_ble_util_buf_rx_alloc = 0x40003240;
r_ble_util_buf_rx_alloc_in_isr = 0x4000324c;
r_ble_util_buf_rx_free = 0x40003258;
r_ble_util_buf_rx_free_in_isr = 0x40003264;
r_ble_util_buf_set_rx_buf_nb = 0x40003270;
r_ble_util_buf_set_rx_buf_size = 0x4000327c;
r_ble_util_data_rx_buf_reset = 0x40003288;
r_bt_bb_get_intr_mask = 0x40003294;
r_bt_bb_intr_clear = 0x400032a0;
r_bt_bb_intr_mask_set = 0x400032ac;
r_bt_rf_coex_cfg_set = 0x400032c4;
r_bt_rf_coex_conn_dynamic_pti_en_get = 0x400032d0;
r_bt_rf_coex_ext_adv_dynamic_pti_en_get = 0x400032e8;
r_bt_rf_coex_ext_scan_dynamic_pti_en_get = 0x400032f4;
r_bt_rf_coex_legacy_adv_dynamic_pti_en_get = 0x40003300;
r_bt_rf_coex_per_adv_dynamic_pti_en_get = 0x4000330c;
r_bt_rf_coex_pti_table_get = 0x40003318;
r_bt_rf_coex_st_param_get = 0x40003324;
r_bt_rf_coex_st_param_set = 0x40003330;
r_bt_rf_coex_sync_scan_dynamic_pti_en_get = 0x4000333c;
r_bt_rma_apply_rule_cs_fmt = 0x40003348;
r_bt_rma_apply_rule_cs_idx = 0x40003354;
r_bt_rma_configure = 0x40003360;
r_bt_rma_deregister_rule_cs_fmt = 0x4000336c;
r_bt_rma_deregister_rule_cs_idx = 0x40003378;
r_bt_rma_get_ant_by_act = 0x40003384;
r_bt_rma_init = 0x40003390;
r_bt_rma_register_rule_cs_fmt = 0x4000339c;
r_bt_rma_register_rule_cs_idx = 0x400033a8;
r_bt_rtp_apply_rule_cs_fmt = 0x400033b4;
r_bt_rtp_apply_rule_cs_idx = 0x400033c0;
r_bt_rtp_deregister_rule_cs_fmt = 0x400033cc;
r_bt_rtp_deregister_rule_cs_idx = 0x400033d8;
r_bt_rtp_init = 0x400033f0;
r_bt_rtp_register_rule_cs_fmt = 0x400033fc;
r_bt_rtp_register_rule_cs_idx = 0x40003408;
r_btdm_isr = 0x40003414;
r_cali_phase_match_p = 0x40003444;
r_cmp_abs_time = 0x40003450;
r_cmp_dest_id = 0x4000345c;
r_cmp_timer_id = 0x40003468;
r_co_bdaddr_compare = 0x40003474;
r_co_ble_pkt_dur_in_us = 0x40003480;
r_co_list_extract = 0x4000348c;
r_co_list_extract_after = 0x40003498;
r_co_list_extract_sublist = 0x400034a4;
r_co_list_find = 0x400034b0;
r_co_list_init = 0x400034bc;
r_co_list_insert_after = 0x400034c8;
r_co_list_insert_before = 0x400034d4;
r_co_list_merge = 0x400034e0;
r_co_list_pool_init = 0x400034ec;
r_co_list_pop_front = 0x400034f8;
r_co_list_push_back = 0x40003504;
r_co_list_push_back_sublist = 0x40003510;
r_co_list_push_front = 0x4000351c;
r_co_list_size = 0x40003528;
r_co_nb_good_le_channels = 0x40003534;
r_co_util_pack = 0x40003540;
r_co_util_read_array_size = 0x4000354c;
r_co_util_unpack = 0x40003558;
r_dbg_env_deinit = 0x40003564;
r_dbg_env_init = 0x40003570;
r_dbg_platform_reset_complete = 0x4000357c;
r_dl_upd_proc_start = 0x40003588;
r_dump_data = 0x40003594;
r_ecc_abort_key256_generation = 0x400035a0;
r_ecc_gen_new_public_key = 0x400035ac;
r_ecc_gen_new_secret_key = 0x400035b8;
r_ecc_generate_key256 = 0x400035c4;
r_ecc_get_debug_Keys = 0x400035d0;
r_ecc_init = 0x400035dc;
r_ecc_is_valid_point = 0x400035e8;
r_ecc_multiplication_event_handler = 0x400035f4;
r_ecc_point_multiplication_win_256 = 0x40003600;
r_emi_alloc_em_mapping_by_offset = 0x4000360c;
r_emi_base_reg_lut_show = 0x40003618;
r_emi_em_base_reg_show = 0x40003624;
r_emi_free_em_mapping_by_offset = 0x40003630;
r_emi_get_em_mapping_idx_by_offset = 0x4000363c;
r_emi_get_mem_addr_by_offset = 0x40003648;
r_emi_overwrite_em_mapping_by_offset = 0x40003654;
r_esp_vendor_hci_command_handler = 0x40003660;
r_get_stack_usage = 0x4000366c;
r_h4tl_acl_hdr_rx_evt_handler = 0x40003678;
r_h4tl_cmd_hdr_rx_evt_handler = 0x40003684;
r_h4tl_cmd_pld_rx_evt_handler = 0x40003690;
r_h4tl_eif_io_event_post = 0x4000369c;
r_h4tl_eif_register = 0x400036a8;
r_h4tl_init = 0x400036b4;
r_h4tl_out_of_sync = 0x400036c0;
r_h4tl_out_of_sync_check = 0x400036cc;
r_h4tl_read_hdr = 0x400036d8;
r_h4tl_read_next_out_of_sync = 0x400036e4;
r_h4tl_read_payl = 0x400036f0;
r_h4tl_read_start = 0x400036fc;
r_h4tl_rx_acl_hdr_extract = 0x40003708;
r_h4tl_rx_cmd_hdr_extract = 0x40003714;
r_h4tl_rx_done = 0x40003720;
r_h4tl_start = 0x4000372c;
r_h4tl_stop = 0x40003738;
r_h4tl_tx_done = 0x40003744;
r_h4tl_tx_evt_handler = 0x40003750;
r_h4tl_write = 0x4000375c;
r_hci_acl_tx_data_alloc = 0x40003768;
r_hci_acl_tx_data_received = 0x40003774;
r_hci_basic_cmd_send_2_controller = 0x40003780;
r_hci_ble_adv_report_filter_check = 0x4000378c;
r_hci_ble_adv_report_tx_check = 0x40003798;
r_hci_ble_conhdl_register = 0x400037a4;
r_hci_ble_conhdl_unregister = 0x400037b0;
r_hci_build_acl_data = 0x400037bc;
r_hci_build_cc_evt = 0x400037c8;
r_hci_build_cs_evt = 0x400037d4;
r_hci_build_evt = 0x400037e0;
r_hci_build_le_evt = 0x400037ec;
r_hci_cmd_get_max_param_size = 0x400037f8;
r_hci_cmd_received = 0x40003804;
r_hci_cmd_reject = 0x40003810;
r_hci_evt_mask_check = 0x4000381c;
r_hci_evt_mask_set = 0x40003828;
r_hci_fc_acl_buf_size_set = 0x40003834;
r_hci_fc_acl_en = 0x40003840;
r_hci_fc_acl_packet_sent = 0x4000384c;
r_hci_fc_check_host_available_nb_acl_packets = 0x40003858;
r_hci_fc_host_nb_acl_pkts_complete = 0x40003864;
r_hci_fc_init = 0x40003870;
r_hci_look_for_cmd_desc = 0x4000387c;
r_hci_look_for_evt_desc = 0x40003888;
r_hci_look_for_le_evt_desc = 0x40003894;
r_hci_look_for_le_evt_desc_esp = 0x400038a0;
r_hci_pack_bytes = 0x400038ac;
r_hci_send_2_controller = 0x400038c4;
r_hci_send_2_host = 0x400038d0;
r_hci_tl_c2h_data_flow_on = 0x400038dc;
r_hci_tl_cmd_hdr_rx_evt_handler = 0x400038e8;
r_hci_tl_cmd_pld_rx_evt_handler = 0x400038f4;
r_hci_tl_get_pkt = 0x40003900;
r_hci_tl_hci_pkt_handler = 0x4000390c;
r_hci_tl_hci_tx_done_evt_handler = 0x40003918;
r_hci_tl_inc_nb_h2c_cmd_pkts = 0x40003924;
r_hci_tl_save_pkt = 0x40003930;
r_hci_tl_send = 0x4000393c;
r_hci_tx_done = 0x40003948;
r_hci_tx_start = 0x40003954;
r_hci_tx_trigger = 0x40003960;
r_isValidSecretKey_256 = 0x4000396c;
r_ke_check_malloc = 0x40003978;
r_ke_event_callback_set = 0x40003984;
r_ke_event_clear = 0x40003990;
r_ke_event_flush = 0x4000399c;
r_ke_event_get = 0x400039a8;
r_ke_event_get_all = 0x400039b4;
r_ke_event_init = 0x400039c0;
r_ke_event_schedule = 0x400039cc;
r_ke_event_set = 0x400039d8;
r_ke_flush = 0x400039e4;
r_ke_free = 0x400039f0;
r_ke_handler_search = 0x400039fc;
r_ke_init = 0x40003a08;
r_ke_is_free = 0x40003a14;
r_ke_malloc = 0x40003a20;
r_ke_mem_init = 0x40003a2c;
r_ke_mem_is_empty = 0x40003a38;
r_ke_mem_is_in_heap = 0x40003a44;
r_ke_msg_alloc = 0x40003a50;
r_ke_msg_dest_id_get = 0x40003a5c;
r_ke_msg_discard = 0x40003a68;
r_ke_msg_forward = 0x40003a74;
r_ke_msg_forward_new_id = 0x40003a80;
r_ke_msg_free = 0x40003a8c;
r_ke_msg_in_queue = 0x40003a98;
r_ke_msg_save = 0x40003aa4;
r_ke_msg_send = 0x40003ab0;
r_ke_msg_send_basic = 0x40003abc;
r_ke_msg_src_id_get = 0x40003ac8;
r_ke_queue_extract = 0x40003ad4;
r_ke_queue_insert = 0x40003ae0;
r_ke_sleep_check = 0x40003aec;
r_ke_state_get = 0x40003af8;
r_ke_state_set = 0x40003b04;
r_ke_task_check = 0x40003b10;
r_ke_task_create = 0x40003b1c;
r_ke_task_delete = 0x40003b28;
r_ke_task_handler_get = 0x40003b34;
r_ke_task_init = 0x40003b40;
r_ke_task_msg_flush = 0x40003b4c;
r_ke_task_saved_update = 0x40003b58;
r_ke_time = 0x40003b70;
r_ke_time_cmp = 0x40003b7c;
r_ke_time_past = 0x40003b88;
r_ke_timer_active = 0x40003b94;
r_ke_timer_adjust_all = 0x40003ba0;
r_ke_timer_clear = 0x40003bac;
r_ke_timer_init = 0x40003bb8;
r_ke_timer_schedule = 0x40003bc4;
r_ke_timer_set = 0x40003bd0;
r_led_init = 0x40003bdc;
r_led_set_all = 0x40003be8;
r_llc_aes_res_cb = 0x40003bf4;
r_llc_ch_map_up_proc_err_cb = 0x40003c00;
r_llc_cleanup = 0x40003c0c;
r_llc_cmd_cmp_send = 0x40003c18;
r_llc_cmd_stat_send = 0x40003c24;
r_llc_con_move_cbk = 0x40003c30;
r_llc_con_plan_set_update = 0x40003c3c;
r_llc_con_upd_param_in_range = 0x40003c48;
r_llc_disconnect = 0x40003c54;
r_llc_disconnect_end = 0x40003c60;
r_llc_disconnect_proc_continue = 0x40003c6c;
r_llc_disconnect_proc_err_cb = 0x40003c78;
r_llc_dl_chg_check = 0x40003c84;
r_llc_dle_proc_err_cb = 0x40003c90;
r_llc_feats_exch_proc_err_cb = 0x40003c9c;
r_llc_hci_cmd_handler_tab_p_get = 0x40003ca8;
r_llc_hci_con_param_req_evt_send = 0x40003cc0;
r_llc_hci_con_upd_info_send = 0x40003ccc;
r_llc_hci_disconnected_dis = 0x40003cd8;
r_llc_hci_dl_upd_info_send = 0x40003ce4;
r_llc_hci_enc_evt_send = 0x40003cf0;
r_llc_hci_feats_info_send = 0x40003cfc;
r_llc_hci_le_phy_upd_cmp_evt_send = 0x40003d08;
r_llc_hci_ltk_request_evt_send = 0x40003d14;
r_llc_hci_nb_cmp_pkts_evt_send = 0x40003d20;
r_llc_hci_version_info_send = 0x40003d2c;
r_llc_init_term_proc = 0x40003d38;
r_llc_iv_skd_rand_gen = 0x40003d44;
r_llc_le_ping_proc_continue = 0x40003d50;
r_llc_le_ping_proc_err_cb = 0x40003d5c;
/* r_llc_le_ping_restart = 0x40003d68; */
r_llc_le_ping_set = 0x40003d74;
r_llc_ll_pause_enc_rsp_ack_handler = 0x40003d80;
r_llc_ll_reject_ind_ack_handler = 0x40003d8c;
r_llc_ll_reject_ind_pdu_send = 0x40003d98;
r_llc_ll_start_enc_rsp_ack_handler = 0x40003da4;
r_llc_ll_terminate_ind_ack = 0x40003db0;
r_llc_ll_unknown_ind_handler = 0x40003dbc;
r_llc_llcp_send = 0x40003dc8;
r_llc_llcp_state_set = 0x40003dd4;
r_llc_llcp_trans_timer_set = 0x40003de0;
r_llc_llcp_tx_check = 0x40003dec;
/* r_llc_loc_ch_map_proc_continue = 0x40003df8; */
r_llc_loc_con_upd_proc_err_cb = 0x40003e10;
r_llc_loc_dl_upd_proc_continue = 0x40003e1c;
r_llc_loc_encrypt_proc_continue = 0x40003e28;
r_llc_loc_encrypt_proc_err_cb = 0x40003e34;
r_llc_loc_feats_exch_proc_continue = 0x40003e40;
r_llc_loc_phy_upd_proc_err_cb = 0x40003e58;
r_llc_msg_handler_tab_p_get = 0x40003e64;
r_llc_pref_param_compute = 0x40003e70;
r_llc_proc_collision_check = 0x40003e7c;
r_llc_proc_err_ind = 0x40003e88;
r_llc_proc_get = 0x40003e94;
r_llc_proc_id_get = 0x40003ea0;
r_llc_proc_reg = 0x40003eac;
r_llc_proc_state_get = 0x40003eb8;
r_llc_proc_state_set = 0x40003ec4;
r_llc_proc_timer_pause_set = 0x40003ed0;
r_llc_proc_timer_set = 0x40003edc;
r_llc_proc_unreg = 0x40003ee8;
r_llc_rem_ch_map_proc_continue = 0x40003ef4;
r_llc_rem_con_upd_proc_err_cb = 0x40003f0c;
r_llc_rem_dl_upd_proc = 0x40003f18;
r_llc_rem_encrypt_proc_continue = 0x40003f24;
r_llc_rem_encrypt_proc_err_cb = 0x40003f30;
r_llc_rem_phy_upd_proc_continue = 0x40003f3c;
r_llc_rem_phy_upd_proc_err_cb = 0x40003f48;
r_llc_role_get = 0x40003f54;
r_llc_sk_gen = 0x40003f60;
r_llc_start = 0x40003f6c;
r_llc_stop = 0x40003f78;
r_llc_ver_exch_loc_proc_continue = 0x40003f84;
r_llc_ver_proc_err_cb = 0x40003f90;
r_llcp_pdu_handler_tab_p_get = 0x40003f9c;
r_lld_aa_gen = 0x40003fa8;
r_lld_adv_adv_data_set = 0x40003fb4;
r_lld_adv_adv_data_update = 0x40003fc0;
r_lld_adv_aux_ch_idx_set = 0x40003fcc;
r_lld_adv_aux_evt_canceled_cbk = 0x40003fd8;
r_lld_adv_aux_evt_start_cbk = 0x40003fe4;
r_lld_adv_coex_check_ext_adv_synced = 0x40003ff0;
r_lld_adv_coex_env_reset = 0x40003ffc;
r_lld_adv_duration_update = 0x40004008;
r_lld_adv_dynamic_pti_process = 0x40004014;
r_lld_adv_end = 0x40004020;
r_lld_adv_evt_canceled_cbk = 0x4000402c;
r_lld_adv_evt_start_cbk = 0x40004038;
r_lld_adv_ext_chain_construct = 0x40004044;
r_lld_adv_ext_pkt_prepare = 0x40004050;
r_lld_adv_frm_cbk = 0x4000405c;
r_lld_adv_frm_isr = 0x40004068;
r_lld_adv_frm_skip_isr = 0x40004074;
r_lld_adv_init = 0x40004080;
r_lld_adv_pkt_rx = 0x4000408c;
r_lld_adv_pkt_rx_connect_ind = 0x40004098;
r_lld_adv_pkt_rx_send_scan_req_evt = 0x400040a4;
r_lld_adv_rand_addr_update = 0x400040b0;
r_lld_adv_restart = 0x400040bc;
r_lld_adv_scan_rsp_data_set = 0x400040c8;
r_lld_adv_scan_rsp_data_update = 0x400040d4;
r_lld_adv_set_tx_power = 0x400040e0;
r_lld_adv_start = 0x400040ec;
r_lld_adv_stop = 0x400040f8;
r_lld_adv_sync_info_set = 0x40004104;
r_lld_adv_sync_info_update = 0x40004110;
r_lld_calc_aux_rx = 0x4000411c;
r_lld_cca_alloc = 0x40004128;
r_lld_cca_data_reset = 0x40004134;
r_lld_cca_free = 0x40004140;
r_lld_ch_assess_data_get = 0x4000414c;
r_lld_ch_idx_get = 0x40004158;
r_lld_ch_map_set = 0x40004164;
r_lld_channel_assess = 0x40004170;
r_lld_con_activity_act_offset_compute = 0x4000417c;
r_lld_con_activity_offset_compute = 0x40004188;
r_lld_con_ch_map_update = 0x40004194;
r_lld_con_cleanup = 0x400041a0;
r_lld_con_current_tx_power_get = 0x400041ac;
r_lld_con_data_flow_set = 0x400041b8;
r_lld_con_data_len_update = 0x400041c4;
r_lld_con_data_tx = 0x400041d0;
r_lld_con_enc_key_load = 0x400041dc;
r_lld_con_event_counter_get = 0x400041e8;
r_lld_con_evt_canceled_cbk = 0x400041f4;
r_lld_con_evt_duration_min_get = 0x40004200;
r_lld_con_evt_max_eff_time_cal = 0x4000420c;
r_lld_con_evt_sd_evt_time_get = 0x40004218;
r_lld_con_evt_start_cbk = 0x40004224;
r_lld_con_evt_time_update = 0x40004230;
r_lld_con_free_all_tx_buf = 0x4000423c;
r_lld_con_frm_cbk = 0x40004248;
r_lld_con_frm_isr = 0x40004254;
r_lld_con_frm_skip_isr = 0x40004260;
r_lld_con_init = 0x4000426c;
r_lld_con_llcp_tx = 0x40004278;
r_lld_con_max_lat_calc = 0x40004284;
r_lld_con_offset_get = 0x40004290;
r_lld_con_param_update = 0x4000429c;
r_lld_con_phys_update = 0x400042a8;
r_lld_con_pref_slave_evt_dur_set = 0x400042b4;
r_lld_con_pref_slave_latency_set = 0x400042c0;
r_lld_con_rssi_get = 0x400042cc;
r_lld_con_rx = 0x400042d8;
/* r_lld_con_rx_channel_assess = 0x400042e4; */
r_lld_con_rx_enc = 0x400042f0;
r_lld_con_rx_isr = 0x400042fc;
r_lld_con_rx_link_info_check = 0x40004308;
r_lld_con_rx_llcp_check = 0x40004314;
r_lld_con_rx_sync_time_update = 0x40004320;
r_lld_con_set_tx_power = 0x40004338;
r_lld_con_start = 0x40004344;
r_lld_con_tx = 0x4000435c;
r_lld_con_tx_enc = 0x40004368;
r_lld_con_tx_isr = 0x40004374;
r_lld_con_tx_len_update = 0x40004380;
r_lld_con_tx_len_update_for_intv = 0x4000438c;
r_lld_con_tx_len_update_for_rate = 0x40004398;
r_lld_con_tx_prog = 0x400043a4;
r_lld_conn_dynamic_pti_process = 0x400043b0;
r_lld_continue_scan_rx_isr_end_process = 0x400043bc;
r_lld_ext_scan_dynamic_pti_process = 0x400043c8;
r_lld_hw_cca_end_isr = 0x400043d4;
r_lld_hw_cca_evt_handler = 0x400043e0;
r_lld_hw_cca_isr = 0x400043ec;
r_lld_init_cal_anchor_point = 0x400043f8;
r_lld_init_compute_winoffset = 0x40004404;
r_lld_init_connect_req_pack = 0x40004410;
r_lld_init_end = 0x4000441c;
r_lld_init_evt_canceled_cbk = 0x40004428;
r_lld_init_evt_start_cbk = 0x40004434;
r_lld_init_frm_cbk = 0x40004440;
r_lld_init_frm_eof_isr = 0x4000444c;
r_lld_init_frm_skip_isr = 0x40004458;
r_lld_init_init = 0x40004464;
r_lld_init_process_pkt_rx = 0x40004470;
r_lld_init_process_pkt_rx_adv_ext_ind = 0x4000447c;
r_lld_init_process_pkt_rx_adv_ind_or_direct_ind = 0x40004488;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0x40004494;
r_lld_init_process_pkt_tx = 0x400044a0;
r_lld_init_process_pkt_tx_cal_con_timestamp = 0x400044ac;
r_lld_init_sched = 0x400044b8;
r_lld_init_set_tx_power = 0x400044c4;
r_lld_init_start = 0x400044d0;
r_lld_init_stop = 0x400044dc;
r_lld_instant_proc_end = 0x400044e8;
r_lld_per_adv_ch_map_update = 0x40004500;
r_lld_per_adv_chain_construct = 0x4000450c;
r_lld_per_adv_cleanup = 0x40004518;
r_lld_per_adv_coex_env_reset = 0x40004524;
r_lld_per_adv_data_set = 0x40004530;
r_lld_per_adv_data_update = 0x4000453c;
r_lld_per_adv_dynamic_pti_process = 0x40004548;
r_lld_per_adv_evt_canceled_cbk = 0x40004554;
r_lld_per_adv_evt_start_cbk = 0x40004560;
r_lld_per_adv_ext_pkt_prepare = 0x4000456c;
r_lld_per_adv_frm_cbk = 0x40004578;
r_lld_per_adv_frm_isr = 0x40004584;
r_lld_per_adv_frm_skip_isr = 0x40004590;
r_lld_per_adv_init = 0x4000459c;
r_lld_per_adv_init_info_get = 0x400045a8;
r_lld_per_adv_list_add = 0x400045b4;
r_lld_per_adv_list_rem = 0x400045c0;
r_lld_per_adv_set_tx_power = 0x400045d8;
r_lld_per_adv_start = 0x400045e4;
r_lld_per_adv_stop = 0x400045f0;
r_lld_per_adv_sync_info_get = 0x400045fc;
r_lld_process_cca_data = 0x40004608;
r_lld_ral_search = 0x40004614;
r_lld_read_clock = 0x40004620;
r_lld_res_list_add = 0x4000462c;
r_lld_res_list_is_empty = 0x40004644;
r_lld_res_list_local_rpa_get = 0x40004650;
r_lld_res_list_peer_rpa_get = 0x4000465c;
r_lld_res_list_peer_update = 0x40004668;
/* r_lld_res_list_priv_mode_update = 0x40004674; */
r_lld_reset_reg = 0x4000468c;
r_lld_rpa_renew = 0x40004698;
r_lld_rpa_renew_evt_canceled_cbk = 0x400046a4;
r_lld_rpa_renew_evt_start_cbk = 0x400046b0;
r_lld_rpa_renew_instant_cbk = 0x400046bc;
r_lld_rxdesc_check = 0x400046c8;
r_lld_rxdesc_free = 0x400046d4;
r_lld_scan_create_sync = 0x400046e0;
r_lld_scan_create_sync_cancel = 0x400046ec;
r_lld_scan_end = 0x400046f8;
r_lld_scan_evt_canceled_cbk = 0x40004704;
r_lld_scan_evt_start_cbk = 0x40004710;
r_lld_scan_frm_cbk = 0x4000471c;
r_lld_scan_frm_eof_isr = 0x40004728;
r_lld_scan_frm_rx_isr = 0x40004734;
r_lld_scan_frm_skip_isr = 0x40004740;
r_lld_scan_init = 0x4000474c;
r_lld_scan_params_update = 0x40004758;
r_lld_scan_process_pkt_rx_aux_adv_ind = 0x4000477c;
r_lld_scan_process_pkt_rx_aux_chain_ind = 0x40004788;
r_lld_scan_process_pkt_rx_aux_scan_rsp = 0x40004794;
r_lld_scan_process_pkt_rx_ext_adv = 0x400047a0;
r_lld_scan_process_pkt_rx_ext_adv_ind = 0x400047ac;
r_lld_scan_process_pkt_rx_legacy_adv = 0x400047b8;
r_lld_scan_restart = 0x400047c4;
r_lld_scan_sched = 0x400047d0;
r_lld_scan_set_tx_power = 0x400047dc;
r_lld_scan_start = 0x400047e8;
r_lld_scan_stop = 0x400047f4;
r_lld_scan_sync_accept = 0x40004800;
r_lld_scan_sync_info_unpack = 0x4000480c;
r_lld_scan_trunc_ind = 0x40004818;
r_lld_sw_cca_evt_handler = 0x40004824;
r_lld_sw_cca_isr = 0x40004830;
r_lld_sync_ch_map_update = 0x4000483c;
r_lld_sync_cleanup = 0x40004848;
r_lld_sync_evt_canceled_cbk = 0x40004854;
r_lld_sync_evt_start_cbk = 0x40004860;
r_lld_sync_frm_cbk = 0x4000486c;
r_lld_sync_frm_eof_isr = 0x40004878;
r_lld_sync_frm_rx_isr = 0x40004884;
r_lld_sync_frm_skip_isr = 0x40004890;
r_lld_sync_init = 0x4000489c;
r_lld_sync_process_pkt_rx = 0x400048a8;
r_lld_sync_process_pkt_rx_aux_sync_ind = 0x400048b4;
r_lld_sync_process_pkt_rx_pkt_check = 0x400048c0;
r_lld_sync_scan_dynamic_pti_process = 0x400048cc;
r_lld_sync_sched = 0x400048d8;
r_lld_sync_start = 0x400048e4;
r_lld_sync_stop = 0x400048f0;
r_lld_sync_trunc_ind = 0x400048fc;
r_lld_test_cleanup = 0x40004908;
r_lld_test_evt_canceled_cbk = 0x40004914;
r_lld_test_evt_start_cbk = 0x40004920;
r_lld_test_freq2chnl = 0x4000492c;
r_lld_test_frm_cbk = 0x40004938;
r_lld_test_frm_isr = 0x40004944;
r_lld_test_init = 0x40004950;
r_lld_test_rx_isr = 0x4000495c;
r_lld_test_set_tx_power = 0x40004968;
r_lld_test_start = 0x40004974;
/* r_lld_test_stop = 0x40004980;*/
r_lld_update_rxbuf = 0x4000498c;
r_lld_update_rxbuf_isr = 0x40004998;
r_lld_white_list_add = 0x400049a4;
r_lld_white_list_rem = 0x400049b0;
r_llm_activity_free_get = 0x400049bc;
r_llm_activity_free_set = 0x400049c8;
r_llm_activity_syncing_get = 0x400049d4;
r_llm_adv_con_len_check = 0x400049e0;
r_llm_adv_hdl_to_id = 0x400049ec;
r_llm_adv_rep_flow_control_check = 0x400049f8;
r_llm_adv_rep_flow_control_update = 0x40004a04;
r_llm_adv_reports_list_check = 0x40004a10;
r_llm_adv_set_all_release = 0x40004a1c;
r_llm_adv_set_dft_params = 0x40004a28;
r_llm_adv_set_release = 0x40004a34;
r_llm_aes_res_cb = 0x40004a40;
r_llm_ble_update_adv_flow_control = 0x40004a4c;
r_llm_ch_map_update = 0x40004a58;
r_llm_cmd_cmp_send = 0x40004a64;
r_llm_cmd_stat_send = 0x40004a70;
r_llm_dev_list_empty_entry = 0x40004a7c;
r_llm_dev_list_search = 0x40004a88;
r_llm_env_adv_dup_filt_deinit = 0x40004a94;
r_llm_env_adv_dup_filt_init = 0x40004aa0;
r_llm_init_ble_adv_report_flow_contol = 0x40004aac;
r_llm_is_dev_connected = 0x40004ab8;
r_llm_is_dev_synced = 0x40004ac4;
r_llm_is_non_con_act_ongoing_check = 0x40004ad0;
r_llm_is_wl_accessible = 0x40004adc;
r_llm_le_evt_mask_check = 0x40004ae8;
r_llm_link_disc = 0x40004b00;
r_llm_master_ch_map_get = 0x40004b0c;
r_llm_msg_handler_tab_p_get = 0x40004b18;
r_llm_no_activity = 0x40004b24;
r_llm_per_adv_slot_dur = 0x40004b30;
r_llm_plan_elt_get = 0x40004b3c;
r_llm_rx_path_comp_get = 0x40004b48;
r_llm_scan_start = 0x40004b54;
r_llm_scan_sync_acad_attach = 0x40004b60;
r_llm_scan_sync_acad_detach = 0x40004b6c;
r_llm_send_adv_lost_event_to_host = 0x40004b78;
r_llm_tx_path_comp_get = 0x40004b84;
r_misc_deinit = 0x40004b90;
r_misc_free_em_buf_in_isr = 0x40004b9c;
r_misc_init = 0x40004ba8;
r_misc_msg_handler_tab_p_get = 0x40004bb4;
r_notEqual256 = 0x40004bc0;
r_phy_upd_proc_start = 0x40004bcc;
r_platform_reset = 0x40004bd8;
r_rf_em_init = 0x40004bf0;
r_rf_force_agc_enable = 0x40004bfc;
r_rf_reg_rd = 0x40004c08;
r_rf_reg_wr = 0x40004c14;
r_rf_reset = 0x40004c20;
r_rf_rssi_convert = 0x40004c2c;
r_rf_rw_v9_le_disable = 0x40004c38;
r_rf_rw_v9_le_enable = 0x40004c44;
r_rf_sleep = 0x40004c50;
r_rf_util_cs_fmt_convert = 0x40004c74;
r_rw_crypto_aes_ccm = 0x40004c80;
r_rw_crypto_aes_encrypt = 0x40004c8c;
r_rw_crypto_aes_init = 0x40004c98;
r_rw_crypto_aes_k1 = 0x40004ca4;
r_rw_crypto_aes_k2 = 0x40004cb0;
r_rw_crypto_aes_k3 = 0x40004cbc;
r_rw_crypto_aes_k4 = 0x40004cc8;
r_rw_crypto_aes_rand = 0x40004cd4;
r_rw_crypto_aes_result_handler = 0x40004ce0;
r_rw_crypto_aes_s1 = 0x40004cec;
r_rw_cryto_aes_cmac = 0x40004cf8;
r_rw_v9_init_em_radio_table = 0x40004d04;
r_rwble_sleep_enter = 0x40004d1c;
r_rwble_sleep_wakeup_end = 0x40004d28;
/* r_rwbtdm_isr_wrapper = 0x40004d34; */
r_rwip_active_check = 0x40004d40;
r_rwip_aes_encrypt = 0x40004d4c;
/* r_rwip_assert = 0x40004d58; */
r_rwip_crypt_evt_handler = 0x40004d64;
r_rwip_crypt_isr_handler = 0x40004d70;
r_rwip_eif_get = 0x40004d7c;
r_rwip_half_slot_2_lpcycles = 0x40004d88;
r_rwip_hus_2_lpcycles = 0x40004d94;
r_rwip_isr = 0x40004da0;
r_rwip_lpcycles_2_hus = 0x40004dac;
r_rwip_prevent_sleep_clear = 0x40004db8;
r_rwip_prevent_sleep_set = 0x40004dc4;
r_rwip_schedule = 0x40004dd0;
r_rwip_sleep = 0x40004ddc;
r_rwip_sw_int_handler = 0x40004de8;
r_rwip_sw_int_req = 0x40004df4;
r_rwip_time_get = 0x40004e00;
r_rwip_timer_10ms_handler = 0x40004e0c;
r_rwip_timer_10ms_set = 0x40004e18;
r_rwip_timer_hs_handler = 0x40004e24;
r_rwip_timer_hs_set = 0x40004e30;
r_rwip_timer_hus_handler = 0x40004e3c;
r_rwip_timer_hus_set = 0x40004e48;
r_rwip_wakeup = 0x40004e54;
/* r_rwip_wakeup_end = 0x40004e60; */
r_rwip_wlcoex_set = 0x40004e6c;
r_sch_alarm_clear = 0x40004e78;
r_sch_alarm_init = 0x40004e84;
r_sch_alarm_prog = 0x40004e90;
r_sch_alarm_set = 0x40004e9c;
r_sch_alarm_timer_isr = 0x40004ea8;
r_sch_arb_conflict_check = 0x40004eb4;
r_sch_arb_elt_cancel = 0x40004ec0;
r_sch_arb_init = 0x40004ed8;
r_sch_arb_insert = 0x40004ee4;
r_sch_arb_prog_timer = 0x40004ef0;
r_sch_arb_remove = 0x40004efc;
r_sch_arb_sw_isr = 0x40004f08;
r_sch_plan_chk = 0x40004f14;
r_sch_plan_clock_wrap_offset_update = 0x40004f20;
r_sch_plan_init = 0x40004f2c;
r_sch_plan_interval_req = 0x40004f38;
r_sch_plan_offset_max_calc = 0x40004f44;
r_sch_plan_offset_req = 0x40004f50;
r_sch_plan_position_range_compute = 0x40004f5c;
r_sch_plan_rem = 0x40004f68;
r_sch_plan_req = 0x40004f74;
r_sch_prog_init = 0x40004f98;
r_sch_prog_push = 0x40004fa4;
r_sch_prog_rx_isr = 0x40004fb0;
r_sch_prog_skip_isr = 0x40004fbc;
r_sch_prog_tx_isr = 0x40004fc8;
r_sch_slice_bg_add = 0x40004fd4;
r_sch_slice_bg_remove = 0x40004fe0;
r_sch_slice_compute = 0x40004fec;
r_sch_slice_fg_add = 0x40004ff8;
r_sch_slice_fg_remove = 0x40005004;
r_sch_slice_init = 0x40005010;
r_sch_slice_per_add = 0x4000501c;
r_sch_slice_per_remove = 0x40005028;
r_sdk_config_get_bt_sleep_enable = 0x40005034;
r_sdk_config_get_hl_derived_opts = 0x40005040;
r_sdk_config_get_opts = 0x4000504c;
r_sdk_config_get_priv_opts = 0x40005058;
r_sdk_config_set_bt_sleep_enable = 0x40005064;
r_sdk_config_set_hl_derived_opts = 0x40005070;
r_sdk_config_set_opts = 0x4000507c;
r_specialModP256 = 0x40005088;
r_unloaded_area_init = 0x40005094;
r_vhci_flow_off = 0x400050a0;
r_vhci_flow_on = 0x400050ac;
r_vhci_notify_host_send_available = 0x400050b8;
r_vhci_send_to_host = 0x400050c4;
r_vnd_hci_command_handler = 0x400050d0;
r_vshci_init = 0x400050dc;
vnd_hci_command_handler_wrapper = 0x400050e8;
r_lld_legacy_adv_dynamic_pti_get = 0x400050f4;
r_lld_legacy_adv_dynamic_pti_process = 0x40005100;
r_lld_ext_adv_dynamic_pti_get = 0x4000510c;
r_lld_ext_adv_dynamic_aux_pti_process = 0x40005118;
r_lld_ext_adv_dynamic_pti_process = 0x40005124;
/*
r_lld_adv_ext_pkt_prepare_set = 0x40005130;
*/
r_lld_adv_ext_chain_connectable_construct = 0x40005148;
r_lld_adv_pkt_rx_connect_post = 0x40005160;
r_lld_adv_start_init_evt_param = 0x4000516c;
r_lld_adv_start_set_cs = 0x40005178;
/* r_lld_adv_start_update_filter_policy = 0x40005184; */
r_lld_adv_start_schedule_asap = 0x40005190;
r_lld_con_tx_prog_new_packet_coex = 0x4000519c;
r_lld_per_adv_dynamic_pti_get = 0x400051b4;
r_lld_per_adv_evt_start_chm_upd = 0x400051c0;
r_lld_ext_scan_dynamic_pti_get = 0x400051cc;
r_lld_sync_insert = 0x400051e4;
/*
r_sch_prog_ble_push = 0x400051f0;
*/
r_sch_prog_bt_push = 0x400051fc;
r_lld_init_evt_end_type_set = 0x40005208;
r_lld_init_evt_end_type_get = 0x40005214;
r_lld_adv_direct_adv_use_rpa_addr_state_set = 0x40005220;
r_lld_adv_direct_adv_use_rpa_addr_state_get = 0x4000522c;
r_lld_init_evt_end_type_check_state_set = 0x40005238;
r_lld_init_evt_end_type_check_state_get = 0x40005244;
/* bluetooth hook funcs */
r_llc_loc_encrypt_proc_continue_hook = 0x40001c60;
r_llc_loc_phy_upd_proc_continue_hook = 0x40001c64;
r_llc_rem_phy_upd_proc_continue_hook = 0x40001c68;
r_lld_scan_frm_eof_isr_hook = 0x40001c6c;
r_lld_scan_evt_start_cbk_hook = 0x40001c70;
r_lld_scan_process_pkt_rx_ext_adv_hook = 0x40001c78;
r_lld_scan_sched_hook = 0x40001c7c;
r_lld_adv_evt_start_cbk_hook = 0x40001c84;
r_lld_adv_aux_evt_start_cbk_hook = 0x40001c88;
r_lld_adv_frm_isr_hook = 0x40001c8c;
r_lld_adv_start_init_evt_param_hook = 0x40001c90;
r_lld_con_evt_canceled_cbk_hook = 0x40001c94;
r_lld_con_frm_isr_hook = 0x40001c98;
r_lld_con_tx_hook = 0x40001c9c;
r_lld_con_rx_hook = 0x40001ca0;
r_lld_con_evt_start_cbk_hook = 0x40001ca4;
r_lld_con_tx_prog_new_packet_hook = 0x40001cac;
r_lld_init_frm_eof_isr_hook = 0x40001cb0;
r_lld_init_evt_start_cbk_hook = 0x40001cb4;
r_lld_init_sched_hook = 0x40001cbc;
r_lld_init_process_pkt_tx_hook = 0x40001cc0;
r_lld_per_adv_evt_start_cbk_hook = 0x40001cc4;
r_lld_per_adv_frm_isr_hook = 0x40001cc8;
r_lld_per_adv_start_hook = 0x40001ccc;
r_lld_sync_frm_eof_isr_hook = 0x40001cd0;
r_lld_sync_evt_start_cbk_hook = 0x40001cd4;
r_lld_sync_start_hook = 0x40001cd8;
r_lld_sync_process_pkt_rx_pkt_check_hook = 0x40001cdc;
r_sch_arb_insert_hook = 0x40001ce0;
r_sch_plan_offset_req_hook = 0x40001ce4;

View File

@ -776,825 +776,6 @@ rom_usb_osglue = 0x3fceffac;
Group bluetooth
***************************************/
/* Functions */
bt_rf_coex_get_dft_cfg = 0x40002a78;
bt_rf_coex_hooks_p_set = 0x40002a84;
btdm_con_maxevtime_cal_impl = 0x40002a90;
btdm_controller_get_compile_version_impl = 0x40002a9c;
btdm_controller_rom_data_init = 0x40002aa8;
btdm_dis_privacy_err_report_impl = 0x40002ab4;
btdm_disable_adv_delay_impl = 0x40002ac0;
btdm_enable_scan_continue_impl = 0x40002acc;
btdm_enable_scan_forever_impl = 0x40002ad8;
btdm_get_power_state_impl = 0x40002ae4;
btdm_get_prevent_sleep_flag_impl = 0x40002af0;
btdm_power_state_active_impl = 0x40002afc;
btdm_switch_phy_coded_impl = 0x40002b08;
hci_acl_data_handler = 0x40002b14;
hci_disconnect_cmd_handler = 0x40002b20;
hci_le_con_upd_cmd_handler = 0x40002b2c;
hci_le_ltk_req_neg_reply_cmd_handler = 0x40002b38;
hci_le_ltk_req_reply_cmd_handler = 0x40002b44;
hci_le_rd_chnl_map_cmd_handler = 0x40002b50;
hci_le_rd_phy_cmd_handler = 0x40002b5c;
hci_le_rd_rem_feats_cmd_handler = 0x40002b68;
hci_le_rem_con_param_req_neg_reply_cmd_handler = 0x40002b74;
hci_le_rem_con_param_req_reply_cmd_handler = 0x40002b80;
hci_le_set_data_len_cmd_handler = 0x40002b8c;
hci_le_set_phy_cmd_handler = 0x40002b98;
hci_le_start_enc_cmd_handler = 0x40002ba4;
hci_rd_auth_payl_to_cmd_handler = 0x40002bb0;
hci_rd_rem_ver_info_cmd_handler = 0x40002bbc;
hci_rd_rssi_cmd_handler = 0x40002bc8;
hci_rd_tx_pwr_lvl_cmd_handler = 0x40002bd4;
hci_vs_set_pref_slave_evt_dur_cmd_handler = 0x40002be0;
hci_vs_set_pref_slave_latency_cmd_handler = 0x40002bec;
hci_wr_auth_payl_to_cmd_handler = 0x40002bf8;
ll_channel_map_ind_handler = 0x40002c04;
ll_connection_param_req_handler = 0x40002c10;
ll_connection_param_rsp_handler = 0x40002c1c;
ll_connection_update_ind_handler = 0x40002c28;
ll_enc_req_handler = 0x40002c34;
ll_enc_rsp_handler = 0x40002c40;
ll_feature_req_handler = 0x40002c4c;
ll_feature_rsp_handler = 0x40002c58;
ll_length_req_handler = 0x40002c64;
ll_length_rsp_handler = 0x40002c70;
ll_min_used_channels_ind_handler = 0x40002c7c;
ll_pause_enc_req_handler = 0x40002c88;
ll_pause_enc_rsp_handler = 0x40002c94;
ll_phy_req_handler = 0x40002ca0;
ll_phy_rsp_handler = 0x40002cac;
ll_phy_update_ind_handler = 0x40002cb8;
ll_ping_req_handler = 0x40002cc4;
ll_ping_rsp_handler = 0x40002cd0;
ll_slave_feature_req_handler = 0x40002cdc;
ll_start_enc_req_handler = 0x40002ce8;
ll_start_enc_rsp_handler = 0x40002cf4;
ll_terminate_ind_handler = 0x40002d00;
ll_version_ind_handler = 0x40002d0c;
llc_auth_payl_nearly_to_handler = 0x40002d18;
llc_auth_payl_real_to_handler = 0x40002d24;
llc_encrypt_ind_handler = 0x40002d30;
llc_hci_command_handler_wrapper = 0x40002d3c;
llc_ll_connection_param_req_pdu_send = 0x40002d48;
llc_ll_connection_param_rsp_pdu_send = 0x40002d54;
llc_ll_connection_update_ind_pdu_send = 0x40002d60;
llc_ll_enc_req_pdu_send = 0x40002d6c;
llc_ll_enc_rsp_pdu_send = 0x40002d78;
llc_ll_feature_req_pdu_send = 0x40002d84;
llc_ll_feature_rsp_pdu_send = 0x40002d90;
llc_ll_length_req_pdu_send = 0x40002d9c;
llc_ll_length_rsp_pdu_send = 0x40002da8;
llc_ll_pause_enc_req_pdu_send = 0x40002db4;
llc_ll_pause_enc_rsp_pdu_send = 0x40002dc0;
llc_ll_phy_req_pdu_send = 0x40002dcc;
llc_ll_phy_rsp_pdu_send = 0x40002dd8;
llc_ll_ping_req_pdu_send = 0x40002de4;
llc_ll_ping_rsp_pdu_send = 0x40002df0;
llc_ll_start_enc_req_pdu_send = 0x40002dfc;
llc_ll_start_enc_rsp_pdu_send = 0x40002e08;
llc_ll_terminate_ind_pdu_send = 0x40002e14;
llc_ll_unknown_rsp_pdu_send = 0x40002e20;
llc_llcp_ch_map_update_ind_pdu_send = 0x40002e2c;
llc_llcp_phy_upd_ind_pdu_send = 0x40002e38;
llc_llcp_version_ind_pdu_send = 0x40002e44;
llc_op_ch_map_upd_ind_handler = 0x40002e50;
llc_op_con_upd_ind_handler = 0x40002e5c;
llc_op_disconnect_ind_handler = 0x40002e68;
llc_op_dl_upd_ind_handler = 0x40002e74;
llc_op_encrypt_ind_handler = 0x40002e80;
llc_op_feats_exch_ind_handler = 0x40002e8c;
llc_op_le_ping_ind_handler = 0x40002e98;
llc_op_phy_upd_ind_handler = 0x40002ea4;
llc_op_ver_exch_ind_handler = 0x40002eb0;
llc_stopped_ind_handler = 0x40002ebc;
lld_acl_rx_ind_handler = 0x40002ec8;
lld_acl_tx_cfm_handler = 0x40002ed4;
lld_adv_end_ind_handler = 0x40002ee0;
lld_adv_rep_ind_handler = 0x40002eec;
lld_ch_map_upd_cfm_handler = 0x40002ef8;
lld_con_estab_ind_handler = 0x40002f04;
lld_con_evt_sd_evt_time_set = 0x40002f10;
lld_con_offset_upd_ind_handler = 0x40002f1c;
lld_con_param_upd_cfm_handler = 0x40002f28;
lld_disc_ind_handler = 0x40002f34;
lld_init_end_ind_handler = 0x40002f40;
lld_llcp_rx_ind_handler_wrapper = 0x40002f4c;
lld_llcp_tx_cfm_handler = 0x40002f58;
lld_per_adv_end_ind_handler = 0x40002f64;
lld_per_adv_rep_ind_handler = 0x40002f70;
lld_per_adv_rx_end_ind_handler = 0x40002f7c;
lld_phy_coded_500k_get = 0x40002f88;
lld_phy_upd_cfm_handler = 0x40002f94;
lld_scan_end_ind_handler = 0x40002fa0;
lld_scan_req_ind_handler = 0x40002fac;
lld_sync_start_req_handler = 0x40002fb8;
lld_test_end_ind_handler = 0x40002fc4;
lld_update_rxbuf_handler = 0x40002fd0;
llm_ch_map_update_ind_handler = 0x40002fdc;
llm_hci_command_handler_wrapper = 0x40002fe8;
llm_scan_period_to_handler = 0x40002ff4;
r_Add2SelfBigHex256 = 0x40003000;
r_AddBigHex256 = 0x4000300c;
r_AddBigHexModP256 = 0x40003018;
r_AddP256 = 0x40003024;
r_AddPdiv2_256 = 0x40003030;
r_GF_Jacobian_Point_Addition256 = 0x4000303c;
r_GF_Jacobian_Point_Double256 = 0x40003048;
r_GF_Point_Jacobian_To_Affine256 = 0x40003054;
r_MultiplyBigHexByUint32_256 = 0x40003060;
r_MultiplyBigHexModP256 = 0x4000306c;
r_MultiplyByU16ModP256 = 0x40003078;
r_SubtractBigHex256 = 0x40003084;
r_SubtractBigHexMod256 = 0x40003090;
r_SubtractBigHexUint32_256 = 0x4000309c;
r_SubtractFromSelfBigHex256 = 0x400030a8;
r_SubtractFromSelfBigHexSign256 = 0x400030b4;
r_aes_alloc = 0x400030c0;
r_aes_ccm_continue = 0x400030cc;
r_aes_ccm_process_e = 0x400030d8;
r_aes_ccm_xor_128_lsb = 0x400030e4;
r_aes_ccm_xor_128_msb = 0x400030f0;
r_aes_cmac_continue = 0x400030fc;
r_aes_cmac_start = 0x40003108;
r_aes_k1_continue = 0x40003114;
r_aes_k2_continue = 0x40003120;
r_aes_k3_continue = 0x4000312c;
r_aes_k4_continue = 0x40003138;
r_aes_shift_left_128 = 0x40003144;
r_aes_start = 0x40003150;
r_aes_xor_128 = 0x4000315c;
r_assert_err = 0x40003168;
r_assert_param = 0x40003174;
r_assert_warn = 0x40003180;
r_bigHexInversion256 = 0x4000318c;
r_ble_sw_cca_check_isr = 0x40003198;
r_ble_util_buf_acl_tx_alloc = 0x400031a4;
r_ble_util_buf_acl_tx_elt_get = 0x400031b0;
r_ble_util_buf_acl_tx_free = 0x400031bc;
r_ble_util_buf_acl_tx_free_in_isr = 0x400031c8;
r_ble_util_buf_adv_tx_alloc = 0x400031d4;
r_ble_util_buf_adv_tx_free = 0x400031e0;
r_ble_util_buf_adv_tx_free_in_isr = 0x400031ec;
r_ble_util_buf_env_deinit = 0x400031f8;
r_ble_util_buf_env_init = 0x40003204;
r_ble_util_buf_get_rx_buf_nb = 0x40003210;
r_ble_util_buf_get_rx_buf_size = 0x4000321c;
r_ble_util_buf_llcp_tx_alloc = 0x40003228;
r_ble_util_buf_llcp_tx_free = 0x40003234;
r_ble_util_buf_rx_alloc = 0x40003240;
r_ble_util_buf_rx_alloc_in_isr = 0x4000324c;
r_ble_util_buf_rx_free = 0x40003258;
r_ble_util_buf_rx_free_in_isr = 0x40003264;
r_ble_util_buf_set_rx_buf_nb = 0x40003270;
r_ble_util_buf_set_rx_buf_size = 0x4000327c;
r_ble_util_data_rx_buf_reset = 0x40003288;
r_bt_bb_get_intr_mask = 0x40003294;
r_bt_bb_intr_clear = 0x400032a0;
r_bt_bb_intr_mask_set = 0x400032ac;
r_bt_rf_coex_cfg_set = 0x400032c4;
r_bt_rf_coex_conn_dynamic_pti_en_get = 0x400032d0;
r_bt_rf_coex_ext_adv_dynamic_pti_en_get = 0x400032e8;
r_bt_rf_coex_ext_scan_dynamic_pti_en_get = 0x400032f4;
r_bt_rf_coex_legacy_adv_dynamic_pti_en_get = 0x40003300;
r_bt_rf_coex_per_adv_dynamic_pti_en_get = 0x4000330c;
r_bt_rf_coex_pti_table_get = 0x40003318;
r_bt_rf_coex_st_param_get = 0x40003324;
r_bt_rf_coex_st_param_set = 0x40003330;
r_bt_rf_coex_sync_scan_dynamic_pti_en_get = 0x4000333c;
r_bt_rma_apply_rule_cs_fmt = 0x40003348;
r_bt_rma_apply_rule_cs_idx = 0x40003354;
r_bt_rma_configure = 0x40003360;
r_bt_rma_deregister_rule_cs_fmt = 0x4000336c;
r_bt_rma_deregister_rule_cs_idx = 0x40003378;
r_bt_rma_get_ant_by_act = 0x40003384;
r_bt_rma_init = 0x40003390;
r_bt_rma_register_rule_cs_fmt = 0x4000339c;
r_bt_rma_register_rule_cs_idx = 0x400033a8;
r_bt_rtp_apply_rule_cs_fmt = 0x400033b4;
r_bt_rtp_apply_rule_cs_idx = 0x400033c0;
r_bt_rtp_deregister_rule_cs_fmt = 0x400033cc;
r_bt_rtp_deregister_rule_cs_idx = 0x400033d8;
r_bt_rtp_init = 0x400033f0;
r_bt_rtp_register_rule_cs_fmt = 0x400033fc;
r_bt_rtp_register_rule_cs_idx = 0x40003408;
r_btdm_isr = 0x40003414;
r_cali_phase_match_p = 0x40003444;
r_cmp_abs_time = 0x40003450;
r_cmp_dest_id = 0x4000345c;
r_cmp_timer_id = 0x40003468;
r_co_bdaddr_compare = 0x40003474;
r_co_ble_pkt_dur_in_us = 0x40003480;
r_co_list_extract = 0x4000348c;
r_co_list_extract_after = 0x40003498;
r_co_list_extract_sublist = 0x400034a4;
r_co_list_find = 0x400034b0;
r_co_list_init = 0x400034bc;
r_co_list_insert_after = 0x400034c8;
r_co_list_insert_before = 0x400034d4;
r_co_list_merge = 0x400034e0;
r_co_list_pool_init = 0x400034ec;
r_co_list_pop_front = 0x400034f8;
r_co_list_push_back = 0x40003504;
r_co_list_push_back_sublist = 0x40003510;
r_co_list_push_front = 0x4000351c;
r_co_list_size = 0x40003528;
r_co_nb_good_le_channels = 0x40003534;
r_co_util_pack = 0x40003540;
r_co_util_read_array_size = 0x4000354c;
r_co_util_unpack = 0x40003558;
r_dbg_env_deinit = 0x40003564;
r_dbg_env_init = 0x40003570;
r_dbg_platform_reset_complete = 0x4000357c;
r_dl_upd_proc_start = 0x40003588;
r_dump_data = 0x40003594;
r_ecc_abort_key256_generation = 0x400035a0;
r_ecc_gen_new_public_key = 0x400035ac;
r_ecc_gen_new_secret_key = 0x400035b8;
r_ecc_generate_key256 = 0x400035c4;
r_ecc_get_debug_Keys = 0x400035d0;
r_ecc_init = 0x400035dc;
r_ecc_is_valid_point = 0x400035e8;
r_ecc_multiplication_event_handler = 0x400035f4;
r_ecc_point_multiplication_win_256 = 0x40003600;
r_emi_alloc_em_mapping_by_offset = 0x4000360c;
r_emi_base_reg_lut_show = 0x40003618;
r_emi_em_base_reg_show = 0x40003624;
r_emi_free_em_mapping_by_offset = 0x40003630;
r_emi_get_em_mapping_idx_by_offset = 0x4000363c;
r_emi_get_mem_addr_by_offset = 0x40003648;
r_emi_overwrite_em_mapping_by_offset = 0x40003654;
r_esp_vendor_hci_command_handler = 0x40003660;
r_get_stack_usage = 0x4000366c;
r_h4tl_acl_hdr_rx_evt_handler = 0x40003678;
r_h4tl_cmd_hdr_rx_evt_handler = 0x40003684;
r_h4tl_cmd_pld_rx_evt_handler = 0x40003690;
r_h4tl_eif_io_event_post = 0x4000369c;
r_h4tl_eif_register = 0x400036a8;
r_h4tl_init = 0x400036b4;
r_h4tl_out_of_sync = 0x400036c0;
r_h4tl_out_of_sync_check = 0x400036cc;
r_h4tl_read_hdr = 0x400036d8;
r_h4tl_read_next_out_of_sync = 0x400036e4;
r_h4tl_read_payl = 0x400036f0;
r_h4tl_read_start = 0x400036fc;
r_h4tl_rx_acl_hdr_extract = 0x40003708;
r_h4tl_rx_cmd_hdr_extract = 0x40003714;
r_h4tl_rx_done = 0x40003720;
r_h4tl_start = 0x4000372c;
r_h4tl_stop = 0x40003738;
r_h4tl_tx_done = 0x40003744;
r_h4tl_tx_evt_handler = 0x40003750;
r_h4tl_write = 0x4000375c;
r_hci_acl_tx_data_alloc = 0x40003768;
r_hci_acl_tx_data_received = 0x40003774;
r_hci_basic_cmd_send_2_controller = 0x40003780;
r_hci_ble_adv_report_filter_check = 0x4000378c;
r_hci_ble_adv_report_tx_check = 0x40003798;
r_hci_ble_conhdl_register = 0x400037a4;
r_hci_ble_conhdl_unregister = 0x400037b0;
r_hci_build_acl_data = 0x400037bc;
r_hci_build_cc_evt = 0x400037c8;
r_hci_build_cs_evt = 0x400037d4;
r_hci_build_evt = 0x400037e0;
r_hci_build_le_evt = 0x400037ec;
r_hci_cmd_get_max_param_size = 0x400037f8;
r_hci_cmd_received = 0x40003804;
r_hci_cmd_reject = 0x40003810;
r_hci_evt_mask_check = 0x4000381c;
r_hci_evt_mask_set = 0x40003828;
r_hci_fc_acl_buf_size_set = 0x40003834;
r_hci_fc_acl_en = 0x40003840;
r_hci_fc_acl_packet_sent = 0x4000384c;
r_hci_fc_check_host_available_nb_acl_packets = 0x40003858;
r_hci_fc_host_nb_acl_pkts_complete = 0x40003864;
r_hci_fc_init = 0x40003870;
r_hci_look_for_cmd_desc = 0x4000387c;
r_hci_look_for_evt_desc = 0x40003888;
r_hci_look_for_le_evt_desc = 0x40003894;
r_hci_look_for_le_evt_desc_esp = 0x400038a0;
r_hci_pack_bytes = 0x400038ac;
r_hci_send_2_controller = 0x400038c4;
r_hci_send_2_host = 0x400038d0;
r_hci_tl_c2h_data_flow_on = 0x400038dc;
r_hci_tl_cmd_hdr_rx_evt_handler = 0x400038e8;
r_hci_tl_cmd_pld_rx_evt_handler = 0x400038f4;
r_hci_tl_get_pkt = 0x40003900;
r_hci_tl_hci_pkt_handler = 0x4000390c;
r_hci_tl_hci_tx_done_evt_handler = 0x40003918;
r_hci_tl_inc_nb_h2c_cmd_pkts = 0x40003924;
r_hci_tl_save_pkt = 0x40003930;
r_hci_tl_send = 0x4000393c;
r_hci_tx_done = 0x40003948;
r_hci_tx_start = 0x40003954;
r_hci_tx_trigger = 0x40003960;
r_isValidSecretKey_256 = 0x4000396c;
r_ke_check_malloc = 0x40003978;
r_ke_event_callback_set = 0x40003984;
r_ke_event_clear = 0x40003990;
r_ke_event_flush = 0x4000399c;
r_ke_event_get = 0x400039a8;
r_ke_event_get_all = 0x400039b4;
r_ke_event_init = 0x400039c0;
r_ke_event_schedule = 0x400039cc;
r_ke_event_set = 0x400039d8;
r_ke_flush = 0x400039e4;
r_ke_free = 0x400039f0;
r_ke_handler_search = 0x400039fc;
r_ke_init = 0x40003a08;
r_ke_is_free = 0x40003a14;
r_ke_malloc = 0x40003a20;
r_ke_mem_init = 0x40003a2c;
r_ke_mem_is_empty = 0x40003a38;
r_ke_mem_is_in_heap = 0x40003a44;
r_ke_msg_alloc = 0x40003a50;
r_ke_msg_dest_id_get = 0x40003a5c;
r_ke_msg_discard = 0x40003a68;
r_ke_msg_forward = 0x40003a74;
r_ke_msg_forward_new_id = 0x40003a80;
r_ke_msg_free = 0x40003a8c;
r_ke_msg_in_queue = 0x40003a98;
r_ke_msg_save = 0x40003aa4;
r_ke_msg_send = 0x40003ab0;
r_ke_msg_send_basic = 0x40003abc;
r_ke_msg_src_id_get = 0x40003ac8;
r_ke_queue_extract = 0x40003ad4;
r_ke_queue_insert = 0x40003ae0;
r_ke_sleep_check = 0x40003aec;
r_ke_state_get = 0x40003af8;
r_ke_state_set = 0x40003b04;
r_ke_task_check = 0x40003b10;
r_ke_task_create = 0x40003b1c;
r_ke_task_delete = 0x40003b28;
r_ke_task_handler_get = 0x40003b34;
r_ke_task_init = 0x40003b40;
r_ke_task_msg_flush = 0x40003b4c;
r_ke_task_saved_update = 0x40003b58;
r_ke_time = 0x40003b70;
r_ke_time_cmp = 0x40003b7c;
r_ke_time_past = 0x40003b88;
r_ke_timer_active = 0x40003b94;
r_ke_timer_adjust_all = 0x40003ba0;
r_ke_timer_clear = 0x40003bac;
r_ke_timer_init = 0x40003bb8;
r_ke_timer_schedule = 0x40003bc4;
r_ke_timer_set = 0x40003bd0;
r_led_init = 0x40003bdc;
r_led_set_all = 0x40003be8;
r_llc_aes_res_cb = 0x40003bf4;
r_llc_ch_map_up_proc_err_cb = 0x40003c00;
r_llc_cleanup = 0x40003c0c;
r_llc_cmd_cmp_send = 0x40003c18;
r_llc_cmd_stat_send = 0x40003c24;
r_llc_con_move_cbk = 0x40003c30;
r_llc_con_plan_set_update = 0x40003c3c;
r_llc_con_upd_param_in_range = 0x40003c48;
r_llc_disconnect = 0x40003c54;
r_llc_disconnect_end = 0x40003c60;
r_llc_disconnect_proc_continue = 0x40003c6c;
r_llc_disconnect_proc_err_cb = 0x40003c78;
r_llc_dl_chg_check = 0x40003c84;
r_llc_dle_proc_err_cb = 0x40003c90;
r_llc_feats_exch_proc_err_cb = 0x40003c9c;
r_llc_hci_cmd_handler_tab_p_get = 0x40003ca8;
r_llc_hci_con_param_req_evt_send = 0x40003cc0;
r_llc_hci_con_upd_info_send = 0x40003ccc;
r_llc_hci_disconnected_dis = 0x40003cd8;
r_llc_hci_dl_upd_info_send = 0x40003ce4;
r_llc_hci_enc_evt_send = 0x40003cf0;
r_llc_hci_feats_info_send = 0x40003cfc;
r_llc_hci_le_phy_upd_cmp_evt_send = 0x40003d08;
r_llc_hci_ltk_request_evt_send = 0x40003d14;
r_llc_hci_nb_cmp_pkts_evt_send = 0x40003d20;
r_llc_hci_version_info_send = 0x40003d2c;
r_llc_init_term_proc = 0x40003d38;
r_llc_iv_skd_rand_gen = 0x40003d44;
r_llc_le_ping_proc_continue = 0x40003d50;
r_llc_le_ping_proc_err_cb = 0x40003d5c;
/* r_llc_le_ping_restart = 0x40003d68; */
r_llc_le_ping_set = 0x40003d74;
r_llc_ll_pause_enc_rsp_ack_handler = 0x40003d80;
r_llc_ll_reject_ind_ack_handler = 0x40003d8c;
r_llc_ll_reject_ind_pdu_send = 0x40003d98;
r_llc_ll_start_enc_rsp_ack_handler = 0x40003da4;
r_llc_ll_terminate_ind_ack = 0x40003db0;
r_llc_ll_unknown_ind_handler = 0x40003dbc;
r_llc_llcp_send = 0x40003dc8;
r_llc_llcp_state_set = 0x40003dd4;
r_llc_llcp_trans_timer_set = 0x40003de0;
r_llc_llcp_tx_check = 0x40003dec;
/* r_llc_loc_ch_map_proc_continue = 0x40003df8; */
r_llc_loc_con_upd_proc_err_cb = 0x40003e10;
r_llc_loc_dl_upd_proc_continue = 0x40003e1c;
r_llc_loc_encrypt_proc_continue = 0x40003e28;
r_llc_loc_encrypt_proc_err_cb = 0x40003e34;
r_llc_loc_feats_exch_proc_continue = 0x40003e40;
r_llc_loc_phy_upd_proc_err_cb = 0x40003e58;
r_llc_msg_handler_tab_p_get = 0x40003e64;
r_llc_pref_param_compute = 0x40003e70;
r_llc_proc_collision_check = 0x40003e7c;
r_llc_proc_err_ind = 0x40003e88;
r_llc_proc_get = 0x40003e94;
r_llc_proc_id_get = 0x40003ea0;
r_llc_proc_reg = 0x40003eac;
r_llc_proc_state_get = 0x40003eb8;
r_llc_proc_state_set = 0x40003ec4;
r_llc_proc_timer_pause_set = 0x40003ed0;
r_llc_proc_timer_set = 0x40003edc;
r_llc_proc_unreg = 0x40003ee8;
r_llc_rem_ch_map_proc_continue = 0x40003ef4;
r_llc_rem_con_upd_proc_err_cb = 0x40003f0c;
r_llc_rem_dl_upd_proc = 0x40003f18;
r_llc_rem_encrypt_proc_continue = 0x40003f24;
r_llc_rem_encrypt_proc_err_cb = 0x40003f30;
r_llc_rem_phy_upd_proc_continue = 0x40003f3c;
r_llc_rem_phy_upd_proc_err_cb = 0x40003f48;
r_llc_role_get = 0x40003f54;
r_llc_sk_gen = 0x40003f60;
r_llc_start = 0x40003f6c;
r_llc_stop = 0x40003f78;
r_llc_ver_exch_loc_proc_continue = 0x40003f84;
r_llc_ver_proc_err_cb = 0x40003f90;
r_llcp_pdu_handler_tab_p_get = 0x40003f9c;
r_lld_aa_gen = 0x40003fa8;
r_lld_adv_adv_data_set = 0x40003fb4;
r_lld_adv_adv_data_update = 0x40003fc0;
r_lld_adv_aux_ch_idx_set = 0x40003fcc;
r_lld_adv_aux_evt_canceled_cbk = 0x40003fd8;
r_lld_adv_aux_evt_start_cbk = 0x40003fe4;
r_lld_adv_coex_check_ext_adv_synced = 0x40003ff0;
r_lld_adv_coex_env_reset = 0x40003ffc;
r_lld_adv_duration_update = 0x40004008;
r_lld_adv_dynamic_pti_process = 0x40004014;
r_lld_adv_end = 0x40004020;
r_lld_adv_evt_canceled_cbk = 0x4000402c;
r_lld_adv_evt_start_cbk = 0x40004038;
r_lld_adv_ext_chain_construct = 0x40004044;
r_lld_adv_ext_pkt_prepare = 0x40004050;
r_lld_adv_frm_cbk = 0x4000405c;
r_lld_adv_frm_isr = 0x40004068;
r_lld_adv_frm_skip_isr = 0x40004074;
r_lld_adv_init = 0x40004080;
r_lld_adv_pkt_rx = 0x4000408c;
r_lld_adv_pkt_rx_connect_ind = 0x40004098;
r_lld_adv_pkt_rx_send_scan_req_evt = 0x400040a4;
r_lld_adv_rand_addr_update = 0x400040b0;
r_lld_adv_restart = 0x400040bc;
r_lld_adv_scan_rsp_data_set = 0x400040c8;
r_lld_adv_scan_rsp_data_update = 0x400040d4;
r_lld_adv_set_tx_power = 0x400040e0;
r_lld_adv_start = 0x400040ec;
r_lld_adv_stop = 0x400040f8;
r_lld_adv_sync_info_set = 0x40004104;
r_lld_adv_sync_info_update = 0x40004110;
r_lld_calc_aux_rx = 0x4000411c;
r_lld_cca_alloc = 0x40004128;
r_lld_cca_data_reset = 0x40004134;
r_lld_cca_free = 0x40004140;
r_lld_ch_assess_data_get = 0x4000414c;
r_lld_ch_idx_get = 0x40004158;
r_lld_ch_map_set = 0x40004164;
r_lld_channel_assess = 0x40004170;
r_lld_con_activity_act_offset_compute = 0x4000417c;
r_lld_con_activity_offset_compute = 0x40004188;
r_lld_con_ch_map_update = 0x40004194;
r_lld_con_cleanup = 0x400041a0;
r_lld_con_current_tx_power_get = 0x400041ac;
r_lld_con_data_flow_set = 0x400041b8;
r_lld_con_data_len_update = 0x400041c4;
r_lld_con_data_tx = 0x400041d0;
r_lld_con_enc_key_load = 0x400041dc;
r_lld_con_event_counter_get = 0x400041e8;
r_lld_con_evt_canceled_cbk = 0x400041f4;
r_lld_con_evt_duration_min_get = 0x40004200;
r_lld_con_evt_max_eff_time_cal = 0x4000420c;
r_lld_con_evt_sd_evt_time_get = 0x40004218;
r_lld_con_evt_start_cbk = 0x40004224;
r_lld_con_evt_time_update = 0x40004230;
r_lld_con_free_all_tx_buf = 0x4000423c;
r_lld_con_frm_cbk = 0x40004248;
r_lld_con_frm_isr = 0x40004254;
r_lld_con_frm_skip_isr = 0x40004260;
r_lld_con_init = 0x4000426c;
r_lld_con_llcp_tx = 0x40004278;
r_lld_con_max_lat_calc = 0x40004284;
r_lld_con_offset_get = 0x40004290;
r_lld_con_param_update = 0x4000429c;
r_lld_con_phys_update = 0x400042a8;
r_lld_con_pref_slave_evt_dur_set = 0x400042b4;
r_lld_con_pref_slave_latency_set = 0x400042c0;
r_lld_con_rssi_get = 0x400042cc;
r_lld_con_rx = 0x400042d8;
/* r_lld_con_rx_channel_assess = 0x400042e4; */
r_lld_con_rx_enc = 0x400042f0;
r_lld_con_rx_isr = 0x400042fc;
r_lld_con_rx_link_info_check = 0x40004308;
r_lld_con_rx_llcp_check = 0x40004314;
r_lld_con_rx_sync_time_update = 0x40004320;
r_lld_con_set_tx_power = 0x40004338;
r_lld_con_start = 0x40004344;
r_lld_con_tx = 0x4000435c;
r_lld_con_tx_enc = 0x40004368;
r_lld_con_tx_isr = 0x40004374;
r_lld_con_tx_len_update = 0x40004380;
r_lld_con_tx_len_update_for_intv = 0x4000438c;
r_lld_con_tx_len_update_for_rate = 0x40004398;
r_lld_con_tx_prog = 0x400043a4;
r_lld_conn_dynamic_pti_process = 0x400043b0;
r_lld_continue_scan_rx_isr_end_process = 0x400043bc;
r_lld_ext_scan_dynamic_pti_process = 0x400043c8;
r_lld_hw_cca_end_isr = 0x400043d4;
r_lld_hw_cca_evt_handler = 0x400043e0;
r_lld_hw_cca_isr = 0x400043ec;
r_lld_init_cal_anchor_point = 0x400043f8;
r_lld_init_compute_winoffset = 0x40004404;
r_lld_init_connect_req_pack = 0x40004410;
r_lld_init_end = 0x4000441c;
r_lld_init_evt_canceled_cbk = 0x40004428;
r_lld_init_evt_start_cbk = 0x40004434;
r_lld_init_frm_cbk = 0x40004440;
r_lld_init_frm_eof_isr = 0x4000444c;
r_lld_init_frm_skip_isr = 0x40004458;
r_lld_init_init = 0x40004464;
r_lld_init_process_pkt_rx = 0x40004470;
r_lld_init_process_pkt_rx_adv_ext_ind = 0x4000447c;
r_lld_init_process_pkt_rx_adv_ind_or_direct_ind = 0x40004488;
r_lld_init_process_pkt_rx_aux_connect_rsp = 0x40004494;
r_lld_init_process_pkt_tx = 0x400044a0;
r_lld_init_process_pkt_tx_cal_con_timestamp = 0x400044ac;
r_lld_init_sched = 0x400044b8;
r_lld_init_set_tx_power = 0x400044c4;
r_lld_init_start = 0x400044d0;
r_lld_init_stop = 0x400044dc;
r_lld_instant_proc_end = 0x400044e8;
r_lld_per_adv_ch_map_update = 0x40004500;
r_lld_per_adv_chain_construct = 0x4000450c;
r_lld_per_adv_cleanup = 0x40004518;
r_lld_per_adv_coex_env_reset = 0x40004524;
r_lld_per_adv_data_set = 0x40004530;
r_lld_per_adv_data_update = 0x4000453c;
r_lld_per_adv_dynamic_pti_process = 0x40004548;
r_lld_per_adv_evt_canceled_cbk = 0x40004554;
r_lld_per_adv_evt_start_cbk = 0x40004560;
r_lld_per_adv_ext_pkt_prepare = 0x4000456c;
r_lld_per_adv_frm_cbk = 0x40004578;
r_lld_per_adv_frm_isr = 0x40004584;
r_lld_per_adv_frm_skip_isr = 0x40004590;
r_lld_per_adv_init = 0x4000459c;
r_lld_per_adv_init_info_get = 0x400045a8;
r_lld_per_adv_list_add = 0x400045b4;
r_lld_per_adv_list_rem = 0x400045c0;
r_lld_per_adv_set_tx_power = 0x400045d8;
r_lld_per_adv_start = 0x400045e4;
r_lld_per_adv_stop = 0x400045f0;
r_lld_per_adv_sync_info_get = 0x400045fc;
r_lld_process_cca_data = 0x40004608;
r_lld_ral_search = 0x40004614;
r_lld_read_clock = 0x40004620;
r_lld_res_list_add = 0x4000462c;
r_lld_res_list_is_empty = 0x40004644;
r_lld_res_list_local_rpa_get = 0x40004650;
r_lld_res_list_peer_rpa_get = 0x4000465c;
r_lld_res_list_peer_update = 0x40004668;
/* r_lld_res_list_priv_mode_update = 0x40004674; */
r_lld_reset_reg = 0x4000468c;
r_lld_rpa_renew = 0x40004698;
r_lld_rpa_renew_evt_canceled_cbk = 0x400046a4;
r_lld_rpa_renew_evt_start_cbk = 0x400046b0;
r_lld_rpa_renew_instant_cbk = 0x400046bc;
r_lld_rxdesc_check = 0x400046c8;
r_lld_rxdesc_free = 0x400046d4;
r_lld_scan_create_sync = 0x400046e0;
r_lld_scan_create_sync_cancel = 0x400046ec;
r_lld_scan_end = 0x400046f8;
r_lld_scan_evt_canceled_cbk = 0x40004704;
r_lld_scan_evt_start_cbk = 0x40004710;
r_lld_scan_frm_cbk = 0x4000471c;
r_lld_scan_frm_eof_isr = 0x40004728;
r_lld_scan_frm_rx_isr = 0x40004734;
r_lld_scan_frm_skip_isr = 0x40004740;
r_lld_scan_init = 0x4000474c;
r_lld_scan_params_update = 0x40004758;
r_lld_scan_process_pkt_rx_aux_adv_ind = 0x4000477c;
r_lld_scan_process_pkt_rx_aux_chain_ind = 0x40004788;
r_lld_scan_process_pkt_rx_aux_scan_rsp = 0x40004794;
r_lld_scan_process_pkt_rx_ext_adv = 0x400047a0;
r_lld_scan_process_pkt_rx_ext_adv_ind = 0x400047ac;
r_lld_scan_process_pkt_rx_legacy_adv = 0x400047b8;
r_lld_scan_restart = 0x400047c4;
r_lld_scan_sched = 0x400047d0;
r_lld_scan_set_tx_power = 0x400047dc;
r_lld_scan_start = 0x400047e8;
r_lld_scan_stop = 0x400047f4;
r_lld_scan_sync_accept = 0x40004800;
r_lld_scan_sync_info_unpack = 0x4000480c;
r_lld_scan_trunc_ind = 0x40004818;
r_lld_sw_cca_evt_handler = 0x40004824;
r_lld_sw_cca_isr = 0x40004830;
r_lld_sync_ch_map_update = 0x4000483c;
r_lld_sync_cleanup = 0x40004848;
r_lld_sync_evt_canceled_cbk = 0x40004854;
r_lld_sync_evt_start_cbk = 0x40004860;
r_lld_sync_frm_cbk = 0x4000486c;
r_lld_sync_frm_eof_isr = 0x40004878;
r_lld_sync_frm_rx_isr = 0x40004884;
r_lld_sync_frm_skip_isr = 0x40004890;
r_lld_sync_init = 0x4000489c;
r_lld_sync_process_pkt_rx = 0x400048a8;
r_lld_sync_process_pkt_rx_aux_sync_ind = 0x400048b4;
r_lld_sync_process_pkt_rx_pkt_check = 0x400048c0;
r_lld_sync_scan_dynamic_pti_process = 0x400048cc;
r_lld_sync_sched = 0x400048d8;
r_lld_sync_start = 0x400048e4;
r_lld_sync_stop = 0x400048f0;
r_lld_sync_trunc_ind = 0x400048fc;
r_lld_test_cleanup = 0x40004908;
r_lld_test_evt_canceled_cbk = 0x40004914;
r_lld_test_evt_start_cbk = 0x40004920;
r_lld_test_freq2chnl = 0x4000492c;
r_lld_test_frm_cbk = 0x40004938;
r_lld_test_frm_isr = 0x40004944;
r_lld_test_init = 0x40004950;
r_lld_test_rx_isr = 0x4000495c;
r_lld_test_set_tx_power = 0x40004968;
r_lld_test_start = 0x40004974;
/* r_lld_test_stop = 0x40004980;*/
r_lld_update_rxbuf = 0x4000498c;
r_lld_update_rxbuf_isr = 0x40004998;
r_lld_white_list_add = 0x400049a4;
r_lld_white_list_rem = 0x400049b0;
r_llm_activity_free_get = 0x400049bc;
r_llm_activity_free_set = 0x400049c8;
r_llm_activity_syncing_get = 0x400049d4;
r_llm_adv_con_len_check = 0x400049e0;
r_llm_adv_hdl_to_id = 0x400049ec;
r_llm_adv_rep_flow_control_check = 0x400049f8;
r_llm_adv_rep_flow_control_update = 0x40004a04;
r_llm_adv_reports_list_check = 0x40004a10;
r_llm_adv_set_all_release = 0x40004a1c;
r_llm_adv_set_dft_params = 0x40004a28;
r_llm_adv_set_release = 0x40004a34;
r_llm_aes_res_cb = 0x40004a40;
r_llm_ble_update_adv_flow_control = 0x40004a4c;
r_llm_ch_map_update = 0x40004a58;
r_llm_cmd_cmp_send = 0x40004a64;
r_llm_cmd_stat_send = 0x40004a70;
r_llm_dev_list_empty_entry = 0x40004a7c;
r_llm_dev_list_search = 0x40004a88;
r_llm_env_adv_dup_filt_deinit = 0x40004a94;
r_llm_env_adv_dup_filt_init = 0x40004aa0;
r_llm_init_ble_adv_report_flow_contol = 0x40004aac;
r_llm_is_dev_connected = 0x40004ab8;
r_llm_is_dev_synced = 0x40004ac4;
r_llm_is_non_con_act_ongoing_check = 0x40004ad0;
r_llm_is_wl_accessible = 0x40004adc;
r_llm_le_evt_mask_check = 0x40004ae8;
r_llm_link_disc = 0x40004b00;
r_llm_master_ch_map_get = 0x40004b0c;
r_llm_msg_handler_tab_p_get = 0x40004b18;
r_llm_no_activity = 0x40004b24;
r_llm_per_adv_slot_dur = 0x40004b30;
r_llm_plan_elt_get = 0x40004b3c;
r_llm_rx_path_comp_get = 0x40004b48;
r_llm_scan_start = 0x40004b54;
r_llm_scan_sync_acad_attach = 0x40004b60;
r_llm_scan_sync_acad_detach = 0x40004b6c;
r_llm_send_adv_lost_event_to_host = 0x40004b78;
r_llm_tx_path_comp_get = 0x40004b84;
r_misc_deinit = 0x40004b90;
r_misc_free_em_buf_in_isr = 0x40004b9c;
r_misc_init = 0x40004ba8;
r_misc_msg_handler_tab_p_get = 0x40004bb4;
r_notEqual256 = 0x40004bc0;
r_phy_upd_proc_start = 0x40004bcc;
r_platform_reset = 0x40004bd8;
r_rf_em_init = 0x40004bf0;
r_rf_force_agc_enable = 0x40004bfc;
r_rf_reg_rd = 0x40004c08;
r_rf_reg_wr = 0x40004c14;
r_rf_reset = 0x40004c20;
r_rf_rssi_convert = 0x40004c2c;
r_rf_rw_v9_le_disable = 0x40004c38;
r_rf_rw_v9_le_enable = 0x40004c44;
r_rf_sleep = 0x40004c50;
r_rf_util_cs_fmt_convert = 0x40004c74;
r_rw_crypto_aes_ccm = 0x40004c80;
r_rw_crypto_aes_encrypt = 0x40004c8c;
r_rw_crypto_aes_init = 0x40004c98;
r_rw_crypto_aes_k1 = 0x40004ca4;
r_rw_crypto_aes_k2 = 0x40004cb0;
r_rw_crypto_aes_k3 = 0x40004cbc;
r_rw_crypto_aes_k4 = 0x40004cc8;
r_rw_crypto_aes_rand = 0x40004cd4;
r_rw_crypto_aes_result_handler = 0x40004ce0;
r_rw_crypto_aes_s1 = 0x40004cec;
r_rw_cryto_aes_cmac = 0x40004cf8;
r_rw_v9_init_em_radio_table = 0x40004d04;
r_rwble_sleep_enter = 0x40004d1c;
r_rwble_sleep_wakeup_end = 0x40004d28;
/* r_rwbtdm_isr_wrapper = 0x40004d34; */
r_rwip_active_check = 0x40004d40;
r_rwip_aes_encrypt = 0x40004d4c;
/* r_rwip_assert = 0x40004d58; */
r_rwip_crypt_evt_handler = 0x40004d64;
r_rwip_crypt_isr_handler = 0x40004d70;
r_rwip_eif_get = 0x40004d7c;
r_rwip_half_slot_2_lpcycles = 0x40004d88;
r_rwip_hus_2_lpcycles = 0x40004d94;
r_rwip_isr = 0x40004da0;
r_rwip_lpcycles_2_hus = 0x40004dac;
r_rwip_prevent_sleep_clear = 0x40004db8;
r_rwip_prevent_sleep_set = 0x40004dc4;
r_rwip_schedule = 0x40004dd0;
r_rwip_sleep = 0x40004ddc;
r_rwip_sw_int_handler = 0x40004de8;
r_rwip_sw_int_req = 0x40004df4;
r_rwip_time_get = 0x40004e00;
r_rwip_timer_10ms_handler = 0x40004e0c;
r_rwip_timer_10ms_set = 0x40004e18;
r_rwip_timer_hs_handler = 0x40004e24;
r_rwip_timer_hs_set = 0x40004e30;
r_rwip_timer_hus_handler = 0x40004e3c;
r_rwip_timer_hus_set = 0x40004e48;
r_rwip_wakeup = 0x40004e54;
/* r_rwip_wakeup_end = 0x40004e60; */
r_rwip_wlcoex_set = 0x40004e6c;
r_sch_alarm_clear = 0x40004e78;
r_sch_alarm_init = 0x40004e84;
r_sch_alarm_prog = 0x40004e90;
r_sch_alarm_set = 0x40004e9c;
r_sch_alarm_timer_isr = 0x40004ea8;
r_sch_arb_conflict_check = 0x40004eb4;
r_sch_arb_elt_cancel = 0x40004ec0;
r_sch_arb_init = 0x40004ed8;
r_sch_arb_insert = 0x40004ee4;
r_sch_arb_prog_timer = 0x40004ef0;
r_sch_arb_remove = 0x40004efc;
r_sch_arb_sw_isr = 0x40004f08;
r_sch_plan_chk = 0x40004f14;
r_sch_plan_clock_wrap_offset_update = 0x40004f20;
r_sch_plan_init = 0x40004f2c;
r_sch_plan_interval_req = 0x40004f38;
r_sch_plan_offset_max_calc = 0x40004f44;
r_sch_plan_offset_req = 0x40004f50;
r_sch_plan_position_range_compute = 0x40004f5c;
r_sch_plan_rem = 0x40004f68;
r_sch_plan_req = 0x40004f74;
r_sch_prog_init = 0x40004f98;
r_sch_prog_push = 0x40004fa4;
r_sch_prog_rx_isr = 0x40004fb0;
r_sch_prog_skip_isr = 0x40004fbc;
r_sch_prog_tx_isr = 0x40004fc8;
r_sch_slice_bg_add = 0x40004fd4;
r_sch_slice_bg_remove = 0x40004fe0;
r_sch_slice_compute = 0x40004fec;
r_sch_slice_fg_add = 0x40004ff8;
r_sch_slice_fg_remove = 0x40005004;
r_sch_slice_init = 0x40005010;
r_sch_slice_per_add = 0x4000501c;
r_sch_slice_per_remove = 0x40005028;
r_sdk_config_get_bt_sleep_enable = 0x40005034;
r_sdk_config_get_hl_derived_opts = 0x40005040;
r_sdk_config_get_opts = 0x4000504c;
r_sdk_config_get_priv_opts = 0x40005058;
r_sdk_config_set_bt_sleep_enable = 0x40005064;
r_sdk_config_set_hl_derived_opts = 0x40005070;
r_sdk_config_set_opts = 0x4000507c;
r_specialModP256 = 0x40005088;
r_unloaded_area_init = 0x40005094;
r_vhci_flow_off = 0x400050a0;
r_vhci_flow_on = 0x400050ac;
r_vhci_notify_host_send_available = 0x400050b8;
r_vhci_send_to_host = 0x400050c4;
r_vnd_hci_command_handler = 0x400050d0;
r_vshci_init = 0x400050dc;
vnd_hci_command_handler_wrapper = 0x400050e8;
r_lld_legacy_adv_dynamic_pti_get = 0x400050f4;
r_lld_legacy_adv_dynamic_pti_process = 0x40005100;
r_lld_ext_adv_dynamic_pti_get = 0x4000510c;
r_lld_ext_adv_dynamic_aux_pti_process = 0x40005118;
r_lld_ext_adv_dynamic_pti_process = 0x40005124;
/* r_lld_adv_ext_pkt_prepare_set = 0x40005130; */
r_lld_adv_ext_chain_connectable_construct = 0x40005148;
r_lld_adv_pkt_rx_connect_post = 0x40005160;
r_lld_adv_start_init_evt_param = 0x4000516c;
r_lld_adv_start_set_cs = 0x40005178;
/* r_lld_adv_start_update_filter_policy = 0x40005184; */
r_lld_adv_start_schedule_asap = 0x40005190;
r_lld_con_tx_prog_new_packet_coex = 0x4000519c;
r_lld_per_adv_dynamic_pti_get = 0x400051b4;
r_lld_per_adv_evt_start_chm_upd = 0x400051c0;
r_lld_ext_scan_dynamic_pti_get = 0x400051cc;
r_lld_sync_insert = 0x400051e4;
r_sch_prog_ble_push = 0x400051f0;
r_sch_prog_bt_push = 0x400051fc;
r_lld_init_evt_end_type_set = 0x40005208;
r_lld_init_evt_end_type_get = 0x40005214;
r_lld_adv_direct_adv_use_rpa_addr_state_set = 0x40005220;
r_lld_adv_direct_adv_use_rpa_addr_state_get = 0x4000522c;
r_lld_init_evt_end_type_check_state_set = 0x40005238;
r_lld_init_evt_end_type_check_state_get = 0x40005244;
/* Data (.data, .bss, .rodata) */
bt_rf_coex_cfg_p = 0x3fceffa8;
bt_rf_coex_hooks_p = 0x3fceffa4;
@ -1738,38 +919,6 @@ rwip_coex_cfg = 0x3ff1eebe;
rwip_priority = 0x3ff1eea8;
veryBigHexP256 = 0x3ff1ee5c;
/* bluetooth hook funcs */
r_llc_loc_encrypt_proc_continue_hook = 0x40001c60;
r_llc_loc_phy_upd_proc_continue_hook = 0x40001c64;
r_llc_rem_phy_upd_proc_continue_hook = 0x40001c68;
r_lld_scan_frm_eof_isr_hook = 0x40001c6c;
r_lld_scan_evt_start_cbk_hook = 0x40001c70;
r_lld_scan_process_pkt_rx_ext_adv_hook = 0x40001c78;
r_lld_scan_sched_hook = 0x40001c7c;
r_lld_adv_evt_start_cbk_hook = 0x40001c84;
r_lld_adv_aux_evt_start_cbk_hook = 0x40001c88;
r_lld_adv_frm_isr_hook = 0x40001c8c;
r_lld_adv_start_init_evt_param_hook = 0x40001c90;
r_lld_con_evt_canceled_cbk_hook = 0x40001c94;
r_lld_con_frm_isr_hook = 0x40001c98;
r_lld_con_tx_hook = 0x40001c9c;
r_lld_con_rx_hook = 0x40001ca0;
r_lld_con_evt_start_cbk_hook = 0x40001ca4;
r_lld_con_tx_prog_new_packet_hook = 0x40001cac;
r_lld_init_frm_eof_isr_hook = 0x40001cb0;
r_lld_init_evt_start_cbk_hook = 0x40001cb4;
r_lld_init_sched_hook = 0x40001cbc;
r_lld_init_process_pkt_tx_hook = 0x40001cc0;
r_lld_per_adv_evt_start_cbk_hook = 0x40001cc4;
r_lld_per_adv_frm_isr_hook = 0x40001cc8;
r_lld_per_adv_start_hook = 0x40001ccc;
r_lld_sync_frm_eof_isr_hook = 0x40001cd0;
r_lld_sync_evt_start_cbk_hook = 0x40001cd4;
r_lld_sync_start_hook = 0x40001cd8;
r_lld_sync_process_pkt_rx_pkt_check_hook = 0x40001cdc;
r_sch_arb_insert_hook = 0x40001ce0;
r_sch_plan_offset_req_hook = 0x40001ce4;
/***************************************
Group rom_pp
***************************************/

View File

@ -13,6 +13,7 @@
#include "esp_log.h"
#include "esp_chip_info.h"
#include "esp_app_format.h"
#include "esp_private/cache_err_int.h"
#include "esp_clk_internal.h"
@ -787,9 +788,13 @@ void IRAM_ATTR call_start_cpu0(void)
// Read the application binary image header. This will also decrypt the header if the image is encrypted.
__attribute__((unused)) esp_image_header_t fhdr = {0};
// This assumes that DROM is the first segment in the application binary, i.e. that we can read
// the binary header through cache by accessing SOC_DROM_LOW address.
hal_memcpy(&fhdr, (void *) SOC_DROM_LOW, sizeof(fhdr));
// We can access the image header through the cache by reading from the memory-mapped virtual DROM start offset
uint32_t fhdr_src_addr = (uint32_t)(&_rodata_reserved_start) - sizeof(esp_image_header_t) - sizeof(esp_image_segment_header_t);
hal_memcpy(&fhdr, (void *) fhdr_src_addr, sizeof(fhdr));
if (fhdr.magic != ESP_IMAGE_HEADER_MAGIC) {
ESP_EARLY_LOGE(TAG, "Invalid app image header");
abort();
}
#if CONFIG_IDF_TARGET_ESP32
#if !CONFIG_SPIRAM_BOOT_INIT

View File

@ -164,6 +164,12 @@ static void select_rtc_slow_clk(soc_rtc_slow_clk_src_t rtc_slow_clk_src)
}
rtc_clk_slow_src_set(rtc_slow_clk_src);
// Disable unused clock sources after clock source switching is complete.
// Regardless of the clock source selection, the internal 136K clock source will always keep on.
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_XTAL32K && rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_OSC_SLOW) {
rtc_clk_32k_enable(false);
}
if (SLOW_CLK_CAL_CYCLES > 0) {
/* TODO: 32k XTAL oscillator has some frequency drift at startup.
* Improve calibration routine to wait until the frequency is stable.

View File

@ -185,6 +185,15 @@ static void select_rtc_slow_clk(soc_rtc_slow_clk_src_t rtc_slow_clk_src)
}
rtc_clk_slow_src_set(rtc_slow_clk_src);
// Disable unused clock sources after clock source switching is complete.
// Regardless of the clock source selection, the internal 136K clock source will always keep on.
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_XTAL32K && rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_OSC_SLOW) {
rtc_clk_32k_enable(false);
}
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_RC32K) {
rtc_clk_rc32k_enable(false);
}
if (SLOW_CLK_CAL_CYCLES > 0) {
/* TODO: 32k XTAL oscillator has some frequency drift at startup.
* Improve calibration routine to wait until the frequency is stable.

View File

@ -148,6 +148,12 @@ static void select_rtc_slow_clk(soc_rtc_slow_clk_src_t rtc_slow_clk_src)
}
rtc_clk_slow_src_set(rtc_slow_clk_src);
// Disable unused clock sources after clock source switching is complete.
// Regardless of the clock source selection, the internal 136K clock source will always keep on.
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_XTAL32K && rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_OSC_SLOW) {
rtc_clk_32k_enable(false);
}
if (SLOW_CLK_CAL_CYCLES > 0) {
/* TODO: 32k XTAL oscillator has some frequency drift at startup.
* Improve calibration routine to wait until the frequency is stable.

View File

@ -184,6 +184,15 @@ static void select_rtc_slow_clk(soc_rtc_slow_clk_src_t rtc_slow_clk_src)
}
rtc_clk_slow_src_set(rtc_slow_clk_src);
// Disable unused clock sources after clock source switching is complete.
// Regardless of the clock source selection, the internal 136K clock source will always keep on.
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_XTAL32K && rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_OSC_SLOW) {
rtc_clk_32k_enable(false);
}
if (rtc_slow_clk_src != SOC_RTC_SLOW_CLK_SRC_RC32K) {
rtc_clk_rc32k_enable(false);
}
if (SLOW_CLK_CAL_CYCLES > 0) {
/* TODO: 32k XTAL oscillator has some frequency drift at startup.
* Improve calibration routine to wait until the frequency is stable.

Some files were not shown because too many files have changed in this diff Show More