Chen Ji Chang b39fd79cb8 Merge branch 'feature/add_mcpwm_carrier_clk_source' into 'master' %!s(int64=2) %!d(string=hai) anos
..
adc_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
adc_hal_common.h 5b523a3313 esp_adc: new esp_adc component and adc drivers %!s(int64=3) %!d(string=hai) anos
adc_oneshot_hal.h 5653018cd1 esp_adc: support selecting clock source for oneshot driver %!s(int64=3) %!d(string=hai) anos
adc_types.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
adc_types_private.h 87848110c1 adc: new feature adc digital monitor supported %!s(int64=2) %!d(string=hai) anos
aes_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
aes_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
apm_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
apm_types.h 8d0f6dab0f apm: added support for APM on esp32c6 %!s(int64=3) %!d(string=hai) anos
assist_debug_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
brownout_hal.h 56a2d0b8a2 BOD: Bringup for ESP32C6 %!s(int64=3) %!d(string=hai) anos
cache_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
cache_types.h c1cbd7bbf6 cache/mmu: implememnt cache and mmu hal APIs in bootloader %!s(int64=4) %!d(string=hai) anos
clk_tree_hal.h 2c9aa4559c clk_tree: Add a general API to get the frequency of different clocks %!s(int64=3) %!d(string=hai) anos
dac_types.h 8ef9fd4623 dac: optimize the dma stratege %!s(int64=3) %!d(string=hai) anos
dma_types.h 3b7da7eae5 feat(gdma): gdma descriptor alignment %!s(int64=2) %!d(string=hai) anos
ds_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
ds_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
ecc_hal.h a485b1cb67 esp32h2: Add support for ECC hardware accelerator %!s(int64=3) %!d(string=hai) anos
ecc_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
ecdsa_hal.h d634970ed1 ecdsa: Support multiple ECDSA keys %!s(int64=2) %!d(string=hai) anos
ecdsa_types.h d345c684ba esp32h2: Add support for ECDSA peripheral %!s(int64=3) %!d(string=hai) anos
efuse_hal.h ffb40a89d9 adc_cali: supported channel compensation of adc calibration on esp32c6 %!s(int64=2) %!d(string=hai) anos
emac_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
esp_flash_err.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
eth_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
etm_hal.h fb26d0e11f etm: added etm channel allocator %!s(int64=3) %!d(string=hai) anos
gdma_hal.h 274e1c0089 fix(gdma): fixed compilation failure of gdma %!s(int64=2) %!d(string=hai) anos
gdma_hal_ahb.h 274e1c0089 fix(gdma): fixed compilation failure of gdma %!s(int64=2) %!d(string=hai) anos
gdma_hal_axi.h 274e1c0089 fix(gdma): fixed compilation failure of gdma %!s(int64=2) %!d(string=hai) anos
gdma_types.h 9eb145aa21 feat(esp_gdma): adapt the gdma driver to ahb-dma and axi-dma %!s(int64=2) %!d(string=hai) anos
glitch_filter_types.h ca1b182b25 glitch_filter: support derive clock source form IO MUX %!s(int64=3) %!d(string=hai) anos
gpio_hal.h be9afeac86 feat(gpio): add support for ESP32P4 %!s(int64=2) %!d(string=hai) anos
gpio_types.h be9afeac86 feat(gpio): add support for ESP32P4 %!s(int64=2) %!d(string=hai) anos
hmac_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
hmac_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
i2c_hal.h 4ef94fc0dc feat(i2c): Add new API and implementation for I2C driver %!s(int64=2) %!d(string=hai) anos
i2c_types.h 4ef94fc0dc feat(i2c): Add new API and implementation for I2C driver %!s(int64=2) %!d(string=hai) anos
i2s_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
i2s_types.h fa9b022f68 i2s: support 4 line pdm rx on esp32s3 %!s(int64=3) %!d(string=hai) anos
ieee802154_common_ll.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
lcd_hal.h 454d658309 rgb_lcd: workaround pclk polarity bug by setting mo>=2 %!s(int64=3) %!d(string=hai) anos
lcd_types.h fc1aa2848b rgb_lcd: support yuv converter %!s(int64=3) %!d(string=hai) anos
ledc_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
ledc_types.h ad55230b0a ledc: Add support for esp32h2; Refactor ledc driver clock source selection related code %!s(int64=3) %!d(string=hai) anos
lp_timer_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
lp_timer_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
mcpwm_hal.h f7ff7ac4d0 mcpwm: clean up hal driver and add doc %!s(int64=3) %!d(string=hai) anos
mcpwm_types.h 97d5db32ae feat(MCPWM): Add mcpwm carrier clk source %!s(int64=2) %!d(string=hai) anos
memprot_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
mmu_hal.h bae6680207 mmu: hal function to init, and hal function to unmap all %!s(int64=3) %!d(string=hai) anos
mmu_types.h 8c8affc812 feat(mmu): support mmu and flash mmap driver on p4 %!s(int64=2) %!d(string=hai) anos
modem_clock_hal.h 21781b1ab1 modem clock: provide a protected wifipwr clock enable/disable interface to fix the bug of selecting xtal as the low power clock source for ble %!s(int64=2) %!d(string=hai) anos
modem_clock_types.h 63af1e9631 modem clock(driver): implemented the modem clock driver for esp32c6 %!s(int64=3) %!d(string=hai) anos
mpi_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
mpi_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
mpu_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
mpu_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
parlio_hal.h f534247a00 driver: add parallel IO TX driver %!s(int64=3) %!d(string=hai) anos
parlio_types.h f534247a00 driver: add parallel IO TX driver %!s(int64=3) %!d(string=hai) anos
pau_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
pau_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
pcnt_hal.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral %!s(int64=4) %!d(string=hai) anos
pcnt_types.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral %!s(int64=4) %!d(string=hai) anos
pmu_types.h a329b15e7e Power Management: support pu xtal in light sleep for esp32h2 %!s(int64=2) %!d(string=hai) anos
readme.md 5425ef4ee4 hal: extract hal component from soc component %!s(int64=5) %!d(string=hai) anos
rmt_hal.h 2fb43820c2 driver_ng: implement new rmt driver %!s(int64=3) %!d(string=hai) anos
rmt_types.h d82981c437 rmt: use gpio_num_t to define gpio number %!s(int64=3) %!d(string=hai) anos
rtc_hal.h 808a01e656 feat(pm/deepsleep): Support EXT1_WAKEUP_MODE_PER_PIN %!s(int64=2) %!d(string=hai) anos
rtc_io_hal.h 4985caa38f refactor(driver/rtcio): Re-wrap RTCIO APIs with more accurate soc_caps %!s(int64=2) %!d(string=hai) anos
rtc_io_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
sdio_slave_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
sdio_slave_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
sdm_hal.h 4154eaec93 sdm: clean up soc/hal/ll code %!s(int64=3) %!d(string=hai) anos
sdm_types.h 4154eaec93 sdm: clean up soc/hal/ll code %!s(int64=3) %!d(string=hai) anos
sha_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
sha_types.h ea05ae6af2 feat(esp32p4): added hal support %!s(int64=2) %!d(string=hai) anos
spi_flash_encrypt_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
spi_flash_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
spi_flash_types.h ed96dadd06 spi_flash: 2nd stage for supporting flash suspend. (1). Support more esp chips (2). Improve real-time performance (3). Making timing more stable (4) Add documents %!s(int64=2) %!d(string=hai) anos
spi_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
spi_slave_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
spi_slave_hd_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
spi_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
systimer_hal.h 63f852adc8 hal: Adds hal/ll func for SYSTIMER to select clock source: XTAL or RC_FAST_CLK %!s(int64=3) %!d(string=hai) anos
systimer_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
temperature_sensor_types.h 4154eaec93 sdm: clean up soc/hal/ll code %!s(int64=3) %!d(string=hai) anos
timer_hal.h a1030307f1 gptimer: bringup driver on esp32c6 %!s(int64=3) %!d(string=hai) anos
timer_types.h de68029de9 change(header): modify p4 headers issues from check_header_py %!s(int64=2) %!d(string=hai) anos
touch_sensor_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
touch_sensor_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
twai_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
twai_types.h a18d7e24d6 Fix initialization macros for twai_timing_config_t not setting .clk_src and .brp %!s(int64=2) %!d(string=hai) anos
uart_hal.h 921713fff4 uart: Support LP_UART port with UART driver on esp32c6 %!s(int64=2) %!d(string=hai) anos
uart_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
uhci_types.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
usb_dwc_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
usb_dwc_ll.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
usb_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
usb_phy_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
usb_phy_types.h 1fcd639224 usb: Add usb_phy driver to support operations on USB PHY %!s(int64=4) %!d(string=hai) anos
usb_types_private.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos
wdt_hal.h 9c37441b17 wdt: refactor wdt codes to use unified type %!s(int64=3) %!d(string=hai) anos
wdt_types.h 5e9e8c396f wdt: add support for WDTs on C6 %!s(int64=3) %!d(string=hai) anos
xt_wdt_hal.h 333553caf2 fix(hal): check the public header files and fix violations %!s(int64=2) %!d(string=hai) anos

readme.md

HAL Layer Readme

The HAL layer is designed to be used by the drivers. We don't guarantee the stability and back-compatibility among versions. The HAL layer may update very frequently with the driver. Please don't use them in the applications or treat them as stable APIs.

The HAL layer consists of two layers: HAL (upper) and Lowlevel(bottom). The HAL layer defines the steps and data required by the peripheral. The lowlevel is a translation layer converting general conceptions to register configurations.

Lowlevel

This layer should be all static inline. The first argument of LL functions is usually a pointer to the beginning address of the peripheral register. Each chip should have its own LL layer. The functions in this layer should be atomic and independent from each other so that the upper layer can change/perform one of the options/operation without touching the others.

HAL

This layer should depend on the operating system as little as possible. It's a wrapping of LL functions, so that the upper layer can combine basic steps into different working ways (polling, non-polling, interrupt, etc.). Without using queues/locks/delay/loop/etc., this layer can be easily port to other os or simulation systems.

To get better performance and better porting ability, contexts are used to hold sustainable data and pass the parameters.

To develop your own driver, it is suggested to copy the HAL layer to your own code and keep them until manual update.